keyFinder is a free, open source browsers & extensions project written in JavaScript and released under MIT. It has 730 GitHub stars, 128 forks and 5 open issues, and was last pushed 9 days ago. On this registry it ranks #138 of 150 tracked projects in Browsers & Extensions, with 5 head-to-head comparisons available. It gained 11 stars over the last 30 tracked days.

What is keyFinder?

KeyFinder is an MIT-licensed browser extension for Chrome and Firefox that passively scans every page a visitor loads for leaked API keys, tokens, secrets, and credentials across more than 80 detection patterns with zero configuration, built for security engineers, penetration testers, bug bounty hunters, and developers who need to catch exposed credentials as they browse.

What it is

KeyFinder is a JavaScript browser extension distributed for Chrome and Firefox and built on the Manifest V3 service worker architecture. It runs silently in the background on every page load, inspecting the rendered page rather than requiring the user to invoke a scan. The codebase is pure vanilla JavaScript with zero dependencies, which means no jQuery and no external libraries are bundled, and the project is published under the MIT licence in the Browsers and Extensions category.

The concrete problem it solves is credential exposure on the client side. Secrets routinely leak into places that a casual page review misses: inline script blocks, script source URLs, meta tags, hidden form field values, data attributes, HTML comments, URL query parameters, localStorage and sessionStorage, and the bodies of XHR and Fetch responses. KeyFinder replaces the manual practice of opening browser developer tools and hand-searching page source and storage for sensitive strings, and it applies Shannon entropy analysis to surface random high-entropy strings that do not match a documented provider format at all.

Key capabilities

  • Ships with 80+ detection patterns spanning cloud providers such as AWS access keys, secret keys, session tokens, and Cognito, plus Google Cloud API keys and OAuth tokens and Azure storage keys, SAS tokens, and connection strings.
  • Covers source control tokens including GitHub personal access tokens, fine-grained tokens, and OAuth tokens, GitLab personal access, pipeline, and runner tokens, and Bitbucket credentials, alongside payments providers such as Stripe secret, publishable, restricted, and webhook keys.
  • Detects database connection strings for MongoDB, PostgreSQL, MySQL, and Redis, infrastructure secrets for HashiCorp Vault, Terraform, Docker Hub, NPM, Cloudflare, DigitalOcean, Doppler, Pulumi, and Grafana, and private keys in RSA, EC, OpenSSH, PGP, and DSA formats.
  • Scans ten attack surfaces per page: script src URLs, inline scripts, same-origin external scripts, meta tags, hidden form fields, data attributes, HTML comments, URL parameters, web storage, and network responses.
  • Applies Shannon entropy analysis to flag undocumented secret formats that match no fixed pattern.
  • Runs SPA-aware through a MutationObserver that re-scans dynamically injected DOM, and scans all frames including iframes.
  • Provides an ops-console dashboard with severity-sorted findings, click-to-filter severity tiles, a latest-finding ticker, live search where the slash key focuses and Escape clears, one-click copy match chips, per-finding delete, and JSON or CSV export with a formula-injection sanitiser.

Who uses it and how

  • Bug bounty hunters and penetration testers use it during reconnaissance, letting the extension flag secrets on each target page as they browse rather than pausing to inspect sources by hand.
  • Security engineers and infosec teams reviewing web applications can deploy it across a whole team because passive scanning requires no per-user configuration and produces a per-tab red-dot alert badge when a tab has findings.
  • Developers triage results directly in the dashboard, copying a matched secret from a match chip and exporting filtered findings as JSON or CSV for a report.
  • OSINT analysts benefit from coverage of iframes and MutationObserver-driven re-scanning, which reaches embedded and dynamically injected content.
  • Long reconnaissance sessions stay bounded by design: storage holds up to 5000 findings with FIFO eviction, writes are serialised across tabs, and custom keywords are validated at a maximum of 50.

Getting started

Install KeyFinder from the Chrome Web Store or from Firefox Add-ons, or build from source by cloning https://github.com/momenbasel/keyFinder.git, enabling Developer mode at chrome://extensions and using Load unpacked for Chrome, or loading manifest.firefox.json through about:debugging for Firefox.

How it compares

The supplied facts name no competing or paid products that KeyFinder replaces, so it stands alone in this registry rather than sitting alongside a defined set of alternatives.

When to use it — and when not to

A self-hoster has almost nothing to operate: the extension is client-side, with no database, storage service, or SMTP dependency to run. It is a poor fit for anyone who needs scheduled repository or CI pipeline scanning, because detection is passive and tied to pages a user actually visits. The 5000-finding cap with FIFO eviction means it is a triage tool rather than a durable findings archive, and the entropy analysis can flag high-entropy strings that turn out not to be secrets, so results still need human review.

project readme (upstream, from github) — read inline

KeyFinder logo

KeyFinder

Passive API key and secret discovery for Chrome and Firefox


KeyFinder is a browser extension for Chrome and Firefox that passively scans every page you visit for leaked API keys, tokens, secrets, and credentials. It runs silently in the background with zero configuration required.

What It Detects

KeyFinder ships with 80+ detection patterns covering secrets from:

