1. Data Flow Architecture
Every byte of your input travels this exact path — and never exits the browser boundary:
There is no step between "User text" and "Tokenized text" that involves a network socket, file I/O, or inter-process communication of any kind.
2. The sessionMap — Memory-Only Session State
The sessionMap is the key-value store that maps tokens like [NAME_1] back to
their originals.
Its storage rules are the most critical security invariant in the codebase.
- • Stored as a plain JS
letvariable in heap memory - • Scoped to the page session lifetime
- • Destroyed instantly on tab close or page reload
- • Accessible only to same-origin code on that tab
- • Written to
localStorageorsessionStorage - • Written to
IndexedDBorcookies - • Serialized and sent anywhere
- • Logged, cached, or backed up
let sessionMap = {}; // JS heap only. Never persisted.
// On each Scrub: entries added → { "[NAME_1]": "John Doe" }
// On Clear or tab close: garbage collected automatically
3. Third-Party Dependency Audit
Every external script loaded by PrivacyScrubber, what it does, and whether it touches user data:
Tesseract.js compiles the Tesseract C++ engine to WebAssembly and runs it in a browser
Web Worker.
Image pixels are processed entirely on device. The WASM worker has no fetch() or
network access post-load.
pdf.js is a client-side PDF renderer. It reads the ArrayBuffer of the
locally-selected file via the browser's File API.
No file content, no extracted text, and no metadata is ever sent to any server.
Pure client-side ZIP/XML parser. Reads the file's ArrayBuffer via
FileReader. The library has no remote dependencies and makes no network calls.
The PayPal SDK is lazy-loaded — the script tag is
injected dynamically only when you click "Get PRO Access".
Users who never open the PRO modal generate zero PayPal network calls. The SDK does not have
access to your pasted text or sessionMap.
Vercel Analytics transmits the visited URL path and performance timing (no cookies, no fingerprinting, GDPR-compliant by design). It does not receive any text you paste into the tool. The Airplane Mode guarantee applies to the PII processing workflow; analytics is a passive performance observer that runs before you interact with the tool.
4. Chrome Extension — Least Privilege Model
The PrivacyScrubber Chrome Extension is built on the principle of least privilege. Every permission has a specific, minimal justification. No permission is bundled "just in case."
Registers the "Scrub PII" right-click menu item. Required for the right-click workflow. Does not grant access to page content.
Grants temporary access only to the tab the user actively right-clicked on, only at the moment of interaction. Expires immediately after. Not a blanket tab-reading permission.
Allows injecting content.js on-demand into the
specific tab the user right-clicked. The script only renders a toast notification — it reads no
page content.
Allows the "Copy" button to write scrubbed text to clipboard. This is a write-only permission — the extension cannot read the clipboard.
Used exclusively for chrome.storage.session to pass
selected text from the context menu to the popup. Session storage auto-clears when the browser
closes. No PII is ever written to chrome.storage.local or sync.
The extension declares zero host permissions. This means the extension has no declared capability to access content on any website — not ChatGPT, not your bank, not any domain. Chrome enforces this at the API level; it's not just a policy statement. This is the single most important privacy guarantee of the extension architecture.
5. Independent Verification Protocol
You don't have to trust us. Here's how to verify the zero-network claim in under 2 minutes:
Method A — DevTools Network Tab
- Open privacyscrubber.com and wait for full page load
- Open Chrome DevTools → Network tab (F12 or Cmd+Option+I)
- Click the 🚫 "Clear" button to remove all existing entries
- Paste any sensitive text into the scrubber tool textarea
- Click "Scrub PII" — observe the Network tab
- Expected result: Zero new network requests. Your text never left the browser.
Method B — Airplane Mode Test
- Load privacyscrubber.com in your browser
- Wait for the page to fully load (all CDN assets cached)
- Disconnect from the internet (enable Airplane Mode or disable Wi-Fi)
- Paste text → click Scrub PII
- Expected result: Full functionality. Tokens generated. Reverse scrub works. No errors.
6. Compliance Alignment
PrivacyScrubber's architecture is designed to align with the following frameworks. Use this when completing vendor questionnaires:
No personal data is collected, processed on a server, or retained. Processing is performed client-side with no data minimization obligation.
No personal information is collected or stored. There is nothing to sell, share, or disclose to third parties.
PII is tokenized before reaching any AI tool. The tokenization key (sessionMap) never leaves the user's device.
PHI entered into the tool is never transmitted. Users can verify this using both verification methods above before submitting any HIPAA-regulated information to an AI model.
Frequently Asked Questions
Does PrivacyScrubber send any data to a server?
Can I use this at my company for regulated data?
What happens to my text when I close the tab?
sessionMap object and all text you pasted
live only in JavaScript heap memory. When the tab is closed, the browser's garbage collector
reclaims all memory. There is no recovery path — by design.
Can I audit the source code?
index.html, app.js, and
styles.css. There is no minification, obfuscation, or build step that obscures the
logic.
Ready to verify it yourself?
Load the tool, enable Airplane Mode, and scrub a test document. The proof is in the network tab.