# Mock Data Generator

> Generate up to 1,000 rows of fake test data as JSON, NDJSON, CSV or SQL INSERT. Pick the fields, set an optional seed, and copy or download.

- URL: https://generate.now/mock-data
- Category: Data & types
- Price: free, no account required
- AI-powered: no (runs in the browser)
- Last updated: 2026-11-11

## What is a mock data generator?

A mock data generator produces rows of realistic but made-up values, such as names, emails, dates and numbers, in a format a program can load. Developers use it to seed a database, fill a UI with content, or write test fixtures without copying real customer records. A seed makes the same rows come out every time.

## How the Mock Data Generator works

The tool builds a table of made-up rows from the fields you choose: integer or UUID identifiers, names, email addresses, phone numbers, street addresses, booleans, integers and decimals in a range, dates, lorem ipsum sentences and values from your own list. Output is a JSON array, NDJSON, CSV quoted to RFC 4180, or a SQL INSERT statement with string quotes escaped. Email addresses use only example.com, example.org and example.net, and phone numbers come from ranges reserved for fiction, so nothing points at a real inbox or handset. An optional seed makes the output reproducible. A file can have up to 1,000 rows and 20 fields. Rows are generated in your browser and are not sent to our server.

## JSON vs NDJSON vs CSV vs SQL INSERT

All four formats hold the same rows. JSON and NDJSON keep types: numbers and booleans are written without quotes. CSV has no types, so every value is text and the reader decides what is a number. SQL writes numbers bare, booleans as TRUE and FALSE, and everything else as a quoted string.

The sizes are for 1,000 rows of the six default fields (id, name, email, country, signup_date, active) generated by this tool with the seed "demo".

| Format | File | Layout | Size of 1,000 rows |
| --- | --- | --- | --- |
| JSON | .json | One array of objects, indented | 178,037 bytes |
| NDJSON | .ndjson | One object per line | 136,034 bytes |
| CSV | .csv | Header line, then one record per line, CRLF | 74,076 bytes |
| SQL | .sql | One multi-row INSERT statement | 91,154 bytes |

*Output formats*

## Field types and where the values come from

Person and address values are drawn from the same lists as this site's name and address generators: 416 first names and 321 last names from 8 naming traditions, and 74 cities in 7 countries. Within a row the address fields agree with each other (city, region, postcode and country belong together) and the email is built from the row's name. Names and countries are picked independently, so a row can pair a Japanese name with a French address.

Postcodes keep the leading part of the city's real code and randomise the rest, so they have the right format but are not checked against a postal database.

| Type | Example | Notes |
| --- | --- | --- |
| ID: integer | 1, 2, 3 | Row number, starting at 1 |
| ID: UUID | d6c16ed8-22a6-4835-8e34-1d6a6e131319 | Random, version 4 layout |
| Email | evelyn.jones2@example.com | Name plus row number, so each is distinct |
| Phone | +447700900480 | E.164, from a reserved fictional range |
| Decimal in a range | 29.92 | 1 to 6 decimal places |
| Date / date and time | 2026-02-23 / 2024-06-01T11:06:29Z | ISO 8601, UTC |
| One of a custom list | free, pro, team | Each value equally likely |

*What each field type produces*

## When to use the Mock Data Generator

- Seed a development database with a SQL INSERT of a few hundred users
- Create a CSV to test an import screen, including quoted fields
- Generate JSON fixtures that stay identical between test runs by setting a seed
- Fill a table or list component with plausible rows for a demo

## Mock Data Generator examples

### 2 rows, default fields, NDJSON, seed “demo”

```
{"id":1,"name":"John Mitchell","email":"john.mitchell1@example.net","country":"France","signup_date":"2025-08-27","active":false}
{"id":2,"name":"Evelyn Jones","email":"evelyn.jones2@example.com","country":"United States","signup_date":"2024-03-11","active":false}
```

One JSON object per line. Numbers and booleans are not quoted. The same seed and settings return these rows every time.

### The same rows as CSV

```
id,name,email,country,signup_date,active
1,John Mitchell,john.mitchell1@example.net,France,2025-08-27,false
2,Evelyn Jones,evelyn.jones2@example.com,United States,2024-03-11,false
```

A header line and CRLF line endings. A value containing a comma, a quote or a line break is wrapped in double quotes, for example "Lyon, ""Vieux"" quarter".

### The same rows as SQL, table users

```
INSERT INTO users (id, name, email, country, signup_date, active) VALUES
  (1, 'John Mitchell', 'john.mitchell1@example.net', 'France', '2025-08-27', FALSE),
  (2, 'Evelyn Jones', 'evelyn.jones2@example.com', 'United States', '2024-03-11', FALSE);
```

One statement for all rows. A single quote inside a value is doubled, so Rue de l'Église is written 'Rue de l''Église'.

## Frequently asked questions

### How many rows and fields can I generate?

