Data Anonymiser

Swap the real names, emails and account numbers in a file for convincing invented ones, so you can hand it to a developer, attach it to a bug report or use it as test data. The same real value always becomes the same fake one, so the file still makes sense.

How to use it

Drop the file in and the columns holding personal details are picked out for you, ready to be swapped for invented values that look like the real thing.

  1. Paste the real file It never leaves your browser, which is what makes this safe to do with genuine data.
  2. Check what was detected Names, emails, phone numbers, addresses and card-like numbers are found by their content as well as their column names.
  3. Add or remove columns Anything the detection missed, and anything it caught that you actually need to keep.
Full instructions
Column names, comma separated
Column names, comma separated

Real data

paste a CSV with a header row

Safe to share

In depth

How to replace personal details in a spreadsheet with realistic fake data

Sharing a real customer export with a developer, a tester, or a support forum usually means someone sees names, email addresses, and phone numbers they should not see. This article explains how the data anonymiser detects personal columns, replaces them with convincing fakes, and keeps the data usable for testing and debugging. A worked example shows the full process from paste to download.

Screenshot: Making real data safe to share
Making real data safe to share as it appears when the page opens.

Situations where you need safe data

A developer asks for a sample of the production database to reproduce a bug. You cannot hand over real customer records. A product manager wants to build a demo with realistic rows. A student needs test data for a class project but has no real dataset to start from.

In each case the shape of the data matters more than the actual names and numbers. You need rows that look real, sort the right way, and have the right mix of long and short values. But the specific people in those rows should not be identifiable. That is what this tool does. It finds the columns that hold personal information and swaps them with made-up values that still look right.

Getting data into the tool

Paste a CSV with a header row into the Real data box on the left side of the page. The first row should be column names. The tool uses those names, along with the pattern of the data itself, to guess which columns contain personal details.

You can also press Open a file to load a CSV from disk, or press Try an example to see a sample dataset that shows the tool in action. The Clear button empties both panes and resets every setting.

The output appears in the Safe to share pane on the right. It updates live as you change settings. You can copy or download the result once you are happy with it. The Copy button puts the cleaned CSV on your clipboard, and the Download button saves it as a file.

How the detection works

With Detect personal columns automatically ticked, the tool looks at both the column names and the values. A column called email or phone_number is obvious. But it also checks the content. A column full of values that match the pattern of an email address gets flagged even if the column name is something vague like contact_info.

The detection covers names, email addresses, phone numbers, street addresses, dates of birth, and long digit strings that look like account or card numbers. It will not catch everything. A free-text notes column might hold a name buried in a sentence. The tool cannot read prose for personal details, so you should check those columns yourself.

Adding or removing columns from the replacement list

The Also anonymise field lets you type column names that the detection missed. Separate them with commas. If you know a column holds something sensitive that the auto-detection did not catch, add it here.

The Leave alone field is the opposite. If the detection flagged a column that you actually need to keep in its original form, type its name here and it will be left untouched. This is useful when a column called name actually holds product names rather than people's names, and you want the real product names in the output.

The four replacement modes

The Replace with dropdown offers four ways to handle the personal values. Realistic fake values is the default. It replaces each name with another name, each email with another email, and so on. The fakes look real, which is exactly what you want for testing. A system that displays names in a table will show sensible names rather than blank cells or random characters.

Masked characters keeps the same length and shape but replaces letters with other letters and digits with other digits. This is useful when you want to see that a phone number has ten digits or that an account number has a certain format, without seeing the real value.

A short consistent code replaces each value with a short hash-like string. Every unique input gets a unique code. This is compact and works well when you just need to tell rows apart without seeing anything that looks like real data.

Nothing simply blanks the field. This is the most aggressive option and is useful when you do not need the column at all but want to keep the rest of the row structure intact.

Consistent replacement and why it matters

The Same input gives the same fake value checkbox is ticked by default. When it is on, every time a particular real email appears in the file, it becomes the same fake email. This matters a lot for testing. If one customer placed five orders, those five rows should still point to one fake customer. If each appearance got a different fake value, the five orders would look like they came from five different people, and the bug you were trying to reproduce might vanish.

Turn this off only when you specifically do not want any relationship between rows. For most testing and demonstration uses, leave it on.

Shuffling the row order

