/Documentation

Instructions for use /

What euRedact Cloud is for, what it detects, how well, and what your organisation has to do with its Output.

Version 1.0 · Effective 9 November 2026

1. Intended use

The service detects personal data and other sensitive data in free text submitted by a business customer, and returns the text with those spans marked, masked or replaced, so the customer can redact documents before sharing, publishing, archiving or further processing them. It is a support tool for a human process.

2. Not intended for

The service is not designed or intended to take decisions about natural persons, to produce legal effects, or to replace professional judgement or legal review. It is not for consumers, and not for any use where a missed detection cannot be caught downstream.

The Cloud Service is a tool that supports the Customer in detecting and redacting personal data in business documents. It is not designed or intended to take decisions about natural persons, to produce legal effects, or to replace the professional judgement, verification duties or legal responsibilities of the Customer and its Users. The Customer remains solely responsible for deciding how Output is used, for implementing validation and human oversight proportionate to the risks of its own use, and for ensuring that documents it shares, publishes or otherwise processes comply with the law, applicable professional rules and its internal procedures.

General Terms, Article 6.6

3. Who may use it

Businesses and professionals only, acting in the course of a trade, business, craft or profession and not as consumers (General Terms, Article 2.4), through a Workspace and its API Keys. The customer undertakes to bring these instructions for use to the attention of its users and of anyone who uses the Output (Article 8.12).

Under the AI Act, euRedact is the provider of the service, which is not a high-risk AI system; the customer is its deployer and uses it in accordance with these instructions (Articles 8.12 and 9.12).

4. What it detects

Two groups of entity types. Structured identifiers have a fixed format and are detected locally by euRedact Core, the open-source SDK, on your own systems, before any text is sent. Contextual types have no fixed format and are detected by the hosted model. Types marked with a GDPR article are special-category data.

Structured identifiers (detected locally by euRedact Core)

TypeWhat it isExamples
NATIONAL_IDA government-issued personal identification number.Dutch BSN; Belgian national register number; Polish PESEL
PASSPORTThe document number of a passport or travel document.a passport number; an emergency travel document number
TAX_IDA personal tax identification number, where distinct from the national ID.German Steuer-ID; Polish NIP
SSNA social-security number, where a country issues one separately.Irish PPSN; German Sozialversicherungsnummer
DRIVERS_LICENSEThe number of a driving licence.a driving-licence number; an EU-format licence number
RESIDENCE_PERMITThe number of a residence card, work permit or visa.a residence card number; a work permit number
HEALTH_INSURANCEA health-insurance member or card number.a health-fund member number; a UK NHS number
HEALTHCARE_PROVIDERA registration number of a healthcare professional or provider.Belgian RIZIV/INAMI number; Dutch BIG number
BANK_ACCOUNTA bank account number.an IBAN; a domestic account number
BICA bank identifier code.a SWIFT/BIC code; an eight- or eleven-character bank code
CREDIT_CARDA payment card number and its security data.a Visa or Mastercard number; a card verification code
VATA VAT registration number.a Belgian VAT number; a German USt-IdNr
EMAILAn e-mail address.a personal e-mail address; a work e-mail address
PHONEA telephone, mobile or fax number.a mobile number; an international number with country code
SOCIAL_HANDLEA username on a social or messaging platform.an @handle; a forum username
POSTAL_CODEA postal code attached to a person or address.a Dutch postal code; a Belgian postal code
GPS_COORDINATESA coordinate pair locating a person.latitude and longitude in decimal degrees; a location pin from a device
IP_ADDRESSAn IPv4 address.a client IP address in a log; the IP address of a sign-in
IPV6_ADDRESSAn IPv6 address.a full IPv6 address; a compressed IPv6 address
MAC_ADDRESSA network hardware address.a Wi-Fi adapter's MAC address; a device address in a network log
IMEIA mobile device's equipment identity.a 15-digit IMEI; a phone's IMEI on a repair form
UUIDA unique identifier used for a person or session.a session ID; a user ID
LICENSE_PLATEA vehicle registration plate.a Dutch registration plate; a German registration plate
VINA vehicle identification number.a 17-character VIN; a chassis number on an insurance claim
SECRETAn API key, token, password or other credential.a cloud access key; an API token; a password written in an e-mail
DOBA person's date of birth.a birth date on a form; a date of birth in a letter
DATE_OF_DEATHA person's date of death.a date of death on a certificate; a date of death in an estate file
CHAMBER_OF_COMMERCEA company or business registration number.Dutch KvK number; Belgian enterprise number
INTERNAL_IDAn organisation's own reference to a person or their record.an employee number; a customer number; a claim reference

