Time until the banner is on screen, as Cookiebench measured it: c15t 65 ms, OneTrust 672 ms, Usercentrics 703 ms.
Banner visible in 65 ms
Cookiebench measured the banner on screen in 65 ms.
Own your cookie banner. c15t puts the banner, the preferences dialog and the consent rules for your scripts in your codebase.
Or read the quickstart for Next.js, TanStack Start, Nuxt, Vue, Astro or another framework.
Upgrading from v2? See what is new in v3.
import {
ConsentBanner, ConsentDialog, ConsentDialogLink, ConsentRoot,
} from 'c15t/next';
import { defineConsentConfig, resolveConsent } from 'c15t/next/server';
import type { ReactNode } from 'react';
export const consentConfig = defineConsentConfig({
backendURL: 'https://your-project.inth.app',
manifestURL: '/api/c15t/manifest',
});
export function Consent({ children }: { children: ReactNode }) {
const state = resolveConsent({ config: consentConfig });
return (
<ConsentRoot state={state} backendURL={consentConfig.backendURL}>
{children}
<ConsentBanner />
<ConsentDialog />
<ConsentDialogLink>Privacy settings</ConsentDialogLink>
</ConsentRoot>
);
}export default defineNuxtConfig({
c15t: {
backendURL: 'https://your-project.inth.app',
manifest: 'server',
},
modules: ['c15t/vue'],
});// Astro 7 with the Svelte dialog integration.
import svelte from '@astrojs/svelte';
import { defineConfig } from 'astro/config';
import c15t, { hosted } from 'c15t/astro';
export default defineConfig({
integrations: [
svelte(),
c15t({
mode: hosted({ url: 'https://your-project.inth.app' }),
ui: 'svelte', // Use the framework your site already ships.
}),
],
output: 'static', // Consent resolves in the browser.
});<head>
<script
src="https://your-project.inth.app/c15t.js"
defer
></script>
</head>
<body>
<footer>
<a href="#c15t-preferences">Privacy settings</a>
</footer>
</body>Also in TanStack Start, React, Vue, Svelte, SvelteKit and JavaScript.
c15t is open source under the Apache 2.0 licence. The same code runs on Inth or self-hosted. You learn it once for 10 frameworks. It supports IAB TCF 2.4, and its Google helpers send Consent Mode v2 signals.
Time until the banner is on screen, as Cookiebench measured it: c15t 65 ms, OneTrust 672 ms, Usercentrics 703 ms.
Cookiebench measured the banner on screen in 65 ms.
We value your privacy
Right-to-left included. Override any string.
Your colours, radius and shape. Or build your own UI with headless hooks.
Policy rules pick what each visitor sees.
Privacy Settings
IAB Registered Vendors
These partners are registered with the IAB Transparency & Consent Framework (TCF), an industry standard for managing consent
The IAB TCF banner and dialog, ready to mount.
The server resolves consent and sends it with the HTML. No init call.
Switch a category off. Its vendors wait.
42 of 42 running
Always loads and gets consent signals.
Import each helper from @c15t/integrations.
Paste this line into your agent. It reads the setup brief and does each step.
The setup brief is at /SKILL.md. For the docs, agents can read /llms.txt and /llms-full.txt, or use the MCP server at with no sign-in.
The CLI plans the setup. You check the plan, then apply it.
To do each step yourself, read the quickstart. To get JSON results for scripts and agents, read the automation guide.
Inth hosts the backend, the policy rules and the IAB CMP ID.