16KB of JavaScript that replaces your $50/month CMP
When we set out to build Zest, we had one constraint: it had to be smaller than the DNS lookup for a hosted CMP’s dashboard. The result is ~16KB gzipped for 12 languages, ~9KB for one, ~11KB headless. No dependencies.
The problem with CMPs
Most consent banners are built like SaaS dashboards that happen to render a popup. They load analytics, telemetry, and enough JavaScript to run a small application. The actual consent logic is maybe 5% of the payload.
We stripped everything that isn’t consent logic.
What we kept
Script blocking uses a MutationObserver and a regex engine. There are four modes: manual, safe, strict, and doomsday. Cookie interception monkey-patches document.cookie to queue writes and replay them once consent arrives. We do the same for localStorage and sessionStorage. Network requests through fetch, XHR, and sendBeacon get blocked before they leave. The UI sits in a Shadow DOM so page styles can’t leak in. We ship 12 languages with auto-detection, plus Google Consent Mode v2 and Microsoft UET support.
What we cut
No framework. Vanilla JS. The banner never phones home. No dashboard — a single inline <script> block is the entire API. We don’t polyfill anything beyond what browsers have shipped in the last five years: MutationObserver, Proxy, IntersectionObserver.
The result
Under 10ms on a warm cache. Faster than the DNS lookup for most hosted CMP dashboards.
Try it
Open the builder and see the banner live. Configure it, copy the script, and drop it on your site. The whole thing will be smaller than the favicon on most CMP dashboards.
Related: Why every CMP subscription is a compliance time bomb · Google Consent Mode v2 explained
—
May the source be with you.
Alex @ FreshJuice