๐ Presidio Browser Anonymizer
Chrome Extension + Local Backend - Auto-anonymize PII when pasting text!
Automatically anonymize personal data when pasting into ChatGPT, Claude, Perplexity, Gmail, and any website.
Powered by Microsoft Presidio. Works 100% locally - no data leaves your computer.
๐ต๐ฑ Polski przewodnik dla kaลผdego โข Features โข Installation โข How It Works โข Documentation
โจ Features
๐ New in v1.4.0:
- ๐ช Windows one-click -
Uruchom-Windows.bat: installs everything (incl. Python) and starts the backend with a double-click;Autostart-Windows.batfor start-at-login. Guide for non-technical users: WINDOWS.md - ๐ New default port 6677 - unified across backend, extension and docs (configurable via
PRESIDIO_PORT) - ๐ Send-button fix - fixed an infinite anonymize/click loop when intercepting send buttons
- ๐ No PII in console - extension logs no longer print clipboard/text fragments
v1.3.x:
- ๐ Toggle ON/OFF - Enable/disable auto-anonymization with one click in extension popup
- ๐ Dashboard Logs - View history: original โ anonymized text with timestamps
- ๐ Chrome Web Store Ready - Manifest V3 compliant, ready for publication
Core Features:
- โก Auto-Paste Anonymization - Automatically anonymizes when you paste (Ctrl+V) anywhere!
- ๐ฏ Works on AI Sites - ChatGPT, Claude, Perplexity, Gemini - 100% reliable PASTE method
- โ Zero configuration - One-click installation scripts for Windows/Mac/Linux
- ๐ 100% offline - Everything runs locally, no data leaves your machine
- ๐ Microsoft Presidio - Professional PII detection engine
- ๐ 28 entity types - PESEL, NIP, REGON, emails, phones, credit cards, passports, IDs
- ๐ต๐ฑ Polish language optimized - Native support for Polish PII
- ๐ Works everywhere - ChatGPT, Claude, Gmail, forms, content-editable fields
- ๐ Web Dashboard - Real-time monitoring, testing, and logs
๐ Quick Installation
๐ต๐ฑ PROSTY PRZEWODNIK PO POLSKU: JAK-ZACZฤฤ.md - Instrukcja krok po kroku dla kaลผdego!
๐ Full Documentation: INSTALLATION.md - Complete step-by-step guide with troubleshooting
Windows (no technical knowledge needed!)
๐ช Nie znasz siฤ na komputerach? Zobacz WINDOWS.md โ instalacja w 3 krokach, bez gita i terminala.
- Download ZIP: green
Codebutton โDownload ZIPโ extract - Double-click
Uruchom-Windows.batโ first run installs everything (auto-installs Python if missing), then starts the backend and opens the dashboard - Optional: double-click
Autostart-Windows.batto start the backend automatically at login
Or via git:
git clone https://github.com/gacabartosz/presidio-local-anonymizer
cd presidio-local-anonymizer
Uruchom-Windows.bat
macOS
git clone https://github.com/gacabartosz/presidio-local-anonymizer
cd presidio-local-anonymizer
chmod +x install-mac.sh
./install-mac.sh
Linux
git clone https://github.com/gacabartosz/presidio-local-anonymizer
cd presidio-local-anonymizer
chmod +x install-linux.sh
./install-linux.sh
Option 2: Install Chrome Extension
- Open Chrome:
chrome://extensions/ - Enable โDeveloper modeโ (top-right toggle)
- Click โLoad unpackedโ โ select
chrome-extension/folder - Done! Extension is now installed
Option 3: Start Backend Manually
cd backend
source .venv/bin/activate # Windows: .venv\Scripts\activate
python app.py
Backend runs at: http://localhost:6677
๐ฏ How It Works
๐ PASTE Method (Best!)
- Copy text with PII:
Jan Kowalski, email: [email protected], PESEL: 92010212345 - Paste anywhere (Ctrl+V):
- ChatGPT prompt
- Claude conversation
- Perplexity query
- Gmail compose
- Any form field
- ChatGPT prompt
- Text automatically anonymized:
[OSOBA], email: [EMAIL], PESEL: [PESEL]
Alternative Methods
Keyboard Shortcut: Select text โ Press Ctrl+Shift+A (Mac: Cmd+Shift+A)
Context Menu: Select text โ Right-click โ โAnonimizuj zaznaczony tekstโ
Extension Toggle: Click extension icon โ Toggle ON/OFF
๐ Web Dashboard
Open in browser: http://localhost:6677/dashboard
Dashboard features:
- โ Service status - Backend online/offline indicator
- ๐ Statistics - Requests, detected entities, processing time
- ๐งช Live testing - Test anonymization without extension
- ๐ Activity logs - See original โ anonymized history (last 100 entries)
- ๐ Entity management - Enable/disable specific PII types
๐ Detected Data Types
๐ต๐ฑ Polish Data (Default: Enabled):
| Type | Example | Mask | Confidence |
|---|---|---|---|
| [email protected] | [EMAIL] | 100% | |
| PL_PESEL | 92010212345 | [PESEL] | 95-100% |
| PL_NIP | 123-456-78-90 | [NIP] | 90-100% |
| PL_REGON | 123456789 | [REGON] | 85-95% |
| PL_PASSPORT | AB1234567 | [PASZPORT_PL] | 90-100% |
| PL_ID_CARD | ABC123456 | [DOWOD_PL] | 90-100% |
| PHONE_NUMBER | +48 123 456 789 | [TELEFON] | 85-100% |
| CREDIT_CARD | 4532-1234-5678-9010 | [KARTA] | 95-100% |
| IBAN_CODE | PL61109010140000071219812874 | [IBAN] | 100% |
| IP_ADDRESS | 192.168.1.1 | [IP] | 100% |
| URL | https://example.com | [URL] | 90-100% |
| DATE_TIME | 2024-12-10 | [DATA] | 80-95% |
| LOCATION | Warsaw | [LOKALIZACJA] | 70-90% |
๐ International Data (Default: Disabled):
| Type | Example | Mask | Country |
|---|---|---|---|
| US_SSN | 123-45-6789 | [SSN] | ๐บ๐ธ USA |
| US_PASSPORT | 123456789 | [PASZPORT_US] | ๐บ๐ธ USA |
| US_BANK_NUMBER | 123456789 | [BANK_US] | ๐บ๐ธ USA |
| US_DRIVER_LICENSE | D1234567 | [PRAWO_JAZDY_US] | ๐บ๐ธ USA |
| UK_NHS | 123 456 7890 | [NHS] | ๐ฌ๐ง UK |
| AU_ABN | 12 345 678 901 | [ABN] | ๐ฆ๐บ Australia |
| SG_NRIC_FIN | S1234567D | [NRIC_SG] | ๐ธ๐ฌ Singapore |
๐ Other Data:
| Type | Example | Mask | Default |
|---|---|---|---|
| PERSON | Jan Kowalski | [OSOBA] | โ OFF |
| CRYPTO | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | [CRYPTO] | โ OFF |
| MEDICAL_LICENSE | MD123456 | [LICENCJA_MED] | โ OFF |
Total: 28 PII entity types!
Configure in Dashboard: http://localhost:6677/dashboard โ Ustawienia
๐งช Testing
Test on ChatGPT:
- Open https://chatgpt.com
- Copy test text:
Jan Kowalski, PESEL: 92010212345, email: [email protected], tel: +48 123 456 789 - Paste (Ctrl+V) into ChatGPT
- โ
See result:
[OSOBA], PESEL: [PESEL], email: [EMAIL], tel: [TELEFON]
Test on Dashboard:
- Open http://localhost:6677/dashboard
- Navigate to โTestโ section
- Paste test text and click โAnonymizeโ
- See results with entity detection details
Check Logs:
- Open http://localhost:6677/dashboard
- Click โLogiโ in navigation
- See history: original โ anonymized (last 100 entries)
More testing guides: TESTING.md
๐ Documentation
User Guides:
- ๐ README-USER.md - Quick start guide for users (co zostaลo zrobione)
- ๐ค AI-SITES-GUIDE.md - Complete guide for ChatGPT, Claude, Perplexity
- ๐งช TESTING.md - Comprehensive testing and debugging instructions
- ๐พ INSTALLATION.md - Detailed installation guide with troubleshooting
Developer / Publishing:
- ๐ช CHROME-WEB-STORE.md - Step-by-step Chrome Web Store publication guide
- ๐ PRIVACY_POLICY.md - Full privacy policy (GDPR/CCPA/LGPD compliant)
- ๐ SPRINT-REVIEW.md - Complete sprint review and feature list
Test Page:
- ๐งช test-extension.html - Local test page for extension functionality
๐ช Chrome Web Store
Status: Ready for Publication! โ
The extension is fully compliant with Chrome Web Store requirements:
- โ Manifest V3
- โ All icons (16, 32, 48, 128px)
- โ Privacy Policy published
- โ Specific host permissions (no wildcards)
- โ Description within 132 character limit
Latest Release: presidio-extension-v1.3.2.zip (30KB)
Publication Guide: See CHROME-WEB-STORE.md for step-by-step instructions.
๐ Troubleshooting
Extension shows โOfflineโ or โDisconnectedโ
Problem: Backend not running.
Solution:
# Start backend
cd backend
source .venv/bin/activate
python app.py
Then reload extension:
- Open
chrome://extensions/ - Find โPresidio Browser Anonymizerโ
- Click ๐ Reload button
Text not anonymizing on paste
Check:
- โ Extension toggle is ON (click extension icon)
- โ Backend is running (dashboard shows โonlineโ)
- โ Using PASTE method (Ctrl+V) - most reliable!
- โ Extension is reloaded after any changes
Debug:
- Open DevTools (F12) โ Console
- Look for
[Presidio]logs - Check backend terminal for API requests
Where to check logs?
Content Script Logs (webpage):
- F12 โ Console
- Look for:
[Presidio] Paste event detected
Background Service Worker:
chrome://extensions/โ Find extension โ โservice workerโ- Look for:
[Presidio Background] Anonymization successful
Backend Logs:
- Terminal where backend runs
- Look for:
POST /api/anonymizewith status 200
๐ฆ Project Structure
presidio-local-anonymizer/
โโโ backend/ # Flask API (localhost:6677)
โ โโโ app.py # Main server
โ โโโ api/ # REST endpoints
โ โ โโโ anonymize.py # Anonymization + logs API
โ โ โโโ health.py # Health check
โ โ โโโ entities.py # Entity management
โ โโโ core/ # Presidio integration
โ โ โโโ analyzer.py # PII detection
โ โ โโโ anonymizer.py # PII anonymization
โ โโโ config/ # Configuration
โ
โโโ chrome-extension/ # Browser Extension (Manifest V3)
โ โโโ manifest.json # Extension config
โ โโโ background.js # Service worker
โ โโโ content-script.js # Content injection
โ โโโ popup.html/js # Extension popup (toggle)
โ โโโ options.html/js # Settings page
โ โโโ icons/ # Extension icons (16,32,48,128)
โ
โโโ web-ui/ # Web Dashboard
โ โโโ app.html # Dashboard UI (logs, stats, test)
โ โโโ favicon.svg
โ
โโโ assets/ # Branding
โ โโโ logo.svg
โ โโโ logo-banner.svg
โ โโโ icon.svg
โ
โโโ docs/ # Documentation
โโโ README-USER.md
โโโ AI-SITES-GUIDE.md
โโโ TESTING.md
โโโ INSTALLATION.md
โโโ CHROME-WEB-STORE.md
โโโ PRIVACY_POLICY.md
โโโ SPRINT-REVIEW.md
๐ ๏ธ Tech Stack
Backend:
- Flask 3.0 - Lightweight web framework
- Microsoft Presidio 2.2.354 - PII detection engine
- SpaCy 3.7.2 - NLP for Polish language
- Python 3.8+ - Modern Python
Extension:
- Manifest V3 - Latest Chrome extension standard
- Vanilla JavaScript - No framework bloat
- Auto-connect to localhost - Zero configuration
Dashboard:
- HTML/CSS/JavaScript - Simple, fast, responsive
- Real-time updates - Live monitoring
- No external dependencies - 100% self-contained
๐ง Requirements
- Python 3.8+ (3.11 recommended)
- Chrome/Edge browser (Manifest V3 support)
- Operating System: macOS, Linux, or Windows
- Disk space: ~500 MB (for SpaCy model)
- RAM: Minimum 2GB, recommended 4GB+
โก Performance
- Detection: ~50-100ms per request
- Anonymization: ~100-500ms (first call), ~50-100ms (cached)
- Paste interception: Instant (< 10ms)
- Memory: ~200MB (backend with SpaCy model)
๐ก FAQ
Q: Do I need to configure anything?
A: NO! Extension automatically connects to backend. Just install and use.
Q: Extension shows โOfflineโ?
A: Backend not running. Start: cd backend && source .venv/bin/activate && python app.py
Q: Text doesnโt anonymize?
A: Check:
- Extension toggle is ON (click icon)
- Backend running (dashboard: http://localhost:6677/dashboard)
- Using PASTE method (Ctrl+V) - most reliable!
Q: Does it work on ChatGPT/Claude/Perplexity?
A: YES! Use PASTE method (Ctrl+V) - 100% reliable. See AI-SITES-GUIDE.md
Q: Where can I see whatโs happening?
A: Open dashboard: http://localhost:6677/dashboard
- Real-time statistics
- Activity logs (last 100 operations)
- Test anonymization
- Service status
Q: How do I enable/disable anonymization temporarily?
A: Click extension icon โ Toggle ON/OFF. State persists across tabs.
Q: Can I publish this on Chrome Web Store myself?
A: YES! All files ready. See CHROME-WEB-STORE.md for instructions.
Q: Must I keep terminal open?
A: Yes, backend must run. You can minimize terminal or create a system service/alias.
Create alias in .bashrc or .zshrc:
alias presidio='cd /path/to/presidio-local-anonymizer/backend && source .venv/bin/activate && python app.py'
Then just: presidio ๐
๐ค Contributing
Contributions welcome! Please follow these steps:
- Fork repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m "feat: add amazing feature" - Push branch:
git push origin feature/amazing-feature - Open Pull Request
Code style:
- Python: PEP 8
- JavaScript: ESLint recommended
- Commit messages: Conventional Commits
๐ License
MIT License - see LICENSE
You are free to use, modify, and distribute this software.
๐ Credits
- Microsoft Presidio - PII detection and anonymization engine
- SpaCy - Industrial-strength NLP for Polish language support
- Flask - Lightweight web framework
- Claude Code - AI-powered development assistant
โ ๏ธ Disclaimer
This tool helps protect personal data, but:
- โ Does NOT guarantee 100% detection of all PII
- โ May produce false positives/negatives
- โ Should not be solely relied upon for GDPR compliance
Always review anonymized text before sending to third parties.
For sensitive data, consider additional security measures.
๐ฎ Support & Community
Need help?
Star this repo if you find it useful! โญ
Made with โค๏ธ using Claude Code
Version 1.4.0 | Last Updated: July 2026
Get Started โข Installation Guide โข AI Sites Guide โข Chrome Web Store
Summary
Browser extension + localhost Python backend wrapping Presidio: real-time anonymization for text typed into ChatGPT, Claude and Perplexity web chats. 100% offline.
Learnings
- An interesting deployment shape: proxy the human, not the API โ the web-chat surface most proxies canโt intercept.
Gotchas
- (none yet)
Hands-on
(research only โ see PII redaction)