How fast does the banner appear?
Median of 15 visits.
All 6 integrations, best first
- Next.js240 ms
- Nuxt240 ms
- TanStack Start250 ms
- Astro251 ms
- React1.46 s
- Script tag1.55 s
In our tests with its Nuxt integration, c15t showed its cookie banner in a median 240 ms on an emulated mid-tier phone. It delayed the main content by 512 ms (95% interval 504 ms to 524 ms). Accept responded in 32 ms and Reject in 24 ms. It held trackers back in all 4 consent checks.
On desktop, the banner took 45 ms. Per vendor docs, c15t supports IAB TCF, IAB GPP, Google Consent Mode v2 and Global Privacy Control, but not Google CMP certification.
On Nuxt. We measured other CMPs on Next.js only, so this comparison uses c15t’s other integrations.
Median of 15 visits.
Compared with the same page without a consent manager.
Reject responded in 24 ms. Under 200 ms feels instant.
No tracker ran and the page set no cookie before the visitor chose.
Each status comes from inth’s documentation for c15t. CookieBench does not test these features unless a line says so.
| Feature | Status |
|---|---|
| IAB TCF | Per vendor docs (vendor documentation, opens in a new tab) |
| IAB GPP | GPP 1.1 (vendor documentation, opens in a new tab) |
| Google Consent Mode v2 | Per vendor docs (vendor documentation, opens in a new tab) |
| Google-certified CMP | Not on Google’s list (vendor documentation, opens in a new tab) |
| Global Privacy Control | Per vendor docs (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Geo-targeted banners | Per vendor docs (vendor documentation, opens in a new tab) |
| Script blocking | Per vendor docs (vendor documentation, opens in a new tab) |
| Consent records | With a backend (vendor documentation, opens in a new tab) |
| Cookie scanning | Via Inth Website Audit (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Open source | Apache-2.0 (vendor documentation, opens in a new tab) |
| Self-hostable | Per vendor docs (vendor documentation, opens in a new tab) |
| Headless UI | Per vendor docs (vendor documentation, opens in a new tab) |
| TypeScript types | Per vendor docs (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Free tier | Open source; hosted free plan (vendor documentation, opens in a new tab) |
Support per inth’s documentation.
Each row is a separate app. We measured each one against the same app without a consent manager. The rows compare integrations, not frameworks.
| Framework | Banner appears | Page slowed by | Click responds in | Trackers blocked |
|---|---|---|---|---|
| Script tag | 1.55 s | +432 ms95% interval 424 ms to 448 ms | 32 msOne visit measured | 4 of 4 passed |
| React | 1.46 s | +476 ms95% interval 468 ms to 488 ms | 40 msOne visit measured | 4 of 4 passed |
| Next.jsShared with every CMP | 240 ms | +408 ms95% interval 396 ms to 420 ms | 32 msOne visit measured | 4 of 4 passed |
| NuxtShown above | 240 ms | +512 ms95% interval 504 ms to 524 ms | 32 msOne visit measured | 4 of 4 passed |
| Astro | 251 ms | +328 ms95% interval 324 ms to 332 ms | 32 msOne visit measured | 4 of 4 passed |
| TanStack Start | 250 ms | +416 ms95% interval 408 ms to 436 ms | 48 msOne visit measured | 4 of 4 passed |
Lab detail for engineers. All Core Web Vitals are here. The summary leaves some of them out.
The banner was visible at 240 ms. The published results do not show when c15t started to load.
| Event | Time from navigation |
|---|---|
| First byte (TTFB) | 17 ms |
| Banner visible | 240 ms |
| First paint (FCP) | 268 ms |
| Consent state known | 1.18 s |
| Largest paint (LCP) | 3.67 s |
| CMP requested | |
| CMP loaded |
Each row shows the value on the page with the consent manager. It also shows how far the value moved from the same page without one.
| Measure | With c15t | Difference |
|---|---|---|
| TTFBTime to first byte | 17 ms | +13 ms95% interval 6 ms to 19 ms |
| FCPFirst Contentful Paint | 268 ms | +36 ms95% interval 20 ms to 44 ms |
| LCPLargest Contentful Paint | 3.67 s | +512 ms95% interval 504 ms to 524 ms |
| CLSCumulative Layout Shift | 0.00 | No measurable difference95% interval: 0.00 |
| Primary content paintThe page’s main content, not the banner | 3.67 s | +512 ms95% interval 504 ms to 524 ms |
LCP times the largest element on screen. If that is the banner, LCP measures the banner instead of the page.
There is no LCP attribution for this profile and framework.
The screen responded to Accept in 32 ms.
| Event | Time from the click |
|---|---|
| Screen responds | 32 ms |
| Banner gone | |
| Consent applied | |
| Analytics active |
Initial transfer happens before the page settles. Deferred transfer comes after.
| Measure | With c15t | Difference |
|---|---|---|
| Initial transferBytes before the page settles | 665 KB | +113 KB95% interval 112 KB to 113 KB |
| Deferred transferBytes loaded later | Not compared | |
| RequestsAll requests | 36 | +27No interval reported |
| Third-party requestsRequests to other hosts | 0 | 0No interval reported |
Long tasks are stretches over 50 ms when the page cannot respond to taps or keys.
| Measure | With c15t | Difference |
|---|---|---|
| Long-task timeBlocking time during load | 61 ms | +61 msNo interval reported |
A visitor who accepted on an earlier visit comes back. We check that the banner stays hidden.
matrix-2026-10-11On desktop, it appeared in a median 60 ms, against 471 ms for the median of the 10 CMPs measured. On an emulated mid-tier phone, it appeared in a median 240 ms, against 2.71 s for the median of the 10 CMPs measured.
On desktop it delayed the main content by 16 ms (95% interval 8 ms to 40 ms). On an emulated mid-tier phone it delayed the main content by 408 ms (95% interval 396 ms to 420 ms). Delay is the extra time before the main content appears. We compare Largest Contentful Paint on the same page, with and without a consent manager.
It passed 4 of 4 checks on desktop and on an emulated mid-tier phone. A check fails if a tracker runs, the page sets a cookie or data leaves the page before the visitor chooses.
Per vendor docs, c15t supports IAB TCF, IAB GPP, Google Consent Mode v2 and Global Privacy Control, but not Google CMP certification. Feature support comes from c15t’s documentation. CookieBench did not test these features itself.