How does Privatiser anonymize and deanonymize text locally?
Updated
Privatiser replaces sensitive values in text you paste into it with stand-in tokens, produces a redacted copy plus a local mapping, and runs the whole process in your browser — the site states "0 bytes to any server" and "Local processing only — nothing leaves your machine." You then paste the AI's reply back into the Deanonymize view, and the real values are restored from that mapping. This works for any workflow where you want to send text to an AI tool without exposing secrets, credentials, or personal data.
What happens when you anonymize
The tool scans pasted text against a set of built-in detection patterns and swaps each match for a pseudonym, keeping the surrounding structure intact. The page lists 30+ patterns across 13 languages, and the detection categories include:
- Secrets & keys — API keys, JWTs and bearer tokens, SSH/PEM keys, generic secrets
- Network — IPs, internal domains, MAC addresses
- PII — emails, phone numbers, credit cards (Luhn-checked), SSNs, passports, IBANs, names, dates of birth
- Cloud identifiers — AWS, GCP, and Azure IDs
- Pattern packs — crypto (BTC, ETH, keys), Kubernetes, Terraform, comms (Slack, Teams, Twilio), location and coordinates
The example text on the site shows this in practice: values like DB_PASSWORD = "super_s3cr3t_passw0rd!", 10.0.4.221:5432, AKIAIOSFODNN7EXAMPLE, a postgres://admin:... connection string, and a sk-proj-... key are all candidates for replacement.
You can narrow or widen what gets caught:
- Custom words to redact — comma-separated values that are always redacted regardless of pattern
- Allowlist — comma-separated values that are never redacted
- Custom regex patterns — with a case-insensitive toggle, grouped under Identifiers, Secrets, PII, or Network
The output pane shows a redacted count and gives you Copy and Download actions, plus a separate Mapping panel with Copy JSON and Download.
What the mapping is for
Anonymizing alone would make the AI's answer useless, because it would refer to tokens instead of your real values. The mapping is the bridge: it records which pseudonym stands for which original value, and it stays on your machine.
You can manage it in a few ways:
- Copy the mapping as JSON
- Download it to a file
- Load it back from a file later
- Save, load, and delete named presets, or export and import all of them
Because the mapping is a file you control, you can keep it for a session, store it for a recurring workflow, or discard it once you're done.
How deanonymization works
- Paste your text into the input area and run Anonymize. You get a redacted copy.
- Send the redacted copy to your AI tool of choice.
- Paste the AI's reply into the Deanonymize view.
- The tool applies the mapping and returns the restored output, which you can copy.
The Deanonymize view offers Use last output and Use last mapping so you don't have to re-paste either one, and Load from file if you saved the mapping earlier. The site's own summary of the loop: "Paste in, get a redacted copy plus a local mapping — paste the AI's reply back into Deanonymize and every real value snaps back."
Where it runs
The processing is client-side. The site states "Local processing only — nothing leaves your machine" and "0 bytes to any server," and describes the engine as open source. That matters because the alternative — pasting credentials into a hosted redaction service — would move the exposure rather than remove it.
The same engine is available outside the browser tab:
- Browser extension — auto-anonymizes on paste into ChatGPT, Claude, Gemini and others (Chrome; a Firefox add-on offers the same behavior)
- VS Code extension — anonymize selections without leaving the editor
- Python package —
pip install privatiser
Practical caveats
- Detection is pattern-based, so review the output. The coverage list is broad, but anything that doesn't match a pattern, a custom word, or a custom regex will pass through. The custom words and custom regex fields exist precisely for values your data has that the built-in patterns don't know about.
- The allowlist cuts both ways. A value on the allowlist is never redacted, so don't put anything there that you actually need hidden.
- Keep the mapping private. It contains the original values by definition. Treat a downloaded mapping file the same way you'd treat the source text.
- Deanonymization depends on the mapping. If you anonymize in one place and try to restore in another without the mapping, the tokens stay tokens. Use the JSON copy, the downloaded file, or the saved preset to carry it across.
The site's navigation lists a Pricing section, but the supplied page content doesn't state any prices, plan limits, or whether a login is required, so check the site directly for current terms.