How fast does the banner appear?
Median of 15 visits.
All 6 integrations, best first
- Script tag558 ms
- TanStack Start637 ms
- Next.js644 ms
- React647 ms
- Astro649 ms
- Nuxt671 ms
In our tests with its Astro integration, Osano showed its cookie banner in a median 649 ms on desktop. It added no measurable delay to the main content. Accept responded in 40 ms and Reject in 32 ms. It held trackers back in all 4 consent checks.
On an emulated mid-tier phone, the banner took 1.79 s. Per vendor docs, Osano supports IAB TCF, IAB GPP, Google Consent Mode v2, Google CMP certification and Global Privacy Control.
On Astro. We measured other CMPs on Next.js only, so this comparison uses Osano’s other integrations.
Median of 15 visits.
Main content painted as fast as on the same page without a consent manager.
Reject responded in 32 ms. Under 200 ms feels instant.
No tracker ran and the page set no cookie before the visitor chose.
Each status comes from Osano’s documentation. CookieBench does not test these features unless a line says so.
| Feature | Status |
|---|---|
| IAB TCF | TCF v2 (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 | Paid plans (vendor documentation, opens in a new tab) |
| Consent records | Paid plans (vendor documentation, opens in a new tab) |
| Cookie scanning | Per vendor docs (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Open source | Older library only (vendor documentation, opens in a new tab) |
| Self-hostable | Hosted script (vendor documentation, opens in a new tab) |
| Headless UI | Unknown |
| TypeScript types | React Native SDK only (vendor documentation, opens in a new tab) |
| Feature | Status |
|---|---|
| Free tier | About 5,000 pageviews a month (vendor documentation, opens in a new tab) |
Support per Osano’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 | 558 ms | No measurable delay95% interval −8 ms to 16 ms | 40 msOne visit measured | 4 of 4 passed |
| React | 647 ms | No measurable delay95% interval −20 ms to 16 ms | 40 msOne visit measured | 4 of 4 passed |
| Next.jsShared with every CMP | 644 ms | No measurable delay95% interval −20 ms to 20 ms | 32 msOne visit measured | 4 of 4 passed |
| Nuxt | 671 msOnly 14 visits measured | +2 msOnly 14 visits measured | 48 msOne visit measured | 3 of 4 passed |
| AstroShown above | 649 ms | No measurable delay95% interval −4 ms to 32 ms | 40 msOne visit measured | 4 of 4 passed |
| TanStack Start | 637 ms | No measurable delay95% interval −12 ms to 20 ms | 40 msOne visit measured | 1 of 4 passed |
Desktop: no issues recorded.
Lab detail for engineers. All Core Web Vitals are here. The summary leaves some of them out.
The banner was visible at 649 ms. The published results do not show when Osano started to load.
| Event | Time from navigation |
|---|---|
| First byte (TTFB) | 5 ms |
| First paint (FCP) | 60 ms |
| Largest paint (LCP) | 108 ms |
| Banner visible | 649 ms |
| 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 Osano | Difference |
|---|---|---|
| TTFBTime to first byte | 5 ms | No measurable difference95% interval −1 ms to 2 ms |
| FCPFirst Contentful Paint | 60 ms | No measurable difference95% interval −16 ms to 20 ms |
| LCPLargest Contentful Paint | 108 ms | No measurable difference95% interval −4 ms to 32 ms |
| CLSCumulative Layout Shift | 0.00 | No measurable difference95% interval: 0.00 |
| Primary content paintThe page’s main content, not the banner | 108 ms | No measurable difference95% interval −4 ms to 32 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 40 ms.
| Event | Time from the click |
|---|---|
| Screen responds | 40 ms |
| Banner gone | |
| Consent applied | |
| Analytics active |
Initial transfer happens before the page settles. Deferred transfer comes after.
| Measure | With Osano | Difference |
|---|---|---|
| Initial transferBytes before the page settles | 585 KB | +87 KB95% interval 85 KB to 87 KB |
| Deferred transferBytes loaded later | Not compared | |
| RequestsAll requests | 8 | +4No interval reported |
| Third-party requestsRequests to other hosts | 4 | +4No interval reported |
Long tasks are stretches over 50 ms when the page cannot respond to taps or keys.
| Measure | With Osano | Difference |
|---|---|---|
| Long-task timeBlocking time during load | 20 ms | +20 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 644 ms, against 471 ms for the median of the 10 CMPs measured. On an emulated mid-tier phone, it appeared in a median 2.15 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 424 ms (95% interval 420 ms to 428 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.
On desktop it passed 4 of 4 checks. On an emulated mid-tier phone it passed 2 of 4 checks. In 2, the accept check failed and the reject check failed. A check fails if a tracker runs, the page sets a cookie or data leaves the page before the visitor chooses.
Per vendor docs, Osano supports IAB TCF, IAB GPP, Google Consent Mode v2, Google CMP certification and Global Privacy Control. Feature support comes from Osano’s documentation. CookieBench did not test these features itself.