Contextual types (detected by the hosted model)

TypeWhat it isExamples
MEDICAL_CONDITION
GDPR Art. 9 (health)
Information about a person's health, diagnosis or treatment.a diagnosis; a prescribed medication; a period of sick leave
BIOMETRIC_REF
GDPR Art. 9 (biometric)
A reference to a person's biometric data.a fingerprint on file; an enrolled face template
SENSITIVE_ATTRIBUTE
GDPR Art. 9; criminal convictions Art. 10
Ethnic origin, beliefs, political opinion, sexual orientation, trade-union membership or criminal convictions.a stated religion; trade-union membership; a criminal conviction
FINANCIAL_AMOUNTA monetary amount attached to a person.a salary; a debt; a settlement amount
URLA web address that identifies a person or their account.a personal profile page; a link to an account
PERSON_NAMEA person's name.a full name; a surname with initials; a name with a title
ORGANISATION_NAMEThe name of a company, institution or other organisation.an employer's name; a hospital's name
JOB_TITLEA person's role or job title.a job title; a position in an organisation
QUASI_IDENTIFIERA combination of details that together point to one person.the only night nurse on a named ward; a role, a town and a year that fit one person
ADDRESSA postal or physical address.a street address; a PO box
LOCATIONA city, town, village, commune or district linked to a person.the town a patient lives in; an employee's home district

For which layer does the detection work for each type, see What we detect.

5. How it works

Text is submitted through the API, the SDK in cloud mode, or the Console. The service runs a rules pass and a hosted model fine-tuned by euRedact for this task, and returns the Output.

Where the Customer uses the SDK, the SDK masks the structured identifiers it can recognise on the Customer's own systems before any text is sent to euRedact. The Customer acknowledges that the text sent to euRedact may nevertheless contain Personal Data, including names, roles, employers, health data and data that was not recognised locally, and that text submitted through the Console or directly through the API is sent as the Customer submits it.

By default, submitted content and Output are deleted as soon as the Output has been delivered. The Customer may, within the retention cap of its Plan, instruct the Cloud Service to retain the Output of a request for a period it sets, after which the Output is deleted and can no longer be retrieved. Document content is never written to logs or backups.

The data-protection detail is in the Data Processing Agreement.

6. Supported languages and countries

Hosted model, evaluated on: Dutch, English, French, German, Polish.

SDK identifier rules, for the 31 countries: Austria, Belgium, Bulgaria, Switzerland, Cyprus, Czechia, Germany, Denmark, Estonia, Greece, Spain, Finland, France, Croatia, Hungary, Ireland, Iceland, Italy, Lithuania, Luxembourg, Latvia, Malta, Netherlands, Norway, Poland, Portugal, Romania, Sweden, Slovenia, Slovakia, United Kingdom.

Performance on other languages is not measured.

7. Accuracy and limitations

Detection is probabilistic and will miss some personal data. Every figure below is stated with the conditions it was measured under.

Detection by the Cloud Service is probabilistic. euRedact does not warrant that the Cloud Service will detect, redact or mask all personal data in all circumstances. Accuracy figures published by euRedact are results measured on benchmark data under the conditions stated with them; they are not a warranty of performance on the Customer's data.

General Terms, Article 6.7

Contextual types (hosted model)

Two measurements of the hosted model, side by side. Measured internally is our own held-out test set: recall and precision count a detection only under the right type. Independent synthetic data is a benchmark generated by a separate process from our training data, run through the service as a customer calls it: “masked” is the share of its values hidden in the Output, under any type. Where the benchmark holds no values of a type, the table says so.

