Know exactly who sold your email.
SpamTrace is a privacy-first browser extension that automatically tags your email address when you sign up for websites. When spam arrives, the tag reveals exactly which company shared or sold your data.
- You sign up for a website — SpamTrace automatically fills in a tagged version of your email
- Example: On facebook.com,
you@gmail.combecomesyou+facebook@gmail.com - Spam arrives — The "To" address shows which site leaked your email
- Busted: An email to
you+facebook@gmail.comfromsketchy-spam@xyz.bizmeans Facebook shared your data
- 🔒 100% Local — No servers, no accounts, no data collection
- ⚡ Automatic — Detects email fields and fills them instantly
- 🎯 Smart Detection — Works with React, Vue, and dynamic forms
- 📧 Universal — Works with Gmail, Outlook, Fastmail, and most email providers
- 📋 History Log — Track which sites you've signed up to
- 🪶 Lightweight — Zero bloat, no performance impact
- Download or clone this repository
- Go to
chrome://extensions/ - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select the
spamtracerfolder
- Download or clone this repository
- Copy
manifest-firefox.jsontomanifest.json(or run the swap command below) - Go to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on..."
- Select
manifest.jsonfrom thespamtracerfolder
Quick manifest swap for Firefox:
cp manifest-firefox.json manifest.jsonSwap back for Chrome:
cp manifest-chrome.json manifest.json- Click the SpamTrace icon in your browser toolbar
- Enter your base email address (e.g.,
you@gmail.com) - Make sure the toggle is enabled
- Browse normally — SpamTrace handles the rest
When you encounter a signup form, SpamTrace will automatically fill in a tagged email like you+sitename@gmail.com.
spamtracer/
├── manifest.json # Active manifest (swap for browser)
├── manifest-chrome.json # Chrome-specific manifest (MV3 service_worker)
├── manifest-firefox.json # Firefox-specific manifest (MV3 scripts)
├── background.js # Service worker / background script
├── content.js # Email field detection and autofill
├── popup.html # Extension popup UI
├── popup.js # Popup logic
├── popup.css # Popup styles
├── package.sh # Build script for store submissions
└── icons/
├── icon16.png
├── icon32.png
├── icon48.png
└── icon128.png
| Website | Your Email | Tagged Email |
|---|---|---|
| facebook.com | you@gmail.com | you+facebook@gmail.com |
| app.shopify.com | you@gmail.com | you+app-shopify@gmail.com |
| news.ycombinator.com | you@gmail.com | you+news-ycombinator@gmail.com |
The domain tag is generated by:
- Taking the hostname (e.g.,
www.example.com) - Stripping
www. - Removing the TLD (
.com,.co.uk, etc.) - Joining remaining parts with hyphens
- Limiting to 30 characters
SpamTrace is designed with privacy as the core principle:
- No data collection — We don't collect any information
- No network requests — The extension never contacts any server
- No analytics — No tracking, no telemetry, no crash reports
- No accounts — Nothing to sign up for
- Local storage only — Your email and history stay on your device
- Minimal permissions — Only requests what's absolutely necessary
See our full Privacy Policy for details.
| Permission | Why It's Needed |
|---|---|
storage |
Save your base email and history locally |
activeTab |
Interact with the current page to detect forms |
scripting |
Run the content script that finds email fields |
Run the package script to create distribution zips:
chmod +x package.sh
./package.shThis creates:
dist/spamtrace-chrome.zip— Upload to Chrome Web Storedist/spamtrace-firefox.zip— Upload to Firefox Add-ons
SpamTrace detects email inputs by checking for:
<input type="email"><input>withnameoridcontaining "email" (case-insensitive)
The extension only autofills when:
- The field is empty, OR
- The field contains exactly your base email
It will never overwrite if:
- You've typed something else
- The field already has a
+tag - The field was already processed
A MutationObserver watches for dynamically added elements, ensuring SpamTrace works on:
- Single-page applications (React, Vue, Angular)
- Lazy-loaded forms
- Modal popups
- Infinite scroll pages
| Browser | Manifest Version | Background Type | Status |
|---|---|---|---|
| Chrome | V3 | service_worker |
✅ Supported |
| Firefox | V3 | scripts |
✅ Supported |
| Edge | V3 | service_worker |
✅ Should work (uses Chrome manifest) |
Contributions are welcome! Please feel free to submit issues and pull requests.
MIT License — see LICENSE for details.
- Website
- Privacy Policy
- Chrome Web Store (coming soon)
- Firefox Add-ons (coming soon)