Skip to content

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.

Generating…

Generating rows in your browser…

Rows are generated in your browser and are not sent to our server.

Format

1 to 1,000

The same seed and settings give the same rows.

Fields (6 of 20)

01 · Definition

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.

02 · Overview

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.

03 · Guide

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".

FormatFileLayoutSize of 1,000 rows
JSON.jsonOne array of objects, indented178,037 bytes
NDJSON.ndjsonOne object per line136,034 bytes
CSV.csvHeader line, then one record per line, CRLF74,076 bytes
SQL.sqlOne multi-row INSERT statement91,154 bytes
Output formats

04 · Guide

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.

TypeExampleNotes
ID: integer1, 2, 3Row number, starting at 1
ID: UUIDd6c16ed8-22a6-4835-8e34-1d6a6e131319Random, version 4 layout
Emailevelyn.jones2@example.comName plus row number, so each is distinct
Phone+447700900480E.164, from a reserved fictional range
Decimal in a range29.921 to 6 decimal places
Date / date and time2026-02-23 / 2024-06-01T11:06:29ZISO 8601, UTC
One of a custom listfree, pro, teamEach value equally likely
What each field type produces

05 · Use cases

When to use the Mock Data Generator

  1. 01

    Seed a development database with a SQL INSERT of a few hundred users

  2. 02

    Create a CSV to test an import screen, including quoted fields

  3. 03

    Generate JSON fixtures that stay identical between test runs by setting a seed

  4. 04

    Fill a table or list component with plausible rows for a demo

06 · Examples

Mock Data Generator examples

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

ex 01

{"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

ex 02

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

ex 03

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'.

07 · FAQ

Mock Data: 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.

08 · Reference

Specs and further reading

These are the primary sources this tool follows. Where a specification defines the behaviour, we link the specification, not a summary of it.

09 · More

Tools that pair with Mock Data

Last updated .