Anonymize TSV Columns
Replace the identifying columns in an export so you can paste the file into a ticket, share it with a vendor, or use it as a test fixture. Every method is consistent: the same input value always produces the same replacement within a run, so joins and group-bys still work on the anonymized file. The whole point of doing this in the browser is that the file with the real names in it never travels anywhere.
How to use
- Paste or drop the file. Nothing is changed until you name at least one column.
- List the columns to anonymize — by header name or 1-indexed position, comma-separated. All listed columns get the same method.
- Pick a method based on what the recipient needs to be able to do with the file (see below).
- Set a salt if you want two separate runs to produce different values for the same input — or leave it blank for reproducible output.
- Download and check the result before sharing. Always eyeball the output; only you know what counts as identifying in your data.
Choosing a method
Hash gives a short hex token per distinct value — the recipient can still count distinct users and join tables, but can't read the values. Sequential ID does the same thing with friendlier output (1, 2, 3 in order of first appearance), which is nicer in a bug report but leaks the order rows appeared in.
Partial mask keeps the first and last character (and for emails, the domain), so [email protected] becomes a***@example.com. Good for support tickets where someone needs to recognise a record they already know about. Full mask replaces every character with an asterisk, preserving only the length. Blank preserves nothing at all — the safest option, and the right one when the column isn't needed downstream.
Fake name and fake email produce plausible-looking values drawn from a small fixed word list, mapped consistently from the original. Use these when the file is going to be a demo or a screenshot and asterisks would look wrong. Because the word list is small, distinct originals will collide onto the same fake name in a large file — fine for a demo, not fine if the recipient needs accurate distinct counts.
What this is not
The hash here is FNV-1a — fast, deterministic, and not cryptographic. It is a labelling function, not a security boundary. Anyone who has the original values can hash them with the same salt and confirm which row is whose. That is unavoidable for any deterministic pseudonymisation, including salted SHA-256, and it's why a hashed identifier is still personal data under GDPR: pseudonymisation reduces risk, it doesn't remove it.
Anonymizing a column also doesn't anonymize a row. If a record has a rare combination of city, birth year, and job title, masking the name changes very little — that's re-identification by mosaic, and the only fix is dropping or coarsening those columns too (delete columns, or bucket values with find and replace). Treat the output as "safe enough to share internally" unless you've thought about the rest of the row.
FAQ
Will joins still work after anonymizing?
Yes, as long as you anonymize the key column in both files with the same method and the same salt. That's what the salt field is for: keep it identical across the files you need to join, change it when you want unlinkable outputs.
Can I use a different method per column?
Run the tool more than once — anonymize email, copy the output back into the input box, then anonymize name with a different method. Two passes take a few seconds and keep the interface from growing a per-column matrix.
Is the fake data guaranteed not to match a real person?
No. The names are short generic tokens and the emails all use example.com (which is reserved by RFC 2606 and can never be a real domain), but a generated name could coincide with somebody real. Don't present fake data as if it described anyone.
Does the file leave my machine?
No. That is the entire reason this page exists rather than a server-side service — uploading a file to have its personal data removed would defeat the purpose. Everything happens in your browser, and you can confirm it by disconnecting from the network and reloading: the tool still works.
Privacy
100% client-side. No upload. See the privacy policy.