Skip to the tool
ViewCSV
Files stay on your device

CSV generator

Preview
#idnameemailsignup_dateplanamount
11Noah Browntaylor.harbor1@example.test2025-03-17Free315.13
22Emma Clarktaylor.velvet2@example.test2025-07-22Free485.36
33Mia Lewisquinn.orbit3@example.test2025-02-26Free397.70
44Olivia Taylormorgan.lumen4@example.test2024-09-28Team258.90
55James Davisavery.atlas5@example.test2024-01-11Free250.80
66Olivia Johnsonjamie.signal6@example.test2024-08-18Free319.01
77Ava Lewisavery.cedar7@example.test2024-10-17Free162.79
88Liam Williamsriley.atlas8@example.test2024-11-26Free476.86
99James Lewisavery.copper9@example.test2024-07-19Free15.43
1010Liam Clarkriley.velvet10@example.test2024-09-20Free246.07
1111Noah Milleravery.cobalt11@example.test2024-09-25Pro414.32
1212Emma Johnsonmorgan.signal12@example.test2025-04-20Free388.35
1313Sophia Clarktaylor.harbor13@example.test2025-02-17Free193.23
1414Lucas Davismorgan.quartz14@example.test2024-02-19Free425.88
1515James Clarkriley.atlas15@example.test2025-06-29Free303.49
1616James Williamsquinn.ember16@example.test2025-01-17Free269.41
1717Ava Jonesjamie.copper17@example.test2025-03-14Free339.44
1818Emma Johnsonquinn.maple18@example.test2025-08-17Pro160.18
1919Ethan Smithquinn.prism19@example.test2025-09-05Pro444.79
2020Lucas Williamsalex.copper20@example.test2024-04-18Pro321.08
2121Henry Davisjordan.cedar21@example.test2025-05-06Pro259.88
2222Henry Jonesjordan.maple22@example.test2024-11-13Pro450.71
2323Emma Davisjamie.harbor23@example.test2025-02-26Free243.05
2424Lucas Millermorgan.delta24@example.test2024-02-22Free59.72
2525Mia Smithjamie.orbit25@example.test2024-12-20Free90.04
2626James Millercasey.paper26@example.test2024-01-11Pro454.97
2727Ethan Wilsonjordan.tundra27@example.test2025-03-01Free468.54
2828Emma Smithtaylor.cedar28@example.test2024-05-07Pro399.73
2929Lucas Williamsjamie.signal29@example.test2024-07-01Free339.48
3030Emma Davisalex.meadow30@example.test2025-11-09Pro267.97

Preview of the first 100 of 100 rows.

Define up to 100 columns, choose a field type for each, set a row count from 1 to 1,000,000 and a seed. The same seed and column settings always produce the same rows, in every browser, so a test file can be recreated instead of stored. Names, emails and phone numbers are fictional: emails end in @example.test, English phone numbers use the 555 range. Generation runs in your browser; nothing is uploaded.

How to generate a CSV file

  1. Set the number of rows (1 to 1,000,000) and a seed. The starting setup has six columns: a sequential id, a full name, an email, a signup date in 2024–2025, a plan chosen as Free, Pro or Team in a 6:3:1 ratio, and an amount from 0 to 500 with two decimals.
  2. Add, remove or rename columns and pick a field type for each. Every column name must be filled in and unique.
  3. Optionally set a share of blank cells or require unique values per column, then generate and download the file.

Rows are written in a background worker in parts rather than as one huge string, so a million-row file does not freeze the page, and cancelling stops the job. One output file is capped at 4 GB.

Field types

