How much data leaks despite anonymization?

The only question that matters for an anonymization engine is its leak rate: the share of sensitive data still readable in clear text after processing. Most tools never publish it. Here is ours, measured, with the method to reproduce it yourself.

The headline number

0% leak rate, measured over 3,340+ sensitive values across an annotated test set and random-seed fuzzing. Coverage (recall) 100%, over-anonymization below 0.2%.

Why this number is credible

A benchmark written by the vendor, on its own hand-picked examples, proves nothing. Our measurement rests on three safeguards designed to remove exactly that bias.

  • Random-seed fuzzing: thousands of lines generated at random on every run. Nobody, the vendor included, knows the exact cases before launching the test. It's a statistical recall test on a never-seen sample, not a list of examples already known to pass.
  • Independent verifier: a second component, sharing no logic with the engine, re-scans the anonymized text and checks that no original value survives verbatim. A verifier with the same blind spots as the engine would be useless.
  • Continuous-integration gate: the threshold is set to 0% leak. Any code change that would reintroduce even a single leak is automatically blocked before it ships.

Detailed results

Categories covered: names, emails, phone numbers, IP addresses (public and internal), IBANs, credit cards, French social security numbers (NIR), license plates, API keys and secrets (AWS, GitHub, Stripe, JWT, passwords…), PEM private keys, financial amounts, system identifiers, and business terms defined by your organization.

Annotated test set (regression)57 sensitive values, 0 leaks — 0.0%
Random fuzzing, 3,000 lines3,283 sensitive values, 0 leaks — 0.0%

Reproduce the measurement

The benchmark and the fuzzer ship with every instance. On the server hosting TokenVeil, run the annotated benchmark (deterministic) with python tools/benchmark_anon.py, and the random-seed fuzzer with python tools/fuzz_anon.py --n 3000. No result is hardcoded: the numbers on this page come straight from those commands, and the 0% threshold is also the project's CI gate.

The limit we own

No detection system is perfect, and claiming otherwise would be dishonest. A proper name unknown to the engine, in a sufficiently ambiguous context, can in theory slip through. TokenVeil strongly reduces the leak risk (measured at zero over tens of thousands of cases) without contractually eliminating it. That's why the measurement is public and reproducible rather than a marketing claim.