CSV Fake Data

[ 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.
[ 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.

[ NEXT ]
82CSV Column MaskerWhen the column should be hidden rather than replaced
80Random PickerThe same unbiased draw, used for choosing
59Lorem Ipsum GeneratorPlaceholder prose rather than placeholder people
63JSON ⇄ CSV ConverterIf the export came out as JSON
[ 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.