What each field type produces
There are six types, and it is worth knowing exactly what comes out of each before you build a test around it.
- String is a numbered placeholder —
Value 1,Value 2, and so on. It is not a fake-name generator, and deliberately so: plausible invented names are the ones that get pasted into a staging system and mistaken for real records. - Email follows the same pattern at
[email protected].example.comis reserved by RFC 2606 precisely so that it can never belong to anyone, so a test harness that accidentally sends mail to this data cannot reach a real inbox. - Number is a random integer from 0 to 999.
- Boolean is an even coin flip.
- UUID comes from the browser’s own
crypto.randomUUID(), so these are real version-4 UUIDs from a cryptographic random source and will not collide in practice. - Date is a calendar date in
YYYY-MM-DDform, drawn uniformly from roughly the last four months. Always in the past, never in the future — if you are testing expiry logic or date sorting across a wider span, this will not give you the range you need.
The output is not reproducible
There is no seed field, and that is a real limitation rather than a missing label. Press Generate twice with the same schema and the numbers, booleans, dates and UUIDs all change; only the string and email columns, which are derived from the row index, come back the same. If your test needs to assert against a fixed fixture, generate once and commit the file rather than regenerating it in the test.
What it is not
This is placeholder data for filling a table, checking a CSV importer, or seeing how a layout behaves with a thousand rows in it. It is not a statistical simulator: the columns are independent of one another, so nothing correlates the way real records do, and distributions are uniform rather than shaped like anything you would measure in the world. Load-testing a query planner on this data will tell you very little about production.
It is also not an anonymiser. It invents rows from nothing; it does not take a real dataset and mask it. If you need to preserve the shape of production data while removing the people from it, that is a different problem with different tools.
Practical limits
- 1,000 rows per run. Everything is built in memory and rendered into a preview pane, so the ceiling keeps the page responsive. Generate repeatedly and concatenate if you need more.
- The CSV is quoted to RFC 4180. Name a column
city, countryand it comes back as one column rather than two, because a field containing a comma, a quote or a line break is wrapped and any embedded quote doubled. Rows end with CRLF, which is what the specification asks for and what spreadsheets expect. - JSON output is a flat array of objects. There is no nesting, no arrays inside rows, and no relationships between generated tables.