TypeMeasured internallyIndependent synthetic data
RecallPrecisionLabelsMaskedValues
PERSON_NAME98.8%98.9%9,57199.4%7,034
MEDICAL_CONDITION90.5%87.1%8,99679.9%5,424
ORGANISATION_NAME95.5%93.8%6,073not in the set
JOB_TITLE93.5%91.3%3,46596.2%3,244
ADDRESS99.0%98.7%3,40799.5%655
LOCATION94.4%90.9%2,85997.5%1,565
SENSITIVE_ATTRIBUTE81.3%83.8%2,39360.9%1,181
FINANCIAL_AMOUNT97.4%94.2%2,18795.8%1,901
BIOMETRIC_REF86.6%81.7%68754.6%207
URL98.7%91.4%30098.2%170
QUASI_IDENTIFIER78.7%92.3%61not in the set

The service also masks some text that is not personal data: words near a person are sometimes masked when they did not need to be.

Special categories on the independent data

Kind of dataDetected asMaskedValues
HealthMEDICAL_CONDITION80.2%5,188
Genetic dataMEDICAL_CONDITION74.2%236
Biometric dataBIOMETRIC_REF54.6%207
Ethnic originSENSITIVE_ATTRIBUTE94.0%134
Trade-union membershipSENSITIVE_ATTRIBUTE74.0%177
Religious or philosophical beliefsSENSITIVE_ATTRIBUTE70.1%211
Political opinionsSENSITIVE_ATTRIBUTE55.8%154
Criminal offences (Art. 10)SENSITIVE_ATTRIBUTE48.3%362
Sex life or sexual orientationSENSITIVE_ATTRIBUTE37.1%143

Measured internally

Benchmark set
euRedact evaluation set, held-out test split (synthetic documents, generated by the same process as the training data and never trained on)
Size
1,422 documents, 46,838 reference labels
Languages
German, French, English, Polish and Dutch
Document types
medical records and appointments, helpdesk call transcripts, onboarding forms, bug reports, security questionnaires, estate files, knowledge-base articles, status reports, KYC and immigration files, spreadsheet exports, IT tickets, insurance claims, HR and payroll files, and others
Measured
1 November 2026, on the hosted model alone, given text the rules engine had already processed
Reference labels
Reference labels were annotated and adjudicated by automated workflows against our annotation guidelines and spot-checked by a person; no document was fully adjudicated by a person. A detection counts only under the right type; boundaries are matched leniently.

Independent synthetic data

Benchmark set
euRedact benchmark, held-out sets: synthetic IT, HR and medical documents, generated by a separate process from the training data and opened only after the service's configuration was frozen
Size
900 documents (300 IT, 300 HR, 300 medical; 60 per language in each), 27,831 reference values
Languages
English, French, German, Dutch and Polish
Document types
IT documents, HR documents and medical documents
Measured
2 November 2026, through the production service with the SDK in cloud mode, default configuration
Reference labels
Reference values come with the sets: annotated by models under the benchmark's own guideline, then adjudicated; agreement before adjudication was 0.97 (IT), 0.94 (HR) and 0.85 (medical). Organisation names are labelled but not scored. A value counts as masked when at least 75% of its letters and digits are hidden, under any type.

Structured identifiers (rules engine, in euRedact Core)

TypeCountries declaredCountries not declaredReference labels
RecallPrecisionRecallPrecision
EMAIL100.00%99.93%100.00%99.93%152,938
BANK_ACCOUNT100.00%100.00%100.00%100.00%126,428
PHONE99.82%100.00%99.20%99.91%123,151
NATIONAL_ID99.69%99.83%99.57%99.22%118,582
DOB100.00%100.00%100.00%100.00%89,805
POSTAL_CODE99.97%99.95%99.97%99.95%53,914
VAT100.00%100.00%100.00%100.00%20,525
IP_ADDRESS99.95%99.61%99.95%99.61%10,038
VIN100.00%100.00%100.00%100.00%9,701
CHAMBER_OF_COMMERCE100.00%100.00%100.00%99.93%8,497
LICENSE_PLATE99.89%100.00%99.89%100.00%6,445
CREDIT_CARD100.00%100.00%100.00%100.00%6,415
SECRET90.62%96.69%90.62%96.69%5,798
UUID100.00%98.59%100.00%98.59%4,890
TAX_ID100.00%100.00%99.46%99.33%3,729
MAC_ADDRESS100.00%100.00%100.00%100.00%3,546
BIC100.00%95.63%100.00%95.63%2,830
IMEI100.00%100.00%100.00%98.31%2,443
SOCIAL_HANDLE100.00%100.00%100.00%100.00%2,267
SSN100.00%99.99%99.61%99.41%1,288
HEALTH_INSURANCE100.00%100.00%100.00%100.00%1,185
PASSPORT82.00%100.00%82.00%100.00%1,072
GPS_COORDINATES100.00%100.00%100.00%100.00%950
IPV6_ADDRESS100.00%100.00%100.00%100.00%636

