CSV Anonymizer
Paste or upload a CSV, pick the columns that hold names, emails, phone numbers, or other sensitive values, and choose how each one should be anonymized: full redaction, partial masking (like j***@example.com), or deterministic pseudonymization that replaces a value with a consistent hash token so the same person maps to the same token across every row. The tool suggests likely PII columns automatically, but you stay in control of the final choice. The CSV is parsed and rewritten in your browser tab; none of it goes to a server.
Reviewed by Vincenzo Manto, Founder & Lead Developer · Last updated September 27, 2026
How it works
- 1
Paste your CSV text or drop a .csv file into the input box.
- 2
Review the auto-suggested PII columns (based on header names and value shape), or check any column yourself.
- 3
For each selected column, choose a strategy: full redaction, partial masking, or deterministic pseudonymization.
- 4
Copy or download the anonymized CSV. The original data never leaves your device.
Why anonymize a CSV before sharing it?
Spreadsheets and database exports often contain names, emails, and phone numbers that shouldn't be shared as-is with a contractor, a QA environment, or a public dataset. Anonymizing the file keeps its structure and row count intact, so joins and downstream scripts keep working, while removing the values that created the risk.
Redaction vs. masking vs. pseudonymization
Full redaction is the safest option when the value itself carries no analytical value and you just need it gone. Partial masking is useful when a human reviewer still needs to recognize a record (confirming 'is this the right customer?') without seeing the full email or phone number. Pseudonymization fits when you need to preserve relationships across rows or tables, for example keeping every row from the same customer mapped to the same anonymous ID, without exposing or reversing the original value.
Everything runs locally, in your browser
This tool never calls a server. CSV parsing, PII detection, hashing, and masking run as plain JavaScript in the tab you're looking at, so it's fine to use on files you wouldn't want to paste into a random web form.
Frequently asked questions
Does this upload my CSV anywhere?
No. All parsing, hashing, and masking happens in your browser with plain JavaScript. The file is never sent to a server, which makes this safe to use on customer lists or other sensitive exports.
What does 'pseudonymize' actually do?
It runs each cell's value through a fast, non-cryptographic hash function (FNV-1a, implemented from scratch) and replaces the value with a short hex token. The same input always produces the same token, so if '[email protected]' appears in 50 rows, all 50 get the same replacement. That keeps joins and relationships in your data intact without exposing the original value.
Is the pseudonymization hash reversible or cryptographically secure?
No. FNV-1a is a fast general-purpose hash, not a cryptographic one. It gives you a consistent, non-identifying stand-in for a value, but it won't hold up against a determined attacker who has the hash function and a guess list of likely original values.
How does partial masking work for emails and phone numbers?
Emails keep the first character of the local part and the full domain (e.g. [email protected] becomes j***@example.com). Phone-like values keep the last 4 digits and mask everything before them, similar to how banks display card numbers.
How does the tool decide which columns are likely PII?
It checks column headers for common patterns (name, email, phone, IBAN) and, if the header is ambiguous, samples the actual values to see if most of them look like an email address, phone number, or IBAN. These are only suggestions - you can select or deselect any column.
Can I anonymize multiple columns with different strategies at once?
Yes. Each selected column has its own independent strategy dropdown, so you could redact a 'notes' column while pseudonymizing 'customer_id' and masking 'email' in the same pass.