SequenceCounts from a start value (default 1) by a step (default 1). An optional padding width writes 000001-style IDs; negative numbers are never padded.
UUIDVersion-4 layout from RFC 9562 (xxxxxxxx-xxxx-4xxx-[89ab]xxx-…), drawn from the seeded generator. Reproducible, so not suitable as a secret or security token.
First name, last name, full nameCommon names for the interface language. Chinese, Japanese and Korean full names are written family name first without a space.
Emailname.word<row>@example.test, for example casey.maple1@example.test. The row number makes each address unique. It is not derived from the name column.
PhoneA pattern where each # becomes a digit. Leave it empty for the language default; in English that is +1 555-###-####.
Company, city, countryInvented company names and real city names for the interface language; country picks from a fixed list of 20.
IntegerA whole number between the minimum and maximum, both included. Both bounds are required and must stay within ±9,007,199,254,740,991, the largest whole numbers JavaScript stores exactly.
DecimalA number between the minimum and maximum with 0 to 10 decimal places, for example 114.71.
Booleantrue or false with equal probability.
Date, date-timeA random day between two YYYY-MM-DD dates, both included. Date-time adds a random UTC time: 2026-01-04T09:17:35Z.
ChoiceOne value per line, with an optional weight after a colon: Free:6, Pro:3, Team:1 picks Free about 60% of the time. Lines without a weight count as 1.
PatternA template where # is a digit, ? an uppercase letter and * a digit or uppercase letter: SKU-####-?? gives SKU-6836-LU. All other characters are copied.
Words1 to 20 words (default 3) from a fixed list of 20 plain English words, for filler text.
ConstantThe same text in every row.

Seeds and reproducibility

The seed is any text. Each column draws from its own random stream derived from the seed and the column name, so:

  • the same seed, row count and column settings give a byte-for-byte identical file every time, in every browser;
  • adding, removing or reordering other columns does not change a column’s values, but renaming a column changes them;
  • asking for more rows keeps the earlier rows unchanged and appends new ones;
  • the interface language changes names, cities, companies and the default phone format, not numbers, dates, choices or emails.

Blank cells use a separate stream. A blank cell does not consume a value, so changing the blank percentage shifts which values appear in the later rows of that column.

Blank cells and unique values

Blank cells is a percentage from 0 to 100 per column; each cell is left empty with that probability. Use it to test how an import handles missing values.

Unique values redraws a value until it has not been used in that column, and gives up after 1,000 tries with an error naming the column. The settings are rejected up front when uniqueness is impossible: an integer range with fewer whole numbers than rows, or fewer choices than rows. Other types can still run out partway, for example a unique full name after about 144 rows in English (12 first names × 12 last names). Sequence, UUID and constant columns skip the check, and blank cells are not counted as values.

Settings errors

  • Row count must be a whole number from 1 to 1,000,000, and there must be 1 to 100 columns.
  • A column name is empty or used twice: every header must be filled in and different.
  • Integer and decimal columns need both a minimum and a maximum, with the minimum not above the maximum.
  • Date ranges must be written YYYY-MM-DD, such as 2024-01-01; 2024/01/01 or 01/02/2024 is rejected.
  • A pattern must contain at least one #, ? or *; otherwise use a constant column.
  • A choice list needs at least one value with a weight above zero.

Example

Five rows with the seed demo-2026: a sequence starting at 1001 padded to 6 digits, a full name, an email, a weighted choice, a decimal from 0 to 250 with 40% blank cells, and the pattern SKU-####-??. Run it again with the same settings and you get exactly these rows. Line endings are shown as plain line breaks.

CSV
rows: 5    seed: demo-2026    language: English
customer_id  sequence  start 1001, width 6
name         full name
email        email
plan         choice    Free:6 / Pro:3 / Team:1
mrr          decimal   0–250, 2 places, 40% blank
sku          pattern   SKU-####-??
CSV
customer_id,name,email,plan,mrr,sku
001001,Mary Brown,casey.maple1@example.test,Free,,SKU-6836-LU
001002,Ethan Davis,taylor.copper2@example.test,Pro,,SKU-8060-HR
001003,Ethan Clark,morgan.falcon3@example.test,Team,114.71,SKU-1401-TZ
001004,Olivia Davis,jordan.harbor4@example.test,Pro,91.82,SKU-8840-PT
001005,Mia Taylor,casey.prism5@example.test,Free,6.99,SKU-6878-OZ

Questions and answers

Is the generated data safe to share?

It contains no real people: names are random pairs of common names, emails use the reserved .test domain (RFC 2606) and English phone numbers use 555. City names are real places.

Will a colleague get the same file?

Yes, if they use the same seed, row count, interface language and column settings, including column names. The generator uses its own seeded algorithm rather than the browser’s random numbers.

Do I need a large file or a small fixture?

For a few documented rows with known edge cases, use the sample CSV files. Use the generator when you need volume, your own column names or a specific mix of types.

Standards and references