Anonymize a text (and restore it)

Take the data out of a text before you paste it into a chat, then put it back into the answer. It only recognises what can be verified with a calculation (IBAN mod-97, check characters, Luhn): proper names are up to you.

1Mask the text

Paste the text with the real data. The tool only recognises what can be verified with a calculation: if an IBAN or a card number does not add up, it is left alone.

Proper names are never recognised on their own and we do not pretend otherwise: select them in the text and press «Mask the selection», or type them in the box of your own words.

What to look for

On this page the Italian tax code, Italian VAT number, DNI or NIE, Plate, Date and Postcode boxes start switched off: one click switches them on when you need them. Dates are left out on purpose, because if every date is masked the text becomes useless to the model, which has to be able to reason about deadlines; and a postcode is five digits like many others.

Export the map to a JSON file

Careful: the file holds your real data in the clear, next to the placeholders. It is the same as saving the data to disk. You only need it if you have to pick the work up on another device.

🔒 Text and map stay in your browser: nothing is sent, nothing is stored. The map lives only in this page, reload it and it is gone.

2Put the real data back

Paste the answer you received here: the placeholders turn back into the real values. If a placeholder was rewritten, translated or has vanished, we say so in red with the exact line.

What it is for, and what it does not do

The company policy says client data must not be pasted into a chat, but the letter still has to be written. Today people delete by hand before and retype by hand afterwards, always forgetting one. Here the text goes through a filter that swaps the data for numbered, stable placeholders: the same IBAN always gets [IBAN_1], everywhere in the text, so whoever reads it understands that it is always the same account. Then you paste the answer into the second box and the placeholders turn back into the real values.

What this tool does not do is guess proper names. Telling a surname apart from an ordinary word is the part that works badly even in expensive tools, and getting it wrong silently would cost you trust in everything else. Names are masked by selecting them with the mouse and pressing «Mask the selection», or by pasting them into the list of your own words: it takes two seconds and there is nothing to guess.

It only recognises what adds up

Every kind of data has a real check, the same one used by the pages of this site that do nothing but that check: mod-97 for the IBAN (with the right length for the country), the check character for the Italian tax code and VAT number, Luhn for cards, the check letter for Spanish DNI and NIE numbers. If the sum does not add up, the data is left alone.

That is a deliberate choice: we would rather leave an eleven digit invoice number untouched than fill the text with random placeholders. The flip side is that a mistyped IBAN is not masked, and therefore stays in the clear: if you expected to see it in the list and it is not there, check a digit.

Emails, web addresses, plates and phone numbers have no check digit, so there we look at the shape. Plates follow the letters allowed in Italy (no I, O, Q, U) and in Spain (consonants only). Phone numbers follow cautious rules: 8 to 15 digits, groups of at least two digits, never a date, never a number with thousands separators.

The whole round trip, in three moves

1. Paste the text and press «Find the data». The review list shows what was found, how many times it appears and with which placeholder: you can untick an item you want to leave in the clear, and you can rename a placeholder (say CLIENT_A instead of NAME_1) if that makes the answer easier to read.

2. Copy the masked text and use it where you need it. Nobody asks you to upload anything anywhere: the substitution happens right here.

3. Paste the answer into the second box and press «Put the real data back». The text comes back complete, with the IBANs and the emails in their place.

When the model rewrites the placeholder

This is where these tools break, so it is looked after obsessively here. A model that rewrites the text can turn [EMAIL_1] into [EMAIL 1], into [email_1], into (EMAIL_1), into **[EMAIL_1]** or even translate it into [CORREO_1]. Restoring tolerates all of that: it ignores case, spaces, accents and punctuation around the label, and it knows the placeholder names in the three languages of the site, so it falls back on the type plus the number.

When a placeholder vanishes altogether instead, or one turns up that matches nothing, we do not hand you back a half restored text as if nothing happened: a red box appears with the list of problems and the exact line, the line of the answer for unknown placeholders and the line of the masked text for the ones that vanished. You still get the restored text, but you know where to put your hands.

What starts switched off on this page, and why

On this English page the Italian tax code, Italian VAT number, DNI or NIE, Plate, Date and Postcode boxes start switched off, and you find them all in the «What to look for» panel: one click switches any of them on, with the very same check behind it. Four of them are country specific: the tax code and the VAT number are Italian, the DNI is Spanish, and the plate rule knows the Italian and the Spanish formats, not the British or the American ones, so they would be dead weight here until you ask for them. Dates are the other kind of choice: if every date is masked, the text becomes useless to whoever has to read it, since «pay by [DATE_1]» lets nobody work anything out, and deadlines are often the very reason the letter is being written. A postcode, for its part, is a five digit number like many others. When the page says it found nothing, it also reminds you which boxes were off.

The map lives only in this page

The link between placeholders and real values stays in memory inside the browser tab: it is not saved on the device, it is not sent to any server and it does not survive a page reload. That is why restoring has to happen in the same tab where you masked: if you close everything, the placeholders become dead letters, which is exactly what you want on a shared computer.

Exporting the map as JSON does exist, but it sits behind two clicks and a red warning: that file holds all your data in the clear next to the placeholders, so it is worth as much as the data itself. The «Clear everything» button removes map, texts and placeholders from the page in one go.

The limits, said up front

This is pseudonymisation, not anonymisation: with the map in hand the text goes back to being identical to the original, which is exactly the point, but it means the masked text is still personal data as long as the map exists. Even without the map, a text can stay recognisable from context (only one person in the company has that role in that city).

Phone numbers and your own words can produce false positives and false negatives: always read the review list before copying, that is what it is there for. An eleven digit number that happens to pass the VAT check is masked as a VAT number, and a phone number written with no separators and no country code can slip through.

The tool never touches attachments, images or PDFs: it works on the text you paste. There is a separate page for blacking out a PDF, and another one for stripping the hidden data out of a photo.