Random Data Generator

Build a table of fictional records, up to 1,000 rows, without sending anything anywhere.

Runs on your deviceDeveloperWorkingNo account needed

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

  1. Skip the input box. This is a generator, so anything pasted there is ignored. Every value comes from the settings instead.
  2. 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.
  3. 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.
  4. 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.
  5. 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?
No, though the name lists are worth knowing about. First names and surnames are drawn independently from two fixed lists that include computing pioneers, so a row can land on a real pairing such as Ada Lovelace by chance. Everything attached to the name is invented: emails use the reserved example.* domains, phone numbers use the 555-01xx range set aside for fiction, and the addresses match no real postal system.
Does anything get uploaded?
No. The generator is plain JavaScript running in this browser tab, so the rows are built on your own machine and nothing about them is sent, logged or stored anywhere.
How do I get the same rows twice?
Put any whole number other than 0 in the Seed box. That number drives the pseudo-random generator directly, so the run repeats on any device — provided the same columns are ticked, because every column draws from one shared stream.
Are the generated values unique?
Only id, which counts from 1 on each run. With forty-two first names and forty-two surnames there are 1,764 possible full names, so repeated names are common within a few hundred rows, and an email repeats whenever a repeated name also draws the same one of the four domains.
Can I define my own fields or nested objects?
No. The eight columns are fixed and cannot be renamed, and the output is always a flat table — no nested objects, arrays, company names, currencies, locales or non-Latin scripts. For a specific schema, generate the nearest columns here and reshape them afterwards.
Can I get more than 1,000 rows out?
Not in one pass: the row count is capped at 1,000, and the copy button hands back only the first 200 of them. Running again with no seed gives a different set you can concatenate; running again with the same seed reproduces the rows you already have.
Can I use the uuid column as real identifiers?
Not for anything that matters. Seeded or not, the UUIDs come from the same small pseudo-random generator as the rest of the row, so they carry the version 4 shape while remaining predictable. Use UUID Generator when the value has to be unguessable.

Related tools