ConsentLayer and c15t
c15t is an open-source consent management platform for JavaScript and the project closest to ConsentLayer. The two overlap, but they solve different parts of the problem. c15t collects consent: it ships the banner, stores each choice and loads third-party scripts once they are allowed. ConsentLayer acts on consent: you bring the banner, and it loads the analytics providers and sends your events to them, in the browser and from your server.
This page compares the two as of October 2026. The c15t column is based on its repository and documentation, not on running it; check them for anything that has changed since.
Comparison
Section titled “Comparison”| Area | c15t | ConsentLayer |
|---|---|---|
| Banner and settings UI | Prebuilt banner, preference dialog and theme system, plus headless hooks | A banner in the script tag only. On npm you build your own on useConsentController() |
| Translations | 35 languages | English, with every string overridable |
| Consent records | A hosted service (Inth) with a dashboard and audit history, or a self-hosted backend on PostgreSQL, MySQL or SQLite | Appended to your own database through a store, with built-in stores for Supabase, Prisma, Drizzle and Upstash. No dashboard |
| Integrations | More than 40 script loaders: analytics, ad pixels, chat, monitoring and embeds | 9 providers, plus your own with definePlugin() |
| Tracking API | Loads each vendor’s script; you call each vendor’s API | One track, page and identify API, translated for each provider, with auto-tracking |
| Server-side events | Not in its documentation | GA4 Measurement Protocol, Meta Conversions API, TikTok Events API and server-side GTM, with consent checked on the server |
| IAB TCF | A full CMP for TCF 2.4 and GPP | Reads the choice of a TCF CMP on the page; it is not a CMP |
| Global Privacy Control | Supported | Supported |
| Google Consent Mode v2 | Supported | Supported |
| Rules per visitor region | Built in, such as opt-in in the EU and opt-out in some US states | Planned; the defaults follow the opt-in model everywhere |
| Frameworks | React, Next.js, Vue, Nuxt, Astro, TanStack Start, Svelte, SvelteKit and a script tag | React, Next.js, Vue, Nuxt, Svelte, SvelteKit, Solid, SolidStart, Angular and a script tag |
| Runtime dependencies | Not stated | None |
| License | Apache 2.0 | MIT |
| Maturity | About 2,000 GitHub stars and more than 2,100 sites, maintained by a company (Inth) | A new 1.0 release with little production history |
What c15t has that ConsentLayer does not
Section titled “What c15t has that ConsentLayer does not”- A finished consent UI on every framework, themed and translated into 35 languages. With ConsentLayer you design and translate the banner yourself, unless you use the script tag.
- A consent platform you don’t have to run: hosted consent records with a dashboard and audit history. ConsentLayer writes records to your database and leaves querying, retention and deletion to you.
- A full IAB TCF and GPP implementation. Its documentation describes using Inth’s registered CMP ID with the hosted service and its stock IAB components; other setups need their own registration with IAB Europe. ConsentLayer only reads a CMP’s decision.
- Rules per visitor region, which ConsentLayer has only on its roadmap.
- Over four times as many integrations, including chat widgets, embeds such as YouTube and Google Maps, and pixels for LinkedIn, Reddit, Snapchat, X and Microsoft.
- Support for Astro and TanStack Start.
- A track record: it is used in production by thousands of sites and maintained by a company. ConsentLayer has no production history yet.
Each of these features, including hosted consent records, is on the roadmap.
What ConsentLayer has that c15t does not
Section titled “What ConsentLayer has that c15t does not”- One tracking API for every provider.
analytics.track('purchase', ...)reaches GA4, Meta, TikTok and PostHog, each in its own format and only while its consent category is granted. - Server-side events. The same events are forwarded to GA4, Meta, TikTok and server-side GTM from your server, which can accept only the consent the visitor’s signed consent cookie proves.
- Support for Solid, SolidStart and Angular, which c15t’s documentation does not list.
- No runtime dependencies and no backend to host. Consent records are optional.
Using both
Section titled “Using both”c15t can collect consent while ConsentLayer tracks. When c15t runs as an IAB
TCF CMP, the tcf() adapter reads its decision and
ConsentLayer follows it. This combination has not been tested; the adapter is
tested against a simulated __tcfapi. Without TCF mode, call
analytics.consent.update() whenever c15t reports a
change.
Neither project makes a setup comply with a law; see the legal notice.