/Reference

What euRedact detects /

40 types of personal data, across 31 European jurisdictions, detected by two layers with opposite strengths. This page is the boundary map: what each type covers, what it deliberately does not, and which layer is responsible.

Coverage, not performance. For measured recall and precision under stated conditions, see benchmarks. The AI layer is in development; the Rules Engine layer ships today in the Python and Node.js SDKs.

The two layers

euRedact detects personal data with two layers that run in sequence over the same document. They are designed around opposite failure modes, which is why both exist.

Structure

The Rules Engine layer

Deterministic pattern matching with format validation. A candidate is found by a regular expression, then — where the identifier’s specification allows it — confirmed by an arithmetic check: the mod-97 checksum on an IBAN, the 11-test on a Dutch BSN, Luhn on a credit card or IMEI, the ISO 3779 check digit on a VIN.

Good at: identifiers with a defined, published structure. It runs locally, needs no model inference, produces the same answer every time for the same input, and can explain any detection by pointing at the rule and the validator that fired.

Fails at: anything whose form is not fixed. A name, a job title, a diagnosis and a street address have no checksum and no reliable shape.

Ships 301 country-specific patterns across 31 European jurisdictions, plus a shared tier of 45 patterns that apply regardless of country — formats international by definition, such as IBAN, e-mail, IPv4/IPv6, MAC, UUID and the major cloud-provider API-key formats.
Meaning

The AI layer

A language model reads the document with the Rules Engine results already in hand, and its job is what remains: entities with no fixed form, and entities whose form is ambiguous without understanding the surrounding sentence.

Good at: names, addresses, organisations, job titles, medical information, special-category attributes, and the judgement calls — whether a number labelled only “reference” is a person-lookup key or a purchase order, whether a date is a birth date or an invoice date, whether a URL identifies somebody or merely points at a standards document.

Fails at: guaranteeing that a well-formed identifier was caught. A model may skip one IBAN in a table of forty. A checksum will not.

Carries every type with no reliable pattern — including the GDPR Article 9 special-category types, which are the ones a compliance review asks about first.

How they combine

The Rules Engine layer runs first and its detections are passed to the model as established findings, so the model spends its attention on what is left rather than re-deriving what is already settled. Detections carry the layer that produced them, which is what makes a redaction report auditable: every masked span traces back either to a named rule and validator, or to the model.

9
Rules only
12
Rules led
8
AI led
11
AI only

Detection responsibility

Which layer carries the work. This is the line between what is settled deterministically on your own machine and what needs a model to read the sentence around it.

Rules only
Structure is fully specified. The Rules Engine layer is the detector; the AI layer adds little.
Rules led
Rules cover the standard formats; the AI layer adds obfuscated, truncated and prose-embedded cases.
AI led
Rules provide partial coverage but over- or under-fire without context; the AI layer's disambiguation is the actual value.
AI only
No reliable pattern exists. The AI layer is the only line of defence.

Sensitivity tier

Independent of who detects a type, each one carries a tier that drives default redaction policy.

Critical
GDPR Article 9 special-category data and classic hard identifiers. Always redact.
High
Direct personal identifiers. Strong default-redact.
Medium
Quasi-identifiers and structured contextual data. Redact in identifying contexts.
Low
Broad, context-dependent categories. Redact when they meaningfully strengthen re-identification.

Coverage at a glance

All 40 types. Filter by layer to see where determinism ends and inference begins, or by tier to see what your redaction policy has to cover.

Layer
Tier

Showing 40 of 40 types.