The Shuffle the row order checkbox rearranges the rows into a random order. This adds another layer of protection. Even if someone recognises a combination of values in a single row, shuffling means the rows no longer match the original sequence. Combined with fake names and emails, it makes linking back to the source file very difficult.

Leave it off when the order matters for your test, such as when the data is sorted by date and you need to check that a report displays dates in sequence. For most one-off sharing tasks, ticking it adds a useful extra step of separation between the output and the original.

Worked example: cleaning a customer export for a bug report

You export a CSV of fifty orders from your admin panel. It has columns for order_id, customer_name, email, phone, address, product, quantity, and total. You want to paste a sample into a bug report without exposing real customer details.

Paste the CSV into the Real data box. The status bar shows that customer_name, email, phone and address were detected as personal. Order_id, product, quantity and total are left alone. That looks correct.

Leave Replace with on Realistic fake values. Leave Same input gives the same fake value ticked. The Safe to share pane on the right now shows the same fifty rows, but every name is a different made-up name, every email is a fake address, and every phone number is a random string of digits. The order_id, product, quantity and total columns are unchanged.

Press Copy to grab the cleaned CSV, or press Download to save it as a file. Paste it into your bug report. The developer can see the row structure, reproduce the sorting issue, and never learn who the real customers are.

Limits of automatic anonymisation

Replacing obvious columns is a strong start, but it is not a legal guarantee. Small datasets can identify people through combinations of leftover fields. A rare job title, a small town, and a specific age bracket together might point to only one person even after the name and email are gone.

Free-text fields like notes, comments, or descriptions can hold personal details embedded in sentences. The tool does not parse natural language. Read through those columns yourself before sharing the output.

This tool is not a substitute for legal advice on data protection. It is a practical step that removes the most obvious risks, and for many situations that is enough. For formal compliance work, consult someone who specialises in your jurisdiction's rules.

Your data never leaves your browser

The entire process runs on your own device. The CSV you paste is processed in the browser's memory and is never sent to any server. The mapping between real and fake values exists only while the page is open. Close the tab and it is gone forever. There is no account, no upload, and no record of what you pasted. This is especially important here, because the whole point of the tool is to protect sensitive information. Sending that same data to a cloud service to be anonymised would defeat the purpose.

Help

Making real data safe to share

Drop the file in and the columns holding personal details are picked out for you, ready to be swapped for invented values that look like the real thing. Go through that list before you accept it, because a column it did not recognise as personal comes through untouched, and only you know what the odd ones hold. The shape of the data is left alone, so it still behaves like the original.

Paste the real file

It never leaves your browser, which is what makes this safe to do with genuine data.

Check what was detected

Names, emails, phone numbers, addresses and card-like numbers are found by their content as well as their column names.

Add or remove columns

Anything the detection missed, and anything it caught that you actually need to keep.

Copy the safe version

Now suitable for a bug report, a shared document or a test database.

Consistent replacement keeps the data usable

If the same email address becomes a different fake one every time it appears, a file with fifty orders from one customer turns into fifty unrelated customers, and the bug you were trying to demonstrate disappears. Consistent mode maps each real value to one fake value for the whole file, so counts, groupings and joins still behave the way they did. The mapping is not stored anywhere and cannot be reversed without the original file, which is the property that matters.

Good to know

Check the free text columns yourself

A notes or comments field can hold a name or a number the detection cannot see. Nothing automatic will catch those.

Fake beats blank for testing

Empty fields hide bugs that only appear with real-looking lengths and characters.

Masking keeps the shape

A masked number still shows how many digits there were, which is sometimes what you need to see.

Anonymising is not the same as safe

A small dataset can identify people from combinations — a postcode, an age and a job title together. Think about what is left, not only what was removed.

Common questions

How do I anonymise a spreadsheet?
Paste it in. Personal columns are detected and replaced with fake values you can safely share.
Does the fake data still make sense?
Yes. The same real value always becomes the same fake one, so counts and groupings behave as before.
Can the original be recovered?
Not from the output. The mapping exists only in memory while the page is open.
Which columns are detected?
Names, emails, phone numbers, addresses, dates of birth and long digit strings that look like account or card numbers.
Is this enough for data protection rules?
It is a strong start, not legal advice. Combinations of ordinary fields can still identify people in a small dataset.