A file can have up to 1,000 rows and 20 fields. A larger row count is not accepted and the field says so. With the six default fields, 1,000 rows come to 74,076 bytes as CSV and 178,037 bytes as JSON.

### How does the seed work?

With no seed, values come from crypto.getRandomValues and differ every time. With a seed, the text is hashed with 32-bit FNV-1a and the result starts a mulberry32 generator, so the same seed with the same fields, row count and country always returns the same rows. Changing any setting changes the output. Seeded output is predictable by design: use it for fixtures, not for secrets.

### Is any of this data real?

No row describes a real person. Names are combined at random from lists of common first and last names, so a combination can match a real name by chance. Email addresses use example.com, example.org and example.net, which RFC 2606 reserves for documentation. Phone numbers come from blocks that regulators set aside for fiction. Street names and cities are real places, but house numbers and postcode endings are random.

### How is the CSV quoted?

It follows RFC 4180: fields are separated by commas, records end with CRLF, the first line is a header, and a field that contains a comma, a double quote or a line break is wrapped in double quotes with any quote inside it doubled. Fields with leading or trailing spaces are quoted as well. The file is UTF-8 without a byte order mark.

### Which databases does the SQL work with?

The statement is a standard multi-row INSERT with single-quoted strings, and it was tested by loading it into SQLite. Booleans are written TRUE and FALSE, which PostgreSQL, MySQL and SQLite accept; SQL Server needs 1 and 0. Table and column names can be left bare, wrapped in double quotes, or wrapped in backticks for MySQL. The tool does not write CREATE TABLE.

### Are the random values evenly distributed?

Yes. Every pick, whether a name from a list, an integer in a range or a date, uses rejection sampling, so no value is favoured by modulo bias. Decimals are picked as whole numbers of the smallest unit and then formatted, so both ends of the range can occur and are as likely as any other value.

### Is my data or schema sent to your server?

No. Rows are generated in the page and files are created in your browser. Field names, custom values and the seed are not sent to our server. The page loads standard page analytics, which record the visit and that Generate, Copy or Download was used, along with the row count.

## References

- [RFC 4180: Common Format and MIME Type for CSV Files](https://www.rfc-editor.org/rfc/rfc4180.html): IETF. The quoting rules the CSV output follows: CRLF line breaks, double-quoted fields and doubled quotes.
- [RFC 2606: Reserved Top Level DNS Names](https://www.rfc-editor.org/rfc/rfc2606.html): IETF. Reserves example.com, example.net and example.org, the only domains used in generated email addresses.
- [RFC 3339: Date and Time on the Internet: Timestamps](https://www.rfc-editor.org/rfc/rfc3339.html): IETF. The profile of ISO 8601 that the date (2026-02-23) and date-time (2024-06-01T11:06:29Z) fields use.
- [Crypto.getRandomValues()](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues): MDN Web Docs. The source of randomness when no seed is set.

## Related tools

- [Fake Name Generator](https://generate.now/name): Random first, last or full names for test data. Filter by origin (8 lists, from English to Japanese) and gender; generate 1, 10, 25 or 100.
- [Fake Address Generator](https://generate.now/address): Random postal addresses for test forms and demos, in the local format for the US, UK, Germany, France, Canada, Australia and Japan.
- [Fake Phone Number Generator](https://generate.now/phone): Test phone numbers from ranges reserved for fiction: 555-01XX, 07700 900XXX and more. US, Canada, UK, Australia, France; E.164 or local format.
- [UUID Generator](https://generate.now/uuid): Generate UUID v4, v7 or v1, one at a time or up to 1,000. Output as standard, uppercase, braces (GUID), no hyphens, URN or Base64, and decode any UUID you paste.
- [Lorem Ipsum Generator](https://generate.now/lorem): Generate lorem ipsum placeholder text by paragraphs, sentences or words. Classic Latin or corporate, hipster and bacon variants. Copy or download as .txt.

## More in Data & types

- [JSON to TypeScript Types](https://generate.now/json-to-types): Paste JSON and get TypeScript interfaces, type aliases, a Zod schema or a Valibot schema. Updates as you type, in your browser.
- [Random Number Generator](https://generate.now/random-number): Generate random integers or decimals between any two numbers, up to 10,000 at a time. Allow or forbid repeats, and add a seed for a repeatable sequence.
- [Random Name Picker](https://generate.now/random-picker): Paste a list of names, then pick one or more winners at random, shuffle the whole list, or split it into teams. Every draw is unbiased.
- [Dice Roller](https://generate.now/dice): Roll d4, d6, d8, d10, d12, d20, d100 or a custom die, up to 100 at once, with a modifier. Type dice notation such as 3d6+2 or 2d20kh1.
- [Coin Flip](https://generate.now/coin-flip): Flip a coin online for heads or tails, or flip up to 10,000 at once and see the counts, percentages, full sequence and longest streak.

[All 39 tools](https://generate.now/tools)