TypeTierLayerCountry-specificChecksum
NATIONAL_IDCriticalRules ledYesYes
PASSPORTCriticalAI ledYes
TAX_IDCriticalRules ledYesYes
SSNCriticalRules ledYes
DRIVERS_LICENSECriticalRules ledYes
RESIDENCE_PERMITCriticalAI onlyYes
HEALTH_INSURANCECriticalRules ledYesYes
HEALTHCARE_PROVIDERMediumAI ledYes
MEDICAL_CONDITIONArt. 9CriticalAI only
BIOMETRIC_REFArt. 9CriticalAI only
SENSITIVE_ATTRIBUTEArt. 9CriticalAI only
BANK_ACCOUNTHighRules onlyYesYes
BICHighRules only
CREDIT_CARDHighAI ledYes
VATMediumRules ledYesYes
FINANCIAL_AMOUNTLowAI only
EMAILHighRules led
PHONEHighRules ledYes
SOCIAL_HANDLEMediumAI led
URLHighAI only
PERSON_NAMEHighAI only
ORGANISATION_NAMELowAI only
JOB_TITLELowAI only
QUASI_IDENTIFIERLowAI only
ADDRESSHighAI only
POSTAL_CODEMediumAI ledYes
GPS_COORDINATESMediumRules only
IP_ADDRESSMediumRules only
IPV6_ADDRESSMediumRules only
MAC_ADDRESSMediumRules only
IMEIMediumRules onlyYes
UUIDMediumRules only
LICENSE_PLATEMediumRules ledYes
VINMediumRules onlyYes
SECRETMediumAI led
CREDENTIALHighAI led
DOBCriticalRules led
DATE_OF_DEATHCriticalRules led
CHAMBER_OF_COMMERCEMediumRules ledYesYes
INTERNAL_IDMediumAI led

Type reference

What each type covers, and — where it matters more — what it deliberately does not. Most integration confusion is about the boundary between two adjacent types rather than about either type on its own. The filter above applies here too.

Government and identity

NATIONAL_ID

CriticalRules ledChecksum31 countries

A government-issued personal identification number assigned to a specific natural person by a national authority and used as a primary identity reference. Covers the Belgian Rijksregisternummer, Dutch BSN, French NIR, Spanish DNI and NIE, Polish PESEL, Swedish personnummer, Danish CPR, Norwegian fødselsnummer, Finnish HETU, Icelandic kennitala, Estonian isikukood, Latvian personas kods, Lithuanian asmens kodas, Bulgarian ЕГН, Romanian CNP, Greek AMKA, Slovenian EMŠO, Hungarian személyi szám, Czech and Slovak rodné číslo, Maltese and Cypriot ID card numbers, and the Luxembourg matricule — among others. Historic formats count alongside current ones. Most carry a checksum, and the engine validates it rather than trusting shape alone.

Does not cover: Purely fiscal identifiers (TAX_ID), health-fund numbers (HEALTH_INSURANCE), separate social-security numbers (SSN), passport, driving licence or residence-permit numbers, VAT numbers, company registration numbers, or internal customer and employee references (INTERNAL_ID).

Where a country's national ID doubles as its tax identifier — the Italian Codice Fiscale, Croatian OIB, Portuguese NIF, Spanish DNI in fiscal use — the broader identity role wins. Where an identifier encodes a birth date (BSN, CPR, PESEL, fødselsnummer), the whole value is one NATIONAL_ID; the embedded date is not additionally reported as a date of birth.

PASSPORT

CriticalAI led4 countries with patterns

The document number printed on a passport or equivalent international travel document, including diplomatic, service and emergency travel documents. Identifies the physical document and, through it, the holder.

Does not cover: The holder's national ID, visa or residence-permit numbers, or the machine-readable-zone content as a whole.

Passport numbering is not standardised across issuers and carries no general checksum, so the Rules Engine layer holds context-gated patterns for a small number of jurisdictions only and the AI layer carries the rest.

TAX_ID

CriticalRules ledChecksum5 countries with patterns

A government-issued personal or entity identifier used by a tax authority to track fiscal obligations, where it is distinct from the general-purpose national ID. Validated formats include the German Steuer-ID, the Greek ΑΦΜ and the Polish NIP.

Does not cover: VAT registration numbers (VAT), company registration numbers (CHAMBER_OF_COMMERCE), national IDs that merely happen to be used fiscally (NATIONAL_ID), or customs and duty references.

SSN

CriticalRules led1 country with patterns