Category Providers
Cloud AWS (Access Keys, Secret Keys, Session Tokens, Cognito), Google Cloud (API Keys, OAuth, Service Accounts), Azure (Storage Keys, SAS Tokens, Connection Strings)
Source Control GitHub (PATs, OAuth, Fine-grained tokens), GitLab (PATs, Pipeline, Runner tokens), Bitbucket
Payments Stripe (Secret, Publishable, Restricted, Webhook), PayPal Braintree, Square
Communication Slack (Bot, User, App tokens, Webhooks), Discord (Bot tokens, Webhooks), Telegram, Twilio, SendGrid
AI / ML OpenAI, Anthropic, HuggingFace, Replicate
Databases MongoDB, PostgreSQL, MySQL, Redis connection strings
SaaS Shopify, Sentry, New Relic, PlanetScale, Linear, Notion, Datadog, Algolia, Mapbox
Infrastructure HashiCorp Vault, Terraform, Docker Hub, NPM, Cloudflare, DigitalOcean, Doppler, Pulumi, Grafana
Crypto RSA, EC, OpenSSH, PGP, DSA private keys
Generic JWTs, Bearer tokens, Basic Auth, API key assignments, credential URLs, high-entropy strings

How It Works

KeyFinder scans 10 different attack surfaces on every page:

  1. Script src URLs - Checks all script source URLs for keywords and tokens in query parameters
  2. Inline scripts - Scans `` tag contents for secret patterns
  3. External scripts - Fetches and scans same-origin JavaScript files
  4. Meta tags - Checks `` tags for leaked API keys and tokens
  5. Hidden form fields - Inspects `` values
  6. Data attributes - Scans data-* attributes for sensitive values
  7. HTML comments - Parses comment nodes for accidentally committed secrets
  8. URL parameters - Analyzes links and hrefs for tokens in query strings
  9. Web storage - Scans localStorage and sessionStorage
  10. Network responses - Intercepts XHR and Fetch responses for leaked secrets

Additionally, Shannon entropy analysis is applied to detect random high-entropy strings that may be undocumented secret formats.

Features

  • Zero dependencies - Pure vanilla JavaScript, no jQuery, no external libraries
  • Manifest V3 - Built for modern Chrome and Firefox with service worker architecture
  • Passive scanning - Runs automatically on every page load
  • SPA-aware - MutationObserver re-scans dynamically injected DOM
  • Per-tab alert badge - Red-dot icon overlay when a tab has findings
  • Custom keywords - Add your own search terms to scan for (validated, 50 max)
  • Ops-console dashboard - Flat terminal UI: severity-sorted findings, click-to-filter severity tiles, latest-finding ticker, and live search (/ focuses, Esc clears)
  • One-click triage - Click any match chip to copy the secret, relative timestamps with absolute on hover, per-finding delete
  • Export - Download filtered findings as JSON or CSV (with formula-injection sanitiser)
  • Hardened bridge - Per-page nonce on MAIN ISOLATED CustomEvent channel
  • Bounded storage - 5000-finding cap with FIFO eviction; serialised writes across tabs
  • Low footprint - Minimal CPU and memory usage
  • All frames - Scans iframes and embedded content

Installation

Chrome

Firefox

From Source

git clone https://github.com/momenbasel/keyFinder.git

Chrome:

  1. Go to chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked and select the keyFinder folder

Firefox:

  1. Go to about:debugging > "This Firefox"
  2. Click Load Temporary Add-on
  3. Select manifest.firefox.json from the keyFinder folder

Usage

  1. Install the extension
  2. Browse the web normally - KeyFinder scans every page in the background
  3. Click the extension icon to see stats and manage keywords
  4. Click View Findings to open the full results dashboard
  5. Filter by severity, provider, or type - or click a severity tile to filter instantly; press / to search
  6. Export findings as JSON or CSV for reporting

Adding Custom Keywords

Click the extension icon, type a keyword in the input field, and click Add. The keyword will be used to scan script URLs, inline code, and key-value assignments on every page you visit.

Default keywords: key, api_key, apikey, api-key, secret, token, access_token, auth, credential, password, client_id, client_secret

Architecture

keyFinder/
  manifest.json            # Chrome MV3 manifest
  manifest.firefox.json    # Firefox MV3 manifest
  popup.html               # Extension popup UI
  results.html             # Findings dashboard
  js/
    background.js          # Service worker - storage and message handling
    patterns.js            # 80+ secret detection regex patterns
    content.js             # ISOLATED-world page scanner - DOM, scripts, network
    interceptor-loader.js  # ISOLATED loader - sets nonce, injects MAIN-world interceptor
    interceptor.js         # MAIN-world XHR/Fetch hooks + window global scanning
    popup.js               # Popup logic
    results.js             # Dashboard logic with filtering and export
  css/
    popup.css              # Popup styles
    results.css            # Dashboard styles
  icons/
    icon16.png
    icon48.png
    icon128.png
  scripts/
    build.sh               # Build Chrome and Firefox zip packages

Security

See SECURITY.md for the threat model, disclosure policy, and known limitations. Release notes are in CHANGELOG.md.

Disclaimer

This tool is intended for security research and authorized testing only. Use it to identify leaked secrets on your own applications or during authorized penetration tests. You are responsible for your own actions.

Professional services

keyFinder is built and maintained by GreyCore Labs, a US-incorporated offensive security firm. Want the same eye on your own product?

License

MIT

Author

@momenbassel - LinkedIn

Frequently asked questions

Is keyFinder free to use?

keyFinder is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does keyFinder do?

Passive API key and secret discovery browser extension for Chrome and Firefox. 80+ detection patterns, zero config.

What is keyFinder written in?

keyFinder is primarily written in JavaScript. Its source is publicly available at https://github.com/momenbasel/keyFinder, and it has 730 GitHub stars.