CSV Fake Data

Files & data

Replace a column with plausible people, and count what collided.

Generated CSV
employee_id,name,email,phone,branch,salary,hired E-1001,John Paul Domingo,[email protected],0232 124 2224,Cebu,47618,2019-03-04 E-1002,Reynaldo De Guzman,[email protected],0816 749 5803,Davao,42336,2020-11-20 E-1003,Christian Ramos,[email protected],0102 533 5718,Cebu,42274,2021-06-14 E-1001,John Paul Domingo,[email protected],0232 124 2224,Cebu,47618,2019-03-04
4 rows · 4 columns replaced
Rows4
Columns7
Replaced4
Columns to replace
What was replaced
nameFull name4 cells · 3 distinct
emailEmail address4 cells · 3 distinct
phoneMobile number4 cells · 3 distinct
salaryNumber in the same range4 cells · 3 distinct
Equal values became equal fakes, so counts and joins survive and the same file gives the same result every time. That also means anybody with this page can put a guessed name in and see what it becomes. Put anything in the salt field to stop that.
The generated names are common ones, which is what makes them look real and also means a row may match a living person by coincidence. Everything else in the file is untouched, so a replaced name beside a real job title, branch and start date can still identify somebody. Read the output before you send it.

How to use

What it's for

Swap the real people in a spreadsheet for made-up but realistic ones, to test a system, train someone or take a screenshot without showing anybody's real details.

Before you start

Have the spreadsheet open, or the .csv file in a text editor, and know which columns hold personal details. You paste the rows in; nothing is uploaded.

  1. Set up how the rows are read

    In Delimiter, pick Tab if you will copy from Excel or Google Sheets, or Comma for most .csv files. Leave First row is a header ticked if the first row holds the column names.

  2. Choose the kind of names

    In Names, Filipino gives common Philippine names and International gives common English-language ones.

  3. Keep repeats consistent

    Leave Keep equal values equal ticked so a person who appears in many rows gets the same fake name each time, and counts still add up. Untick it for a one-off screenshot. If it stays ticked, type any word in Salt (optional).

  4. Paste the rows and pick a fake for each column

    Paste into the CSV box, replacing the sample. Under Columns to replace, set each private column to a kind of value, such as Full name or Mobile number, and leave the rest on Leave as it is. Number in the same range keeps amounts believable.

  5. Generate and copy

    Press Generate to bring the result into view — it also updates as you change things. Press Copy to take the new rows.

Reading the result

  • Generated CSV: your rows with the chosen columns replaced. Every other column is left exactly as it was.
  • Rows, Columns and Replaced: the rows of data, the columns in all, and the columns replaced.
  • What was replaced: each replaced column, how many cells it changed and how many different values it held — plus, where it says collided, how many real people ended up sharing a fake value.

If it goes wrong

  • A column shows collided: two real people now share one fake value, so counts over that column are wrong. For a column that must stay unique, such as an ID, choose Reference.
  • With Keep equal values equal on and no salt, anyone with this page can check whether a real name is in your file. Put any word in Salt (optional), and reuse it if two files must line up.
  • The file can still point to one person: only the columns you chose change, so a real job title and branch beside a fake name may still identify somebody. Read the result before you send it.

What this is

Masking proves the column was handled; it does not give you anything to show. xxxx xxxx gives a vendor nothing to demo with, a developer nothing to load into a staging database, and a screenshot nothing to be a screenshot of. Rosa Bautista gives all three, and the original is just as gone.

But the usual way a fake-data generator works is wrong here. Draw a fresh name for every cell and one customer appearing in twenty rows becomes twenty people — changing every count, join and group over that column. So the fake value here is derived from the real one: same input, same output.

The price is that it is reversible — anybody holding this page can run it forwards. The salt closes that and costs reproducibility.

And collisions are the failure nobody looks for. Sixty given names and sixty surnames is 3,600 combinations, which sounds ample and is not: the birthday bound puts an even chance of the first clash at about seventy rows. Two real people given one fake name are one person to everything downstream.

Questions

Is my spreadsheet uploaded anywhere?

No. There is no upload and no file picker — you paste the rows in and the replacement happens in your browser, in this site’s own calculation engine. Nothing is transmitted, logged or stored, which matters more here than on any other page: what people paste into this tool is a staff list or a customer export.

Why does the same name always become the same fake name?

Because otherwise the file stops meaning anything. One customer appearing in twenty rows of a sales export has to become one fake customer, or every count, join and group over that column changes. So the fake value is derived from the real one rather than drawn fresh each time, and the same input gives the same output. You can switch that off, and the page says what you lose when you do.

What happens if I switch consistency off?

Every cell is drawn independently from the browser’s cryptographic random source. Nothing can be reversed, which is the strongest privacy this tool offers — and one customer in twenty rows becomes twenty different people, so no count over a replaced column is meaningful any more. It is the right setting for a screenshot and the wrong one for a test database.

Can somebody work out the real name from the fake one?

With consistency on and no salt, partly — the mapping is a function of the value, so anybody with this page can put a name in and see what it becomes, then check whether that name is in your file. Put anything in the salt field and that stops working. The cost is that the fakes will be different next time unless you use the same salt again, which matters if two exports have to line up.

Why does it count collisions?

Because two real people given the same fake name are one person to everything downstream, and nothing about the file looks wrong. The pools here hold a few thousand name combinations, which sounds ample: the birthday bound puts an even chance of the first clash at about seventy rows. The page counts them per column so you can see it rather than discover it later. A column that has to stay unique should use Reference.

Why are the numbers and dates not random?

They are random, but inside the range the real column already occupied. A salary column replaced with values between 1 and 1000 will not load into anything that validates it, and a hire-date column full of dates in 1970 makes every tenure calculation nonsense. Staying inside the real minimum and maximum keeps the file usable and still contains nobody’s salary.

Are the email addresses real?

They cannot be. Every generated address uses example.com, example.org, example.net or a subdomain of them — domains reserved by RFC 2606 precisely for this, which nobody can register. That matters when a fake dataset gets loaded into a real system that then tries to email it.

Are the generated names anybody’s real name?

They are the commonest given names and surnames of the place you pick, which is what makes them look plausible and also means a generated row may match a living person by coincidence. Nothing links that person to your data, but it is worth knowing before a fake dataset ends up in a screenshot.

The maths

When the first collision arrives
Name combinations60 × 60 = 3,600
50 rowsabout a 29% chance
70 rowsabout a 49% chance
200 rowsabout a 99.6% chance
Reference4.3 billion
The birthday bound: about 1.18 × √N draws before a collision is an even bet. For 3,600 that is 71.
What range a number uses

The range is measured before anything is replaced. Measured as it goes, an early fake value would widen the range the later ones are drawn from and the column would drift away from itself row by row.

Keep going

Important

Nothing you paste is transmitted or stored. The generated names are common ones, so a row may match a living person by coincidence, and everything you did not replace is untouched — a fake name beside a real job title, branch and start date can still identify somebody. Read the output before you send it. Nothing you type here is sent to our servers — the calculation runs entirely in your browser.