Show HN: LeakLock – Gitleaks for your live site(finds keys with no known format) LeakLock, an open-source scanner released by developer sgroy10, found that 37 of 978 live apps (1 in 26) shipped at least one secret API key to the browser in a study conducted in October 2026, reading only the 9,698 files a normal browser downloads from Lovable, Bolt, Vercel, Netlify and Cloudflare Pages deployments. Six apps leaked a critical key such as a GitHub token or admin JWT, 17 exposed a Telegram bot token, 9 exposed an AI API key from Groq, Gemini, OpenAI or OpenRouter, and 2 leaked a key only usage-based detection could find; 8.8% served public source maps. LeakLock scans shipped HTML, JS bundles, lazy-loaded chunks and source maps rather than git repos, catching unformatted keys by how code uses them, and runs via npx, in-browser, or as a GitHub Action with a --fail-on=secret CI flag. Find the secret API keys your website gives away to every visitor, including keys no scanner has a pattern for. Get a fix you can paste into Lovable, Bolt or Cursor. Try it in your browser → https://leaklock-production-2a1e.up.railway.app · Quick start quick-start · GitHub Action github-action · How it works how-it-works · FAQ faq npx github:sgroy10/leaklock scan yourapp.com LeakLock scanned https://myapp.lovable.app/ 6 files CRITICAL Supabase service role key project abcdefghijklmnop eyJh…Xk2Q in /assets/index-a1b2.js SECRET kie.ai API key d41f…a07c in /assets/Studio-e5f6.js A secret key sent as a Bearer token to api.kie.ai. Anyone can copy it from your site and call that API as you. SAFE Supabase anon key project abcdefghijklmnop eyJh…c3Rw Public by design. Your data is only as safe as your Row Level Security policies. 1 critical · 1 secret · 0 to review · 1 safe public by design LeakLock is free and open source, forever. No account, no sign-up, no paid tier for scanning. If it helps you, please ⭐ star the repo so more builders find it. AI app builders Lovable, Bolt, v0, Cursor, Replit make it easy to call an API straight from the frontend. When you do, your build tool bundles the key into JavaScript that every visitor downloads . Anyone can open DevTools → Sources, search for key , and copy it. Existing secret scanners look at your git repo . But a key can be clean in git and still ship to the browser through a VITE or NEXT PUBLIC environment variable set in your host's dashboard. LeakLock looks at what you actually ship : the HTML, every JS bundle, lazy-loaded chunks and public source maps. And many APIs AI image, voice and video services especially issue plain random strings with no sk- prefix. Pattern scanners can't recognise those. LeakLock catches them by how your code uses them . In October 2026 we ran LeakLock over 978 live apps Lovable, Bolt, Vercel, Netlify and Cloudflare Pages deployments linked from public GitHub projects , reading only the 9,698 files a normal browser downloads. | Finding | Apps | |---|---| | Shipped at least one secret key to the browser | 37 1 in 26 | | Leaked a critical key GitHub tokens, admin JWTs | 6 | | Exposed a Telegram bot token | 17 | | Exposed an AI API key Groq, Gemini, OpenAI, OpenRouter | 9 | | Leaked a key only usage detection could find | 2 | | Served public source maps | 8.8% | Public-by-design keys Supabase anon, Firebase web, Stripe pk are not counted. Results are aggregate only: no app is named and every key was masked during the scan. The script is in scripts/study.mjs https://github.com/sgroy10/Leaklock/blob/main/scripts/study.mjs if you want to reproduce it on your own list. While running the study we found and fixed five false-alarm patterns form placeholders, Shopify Storefront tokens, Supabase signed URLs, share links and ad tags . Each now has a regression test. In your browser nothing to install : paste a URL at https://leaklock-production-2a1e.up.railway.app https://leaklock-production-2a1e.up.railway.app On your machine Node 18+ : npx github:sgroy10/leaklock scan yourapp.com a live site, any host npx github:sgroy10/leaklock scan dist/ your build folder npx github:sgroy10/leaklock scan dist/ --fix with step-by-step fixes and an AI-builder prompt npx github:sgroy10/leaklock scan dist/ --json machine-readable output npx github:sgroy10/leaklock scan dist/ --fail-on=secret exit 1 if a secret is found for CI From source: git clone https://github.com/sgroy10/leaklock && cd leaklock node bin/leaklock.js scan examples/leaky-app/dist --fix demo app with fake keys planted on purpose npm test run the test suite | Option | What it does | |---|---| | --fix | Plain fix steps for each finding, plus a prompt to paste into Lovable, Bolt, Cursor or v0. The prompt never contains your key. | | --json | Full report as JSON keys masked . | | --fail-on=