Fake CSV Generator

Define the columns, get the rows. Seeded, so the same file comes back.

Runs entirely in your browser

Loading the tool…

Columns
NameTypeOptions


Name your columns, choose a type for each, say how many rows, and the file is built here. Twenty-one types, from names and emails to dates, decimals and a list you supply yourself. It does what Python's Faker does for a CSV, without the Python, the install, or sending your schema to a website.

The seed is the feature, not a detail. The same seed and the same columns give byte-for-byte the same file, every time, on any machine. That is what makes generated data usable as a fixture: a test that fails on row 4,812 can be reproduced from a number, and a colleague can regenerate exactly what you had without you sending it to them.

Which is the opposite of how the password generator on this site works, deliberately. That one takes its randomness from the operating system so it cannot be reproduced by anybody. This one takes it from a seed so it can be reproduced by everybody. Nothing here is suitable for anything that has to be unguessable.

Values that contain your delimiter, a quote or a line break come out quoted and escaped, because a generator that emits a file its own parser would choke on is worse than no generator. The output goes through the same CSV writer the CSV viewer uses to read one.

How to use it

  1. Add columns, name them, and choose a type for each.
  2. Set the row count, delimiter and seed, then press Generate.
  3. Copy the preview, or download the whole file.

Questions

Is the data really generated in my browser?

Yes. The generator is WebAssembly compiled from Rust, running in this tab, and the page is served with a Content-Security-Policy whose connect-src is none, so it is not permitted to open a connection anywhere. Your column names and your schema never leave the machine, which matters more than it sounds: a schema often describes a real system.

What does the seed do?

It makes the file reproducible. The same seed with the same columns produces exactly the same rows, so generated data can be committed as a fixture, regenerated later, or described to somebody else by a number rather than by sending the file. Press New seed for a different draw.

Can I use this to generate passwords or keys?

No. The randomness comes from a seed rather than from the operating system, so anyone who knows the seed can reproduce every value. That is exactly what you want for test data and exactly what you do not want for anything secret. The password generator on this site is the other way round for that reason.

What happens if a value contains my delimiter?

It is quoted, and any quote inside it is doubled, which is what the CSV convention asks for. You can watch it happen. In a one of a list column, the list is comma-separated, so a backslash before a comma asks for a literal one: write plain,has\, comma as the values and the second option is generated as a single field containing a comma, which the output then wraps in quotes so the row still has the number of columns you asked for.

How many rows can it make?

Fifty thousand, which is where a browser tab stops being pleasant rather than where the code stops working. The preview shows the first two hundred lines so the page stays responsive; the download and the copy both contain everything.

Are the names and places real?

No, and the email domains are the reserved example.com family, which is deliberate. Generated data has a way of escaping into a staging system and then into an email, so nothing here can reach a real inbox even by accident.

Your data stays on your device

Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.

This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.