A social-security identifier granting access to state social-insurance programmes — pension, unemployment, disability, parental leave, in some countries health — in jurisdictions that issue a separate social-security number rather than using the national ID for the purpose. The Irish PPSN and the German Sozialversicherungsnummer are the reference cases; US-format SSNs are also recognised.

Does not cover: National IDs that serve a social-security function (NATIONAL_ID), tax-only identifiers (TAX_ID), or health-insurance member numbers (HEALTH_INSURANCE).

DRIVERS_LICENSE

CriticalRules led1 country with patterns

The identifier on a driving licence document — national, EU-format or international.

Does not cover: The vehicle's registration plate (LICENSE_PLATE), the holder's national ID, or insurance and traffic-fine references.

RESIDENCE_PERMIT

CriticalAI only

A document number issued by a host country granting a non-citizen the right to enter, stay, work or study for a defined period or status. Covers residence cards, work permits, long- and short-stay visas, and asylum-seeker and refugee documentation.

Where a foreigner-identity number functions as a general identity reference in the document it is classed NATIONAL_ID; where the document explicitly concerns the residence-permit document itself, RESIDENCE_PERMIT applies.

Health

HEALTH_INSURANCE

CriticalRules ledChecksum2 countries with patterns

A government or private health-fund identifier assigned to an insured person for the administration of medical coverage: health-fund member numbers, mutuality, Krankenkasse and mutuelle IDs, and health-insurance card numbers. The UK NHS number is checksum-validated.

Does not cover: The holder's national ID or social-security number, or a hospital-internal patient record number (INTERNAL_ID).

This type is the number, never the name of the insurer. An insurer's name is an organisation name.

HEALTHCARE_PROVIDER

MediumAI led1 country with patterns

A registration identifier issued to a healthcare provider — physician, nurse, pharmacist, dentist, allied health professional, clinic or hospital — for billing, prescribing, registration or regulatory purposes. Reference cases are the Belgian RIZIV/INAMI number, the Dutch BIG number and the German LANR.

Scoped to the identifier code. A practitioner's name is a person name; a clinic's name is an organisation name.

MEDICAL_CONDITION

CriticalAI onlyArticle 9

Information disclosing a person's health status, diagnosis, treatment or healthcare interaction in a way that re-identifies them or attaches a sensitive medical attribute to them. Covers physical and mental health diagnoses, symptoms in clinical context, ICD-10 codes, lab values, medications and procedures where condition-revealing, disabilities, reproductive and sexual health, substance-use disorders, and genetic information. Sick leave and maternity leave fall here.

GDPR Article 9 special-category data, requiring an additional lawful basis for processing.

BIOMETRIC_REF

CriticalAI onlyArticle 9

Information identifying a person through physiological, biological or behavioural characteristics, or persistent references to such characteristics: photo IDs, fingerprint, iris, face, voice and DNA template references.

Does not cover: An access badge or keycard number on its own, which is an INTERNAL_ID — the number is not itself a biometric.

GDPR Article 9 when used to uniquely identify a person.

SENSITIVE_ATTRIBUTE

CriticalAI onlyArticle 9

A person's nationality or citizenship, racial or ethnic origin, religious or philosophical beliefs, political opinions, sexual orientation or sex life, or trade-union membership — and vulnerability or status disclosures carrying an Article 9 dimension, such as being a welfare recipient or asylum seeker.

GDPR Article 9 special-category data.

Financial

BANK_ACCOUNT

HighRules onlyChecksum31 countries + shared tier

A bank account identifier used to route payments to or from a specific account holder: IBAN (ISO 13616, mod-97 validated), pre-IBAN domestic account numbers, and foreign equivalents.

IBANs are detected both by a generic international pattern and by country-specific ones, so a cross-border IBAN is recognised in a document from another jurisdiction.

BIC

HighRules onlyshared tier

A Bank Identifier Code (ISO 9362), also labelled “SWIFT code” or “BIC/SWIFT”: four letters for the institution, an ISO-3166 country code, two location characters and an optional three-character branch code. Both the compact and space-separated written forms are recognised.

