Home › Tools › Supabase Key Checker

Is my Supabase key exposed? Free checker

Paste your app’s URL. We scan the public HTML and JavaScript for Supabase, Stripe and AI keys, then tell you which are meant to be public and which are critical.

We only download the same public files your browser does. We never use a key we find, never touch your database and never test RLS. RLS can only be checked with access to your project. That’s what the $49 Audit does.

What this checker does, and what it never does

It loads your page once, follows at most 3 redirects, and reads up to 25 of the JavaScript files your site sends to every visitor (including code-split chunks one level deep). It looks for key patterns in that text, decodes legacy Supabase keys locally to read their role, and masks every key before showing it.

It never: contacts your Supabase project, uses a key it finds, queries your database or tests your RLS. RLS can only be checked with access to your project. That’s what the $49 Audit does.

Supabase keys explained in 30 seconds

KeyLooks likeIn frontend code?
Publishable keysb_publishable_…Yes, it’s meant to be public
anon key (legacy)long JWT starting eyJ, role anonYes, but it’s being retired
Secret keysb_secret_…Never: server only
service_role key (legacy)long JWT starting eyJ, role service_roleNever: server only

Is it safe to have my Supabase key in my frontend code? Only the publishable key (sb_publishable_…) or the legacy anon key belongs in frontend code. It’s designed to be public, and Row Level Security decides what it can reach. A secret key (sb_secret_…) or legacy service_role key in your JavaScript is critical: it bypasses all RLS, giving anyone full access to your data. Rotate it immediately.

Found a secret key? What it means

Assume someone already has it. Supabase blocks secret keys sent from a browser, but that doesn’t make a leaked one harmless: it still works from any script or server. The order matters (remove the cause, then rotate), and we cover it step by step in what to do if you leaked your service_role key.

Why a “safe” key isn’t the whole story

A publishable or anon key is public by design. What protects your data is Row Level Security on every table. If a table has RLS off, or a policy that’s too open, anyone with your public key can read it. See how to tell if your app is leaking data and why RLS sometimes returns an empty array. We can’t see RLS from outside; the $49 Audit reviews it.

Supabase is retiring legacy keys (end of 2026)

Supabase is deprecating the anon and service_role keys by the end of 2026 in favour of publishable and secret keys. If the checker reports a legacy anon key, plan the switch. Separately, from October 30, 2026 new tables need explicit grants before your app can reach them: see the 5-minute checklist.

Other secrets we flag

Key formats checked on October 19, 2026 against Supabase’s API keys guide and Stripe’s API keys docs.

Privacy

We fetch your page and its JavaScript files once, scan them in memory and throw them away. We don’t store your files or any key we find, and keys are masked before they leave our server. To stop abuse we count checks per hashed IP address and per checked domain in server memory for up to 24 hours; nothing about a check is written to disk or a database by us. If you ask for the email report, we store your email, the URL and the types of findings (never the keys themselves) to send it, plus one follow-up if you opt in. We never use a found key or access your database. Full details in our privacy policy.

FAQ

Is my Supabase anon key supposed to be public?

Yes. The legacy anon key and the newer publishable key are designed to be public. Row Level Security protects your data.

What happens if my service_role or secret key is exposed?

It bypasses all Row Level Security, so anyone who has it gets full read and write access to your data. Remove the cause first, then rotate the key. See what to do if you leaked a key.

Does this tool access my database?

No. It never uses a key, never queries your database and never tests RLS. It only reads the public HTML and JavaScript your site sends to every visitor.

Can it tell me if my RLS is secure?

No. That needs access to your project. The $49 Audit reviews every table, grant and policy.

Why didn’t it find my key?

Keys loaded after login, fetched from a server, or kept in files we can’t reach aren’t visible to us. A clean result isn’t a guarantee.

Do you store the keys you find?

No. Keys are masked before anything leaves our server, and we never store them. See Privacy above.

How is this different from the health check?

The health check also covers HTTPS, security headers and source maps. This tool goes deeper on keys: which Supabase key type you ship, whether it’s a legacy key, and in which file we saw it.

Get the free full scan by email

Want us to check the parts this tool can’t see? Send your repo and we’ll email you the top issues we find.