How fast does the banner appear?
Median of 15 visits.
All 6 integrations, best first
- React3.66 s
- Script tag3.68 s
- Astro3.70 s
- TanStack Start3.79 s
- Nuxt3.85 s
- Next.js3.92 s
In our tests with its Nuxt integration, OneTrust showed its cookie banner in a median 3.85 s on an emulated mid-tier phone. It delayed the main content by 716 ms (95% interval 688 ms to 744 ms). Accept responded in 24 ms and Reject in 16 ms. It held trackers back in all 4 consent checks.
On desktop, the banner took 640 ms. Per vendor docs, OneTrust supports IAB TCF, IAB GPP, Google Consent Mode v2, Google CMP certification and Global Privacy Control.
On Nuxt. We measured other CMPs on Next.js only, so this comparison uses OneTrust’s other integrations.
Median of 15 visits.
Compared with the same page without a consent manager.
Reject responded in 16 ms. Under 200 ms feels instant.
No tracker ran and the page set no cookie before the visitor chose.
Each status comes from OneTrust’s documentation. CookieBench does not test these features unless a line says so.
| Feature | Status |
|---|---|
| IAB TCF | TCF v2.2 and v2.3 (vendor documentation, opens in a new tab) |
| IAB GPP | Per vendor docs (vendor documentation, opens in a new tab) |
| Google Consent Mode v2 | Per vendor docs (vendor documentation, opens in a new tab) |
| Google-certified CMP | Per vendor docs (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 | Per vendor docs (vendor documentation, opens in a new tab) |
| Cookie scanning | Per vendor docs (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Open source | Proprietary (vendor documentation, opens in a new tab) |
| Self-hostable | Script only; hosted backend (vendor documentation, opens in a new tab) |
| Headless UI | Mobile and CTV only (vendor documentation, opens in a new tab) |
| TypeScript types | Unknown |
| Feature | Status |
|---|---|
| Free tier | Quote-based pricing (vendor documentation, opens in a new tab) |
Support per OneTrust’s documentation (opens in a new tab).
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 | 3.68 s | +812 ms95% interval 760 ms to 836 ms | 16 msOne visit measured | 4 of 4 passed |
| React | 3.66 s | +300 ms95% interval 264 ms to 348 ms | 16 msOne visit measured | 4 of 4 passed |
| Next.jsShared with every CMP | 3.92 s | +476 ms95% interval 444 ms to 508 ms | 16 msOne visit measured | 4 of 4 passed |
| NuxtShown above | 3.85 s | +716 ms95% interval 688 ms to 744 ms | 24 msOne visit measured | 4 of 4 passed |
| Astro | 3.70 s | +860 ms95% interval 812 ms to 904 ms | 16 msOne visit measured | 4 of 4 passed |
| TanStack Start | 3.79 s | +472 ms95% interval 452 ms to 492 ms | 24 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 3.85 s. The published results do not show when OneTrust started to load.
| Event | Time from navigation |
|---|---|
| First byte (TTFB) | 6 ms |
| First paint (FCP) | 244 ms |
| Banner visible | 3.85 s |
| Largest paint (LCP) | 3.86 s |
| CMP requested | |
| CMP loaded | |
| Consent state known |
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 OneTrust | Difference |
|---|---|---|
| TTFBTime to first byte | 6 ms | No measurable difference95% interval −1 ms to 3 ms |
| FCPFirst Contentful Paint | 244 ms | No measurable difference95% interval 0 ms to 20 ms |
| LCPLargest Contentful Paint | 3.86 s | +716 ms95% interval 688 ms to 744 ms |
| CLSCumulative Layout Shift | 0.00 | No measurable difference95% interval: 0.00 |
| Primary content paintThe page’s main content, not the banner | 4.25 s | +1.09 s95% interval 1.08 s to 1.11 s |
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 24 ms.
| Event | Time from the click |
|---|---|
| Screen responds | 24 ms |
| Banner gone | |
| Consent applied | |
| Analytics active |
Initial transfer happens before the page settles. Deferred transfer comes after.
| Measure | With OneTrust | Difference |
|---|---|---|
| Initial transferBytes before the page settles | 764 KB | +211 KB95% interval: 211 KB |
| Deferred transferBytes loaded later | Not compared | |
| RequestsAll requests | 21 | +12No interval reported |
| Third-party requestsRequests to other hosts | 12 | +12No interval reported |
Long tasks are stretches over 50 ms when the page cannot respond to taps or keys.
| Measure | With OneTrust | Difference |
|---|---|---|
| Long-task timeBlocking time during load | 117 ms | +117 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 629 ms, against 471 ms for the median of the 10 CMPs measured. On an emulated mid-tier phone, it appeared in a median 3.92 s, against 2.71 s for the median of the 10 CMPs measured.
On desktop it added no measurable delay to the main content. On an emulated mid-tier phone it delayed the main content by 476 ms (95% interval 444 ms to 508 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, OneTrust supports IAB TCF, IAB GPP, Google Consent Mode v2, Google CMP certification and Global Privacy Control. Feature support comes from OneTrust’s documentation. CookieBench did not test these features itself.