# How fast is your cookie banner on TanStack Start?

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

Desktop profile: 1365 × 768 · No CPU slowdown · 12.5 MB/s, no added latency. Tested in a TanStack Start app. The table orders rows by how fast the banner appears, fastest first. Rows "tied with" another are within each other's spread, so their order is not meaningful. There is no overall score.

| Consent manager | Banner appears | LCP | LCP vs no CMP | TBT added | INP (Accept click) | Standards |
| --- | --- | --- | --- | --- | --- | --- |
| No consent manager (the same test page, for reference) | No banner | 112 ms (Good) | Baseline | – | – | – |
| [c15t](https://cookiebench.com/benchmarks/c15t/tanstack-start.md) | 54 ms | 144 ms (Good) | +24 ms | +0 ms | 16 ms (Good) | TCF: Per vendor docs; GPP: Per vendor docs (GPP 1.1); CMv2: Per vendor docs; GPC: Per vendor docs |
| [CookieYes](https://cookiebench.com/benchmarks/cookieyes/tanstack-start.md) | 279 ms | 124 ms (Good) | Same as no CMP | +0 ms | Under 16 ms (Good) | TCF: Per vendor docs (Pro and Ultimate plans); GPP: Unknown; CMv2: Per vendor docs; GPC: Per vendor docs (Pro and Ultimate plans) |
| [Cookie Control](https://cookiebench.com/benchmarks/cookie-control/tanstack-start.md) | 380 ms | 116 ms (Good) | Same as no CMP | +10 ms | 24 ms (Good) | TCF: Per vendor docs (TCF v2.3); GPP: Unknown; CMv2: Per vendor docs; GPC: Per vendor docs |
| [iubenda](https://cookiebench.com/benchmarks/iubenda/tanstack-start.md) | 398 ms | 116 ms (Good) | Same as no CMP | +0 ms | 32 ms (Good) | TCF: Per vendor docs (TCF v2.2); GPP: Per vendor docs; CMv2: Per vendor docs; GPC: Per vendor docs |
| [Didomi](https://cookiebench.com/benchmarks/didomi/tanstack-start.md) | 447 ms | 108 ms (Good) | Same as no CMP | +51 ms | 16 ms (Good) | TCF: Per vendor docs (TCF v2.2); GPP: Per vendor docs; CMv2: Per vendor docs; GPC: Per vendor docs |
| [Enzuzo](https://cookiebench.com/benchmarks/enzuzo/tanstack-start.md) | 463 ms | 116 ms (Good) | +4 ms | +42 ms | 24 ms (Good) | TCF: Per vendor docs (Growth plan and up); GPP: Unknown; CMv2: Per vendor docs; GPC: Per vendor docs |
| [OneTrust](https://cookiebench.com/benchmarks/onetrust/tanstack-start.md) | 623 ms | 116 ms (Good) | Same as no CMP | +1 ms | 16 ms (Good) | TCF: Per vendor docs (TCF v2.2 and v2.3); GPP: Per vendor docs; CMv2: Per vendor docs; GPC: Per vendor docs |
| [Osano](https://cookiebench.com/benchmarks/osano/tanstack-start.md) | 637 ms | 116 ms (Good) | Same as no CMP | +5 ms | 40 ms (Good) | TCF: Per vendor docs (TCF v2); GPP: Per vendor docs; CMv2: Per vendor docs; GPC: Per vendor docs |
| [Usercentrics](https://cookiebench.com/benchmarks/usercentrics/tanstack-start.md) | 675 ms | 112 ms (Good) | Same as no CMP | +52 ms | Under 16 ms (Good) | TCF: Per vendor docs (Pro plan and up); GPP: Per vendor docs (v3 script tag); CMv2: Per vendor docs; GPC: Per vendor docs |
| [Ketch](https://cookiebench.com/benchmarks/ketch/tanstack-start.md) | 1.64 s | 112 ms (Good) | +0 ms | +176 ms | 32 ms (Good) | TCF: Per vendor docs (TCF v2.2); GPP: Per vendor docs; CMv2: Per vendor docs; GPC: Per vendor docs |

Every CMP listed passed the consent checks we could run: nothing tracked before a choice, and Reject held after a reload. 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 publishes no band for TBT. [Every metric for this view](https://cookiebench.com/results/tanstack-start.md).

## Other views

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

## What did the latest run find?

On desktop, c15t showed its banner fastest, in a median 60 ms. Ketch was slowest, at 1.68 s. Seven of the ten delayed the main content by less than one screen refresh (16 ms) or not measurably at all. c15t added 16 ms. On emulated mobile, banners appeared in 240 ms to 7.95 s. Every CMP delayed the main content, by 176 ms to 1.74 s.

## What do these numbers mean?

- **How fast does the banner appear?** From the moment the page starts to load until the banner is on screen. A visitor cannot accept or reject until then.
- **LCP: Largest contentful paint** When the biggest element on screen painted. We also show how much later it painted than on the same page without a consent manager. Google rates LCP good up to 2.5 s and poor above 4 s. A change under 16 ms is shorter than one screen refresh.
- **TBT: Total blocking time** How much longer the browser was too busy to respond while the page loaded. We compare it with the same page without a consent manager. Lighthouse weighs it heavily. It is also the lab measure most tied to a slow INP. Google publishes no rating band for it.
- **INP: Interaction to next paint, measured on the Accept click** How long the screen takes to respond after a visitor clicks Accept. Google rates INP good up to 200 ms and poor above 500 ms. We time one click in the lab. Field INP covers a whole visit.

- **No measurable delay.** We load each page twice in pairs, once with the consent manager and once without. When the 95% interval of the difference includes zero, the delay is too small to tell apart from normal variation. In that case, we print “No measurable delay” instead of a number.
- **95% interval.** The range the true difference most likely falls in, from a bootstrap over the paired visits. A narrow range means the result is stable. A wide range means visits varied.
- **Ties.** When two results are within each other’s spread, the order between them is noise. The table brackets them and lists them by name, not by rank.

## Comparisons

- [OneTrust vs Didomi](https://cookiebench.com/compare/onetrust-vs-didomi.md)
- [CookieYes vs OneTrust](https://cookiebench.com/compare/cookieyes-vs-onetrust.md)
- [c15t vs OneTrust](https://cookiebench.com/compare/c15t-vs-onetrust.md)
- [OneTrust vs Usercentrics](https://cookiebench.com/compare/onetrust-vs-usercentrics.md)
- [Osano vs OneTrust](https://cookiebench.com/compare/osano-vs-onetrust.md)
- [c15t vs CookieYes](https://cookiebench.com/compare/c15t-vs-cookieyes.md)
- [iubenda vs CookieYes](https://cookiebench.com/compare/iubenda-vs-cookieyes.md)
- [Didomi vs Usercentrics](https://cookiebench.com/compare/didomi-vs-usercentrics.md)
- [c15t vs Usercentrics](https://cookiebench.com/compare/c15t-vs-usercentrics.md)
- [Ketch vs OneTrust](https://cookiebench.com/compare/ketch-vs-onetrust.md)

See [all 17 comparisons](https://cookiebench.com/compare.md), including c15t against each CMP.

Feature support for every CMP: [feature matrix](https://cookiebench.com/features.md).

## Questions about these results

### Which cookie consent manager is fastest?

It depends on what you measure. On an emulated mid-tier phone, c15t showed its banner first (median 240 ms). Osano (2.15 s) and CookieYes (2.42 s) came next. The CMP that delayed the page least was CookieYes (176 ms). On desktop, c15t showed its banner first, in 60 ms.

### Do cookie banners hurt Core Web Vitals?

On a phone, yes. Every CMP we measured on the emulated mid-tier phone delayed the main content, by 176 ms to 1.74 s. On desktop, seven of ten caused no visible delay. The largest delay was 16 ms (c15t). When the banner itself is the largest element on screen, we time the page’s main content instead. So a large banner cannot hide a slow page.

### Why is there no overall score?

A fast banner and a light page pull in different directions. A score that combines them needs weights. Those weights would be our opinion, not a measurement. Sort the table by the question that matters for your site. When two results are within each other’s spread, we say so and do not rank them.

### Do consent managers block trackers before consent?

Every CMP on the board did, in the checks we could run. No analytics or marketing script ran before the visitor chose. Reject and withdrawal held after a reload. A CMP must pass these checks to be on the board, so the table compares speed only. Each CMP’s page lists the checks that we could not run for it.

### Why do some consent managers have no results?

 We print “Not measured” and the reason, not a zero.

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".