A BIC has no check digit, and its shape — eight or eleven upper-case alphanumerics — collides with ordinary capitalised words in many European languages. Detection therefore requires registry confirmation or explicit banking context, never shape alone. It identifies the financial institution rather than the account holder, but pairs with BANK_ACCOUNT to enable routing.

CREDIT_CARD

HighAI ledChecksumshared tier

A payment card primary account number — credit, debit, prepaid or charge — from Visa, Mastercard, Amex, Diners, Discover, JCB, UnionPay, Maestro and other networks, together with tightly-coupled card data: CVV/CVC, magnetic-stripe content and card PIN.

Luhn validation is what separates a card number from an invoice or order number of similar length; the AI layer resolves the remainder. Subject to PCI-DSS in addition to GDPR.

VAT

MediumRules ledChecksum30 countries

A VAT registration number issued to a business or sole trader by a member state's tax authority. Publicly searchable in most jurisdictions, and validated by checksum for several including BE, DE, FR, LU, NL and DK.

Does not cover: Personal tax identifiers (TAX_ID, NATIONAL_ID) or company registration numbers (CHAMBER_OF_COMMERCE).

FINANCIAL_AMOUNT

LowAI only

A specific monetary amount in identifying context attached to a natural person: salary, compensation, settlement, account balance, debt, benefit or contract value.

Does not cover: Generic prices, market data or macroeconomic figures.

Contact details

EMAIL

HighRules ledshared tier

An RFC 5322 e-mail address functioning as a contact-channel identifier for an identified or identifiable person. Non-ASCII local parts, including Greek and Cyrillic, are supported.

The Rules Engine layer covers standard formats; the AI layer adds display-name forms, deliberately obfuscated forms (“name [at] domain [dot] com”), plus-tagged addresses and internationalised domains.

PHONE

HighRules led31 countries + shared tier

A telephone, mobile or fax number allowing direct contact with a person, household or organisation. Detected by 98 national-format patterns — one set for every supported country, the largest single group in the engine — plus an E.164-validated international pattern in the shared tier.

The AI layer adds short domestic formats without a country code, unusual separators and numbers embedded in prose.

SOCIAL_HANDLE

MediumAI ledshared tier

A username, screen name or account identifier on a social platform, messaging service, online community or gaming network, when attached to an identifiable person. Both the canonical @handle form and the bare-word username form where context confirms it. Handles containing non-ASCII letters are supported.

URL

HighAI only

A web address that, in context, identifies a specific natural person, a named organisation mentioned elsewhere in the document, or an account, profile or project page tied to an identified party.

Does not cover: URLs carrying no identifying signal — framework documentation, standards bodies, CDN assets, general public-knowledge references.

Whether a URL is personal data is a contextual judgement, which is why this type sits entirely with the AI layer.

People, organisations and roles

PERSON_NAME

HighAI only

A natural person's name used to refer to a specific identified or identifiable individual: given names, surnames, full names, honorific-plus-name, initials with surname, compound and hyphenated surnames, non-Latin-script names, chosen and preferred names, and nicknames used as identifiers.

At each occurrence the longest contiguous name span is reported as a single detection — honorific, given names, particles and surname together — rather than several adjacent fragments.

ORGANISATION_NAME

LowAI only

The name of a company, institution, government body, non-profit or association where its presence is identifying, either of the organisation itself in a privacy-sensitive context or of a natural person through affiliation.

Does not cover: Brand-as-product references and generic categorical descriptions.

JOB_TITLE

LowAI only

A professional, organisational or hierarchical role designation attached to an identifiable person. Identifying in combination with a name, an organisation or a department.

Does not cover: Department and team names on their own.

QUASI_IDENTIFIER

LowAI only

A combination of attributes, none sufficient alone, that together narrow a description to one individual or a very small group — a role plus a location plus a timeframe, for example. The full combining phrase is reported.

Attributes inside the phrase that have their own type are additionally reported as that type.

Location

ADDRESS

HighAI only

A physical mailing or location address that locates an identifiable person or organisation: street name, house number, building name, apartment, unit and floor designations, PO boxes, and the city, postal code and country components where they form part of a complete address span.

