How the Fake JSON Data Generator works
Each row in the field list becomes a property in every record. The generator combines built-in lists of first names,
last names, street names, made-up town names, companies and job titles, so the data looks realistic but is
clearly fictional: email addresses use example.com and example.org, which are reserved
for documentation; phone numbers use the 555-0100 to 555-0199 range set aside for fiction; IP addresses come from the
documentation ranges 192.0.2.x, 198.51.100.x and 203.0.113.x; and URLs point at the example domains.
Name, email and username fields in the same record belong to the same person, so a record with Liam Chen has an
email such as liam.chen@example.com. ID fields count up from 1. Integer, decimal and date fields use the
range in the Setting box (min..max), and "One of a list" picks from comma-separated values. Dates
are written as YYYY-MM-DD and date-times as ISO 8601 in UTC. Values are chosen with your browser's
secure random generator, and the JSON is built with the browser's own JSON serializer.
How to use the Fake JSON Data Generator
- Review the example fields. Change a field name or type, select Add field for a new one, or select Remove to delete one.
- For integer, decimal and date fields, enter a range such as 1..100 or 2020-01-01..2025-12-31 in the Setting box. For One of a list, enter values separated by commas.
- Set the number of records (1 to 1,000), and optionally a key to wrap the array in, such as users. Untick Pretty print for minified JSON.
- The JSON updates as you edit. Select Generate JSON, or press Ctrl + Enter (Cmd + Enter on a Mac), for a new set of values.
- Copy the JSON or download it as a .json file.
Example
With the fields id (ID), name (Full name), email (Email), plan (One of a list: free, pro) and createdAt (Date and time), 2 records, wrapped in the key users:
{
"users": [
{
"id": 1,
"name": "Sofia Sato",
"email": "sofia.sato88@example.org",
"plan": "pro",
"createdAt": "2023-09-04T19:18:36Z"
},
{
"id": 2,
"name": "Liam Chen",
"email": "liam.chen@example.com",
"plan": "free",
"createdAt": "2025-04-22T19:16:01Z"
}
]
}
Common use cases
- Building a mock API response so front-end work can start before the back end is ready.
- Creating fixtures for unit tests, Storybook stories or end-to-end tests.
- Filling tables, lists and pagination in a prototype with realistic-looking records.
- Testing JSON imports, converters and validators with hundreds of records.
Common errors and how to fix them
- Add at least one field
- The schema is empty, so there is nothing to generate. Add a field and choose the type of value it should hold.
- The generated values look wrong for my domain
- Values follow the field type you pick, so choose the closest specific type rather than a generic string. Names, email addresses and countries are drawn from built-in lists.
- Can this data be used as sample production data?
- No. Every value is assembled at random and describes no real person, address or account. Keep generated data clearly separated from real data so the two are never confused later.
Frequently asked questions
Is the generated data real?
No. Names are combined at random from built-in lists, towns and companies are made up, emails use the reserved example.com and example.org domains, phone numbers use the fictional 555-0100 to 555-0199 range, and IP addresses come from ranges reserved for documentation. Any resemblance to a real person is coincidental.
Which field types are available?
ID (counting from 1), UUID, first name, last name, full name, email, username, phone, street address, city, country, ZIP code, company, job title, date, date and time, boolean, integer, decimal or price, lorem sentence, URL, IPv4 address, color hex and one of a list.
Do the name and email fields match?
Yes. First name, last name, full name, email and username fields in the same record are based on the same person, for example Liam Chen and liam.chen@example.com.
How do I set ranges for numbers and dates?
Type the range in the Setting box as min..max, for example 18..65 for integers, 9.99..199.99 for prices or 2023-01-01..2023-12-31 for dates. Decimals keep at least two decimal places, or more if your range uses more.
How are dates formatted?
Date fields use YYYY-MM-DD and date-time fields use ISO 8601 in UTC, such as 2024-05-17T09:42:13Z, which JavaScript, .NET and most JSON libraries read directly.
Can I get the data as SQL instead?
Yes. The SQL Mock Data Generator uses the same field types and writes INSERT statements for SQL Server, PostgreSQL or MySQL.