# Full results on Script tag

Only c15t, CookieYes, Cookie Control, Enzuzo, iubenda, Didomi, Osano, OneTrust, Usercentrics and Ketch ran on Script tag. [See every CMP on Next.js](https://cookiebench.com/results.md).

Every metric CookieBench measures for ten consent managers in a Script tag app. Desktop profile: 1365 × 768 · No CPU slowdown · 12.5 MB/s, no added latency. Columns follow the [leaderboard](https://cookiebench.com/script-tag.md) order: banner time, fastest first. A value without a "vs no CMP" change had no measurable change from the same page without a consent manager.

- [c15t](https://cookiebench.com/benchmarks/c15t/script-tag.md)
- [CookieYes](https://cookiebench.com/benchmarks/cookieyes/script-tag.md)
- [Cookie Control](https://cookiebench.com/benchmarks/cookie-control/script-tag.md)
- [Enzuzo](https://cookiebench.com/benchmarks/enzuzo/script-tag.md)
- [iubenda](https://cookiebench.com/benchmarks/iubenda/script-tag.md)
- [Didomi](https://cookiebench.com/benchmarks/didomi/script-tag.md)
- [Osano](https://cookiebench.com/benchmarks/osano/script-tag.md)
- [OneTrust](https://cookiebench.com/benchmarks/onetrust/script-tag.md)
- [Usercentrics](https://cookiebench.com/benchmarks/usercentrics/script-tag.md)
- [Ketch](https://cookiebench.com/benchmarks/ketch/script-tag.md)

## Core Web Vitals

LCP, CLS and TBT come from the page load. INP comes from the Accept click. Google rates LCP good up to 2.5 s and poor above 4 s. It rates INP good up to 200 ms and poor above 500 ms. It rates CLS good up to 0.1 and poor above 0.25. It does not rate TBT.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| LCP: Largest Contentful Paint | 108 ms (Good) | 108 ms (Good) | 104 ms (Good) | 100 ms (Good) | 100 ms (Good) | 104 ms (Good) | 104 ms (Good) | 104 ms (Good) | 112 ms (Good) | 104 ms (Good) |
| INP: Interaction to Next Paint, for the Accept click | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 40 ms (Good) | 16 ms (Good) | 40 ms (Good) | 16 ms (Good) | 16 ms (Good) | 24 ms (Good) |
| CLS: Cumulative Layout Shift | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) | 0.00 (Good) |
| TBT: Total Blocking Time during load | 0 ms | 0 ms | 27 ms, +27 ms vs no CMP | 43 ms, +43 ms vs no CMP | 0 ms | 51 ms, +51 ms vs no CMP | 21 ms, +21 ms vs no CMP | 1 ms, +1 ms vs no CMP | 51 ms, +51 ms vs no CMP | 169 ms, +169 ms vs no CMP |

## Page load

Google rates TTFB good up to 0.8 s and FCP good up to 1.8 s. Content paint is the paint time of the article image. We time it even when the banner was the largest element.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TTFB: Time to First Byte | 2 ms (Good) | 5 ms (Good) | 2 ms (Good) | 2 ms (Good), −0 ms vs no CMP | 2 ms (Good) | 2 ms (Good) | 2 ms (Good) | 2 ms (Good) | 2 ms (Good) | 2 ms (Good), −0 ms vs no CMP |
| FCP: First Contentful Paint | 40 ms (Good) | 52 ms (Good) | 40 ms (Good) | 40 ms (Good), −8 ms vs no CMP | 48 ms (Good) | 44 ms (Good) | 44 ms (Good) | 48 ms (Good) | 44 ms (Good) | 56 ms (Good), +4 ms vs no CMP |
| Content paint: The article image painted | 108 ms | 108 ms | 104 ms | 100 ms | 100 ms | 104 ms | 104 ms | 104 ms | 112 ms | 104 ms |
| LCP element: What the browser picked as the largest element | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) | Not measured (No eligible visits to attribute) |

## Banner

Milliseconds from navigation. p75 is where the slowest quarter of visits starts.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| CMP requested: First request for the CMP’s script or config | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) |
| CMP loaded: The download of the CMP’s main script is complete | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) | Not measured (A proposed metric that v3 does not summarise yet) |
| Consent known: The CMP reports the visitor’s consent state | 254 ms | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) | Not measured (This CMP exposes no consent-ready signal) |
| Banner visible: The banner is on screen | 267 ms | 284 ms | 395 ms | 424 ms | 442 ms | 457 ms | 558 ms | 665 ms | 692 ms | 1.65 s |
| Screen covered: Share of the viewport the banner covers | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) |

## Click response

Time until the screen updates. We rate it like INP: good up to 200 ms, poor above 500 ms. The browser reports these times in 8 ms steps. It does not report clicks under 16 ms.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Accept: Accept all, from the banner | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 40 ms (Good) | 16 ms (Good) | 40 ms (Good) | 16 ms (Good) | 16 ms (Good) | 24 ms (Good) |
| Reject: Reject all, from the banner | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 32 ms (Good) | 16 ms (Good) | 32 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) |
| Save: Save, in the preferences dialog | 24 ms (Good) | Not measured (There is no granular save-preferences flow to test) | Not measured (There is no granular save-preferences flow to test) | 32 ms (Good) | 32 ms (Good) | 40 ms (Good) | 48 ms (Good) | 24 ms (Good) | 16 ms (Good) | 24 ms (Good) |
| Next click: A click on the page 500 ms after Accept | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) | 16 ms (Good) |

## After Accept

Milliseconds from the click. Main thread is the long-task blocking time after it.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Banner gone: Banner and any overlay removed | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Consent applied: The CMP’s consent state matches the choice | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Scripts ran: Every script that the choice lets run is complete | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Main thread: Long-task blocking time after the click | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |

## After Reject

Reject lets no scripts run, so there is no script time to report.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Banner gone: Banner and any overlay removed | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Consent applied: The CMP’s consent state matches the choice | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Main thread: Long-task blocking time after the click | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |

## After Save

From the Save click in the preferences dialog.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Banner gone: Banner and any overlay removed | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Consent applied: The CMP’s consent state matches the choice | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Scripts ran: Every script that the choice lets run is complete | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |
| Main thread: Long-task blocking time after the click | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) | Not measured (This run published only the next paint after a click) |

## Download size

The first load. Unpacked is the size after decompression. That is the code that the browser must parse.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Transferred: Bytes over the network during the first load | 583 KB, +84 KB vs no CMP | 530 KB, +31 KB vs no CMP | 598 KB, +98 KB vs no CMP | 652 KB, +153 KB vs no CMP | 621 KB, +121 KB vs no CMP | 752 KB, +253 KB vs no CMP | 586 KB, +87 KB vs no CMP | 710 KB, +211 KB vs no CMP | 663 KB, +164 KB vs no CMP | 1.03 MB, +532 KB vs no CMP |
| Unpacked: The same bytes after decompression | 886 KB, +359 KB vs no CMP | 624 KB, +97 KB vs no CMP | 873 KB, +346 KB vs no CMP | 1.12 MB, +592 KB vs no CMP | 985 KB, +458 KB vs no CMP | 1.53 MB, +1.00 MB vs no CMP | 874 KB, +348 KB vs no CMP | 1.38 MB, +855 KB vs no CMP | 1.24 MB, +711 KB vs no CMP | 7.73 MB, +7.20 MB vs no CMP |
| Deferred: Bytes transferred after the first load settled | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) |
| Requests: Requests during the first load | 9, +3 vs no CMP | 15, +9 vs no CMP | 8, +2 vs no CMP | 8, +2 vs no CMP | 10, +4 vs no CMP | 12, +6 vs no CMP | 10, +4 vs no CMP | 18, +12 vs no CMP | 23, +17 vs no CMP | 15, +9 vs no CMP |
| Third-party: Requests to other hosts during the first load | 1 | 9 | 2 | 2 | 4 | 6 | 4 | 12 | 17 | 9 |

## Returning visitors

A visitor who accepted earlier loads the page again. We expect the banner to stay hidden.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Banner hidden: The banner stayed hidden on the return visit | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) |
| Consent known: Time from navigation until the CMP restores the stored choice | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) | Not measured (Not published for this run) |

