Cookie consent without the CMP bloat.

One script tag. Google Consent Mode v2 built in. Pro blocks scripts until consent is granted.

Google Consent Mode v2Under 10kb gzippedNo account neededMIT Licensed
Configure & try it liveFull demo →
<script src="https://www.safebanner.com/safebanner.js"></script>

Using SafeBanner on a client or production site?

Pro blocks marked analytics and marketing scripts until consent.

What you need, without enterprise baggage.

OneTrust is for enterprises. Cookiebot is slow and expensive. Most free scripts are abandoned. SafeBanner is a maintained, open source consent tool that takes 2 minutes to install. Free shows the banner. Pro enforces consent by blocking scripts until approval.

Live in 5 minutes.

1

Add one script tag

No build step. Works with any stack.

2

Customize if you want

Colors, position, text. Or use defaults.

3

Consent is live

Consent stored. Google signals sent automatically.

Built for teams who hate their current solution.

Open source

Audit the code yourself. No black boxes.

Lightweight

~6kb gzipped. No external dependencies.

Actually works

GDPR opt-in by default. Consent persists. Google gets the signal.

No account required

Free tier runs entirely client-side.

What SafeBanner covers

  • Consent banner with Accept All / Reject All
  • Google Consent Mode v2 signals
  • Script blocking until consent (Pro)
  • Consent expiry and re-prompting (Pro)
  • Cookie cleanup on rejection
  • Opt-in by default (GDPR pattern)
  • Multi-language support (EN/FR/DE + 40 more with Pro)
  • onConsentChange() callback API

Intentionally simple

SafeBanner handles consent and enforcement. It doesn't:

  • Manage vendors or IAB TCF strings
  • Store hosted consent records
  • Act as your legal system of record

SafeBanner manages consent on the site itself. No hosted consent records, no data processor relationship, no subprocessor complexity.

You stay in control. SafeBanner exposes consent state via API. Check hasConsentFor('analytics') before loading your trackers, or use Pro script blocking to activate marked scripts after consent.

Free shows the banner. Pro enforces consent.

Free gives you a working consent banner with Google Consent Mode v2. Pro blocks scripts until consent, re-prompts after expiry, and removes SafeBanner branding.

Free

Consent banner

$0

  • Cookie consent banner + UI
  • Google Consent Mode v2 signals
  • onConsentChange() callback API
  • Custom color, position, and theme
  • English, French, German
  • Powered by SafeBanner badge
Install Free

Pro

Consent enforcement

$15/mo

  • Everything in Free, plus:
  • Block scripts until consent is granted
  • Re-prompt after consent expires
  • Clean up accessible cookies on rejection
  • No SafeBanner branding
  • Logo, layouts, custom labels
  • Auto dark/light theme
  • 40+ additional languages
  • License key for production and client sites
Upgrade to Pro

What if I'm audited?

SafeBanner helps you capture consent choices and send Google Consent Mode v2 signals, but it is not legal advice and it does not act as your hosted system of record. Consent stays on the site itself, not in a SafeBanner dashboard.

FAQ

Is this really free?

Yes. Free gives you a working consent banner with Google Consent Mode v2 — no limits, no account. Pro ($15/mo) adds consent enforcement: block scripts until approval, re-prompt after expiry, remove branding, and customize everything. Nothing in Free stops working if you never upgrade.

Can I self-host?

Yes. MIT license. Run it on your own infra.

Does this work with React/Next/WordPress/etc?

Yes. It's a single script tag. Works everywhere.

What if I'm audited?

Consent is stored in the user's browser. SafeBanner does not store hosted consent records or act as a compliance system of record — that keeps your setup simple and your liability low. If you need server-side audit trails, your own backend is the right place to capture and own that data.

Install it in 2 minutes. Never think about it again.

One script tag. Works with any stack. No account, no dashboard, no bloat.