Accuracy Benchmarks /
Transparent, independently verifiable detection rates. 152,300 documents across 31 countries.
These figures measure structured-PII recall and precision on a generated evaluation set of 152,300 documents (667,268 labelled values, date of birth excluded), measured 26 October 2026 at v0.7.0. Generated data measures pattern coverage, not real-world messiness such as OCR noise or broken layouts — these are not production documents, and they are not a guarantee of real-world accuracy on your data. Headline figures are with the optional countries parameter supplied: 99.8% recall, 99.9% precision. Without it the engine still runs every pattern and infers the country from the text, scoring 99.7% recall and 99.7% precision. Date-of-birth detection is opt-in and excluded from the headline numbers; behind a label it reaches 100.0% recall on the same set, and bare dates are left to the AI layer.
Since 0.3.2 the optional countries parameter scores detection rather than gating it: every pattern runs whatever you declare, and a match attributed outside the declared set is flagged out_of_scope rather than dropped. Declaring the country is still worth it — 99.8% recall against 99.7% blind — but omitting it can no longer hide an entity, which it previously could.
Both SDKs, one set of rules
The Python and Node.js packages run the same rules and pass the same conformance suite, a shared set of test vectors both are held to, so one set of figures covers them both.
How the figures are measured
A labelled value counts as found only when every character of it is masked, at every place it occurs in the document. A detection is a false positive when it overlaps no labelled value of a type its category accepts, so precision is a lower bound: a real identifier the corpus left unlabelled counts against it.
0.7.0 changed the scorer in one respect: a correct detection of a value that appears more than once used to count as a false positive at its later occurrences, and no longer does. These figures are therefore not directly comparable with those published for earlier releases.
Recall and precision for every one of the 29 entity types the rules engine emits, in both country modes, with the types this corpus cannot measure named as such, are published per release in the engine repository: v0.7.0 corpus results. Which types exist, and which layer detects them, is on what euRedact detects.
Verify It Yourself
Run the benchmarks yourself — our test suite is open source.
codeView on GitHub