POSTAL_CODE

MediumAI led31 countries

A country-specific postal code, functioning as a coarse geographic identifier when attached to a person or address.

The Rules Engine layer holds postal patterns for every supported country, but most are short digit runs that require a nearby address cue to fire, and the formats collide with other numbers. The AI layer is the authority for this type. A postal code inside a full address span is part of that ADDRESS; one appearing outside an address span is reported as POSTAL_CODE.

GPS_COORDINATES

MediumRules onlyshared tier

A geographic coordinate pair pinpointing a physical location associated with an identifiable person — home, workplace, vehicle position, or geo-located activity.

Decimal degrees are detected by rule; the AI layer adds DMS notation, plus codes, geohashes, What3Words references and coordinates described in prose.

Devices and networks

IP_ADDRESS

MediumRules onlyshared tier

An IPv4 address identifying a person as a network endpoint, session origin or device.

IPV6_ADDRESS

MediumRules onlyshared tier

An IPv6 address (RFC 4291 / RFC 5952), in any standard notation including compressed forms. Reported separately from IPv4.

MAC_ADDRESS

MediumRules onlyshared tier

A 48-bit IEEE 802 hardware address identifying a network interface. Colon-separated, dash-separated and Cisco dot notation are all recognised. Personal data when linked to a person through device-management records, access logs, DHCP leases or captive-portal logs.

IMEI

MediumRules onlyChecksumshared tier

A 15-digit International Mobile Equipment Identity identifying a mobile device on a cellular network. Both the bare and separator-formatted forms are recognised. Persists across SIM changes, so it identifies the device rather than the subscriber.

UUID

MediumRules onlyshared tier

An RFC 4122 / RFC 9562 universally unique identifier, with or without hyphens.

Reported only where the UUID functions as a person- or session-level identifier. UUIDs in purely technical contexts — database keys, migration scripts, build artefacts — are not personal data.

Vehicles

LICENSE_PLATE

MediumRules led15 countries

A vehicle registration plate issued by a national or sub-national authority, which identifies a vehicle and through registration records its owner.

Does not cover: The chassis identifier (VIN) or the operator's licence number (DRIVERS_LICENSE).

Plate grammars differ sharply between countries, and several — the German pattern in particular — are validated against the issuing district codes rather than shape alone, because the generic shape collides with document references and standards codes.

VIN

MediumRules onlyChecksumshared tier

A 17-character ISO 3779 vehicle identification number assigned by the manufacturer, identifying the physical chassis regardless of the plate currently registered to it.

Credentials and secrets

SECRET

MediumAI ledshared tier · 26 patterns

A pattern-detectable secret or authentication artifact with a recognisable prefix or shape. The engine holds dedicated patterns for AWS access key IDs and secret access keys, GitHub tokens including fine-grained PATs, GitLab tokens and PATs, Stripe secret and publishable keys, OpenAI and Anthropic API keys, Slack tokens in several forms, JWTs, SendGrid keys, HashiCorp Vault tokens, Mailgun keys, Databricks PATs, npm tokens, Google API keys, DigitalOcean tokens, Twilio account SIDs, Discord bot tokens, PEM private keys, and connection strings with embedded credentials.

Two further rules generalise beyond the named providers: an assigned-secret-value rule, and a high-entropy-token rule that fires near credential context keywords.

CREDENTIAL

HighAI led

A credential or authentication artifact disclosed in prose rather than as a recognisable token: passwords, spelled-out keys, connection strings described in sentences, recovery codes, security questions and answers, and system PINs.

This is the unstructured counterpart to SECRET. Where SECRET is a shape the engine can match, CREDENTIAL is a sentence the model has to understand.

Dates

DOB

CriticalRules ledshared tier · context-gated

An explicit calendar date stating when an identifiable person was born — typically the highest-value quasi-identifier in tabular data. Detected in DD/MM/YYYY and ISO YYYY-MM-DD forms, but only with a positive context cue: a date alone is never assumed to be a birth date.

The AI layer covers birth dates stated in prose and in regional formats outside those two. Where a birth date is embedded in a national identifier, the identifier is reported whole and the embedded date is not separately reported.

