Random Data Generator
Build a table of fictional records, up to 1,000 rows, without sending anything anywhere.
What this tool does
Random Data Generator ignores the input box completely: it is a pure generator, driven only by the settings. Tick any of the eight available columns — id, name, email, phone, address, date, uuid and number — set a row count between 1 and 1,000, and press Run. Tick nothing and the run stops with a message rather than handing back an empty file. What appears on the page is a table of the first 200 rows, and the Copy output button puts that table on the clipboard as comma-separated text. The Output setting offers a JSON array, JSON Lines or CSV, but the copy button hands back the previewed table as CSV whichever one you pick, so choose JSON knowing that is what you will get.
The Seed box is what separates this from a throwaway scatter of values. Leave it at 0 and the generator starts from four random bytes taken from the browser's cryptographic source, so every run differs; put any other whole number in it and the same rows come back each time, which is what makes a generated fixture safe to commit next to a test. One quirk is worth knowing before you rely on that: every column draws from a single pseudo-random stream, so a seed reproduces exactly for as long as the same columns stay ticked. Switch the phone column on and everything after it in the row — address, date, uuid, number — shifts to different values. Names and emails are drawn first, so they stay put.
The pools behind the values are small and deliberately dull. Names are assembled from a fixed list of forty-two first names and forty-two surnames, which is 1,764 possible full names in total, so duplicate people appear well before a thousand-row run finishes; id is the only column that never repeats, and it simply counts from 1. Emails are derived from the name and always land on the reserved example.com, example.org, example.net or test.example domains, while phone numbers use the +1 555-01xx range set aside for fiction, so nothing here can be dialled or delivered. Addresses follow an invented shape that matches no real postal system, and dates fall between 2019 and 2025 on days 1 to 28 only, so month ends are never exercised.
Everything happens in this browser tab in JavaScript, so no generated row is transmitted anywhere and the generator carries on working with the network cable pulled out. That single shared stream is also why the uuid column needs a warning: seeded or not, its values come from a small pseudo-random algorithm holding thirty-two bits of state, so they carry the shape of a version 4 UUID without the unpredictability of one. They are fine as placeholder keys in a fixture and wrong as real identifiers or secrets — UUID Generator reads from the browser's cryptographic source for that, and Random String Generator covers tokens.
How to use it
- Skip the input box. This is a generator, so anything pasted there is ignored. Every value comes from the settings instead.
- Tick the columns you want. id, name, email, phone, address, date, uuid and number. Ticking number reveals a from/to pair, and at least one column has to be on or the run is refused.
- Set the row count and the format. Anywhere from 1 to 1,000 rows in one run. The Output setting chooses a JSON array, one JSON object per line, or comma-delimited CSV with fields quoted where they contain a comma.
- Add a seed if the rows need to come back. 0 means fresh randomness on every run. Any other whole number up to 999,999,999 reproduces the same rows exactly, as long as the same columns stay ticked.
- Read the table, then copy it. The result is shown as a table of the first 200 rows, and Copy output puts those rows on the clipboard as CSV. There is no download button, and the JSON settings do not change what the button gives you.
Processing & privacy
Runs on your device. Your file is processed directly in this browser.
Common use cases
Seeding a development database
A few hundred plausible customer rows make list views, pagination and sort order behave like the real thing long before any real data exists.
Exercising a CSV import path
Tick the columns your importer expects, copy the rows and save them as a file: they carry quoted addresses and awkward hyphenated surnames such as Berners-Lee.
Building a fixture a test can rely on
Choose a seed, keep the column selection fixed, and the same rows come back on every machine and on every CI run.
Filling a screenshot or a demo
Mock data on screen means a product tour, a bug report or a slide never quietly leaks a real customer's name and address.
Stress-testing a table component
Two hundred rows of mixed-length names and comma-heavy addresses are enough to show where column widths, wrapping and sort order start to break.
Questions
Is any of this real personal data?
Does anything get uploaded?
How do I get the same rows twice?
Are the generated values unique?
Can I define my own fields or nested objects?
Can I get more than 1,000 rows out?
Can I use the uuid column as real identifiers?
Related tools
- JSON Formatter — Pretty-print, collapse and inspect JSON instantly.
- Base64 Encoder Decoder — Encode and decode Base64 text and files.
- JWT Decoder — Inspect the header, payload and claims of a JWT.
- Hash Generator — Compute MD5, SHA-1, SHA-256 and SHA-512 digests.
- Regex Tester — Test patterns against sample text with live matches.
- Unix Timestamp Converter — Convert between epoch seconds and readable dates.