# Which consent managers support which features?

Pick the features that you cannot do without. "Yes" means that the vendor's documentation says it works. "Yes (tested)" means that a CookieBench run tested it.

8 of 10 have no framework SDK. They install through a script tag, which works in any framework.

### Standards

| Feature | c15t | Cookie Control | CookieYes | Didomi | Enzuzo | iubenda | Ketch | OneTrust | Osano | Usercentrics |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| IAB TCF | Yes | Yes (TCF v2.3) | Yes (Pro and Ultimate plans) | Yes (TCF v2.2) | Yes (Growth plan and up) | Yes (TCF v2.2) | Yes (TCF v2.2) | Yes (TCF v2.2 and v2.3) | Yes (TCF v2) | Yes (Pro plan and up) |
| IAB GPP | Yes (GPP 1.1) | Unknown | Unknown | Yes | Unknown | Yes | Yes | Yes | Yes | Yes (v3 script tag) |
| Google Consent Mode v2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Google-certified CMP | No (Not on Google’s list) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Global Privacy Control | Yes | Yes | Yes (Pro and Ultimate plans) | Yes | Yes | Yes | Yes | Yes | Yes | Yes |

### Compliance

| Feature | c15t | Cookie Control | CookieYes | Didomi | Enzuzo | iubenda | Ketch | OneTrust | Osano | Usercentrics |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Geo-targeted banners | Yes | Yes (Paid editions) | Yes (Pro and Ultimate plans) | Yes | Yes (Growth plan and up) | Yes (Advanced and Ultimate plans) | Yes | Yes | Yes | Yes (Plus plan and up) |
| Script blocking | Yes | Yes | Yes | Yes (Tag-based) | Yes | Yes | Yes (Tag orchestration) | Yes | Yes (Paid plans) | Yes (Paid plans) |
| Consent records | Yes (With a backend) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes (Paid plans) | Yes (Kept 12 months) |
| Cookie scanning | Yes (Via Inth Website Audit) | Yes (Paid editions) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |

### Developer

| Feature | c15t | Cookie Control | CookieYes | Didomi | Enzuzo | iubenda | Ketch | OneTrust | Osano | Usercentrics |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Open source | Yes (Apache-2.0) | No (Proprietary) | No (Proprietary) | No (Proprietary) | No (Hosted embed only) | No (Hosted embed only) | Partial (SDKs and samples only) | No (Proprietary) | Partial (Older library only) | No (Commercial licence) |
| Self-hostable | Yes | No (Hosted service) | Unknown | Partial (Assets through your domain) | No (Hosted embed only) | No (Hosted embed only) | No (Hosted service) | Partial (Script only; hosted backend) | No (Hosted script) | No (Hosted backend) |
| Headless UI | Yes | Partial (JavaScript methods only) | Unknown | Yes | Yes (Enterprise plan) | Partial (Experimental) | Yes | Partial (Mobile and CTV only) | Unknown | Yes |
| TypeScript types | Yes | Unknown | Unknown | Partial (React SDK only) | Unknown | Unknown | Yes | Unknown | Partial (React Native SDK only) | Yes |

### Pricing

| Feature | c15t | Cookie Control | CookieYes | Didomi | Enzuzo | iubenda | Ketch | OneTrust | Osano | Usercentrics |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Free tier | Yes (Open source; hosted free plan) | Yes (Community edition) | Yes (5,000 pageviews a month) | No (Contact sales) | Yes (5,000 visitors a month) | Yes (Under 5,000 pageviews a month) | Yes (5,000 users) | No (Quote-based pricing) | Yes (About 5,000 pageviews a month) | Yes (1,000 sessions a month) |

### Frameworks

"Yes (First-party SDK)" means the vendor ships a package for that framework. "Partial (Script tag only)" means the CMP runs there through its generic script tag. "Benchmarked" links to that CMP's results in that framework. We compare each framework with its own app without a consent manager.

| Framework | c15t | Cookie Control | CookieYes | Didomi | Enzuzo | iubenda | Ketch | OneTrust | Osano | Usercentrics |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Script tag | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/c15t/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/cookie-control/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/cookieyes/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/didomi/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/enzuzo/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/iubenda/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/ketch/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/onetrust/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/osano/script-tag.md) | Yes (Script tag), [benchmarked](https://cookiebench.com/benchmarks/usercentrics/script-tag.md) |
| React | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/c15t/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookie-control/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookieyes/react.md) | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/didomi/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/enzuzo/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/iubenda/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/ketch/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/onetrust/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/osano/react.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/usercentrics/react.md) |
| Next.js | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/c15t.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookie-control.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookieyes.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/didomi.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/enzuzo.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/iubenda.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/ketch.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/onetrust.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/osano.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/usercentrics.md) |
| Vue | Yes (First-party SDK) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) |
| Nuxt | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/c15t/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookie-control/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookieyes/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/didomi/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/enzuzo/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/iubenda/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/ketch/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/onetrust/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/osano/nuxt.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/usercentrics/nuxt.md) |
| Svelte | Yes (First-party SDK) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) |
| SvelteKit | Yes (First-party SDK) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) | Partial (Script tag only) |
| Astro | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/c15t/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookie-control/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookieyes/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/didomi/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/enzuzo/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/iubenda/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/ketch/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/onetrust/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/osano/astro.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/usercentrics/astro.md) |
| TanStack Start | Yes (First-party SDK), [benchmarked](https://cookiebench.com/benchmarks/c15t/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookie-control/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/cookieyes/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/didomi/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/enzuzo/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/iubenda/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/ketch/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/onetrust/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/osano/tanstack-start.md) | Partial (Script tag only), [benchmarked](https://cookiebench.com/benchmarks/usercentrics/tanstack-start.md) |

## Each consent manager

- [c15t](https://cookiebench.com/benchmarks/c15t.md): Open-source consent manager with framework SDKs and a self-hostable backend.
- [Cookie Control](https://cookiebench.com/benchmarks/cookie-control.md): Script-based cookie consent tool from Civic UK.
- [CookieYes](https://cookiebench.com/benchmarks/cookieyes.md): Hosted cookie banner aimed at small and mid-sized sites.
- [Didomi](https://cookiebench.com/benchmarks/didomi.md): Consent and preference management platform with a hosted web SDK.
- [Enzuzo](https://cookiebench.com/benchmarks/enzuzo.md): Hosted privacy compliance suite with a cookie banner.
- [iubenda](https://cookiebench.com/benchmarks/iubenda.md): Compliance suite covering cookie consent, policies and terms.
- [Ketch](https://cookiebench.com/benchmarks/ketch.md): Data permissioning platform with a hosted consent experience.
- [OneTrust](https://cookiebench.com/benchmarks/onetrust.md): Enterprise privacy suite with a hosted cookie consent module.
- [Osano](https://cookiebench.com/benchmarks/osano.md): Privacy platform with a hosted consent manager.
- [Usercentrics](https://cookiebench.com/benchmarks/usercentrics.md): Consent management platform; also owns Cookiebot.

## Where does this feature data come from?

Each status comes from the vendor's public documentation. Each CMP's page lists the page that we read.

We use "Verified by test" only for features that a CookieBench run tested. It covers the setup that we tested, not every configuration. It is not a legal certification.

Vendors change their products often. If a status is wrong or out of date, [report a correction](https://cookiebench.com/corrections.md) with a link to the source.

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