PII Redactor (Mask Personal Data)
Hide personal data in logs, tickets and prompts: masked, tagged or swapped for stand-ins.
Nothing you paste leaves your device.
How to hide it
Matched as whole words, ignoring capitals. Names are not recognised on their own: list the ones that must go.
Redacted text
Paste text to see it redacted here.
Mapping table: what was replaced (keep it private)
Untick a row to leave that value in the text. The originals are listed here, so treat this table and its downloads like the original text.
| Hide | Type | Original | Replaced with | Times |
|---|
Put the originals back into a reply
Paste text that contains the tags or stand-ins — for example a chatbot’s answer — to swap the original values back in. It uses this page’s mapping, or a JSON mapping you saved earlier.
About the PII Redactor (Mask Personal Data)
Before you share a log file, paste a support ticket into a chatbot or send an export to a vendor, take the personal data out. This redactor finds email addresses, phone numbers, card numbers, IBANs, IP and MAC addresses, Aadhaar numbers, PAN, GSTIN and UPI IDs, US Social Security numbers, UK National Insurance numbers and any names you list. It checks each number the way its issuer defines it — Luhn for cards, MOD 97 for IBANs, Verhoeff for Aadhaar — so order numbers, timestamps and prices stay as they are.
Then choose how to hide them. Mask keeps a hint, such as the last four digits in the style of a masked Aadhaar. Replace swaps each value for a tag like [EMAIL_1]. Pseudonymise uses consistent stand-ins of the same shape that cannot be real — example.com addresses, documentation IP ranges, card numbers that fail their check digit — so logs stay readable and your parsers keep working. A mapping table lists every replacement and can put the originals back into a reply. Everything happens in your browser.
How to use it
- Paste the text, or open a .log, .txt, .csv or .json file.
- Choose Mask, Replace with tags or Pseudonymise.
- Untick the kinds of data you want to keep, choose the country for phone numbers written without +, and list any names or words to hide.
- Check the highlighted result and the mapping table; untick anything that is not personal data.
- Copy or download the redacted text. To restore the originals later, download the JSON mapping, or paste the reply into Put the originals back into a reply.
Examples
card=4111 1111 1111 1111 ip=8.8.8.8 [email protected]
card=•••• •••• •••• 1111 ip=8.8.8.• user=p•••••••••••@example.org
Separators and lengths stay, so the line still lines up with the others.
card=4111 1111 1111 1111 ip=8.8.8.8 [email protected]
card=0000 0000 0000 0019 ip=192.0.2.1 [email protected]
The card number fails the Luhn check, 192.0.2.1 is reserved for documentation (RFC 5737) and example.com cannot be registered (RFC 2606). Repeats of a value get the same stand-in.
Priya Sharma (Aadhaar 9999 9999 0019) asked for a refund.
[NAME_1] (Aadhaar [AADHAAR_1]) asked for a refund.
With “Priya Sharma” listed under names. Paste the chatbot’s answer into Put the originals back to get the real values again.
Common uses
- Sharing application or server logs with a vendor, a forum or an issue tracker.
- Asking an AI chatbot to summarise or answer a customer email without handing over the customer’s details.
- Preparing test data or screenshots from real records.
- Removing card numbers, Aadhaar and PAN from a support ticket before it is escalated.
What is found, and how it is checked
- Card numbers: 13–19 digits, written together or in groups, with a valid Luhn check digit (ISO/IEC 7812-1).
- IBANs: valid ISO 7064 MOD 97-10 check digits (ISO 13616).
- Aadhaar numbers: 12 digits whose last digit is a Verhoeff checksum, as NPCI’s circular NPCI/2013-14/NACH/Circular 9 describes.
- US Social Security numbers written with hyphens or spaces (123-45-6789), leaving out numbers the SSA never issues: 000, 00 or 0000 in any group, or 666 or 900–999 first.
- UK National Insurance numbers such as AB 12 34 56 C, following HMRC’s rules in its National Insurance Manual (NIM39110): no D, F, I, Q, U or V in the prefix, no O second, and no BG, GB, KN, NK, NT, TN or ZZ.
- Phone numbers, checked against Google’s libphonenumber metadata; numbers without + are read in the country you choose.
- IP addresses (IPv4 and IPv6) and MAC addresses. Addresses that IANA lists as not reachable on the Internet — private, loopback, link-local, documentation — are left alone unless you untick that option.
- Email addresses, UPI IDs, PAN (ABCDE1234F) and GSTIN, matched by their format, and your names and words as whole words.
NIST SP 800-122 counts email addresses, phone numbers, account and card numbers, and IP and MAC addresses that link to a person among the examples of personally identifiable information.
Mask, replace or pseudonymise?
- Mask when people need to recognise a value without seeing it: the last four digits of a card or Aadhaar number (UIDAI’s masked Aadhaar shows only the last four, as xxxx-xxxx-1234), the domain of an email, the network part of an IP address.
- Replace when the text goes to a person or a chatbot: [EMAIL_1] and [EMAIL_2] keep different values apart, and the mapping restores them.
- Pseudonymise when the text goes to a program: stand-ins keep the format, so log parsers, dashboards and tests still work.
Stand-ins that can never be real
- Email: [email protected], [email protected] … (example.com is reserved, RFC 2606).
- IPv4: 192.0.2.x, 198.51.100.x and 203.0.113.x (RFC 5737), then 198.18.0.0/15 (RFC 2544); IPv6: 2001:db8:: (RFC 3849).
- MAC: 00-00-5E-00-53-01 onwards, the range set aside for documentation (RFC 7042).
- Card and Aadhaar numbers of zeros that deliberately fail the Luhn or Verhoeff check; IBANs with check digits 00, which MOD 97-10 never produces.
- SSN 000-00-0001 onwards (area 000 is never issued) and NINO QQ 00 00 01 A onwards (Q is never used, HMRC).
- Phone numbers, PAN, GSTIN, UPI IDs and names get numbered tags, because there is no range that is guaranteed to be unused.
Is redacted text anonymous?
Not necessarily. Job titles, places, times and events can still point to a person, and under the EU GDPR (Recital 26) pseudonymised data that could be linked back with extra information is still personal data. Keep the mapping file as private as the original, and read the result before you share it.
Limitations
- Names, street addresses and dates of birth are not recognised on their own: list the names and words that must go.
- Passwords, API keys, access tokens and other secrets are not personal data and are not looked for. Remove them yourself before you share a log or a prompt — and replace any key that has already been shared.
- Only the formats above are found. Passport, voter ID and driving licence numbers, bank account numbers without an IBAN, unformatted 9-digit SSNs and Aadhaar Virtual IDs (random 16-digit numbers) are not.
- A check digit cuts false matches but cannot rule them out: about one random 16-digit number in ten passes Luhn, and one random 12-digit number in ten passes Verhoeff. Untick such rows in the mapping table.
- Masks cannot always be undone: two card numbers ending in the same four digits get the same mask. Use tags or stand-ins when you need the originals back.
- Up to 5 million characters at a time; above 5,000 replacements the result is shown without highlighting.
Privacy
Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.
Frequently asked questions
Is my text uploaded anywhere?
No. Detection and redaction run in your browser, and the text, the names you list and the mapping are never sent or stored. The page keeps working offline once it has loaded.
How is this different from the Text Redactor?
The Text Redactor is built around chatbot placeholders and blacking out text. This tool is aimed at logs and data exports as well: it adds masks that keep the last digits, format-preserving stand-ins, MAC addresses, US Social Security and UK National Insurance numbers, and leaves private and documentation IP addresses alone.
Why was a number not masked?
Card, IBAN and Aadhaar numbers are only hidden when their check digit is right, and phone numbers must be valid for their country, so typos and look-alike numbers stay. To hide a particular number anyway, add it under Names and other words to hide.
Can I get the original values back?
Yes, with tags or stand-ins: paste the redacted text, or a reply that quotes it, into Put the originals back into a reply. To do it later, download the JSON mapping and load it again; it contains the originals, so keep it safe.
Why are some IP addresses left as they are?
Private (10.x, 172.16–31.x, 192.168.x), loopback, link-local and documentation addresses do not identify anyone on the Internet, and hiding them makes logs harder to read. Untick Leave private, loopback and documentation IP addresses to hide every address.
Does it find names automatically?
No. Guessing names reliably needs a language model, and a missed name would give a false sense of safety. List the names, companies and places you want hidden; capitals and extra spaces do not matter.