## Consent checks

No tracker or cookie before the visitor chooses, and the choice holds afterwards. A check we could not run is not a failure.

| Metric | c15t | CookieYes | Cookie Control | Enzuzo | iubenda | Didomi | Osano | OneTrust | Usercentrics | Ketch |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Checks: Load, Accept, Reject, Save, withdrawal and keyboard checks | 4 of 4 passed | 3 of 4 passed (1 could not run) | 3 of 4 passed (1 could not run) | 4 of 4 passed | 4 of 4 passed | 4 of 4 passed | 4 of 4 passed | 4 of 4 passed | 4 of 4 passed | 4 of 4 passed |

## Other views

- [Desktop, Next.js](https://cookiebench.com/results.md)
- [Desktop, React](https://cookiebench.com/results/react.md)
- [Desktop, Nuxt](https://cookiebench.com/results/nuxt.md)
- [Desktop, Astro](https://cookiebench.com/results/astro.md)
- [Desktop, TanStack Start](https://cookiebench.com/results/tanstack-start.md)
- [Mobile, Next.js](https://cookiebench.com/results/mobile.md)
- [Mobile, React](https://cookiebench.com/results/mobile/react.md)
- [Mobile, Nuxt](https://cookiebench.com/results/mobile/nuxt.md)
- [Mobile, Astro](https://cookiebench.com/results/mobile/astro.md)
- [Mobile, TanStack Start](https://cookiebench.com/results/mobile/tanstack-start.md)
- [Mobile, Script tag](https://cookiebench.com/results/mobile/script-tag.md)

Methodology [cookiebench-v3.2.4](https://cookiebench.com/methodology). inth, the team behind c15t, maintains CookieBench. c15t is one of the consent managers we measure ([disclosure](https://cookiebench.com/methodology)). Feature support comes from vendor documentation unless a row says "Verified by test".