The rules engine’s corpus holds no labels for DATE_OF_DEATH, DRIVERS_LICENSE, HEALTHCARE_PROVIDER, INTERNAL_ID, RESIDENCE_PERMIT. Their figures through the service, from the two measurements above:

TypeMeasured internallyIndependent synthetic data
RecallPrecisionLabelsMaskedValues
HEALTHCARE_PROVIDER100.0%97.4%147100.0%166
DATE_OF_DEATH96.8%91.0%126not in the set
INTERNAL_ID96.6%93.9%2,66499.1%861
RESIDENCE_PERMIT100.0%97.2%141not in the set
DRIVERS_LICENSE100.0%100.0%6099.2%121
Benchmark set
euRedact generated evaluation corpus, 10 files (synthetic documents)
Size
152,300 documents, 759,595 labels
Languages
not recorded in the corpus; documents from 31 countries and international material
Document types
not recorded in the corpus
Measured
31 October 2026, rules engine 0.8.0

How these figures were measured

  • Rules engine only (mode="rules"); the cloud tier is not measured here.
  • Synthetic corpus, generated for evaluation; no real person's data.
  • Two country modes: 'hinted' passes each document's labelled countries as `countries`; 'blind' passes none.
  • A hit is a labelled value whose every character is masked, at every place it occurs, by a type its category accepts. Fully masked by another type is 'mistyped': protected, but a miss for recall.
  • A detection is a true positive when it overlaps a labelled value whose category accepts its type, and a false positive otherwise; a mistyped detection is a false positive for the type it was emitted as.
  • Support and detections are counted differently: support is the labels of the categories attributed to a type, detections are everything the engine emitted as that type, and a detection is a true positive on any label whose category accepts its type. Most SSN and TAX_ID detections land on NATIONAL_ID labels, so their detections exceed their support.
  • Precision is a lower bound: a real identifier the corpus left unlabelled counts as a false positive when the engine masks it.
  • DOB is optional (the cloud tier owns bare dates) and reported separately, with detect_dates=True.
  • CRYPTO_ADDRESS_BTC and CRYPTO_ADDRESS_ETH labels are excluded: no API type exists for them.
  • The regression records (euromask_regressions.json) are excluded from the figures; they are adversarial by design and are reported as pass/fail.

Synthetic documents measure detection under controlled conditions, not the irregularities of real documents. Expect lower figures on your own data.

Context-dependent types: MEDICAL_CONDITION, SENSITIVE_ATTRIBUTE, BIOMETRIC_REF, QUASI_IDENTIFIER. Whether a phrase belongs to one of these types depends on what the surrounding text says about a person, not on its form, and careful readers can disagree about the same sentence. They are the four types with the lowest recall in the internal measurement, and the lowest shares masked on the independent data (as of 2 November 2026), so a document that contains them calls for a person's review.

Human annotators show the same pattern. In a study of medical self-disclosure in online posts, three annotators agreed almost perfectly on posts with a clear disclosure (kappa 0.98) and far less on possible ones (0.68) (Valizadeh et al., NAACL 2021). These are agreement figures between people, not a measure of this service.

Known failure modes:

  • Documents near the size limit. A document over the limit is refused, not split; split it yourself.
  • Dense documents. The more personal data a document holds, the higher the share the service misses.
  • Short excerpts. A paragraph or a single sentence is redacted less completely than the same text inside its whole document.
  • Scanned text. The service reads text only; text produced by OCR is not measured.
  • Non-standard formats, and names written in variant or partial forms.
  • Device serial numbers other than IMEIs have no type of their own: on the independent data 36.9% of them were masked.
  • Text that is two kinds of personal data at once, such as a job title that also reveals a religion, is masked as one placeholder naming the type that is not special-category data; the result’s detections list both.

