Free Tool

Secret Scanner

Paste .env files, code, or config to detect exposed API keys and credentials. 30+ patterns including AWS, OpenAI, Stripe, Supabase service role, Firebase admin, GitHub tokens, and private keys.

100% client-side. Your content never leaves your browser.

Patterns this tool detects

AWS Access Key ID
AWS Secret Access Key (candidate)
OpenAI API Key
Anthropic API Key
Stripe Live Secret Key
Stripe Test Secret Key
Stripe Restricted Key
Stripe Publishable Key
Supabase Service Role Key
Firebase Admin SDK Credential
GitHub Personal Access Token
GitHub Fine-Grained Token
GitHub OAuth Token
GitLab Personal Access Token
Slack Bot Token
Slack User Token
Slack Webhook URL
Google API Key
Azure Client Secret
Twilio API Key
Twilio Account SID
SendGrid API Key
Mailgun API Key
Mailchimp API Key
Heroku API Key (UUID)
JWT Token
Private Key (PEM)
Generic High-Entropy Secret in Assignment
Generic Long Hex String (possible secret)
Password Assignment
npm Access Token
PyPI Upload Token

Frequently Asked Questions

What does this secret scanner detect?

30+ secret patterns including AWS keys, OpenAI (sk-), Stripe (sk_live_), Supabase service role, Firebase Admin SDK, GitHub tokens (ghp_, github_pat_), Slack tokens (xoxb/xoxp), Google API keys, Azure secrets, Anthropic keys, JWTs, and PEM private keys.

Is my data safe? Does anything upload?

Nothing uploads. The tool runs 100% in your browser — pattern matching happens in JavaScript on your device. You can verify: open DevTools Network tab while scanning, zero outbound requests.

I found a secret. What do I do?

Rotate it immediately (generate new key, update deployments, then revoke old one). Remove from git history (git filter-repo or BFG — deleting the file doesn't help). Check logs for unauthorized use. Audit where else it was used.

What's the difference between Supabase anon and service_role keys?

The anon key is designed to be public — it ships in your frontend and relies on RLS policies. The service_role key bypasses ALL RLS and grants admin access. Seeing anon in a bundle is expected; seeing service_role is a critical vulnerability.

Why can't the scanner find every possible secret?

Secrets with distinctive prefixes (AWS, Stripe, OpenAI) are easy to pattern-match. Custom-generated random tokens look identical to non-secrets, so matching them produces too many false positives. For comprehensive coverage on production apps, use the full VAS scanner.