PII detection & redaction

Find the personaldata, and mask it.

Two passes: a deterministic check for structured identifiers — emails, payment cards, SSNs, PANs, ABNs — and a vision pass for names, addresses, and dates of birth. You get a typed inventory (values masked, never echoed) and a redacted copy of the text. A guardrail before you forward, log, or share a document.

PDF or image (PNG/JPG/WebP)
How it works

About PII redaction

The PII redactor finds personal data in a document and masks it. It runs two passes: a deterministic check that matches structured identifiers by pattern and checksum — emails, payment cards (validated with the Luhn check), US Social Security numbers, India PAN, and Australian ABN — and a vision pass that reads the unstructured PII a regex can’t catch: names, addresses, dates of birth, and phone numbers, plus whether the document carries a photo or a signature.

Every value is masked. The raw PII is never returned and the document is never stored — you get back a typed inventory of what was found, the method that found each item, and a redacted copy of the text. Treat the result as detection coverage, not a guarantee that every piece of PII was caught, and review the masked output before you rely on it.

  1. 01

    Send a document

    Upload a PDF or image (multipart), or pass a public URL or raw bytes as JSON. An optional max_pages limits how much of a long document is read.

  2. 02

    A deterministic pass finds structured IDs

    Pattern and checksum rules match emails, payment cards (via the Luhn check), US SSN, India PAN, and Australian ABN — exact, repeatable, no model involved.

  3. 03

    A vision pass finds the unstructured PII

    A vision model reads the document for names, addresses, dates of birth, and phone numbers, and notes whether a photo or signature is present.

  4. 04

    Values are masked

    Each detected value is masked before it leaves the service — the raw PII is never returned, and nothing is stored.

  5. 05

    You get an inventory and redacted text

    A count and per-type breakdown, the masked items with the method that found each, and a redacted copy of the document text.

What you get back

pii_found + by_type

The total count of personal-data items detected, with a per-type breakdown of how many of each.

The masked items

Each detected item as its type, a masked preview of the value, and the method — deterministic match or vision pass — that found it.

redacted_text

A copy of the document text with the detected PII masked out, ready to forward, log, or share.

has_photo / has_signature

Whether the document appears to contain a photo or a signature — non-textual PII worth flagging.

Common uses

  • Anonymising documents before sharing them outside your team
  • Preparing training or test data without leaking personal details
  • Scrubbing support attachments before they land in a ticket or log
  • A privacy review pass over documents ahead of handling or storage

This is detection coverage — not a guarantee that every piece of PII in a document was found. The deterministic pass is exact for known identifiers, but unstructured PII can be missed. Review the masked output before relying on it.

Questions

Do you return or store the raw PII?
No. Every value is masked before it leaves the service, so the raw PII is never returned, and the document is never stored.
Is it guaranteed to catch every piece of PII?
No. It is detection coverage, not a guarantee. The deterministic pass is exact for the identifiers it knows, but the vision pass over unstructured PII can miss things — review the masked output before relying on it.
What identifiers does it detect?
Structured IDs via a deterministic pass — emails, payment cards (Luhn-checked), US SSN, India PAN, and Australian ABN — plus names, addresses, dates of birth, and phone numbers via the vision pass, and whether a photo or signature is present.
What can I send it?
A PDF or image as a multipart upload, or JSON with a public URL or raw bytes. An optional max_pages caps how many pages of a long document are read.
What if the document is a scan with no text layer?
There’s nothing to redact into text, so you get the inventory from the vision pass instead of a redacted_text copy.

Related tools