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
- ๐ช 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
- ๐ 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
- โก 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
๐ต๐ฑ 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
๐ช 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.batgit clone https://github.com/gacabartosz/presidio-local-anonymizer
cd presidio-local-anonymizer
chmod +x install-mac.sh
./install-mac.shgit clone https://github.com/gacabartosz/presidio-local-anonymizer
cd presidio-local-anonymizer
chmod +x install-linux.sh
./install-linux.sh- Open Chrome:
chrome://extensions/ - Enable "Developer mode" (top-right toggle)
- Click "Load unpacked" โ select
chrome-extension/folder - Done! Extension is now installed
cd backend
source .venv/bin/activate # Windows: .venv\Scripts\activate
python app.pyBackend runs at: http://localhost:6677
-
Copy text with PII:
Jan Kowalski, email: jan@example.com, PESEL: 92010212345 -
Paste anywhere (Ctrl+V):
- ChatGPT prompt
- Claude conversation
- Perplexity query
- Gmail compose
- Any form field
-
Text automatically anonymized:
[OSOBA], email: [EMAIL], PESEL: [PESEL]
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
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
| Type | Example | Mask | Confidence |
|---|---|---|---|
| jan@example.com | [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% |
| 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 |
| 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
- Open https://chatgpt.com
- Copy test text:
Jan Kowalski, PESEL: 92010212345, email: jan@example.com, tel: +48 123 456 789 - Paste (Ctrl+V) into ChatGPT
- โ
See result:
[OSOBA], PESEL: [PESEL], email: [EMAIL], tel: [TELEFON]
- Open http://localhost:6677/dashboard
- Navigate to "Test" section
- Paste test text and click "Anonymize"
- See results with entity detection details
- Open http://localhost:6677/dashboard
- Click "Logi" in navigation
- See history: original โ anonymized (last 100 entries)
More testing guides: TESTING.md
- ๐ 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
- ๐ช 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-extension.html - Local test page for extension functionality
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.
Problem: Backend not running.
Solution:
# Start backend
cd backend
source .venv/bin/activate
python app.pyThen reload extension:
- Open
chrome://extensions/ - Find "Presidio Browser Anonymizer"
- Click ๐ Reload button
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
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
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
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
- 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+
- Detection: ~50-100ms per request
- Anonymization: ~100-500ms (first call), ~50-100ms (cached)
- Paste interception: Instant (< 10ms)
- Memory: ~200MB (backend with SpaCy model)
A: NO! Extension automatically connects to backend. Just install and use.
A: Backend not running. Start: cd backend && source .venv/bin/activate && python app.py
A: Check:
- Extension toggle is ON (click icon)
- Backend running (dashboard: http://localhost:6677/dashboard)
- Using PASTE method (Ctrl+V) - most reliable!
A: YES! Use PASTE method (Ctrl+V) - 100% reliable. See AI-SITES-GUIDE.md
A: Open dashboard: http://localhost:6677/dashboard
- Real-time statistics
- Activity logs (last 100 operations)
- Test anonymization
- Service status
A: Click extension icon โ Toggle ON/OFF. State persists across tabs.
A: YES! All files ready. See CHROME-WEB-STORE.md for instructions.
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 ๐
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
MIT License - see LICENSE
You are free to use, modify, and distribute this software.
- 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
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.
Need help?
- ๐ Documentation - Start here
- ๐ GitHub Issues - Report bugs
- ๐ฌ GitHub Discussions - Ask questions
- ๐ Dashboard - Service status and logs
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