zer0pii.com
Personal data never reaches the model.
Let your team use ChatGPT, Claude and Gemini without personal data leaving your control. Verifiable, not promised.
Or try the demo firstTry it now, in your browser
Runs on this page. Nothing you type is sent anywhere.What the model would receive instead
The masked version appears here as you type.
This page catches identifiers with a fixed shape. Names, organisations and places are detected by the full product on our servers; try that on the demo page. Open the full demo
How it works
Three steps on every request, in the gateway or in the browser extension. No copy of your text is kept at any of them.
- 1
Mask
Emails, phone numbers, national IDs, cards, IBANs, credentials and, with the semantic tier, names, organisations and places are replaced with placeholder tags before the request leaves.
- 2
Model
The masked request goes to the provider you chose, with your own provider key. The provider sees tags, never the values.
- 3
Restore
The reply comes back through the gateway, the tags are swapped for the originals, and the mapping is deleted when the stream closes.
Two detection tiers run on each request: a deterministic tier for identifiers with a fixed shape, which is fast enough to be invisible, and a semantic tier for names and organisations, which reads the text and costs a fraction of the time the model itself takes. If the semantic tier ever runs over its budget the request still goes through deterministic masking, and the response header says so.
Proof, not promises
No customer logos yet. What you can check yourself today:
Attestation header
Every response carries an Ed25519-signed receipt over the hashes of the raw and the masked request, verifiable against a public key.
Read the verify guideWeekly accuracy report
Detection is measured weekly against a multilingual corpus and the report is committed to the repository; the site quotes no number.
Coverage and where the report livesTransparency report template
The quarterly report format is published before the first edition, so you know what will and will not be disclosed.
See the templateOpen ZDR scope
The zero-data-retention document states what is verified and what the current runtime does not promise, and it overrides marketing wording.
Read the scopeFor developers
Keep your SDK. Change one line: the base URL. Your provider key travels in a header or is held by the gateway; your code never sees a placeholder.
from openai import OpenAI
client = OpenAI(
base_url="https://api.zer0pii.com/v1",
api_key="zpii_...",
default_headers={"X-zer0pii-Upstream-Key": "sk-..."},
)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.zer0pii.com/v1",
apiKey: "zpii_...",
defaultHeaders: { "X-zer0pii-Upstream-Key": "sk-..." },
});Built for the teams that handle other people's data
HR
Finance
Legal
Start with the free plan
Bring your own provider keys, invite the whole team, and see the audit log fill with counts and never with text.