DATE_OF_DEATH

CriticalRules ledshared tier · context-gated

An explicit calendar date stating when an identifiable person died, detected on the same mechanics as DOB and likewise requiring a positive cue — overlijdensdatum, Sterbedatum, date de décès and equivalents.

Does not cover: Funeral, memorial or probate dates.

Sensitive both under member-state post-mortem privacy provisions and for living next-of-kin contexts such as insurance claims and estate administration.

Organisational identifiers

CHAMBER_OF_COMMERCE

MediumRules ledChecksum10 countries

A company or business registration number issued by a commerce registry, trade register or statistics authority — the Dutch KvK number, German HRB, Belgian BCE/KBO, Danish CVR, Finnish business ID and Norwegian organisasjonsnummer among them. Several are checksum-validated.

Does not cover: VAT registration (VAT) or personal taxpayer identification (TAX_ID).

INTERNAL_ID

MediumAI led

An organisation-assigned identifier that identifies a specific person, account, customer, employee, case or record within that organisation's domain, and that fits no more specific type. Covers employee numbers, badge and keycard numbers, customer and account references, and claim, policy and report references tied to a claimant.

Does not cover: Purchase-order numbers, cost-centre codes and ticket numbers that are not tied to a person. These are not personal data and are not reported.

This is the residual type — used only when nothing more specific applies.

How ambiguity is resolved

Applied consistently across every type. These answer most “why was this redacted” and “why wasn’t this redacted” questions.

Broader role wins

Where one value could carry two types, the broader identity role takes precedence — a national ID used fiscally stays a national ID.

Residual last

INTERNAL_ID is used only when no more specific type fits.

Embedded in parent

A value forming part of a larger annotated span is not also reported separately — a postal code inside a full address, a birth date inside a national ID.

Maximal span for names

The longest contiguous name at each occurrence is one detection, not several.

Categories are not identifiers

A class, label or category name is not personal data. “Customer segment: premium” identifies nobody.

Test and placeholder data

Obvious placeholder and documentation values are recognised as such.

Public figures

Public-figure references are handled by an explicit rule rather than treated identically to private individuals.

Foreign jurisdictions

Identifiers from outside the supported countries are recognised on their own terms where their format allows.

Truncated and partial values

Partial identifiers — a masked card number, the last four digits of an account — are treated as identifying where they remain re-identifying in context.

Spelled-out forms

A value written in words or phonetically counts as the underlying value.

Pseudonymisation (Recital 26)

Pseudonymous identifiers remain personal data where re-identification is reasonably possible.

Country coverage — Rules Engine layer

31 jurisdictions with dedicated pattern sets. Every country listed has national-format patterns for bank accounts, national IDs, phone numbers and postal codes at minimum; the columns below show the types that vary between them.

A dash means no dedicated pattern for that type in that country— not “not detected”. The shared tier and the AI layer still apply. This is the most likely misreading of the table below.

CountryVATPlateTrade registerTax IDPassportOther
Austria AT
Belgium BEDriving licence, healthcare provider
Bulgaria BG
Switzerland CH
Cyprus CY
Czechia CZ
Germany DESocial security, health insurance
Denmark DK
Estonia EE
Greece EL
Spain ES
Finland FI
France FR
Croatia HR
Hungary HU
Ireland IE
Iceland IS
Italy IT
Lithuania LT
Luxembourg LU
Latvia LV
Malta MT
Netherlands NL
Norway NO
Poland PL
Portugal PT
Romania RO
Sweden SE
Slovenia SI
Slovakia SK
United Kingdom UKNHS number
The shared tier

Applies to documents from every country and covers: IBAN, BIC, credit cards, e-mail, international phone numbers, IPv4, IPv6, MAC addresses, UUIDs, IMEI, VIN, GPS coordinates, social handles, dates of birth and death, and the secret formats listed under SECRET.

Start with the types that ship today

Everything marked Rules only or Rules led runs locally, right now, with no network calls.

Quickstartarrow_forward