8. What the customer must do

  • Validate the Output before relying on it, with human oversight proportionate to the risk of your own use.
  • Decide on human review by what a document contains: a document that holds any of the context-dependent types (Section 7) should be reviewed by a person. Detections made by the hosted model carry no confidence level, so do not route them by confidence.
  • Treat the service as a support tool only, and validate the Output before it is further used, shared or published (Article 13.1). That does not mean reading every Output by hand: the oversight is proportionate to the risk of your own use (Article 6.6).
  • Where a document matters, have it reviewed independently by a second person. In a study of clinical notes, individual reviewers found 90 to 98 in every 100 personal identifiers, and adding a second reviewer brought that to 99 (Carrell et al., Methods of Information in Medicine 2016).
  • Keep the original of every document you submit (Article 9.4).
  • Run a supported SDK version: older versions may submit more text to the service than the current one.
  • Report misdetections (Section 11).

Detection by the Cloud Service is probabilistic. euRedact does not warrant that the Cloud Service will detect, redact or mask all personal data in all circumstances. Accuracy figures published by euRedact are results measured on benchmark data under the conditions stated with them; they are not a warranty of performance on the Customer's data.

General Terms, Article 6.7

Where the Customer uses the SDK to submit text to the Cloud Service, the Customer is responsible for running a supported version as published in the Documentation. Older versions may submit more text to the Cloud Service than the current version does.

General Terms, Article 5.6

9. Limits

Maximum document size: 5,000 tokens per document, for single requests and for each document in a batch alike: about 16,000 characters of Dutch or French, or about 20,000 of English. What is counted is the text the service receives: with the SDK, that is the text after local masking, so the count can differ slightly from the original document. Longer documents are not split by the service: split them yourself before sending. A single request the service cannot take is refused with HTTP 413, stating the tokens counted and the limit; a batch document over the limit is refused on its own while the rest of the batch runs. A batch holds at most 5,000 documents.

Requests per API key: 20 per second, on every Plan.

These limits apply to the hosted service. euRedact Core in local mode sends nothing and is not subject to them.

PlanBudget per monthConcurrent synchronous requestsRetention cap
Free Cloud
without commitment, as capacity allows
250,000 tokens (about 125 pages)1none: deleted on delivery
Starter10M tokens (about 5,000 pages)2up to 24 hours
Professional60M tokens (about 30,000 pages)4up to 48 hours
Scale200M tokens (about 100,000 pages)8up to 72 hours

Retention is off by default on every Plan: submitted content and Output are deleted as soon as the Output has been delivered. On a paid Plan the customer may set a retention window up to the cap shown. Batches need a retention window, so the free Plan has none. Processing is measured in tokens; one page is counted as about 2,000 tokens, for presentation only (Article 4.4).

10. Changes

euRedact informs the customer of changes to the service that affect its functionality or the published limits in the Documentation and, where the change is material, by e-mail, no later than the moment the change takes effect (Article 8.4). Where a material change reduces the functionality or the published limits, the customer may terminate within one month of being told, with effect from the end of the billing period in which it gives notice (Article 8.4).

While the service carries the designation “beta”, an API version or a documented behaviour can be withdrawn on fourteen days’ notice instead of three months (Articles 3.7 and 5.5). The rules for changes to prices, functionality and published limits apply unchanged (Articles 4.3 and 8.4). The beta designation does not reduce euRedact’s obligations on security, data protection and liability, and a paid Plan keeps the Budget, limits and retention cap published for it (Article 3.7).

A change that narrows the scope of this page is published as a new version of it; see the change log below.

11. Reporting

Report a misdetection or a suspected security issue to support@euredact.dev. Describe what was missed or wrongly masked, without sending document content or personal data (Article 10.2): share a sample document through the service or a channel euRedact designates.

12. Version and change log

Version 1.0, effective 9 November 2026.

Article references are to the General Terms (version 1.0 of 9 November 2026).

  • 1.0 · 9 November 2026: First publication.