Hash & Anonymise Columns in JSON Files Online
Anonymise or pseudonymise columns in JSON files by replacing values with MD5, SHA-256, or DuckDB hashes — directly in your browser. Useful for GDPR compliance and sharing data without exposing PII — no upload required.
How to hash & Anonymise Columns in JSON files
- Drop your file onto the upload area. The first 200 rows are shown with the row and column count.
- Choose a Hash algorithm: MD5 (32-character hex), SHA-256 (64-character hex) or DuckDB hash (a 64-bit integer written as text).
- Choose an Output mode. Replace swaps each selected column for its hash. Append keeps the original and adds a new column such as email_md5 at the end.
- Tick the columns to hash. Nothing is ticked by default.
- Click Hash Columns, check the preview, then download the file in the same format.
Your file is processed locally in your browser and is never uploaded. The free limit is 50 MB per file; larger files work if your device has the memory for them.
Worked example
A research team wants to share survey scores with an outside analyst without revealing respondent emails, while still showing which answers came from the same person.
Input (JSON)
[
{
"respondent_id": "R-1001",
"email": "maria.lopez@example.org",
"age_band": "35-44",
"nps_score": 8
},
{
"respondent_id": "R-1002",
"email": "j.okafor@example.net",
"age_band": "25-34",
"nps_score": 6
},
{
"respondent_id": "R-1003",
"email": "maria.lopez@example.org",
"age_band": "35-44",
"nps_score": 9
},
{
"respondent_id": "R-1004",
"email": null,
"age_band": "45-54",
"nps_score": 7
}
]Settings
- Hash algorithm: MD5
- Output mode: Replace original column with hash value
- Columns to hash: email
Result
| respondent_id | age_band | nps_score | |
|---|---|---|---|
| R-1001 | 0774b6f01f630684b8643132792f1c48 | 35-44 | 8 |
| R-1002 | 04010e734bdab7aa07d0f05cd693ef81 | 25-34 | 6 |
| R-1003 | 0774b6f01f630684b8643132792f1c48 | 35-44 | 9 |
| R-1004 | NULL | 45-54 | 7 |
These are the real MD5 values of each address. R-1001 and R-1003 get the same hash because they share an email, so the analyst can still group by person without seeing the address. The missing email stays empty, because MD5 and SHA-256 of NULL are NULL. The column keeps its name and position in Replace mode.
Working with JSON files
JSON makes the difference between a missing value and an empty value visible. A key set to null, or missing from an object, stays null after MD5 or SHA-256. A key set to an empty string "" is hashed like any other text, and every empty string becomes d41d8cd98f00b204e9800998ecf8427e. Convert empty strings to null first if they mean "unknown".
Numbers are hashed from their loaded form, so 1.50 in the source is hashed as "1.5" and true as "true". If you pick a key that holds a nested object, the whole object is turned into text in the engine's own struct format and hashed. That output is stable inside this tool but will not match a hash of the JSON text made elsewhere. Flatten the file to hash individual nested fields. The result is a JSON array with each hash as a string. In Append mode the new key sits at the end of each object.
Frequently Asked Questions
Why do many JSON records share the hash d41d8cd98f00b204e9800998ecf8427e?
That is the MD5 of an empty string. Those records have "" in the hashed key rather than null.
Can I hash a nested JSON field such as user.email?
Flatten the JSON first so user.email is its own top-level key, then tick it. Hashing the parent object hashes its whole text form.
Is hashing the same as anonymisation?
No. It is pseudonymisation. The same input always gives the same hash, and no salt is added. Anyone with a list of likely values, such as known email addresses, can hash them and look for matches. Treat hashed personal data as still personal.
Which algorithm should I choose?
SHA-256 for anything shared outside your team. MD5 is shorter and fine for internal join keys, but it is no longer considered secure. The DuckDB hash option is fast but not a standard algorithm, so other systems cannot reproduce it.
Can I add a salt before hashing?
Not in this tool. Use the SQL Query tool instead, with an expression such as sha256('my-secret-salt' || email). Keep the salt private and use the same one for every file you want to join.
Related Tools
Manage Columns in JSON Files Online
Drop or select specific columns from JSON files directly in your browser. No upload required.
Deduplicate JSON Files Online
Remove duplicate rows from JSON files instantly in your browser. No upload, no server — 100% private.
Count Values in JSON Files Online
Group and count rows by any column in JSON files directly in your browser. Sort by frequency or value to find the most common entries — no upload required.
Hash & Anonymise Columns in CSV Files Online
Anonymise or pseudonymise columns in CSV files by replacing values with MD5, SHA-256, or DuckDB hashes — directly in your browser. Useful for GDPR compliance and sharing data without exposing PII — no upload required.
Hash & Anonymise Columns in Excel Files Online
Anonymise or pseudonymise columns in Excel files by replacing values with MD5, SHA-256, or DuckDB hashes — directly in your browser. Useful for GDPR compliance and sharing data without exposing PII — no upload required.
Hash & Anonymise Columns in Parquet Files Online
Anonymise or pseudonymise columns in Parquet files by replacing values with MD5, SHA-256, or DuckDB hashes — directly in your browser. Useful for GDPR compliance and sharing data without exposing PII — no upload required.
JSON Viewer Online
View and inspect JSON files directly in your browser. Browse rows, check column names and data types — no upload required, your data stays on your device.
Convert JSON to Parquet Online
Convert JSON files to Parquet format directly in your browser. No upload required — your data never leaves your device.