Random data generator

Build fake test data with your own columns: up to 10,000 rows as CSV, JSON or SQL.

Columns

Column 1

Column 2

Column 3

Column 4

Column 5

Column 6

Output

Result

All data is made up. A name that matches a real person is a coincidence.

What this tool does

It builds a table of made-up data to your design. You choose the columns, give each a name and a type, say how many rows you want, and it writes the table as CSV, as a JSON array or as SQL INSERT statements. It is meant for filling a development database, testing an import, making a demo or a screenshot look real, and checking how a screen behaves with 10,000 rows instead of three. Everything is generated in your browser; nothing you type is sent anywhere.

How to use it

  1. Set the number of rows (1 to 10,000) and, if you want repeatable data, a seed.
  2. Shape the columns. Each has a name, a type and a few options. Move a column up or down, duplicate it, or remove it. You can have up to 30.
  3. Pick CSV, JSON or SQL INSERT. For SQL, give the table name and the flavour, and how many rows go into each statement.
  4. Look at the first 50 rows in the preview, then copy the whole result or download it.

The column types

  • Row number counts from a start value by a step, so 1, 2, 3 or 100, 95, 90.
  • Full name, first name, last name combine entries from short built-in lists of names that are common in many countries. Email builds an address such as linh.santos7@example.org on one of the three domains that the standards reserve for examples (example.com, example.net, example.org), so a message to it can never reach a real person.
  • UUID (v4) uses the version 4 layout. Integer and Decimal pick uniformly between your smallest and largest value; a decimal keeps its places, so 12.50 stays 12.50. Values go up to one quadrillion.
  • Date picks a day between two dates, optionally with a time of day. Times are UTC and written as 2024-05-01 13:45:09, which PostgreSQL, MySQL, SQLite and SQL Server all read.
  • Yes / no has a share of "yes" you set. Pick from a list takes one value per line; switch on weights and write red|3 to make red three times as likely as a value with weight 1.
  • Lorem ipsum words makes a sentence of a length you choose. Country gives a name or a two-letter ISO code. IPv4 address avoids private, loopback, link-local, shared and multicast ranges, or uses only the private ranges if you tick that option.
  • Every column can also leave a percentage of its cells empty, which becomes an empty CSV field, null in JSON and NULL in SQL.

Seeds: the same data every time

Random data you cannot repeat is awkward in a bug report or a test. Type a seed, any text, and the same seed with the same columns always gives byte-for-byte the same rows, on any computer. The seed is hashed to 128 bits with cyrb128 and drives the sfc32 generator, and whole numbers in a range are drawn with rejection sampling, so no value is favoured by a rounding artefact. Leave the seed empty and the page takes a fresh one from the browser's secure random source and shows it; "Keep this seed" copies it into the field so you can get the same table again. A worked example: the seed demo with the columns id, name, age (18 to 65) and active gives 1, Felix Tanaka, 59, true, then 2, Chloe Pereira, 46, true, then 3, Linh Dubois, 28, false. Seeded output is reproducible on purpose, so it is not suitable for secrets: use the password generator for those.

CSV, JSON and SQL: exact rules

  • CSV follows RFC 4180: a header row, lines ended with CRLF, and quotes only around a field that holds a comma, a quote or a line break (a quote inside is doubled). The download starts with a UTF-8 byte-order mark so Excel shows accents correctly. To clean or reshape the result further, use the CSV and JSON converter.
  • JSON is an array of objects with the keys in column order. Numbers and booleans are not quoted and empty cells are null. Check or reformat it with the JSON formatter.
  • SQL writes multi-row statements, INSERT INTO "people" ("id", "name") VALUES (1, 'O''Brien'), (2, ...);. Quotes inside text are doubled, NULL is written for empty cells, and each flavour follows its own habits: double-quoted names for PostgreSQL, SQLite and standard SQL; backticks and doubled backslashes for MySQL and MariaDB; square brackets, N'...' strings and 1 or 0 for yes or no in SQL Server. A statement holds up to 1,000 rows, which is also the limit of a SQL Server VALUES list.

Good to know

All names, countries and words come from small lists, so a large table repeats them: that is fine for testing and wrong for anything that needs real variety. The data is entirely made up, and a name that matches a real person is a coincidence. If you need unique identifiers, add a UUID column or a row number. The preview shows 50 rows and the text box 200,000 characters, but copy and download always hold every row.

Frequently asked questions

Is the generated data real?

No. Names are combined at random from short lists, emails use the domains reserved for examples, and the numbers, dates, IP addresses and words are random. Any resemblance to a real person or address is a coincidence.

How do I get the same data again?

Type a seed. The same seed and the same columns give identical rows every time. If you leave the seed empty, the page shows the seed it used and a button to keep it.

Can I use it to make passwords or secrets?

No. A seeded generator is reproducible by design. Use a password generator, which draws from the browser's secure random source and keeps nothing.

How many rows and columns can I generate?

Up to 10,000 rows and 30 columns. The preview shows the first 50 rows and the text box 200,000 characters, but copying or downloading always includes everything.

Which SQL does it write?

Multi-row INSERT statements with quoted names, doubled quotes, NULL for empty cells and batches of up to 1,000 rows. Choose PostgreSQL, SQLite and standard SQL, MySQL and MariaDB, or SQL Server for the right quoting.

Is anything uploaded?

No. The rows are built in your browser and nothing you type or generate leaves your device.