Mock Data Generator Online — Free Fake JSON, CSV & SQL Test Data

Free online mock data generator. Build a custom field schema and generate up to 1,000 rows of realistic fake data in JSON, CSV, or SQL INSERT format. 20 field types: Auto Increment, UUID, Name, Username, Email, Phone, Integer, Float, Boolean, Timestamp, Date, URL, IPv4, IPv6, MAC Address, Hex Color, Lorem Text, Country, Enum, Custom Fixed. Name and Phone in 12 languages. Lorem Ipsum generator in 13 languages. All processing runs locally — no data sent to any server.

Mock Data Generator — Free Fake JSON, CSV & SQL Test Data Online

A mock data generator (also called a fake data generator or dummy data generator) creates realistic but entirely fictitious datasets for software development, API testing, database seeding, UI prototyping, and QA. Instead of writing sample records by hand or waiting for real data, you define a field schema and generate up to 1,000 rows in any format in seconds.

This free online tool runs entirely in your browser — your schema and generated data are never sent to any server. Settings are saved to localStorage so your schema is ready the next time you visit.

20 Field Types for Realistic Fake Data

Every field in the schema is independently typed. Mix and match types to build a dataset that mirrors your real database schema.

Identity & Keys

  • Auto Increment — Sequential integer starting at 1. Perfect for primary keys (id, seq). Output as a number, not a string — databases and JSON parsers treat it correctly.
  • UUID — Standard v4 UUID: 550e8400-e29b-41d4-a716-446655440000. Use for distributed IDs, API resource identifiers, and GUID fields.

People & Contact

  • Name — Culturally appropriate full name from 12 locale pools. English: John Smith, Korean: 김민준, Japanese: 田中 一郎, Arabic: محمد العلي
  • Username — Login-style handle: jessica_42 or michael73. Combines a common first name with a numeric suffix.
  • Email — Realistic email address: james312@gmail.com. Generated from a name pool and common domain list.
  • Phone — Country-formatted phone number in 12 locales. US: +1-555-234-5678, Korea: +82-10-1234-5678, Germany: +49-151-12345678

Numbers & Dates

  • Integer — Random whole number within your min/max range. Output as a JSON number (not quoted).
  • Float — Random decimal within range with configurable decimal places. 3.14, 99.99
  • Boolean — Random true or false. Output as a JSON boolean (not a string).
  • Date — Random date within a From/To range: 2023-07-15. YYYY-MM-DD format.
  • Timestamp — Unix epoch seconds within a date range: 1718455800. Output as an integer. Multiply by 1000 for millisecond APIs.

Network & System

  • URL — Plausible HTTPS URL: https://cache.io/users
  • IPv4 — Random public IP address: 203.0.113.42
  • IPv6 — Full 128-bit address: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • MAC Address — Network hardware address: AA:BB:CC:DD:EE:FF

Text, Categorization & Control

  • Hex Color — CSS color value: #3a7bd5. Use for avatar color seeds, theme data, or color picker testing.
  • Lorem Text — N lorem ipsum words inline: lorem ipsum dolor sit amet. Configurable word count.
  • Country — Random country name from a pool of 40 countries: South Korea, Germany, Brazil
  • Enum — Random pick from your comma-separated list. pending, active, suspended → always one of those three values.
  • Custom (Fixed) — Same value in every record. currency: "USD", source: "api". Distinct from Enum — never random.

Output Formats — JSON, CSV, and SQL INSERT

JSON Array Output

Example — 2 records with id (Auto Increment), name, email, active (Boolean):

[
  {
    "id": 1,
    "name": "Jessica Garcia",
    "email": "james312@gmail.com",
    "active": true
  },
  {
    "id": 2,
    "name": "김민준",
    "email": "linda77@example.com",
    "active": false
  }
]

CSV Output

Same schema as CSV — ready for Excel, Google Sheets, or database import:

id,name,email,active
1,"Jessica Garcia",james312@gmail.com,true
2,김민준,linda77@example.com,false

SQL INSERT Output

SQL INSERT — paste directly into MySQL, PostgreSQL, or SQLite:

INSERT INTO users (id, name, email, active) VALUES (1, 'Jessica Garcia', 'james312@gmail.com', true);
INSERT INTO users (id, name, email, active) VALUES (2, '김민준', 'linda77@example.com', false);

Strings are single-quoted and escaped; numbers and booleans are unquoted. Set the table name in Output Settings.

Multilingual Name & Phone Generation

The Name and Phone field types support 12 locale-specific pools ordered by global speaker count. Select the locale per field — each field is independent, so you can mix an English name with a Korean phone number, for example.

LocaleName examplePhone example
EnglishJohn Smith+1-555-234-5678
中文王 伟+86-138-1234-5678
हिन्दीRaj Sharma+91-98765-43210
EspañolCarlos García+34-612-345-678
FrançaisJean Dupont+33-6-12-34-56-78
العربيةمحمد العلي+966-50-1234567
PortuguêsJoão Silva+55-11-91234-5678
РусскийИван Иванов+7-912-345-67-89
IndonesiaBudi Santoso+62-812-3456-7890
DeutschHans Müller+49-151-12345678
日本語田中 一郎+81-90-1234-5678
한국어김민준+82-10-1234-5678

Lorem Ipsum Generator — 13 Languages

Lorem Ipsum is placeholder text used in design and typography since the 16th century. It originates from a scrambled excerpt of Cicero's Latin philosophical work (45 BC) and has been the standard dummy text in print and digital design for over 550 years — hence the label Latin (Classic).

The Lorem Ipsum tab extends this concept to 12 modern languages, letting frontend developers test multilingual UI layouts with script-appropriate placeholder text: right-to-left rendering for Arabic, CJK character spacing for Chinese and Japanese, Devanagari script for Hindi, and Cyrillic for Russian.

Generate modes:

  • Wordslorem ipsum dolor sit amet — a flat list of N words
  • Sentences — Capitalized sentences ending in a period (or 。 for CJK)
  • Paragraphs — Multiple sentences grouped into paragraphs, separated by blank lines

Common Use Cases

1. Frontend Development — Populate UI Before the API Exists

Generate a JSON array matching your API's response shape. Use it as a fixture file, paste it into a JSON server, or hardcode it in a component during prototyping. Fields like UUID, Timestamp, and Boolean map directly to typical REST API response fields.

2. Database Seeding — Seed a Dev or Staging Database

Set the output format to SQL INSERT, enter your table name, configure the exact column schema your table expects, and generate 500–1,000 records. Paste the output directly into a MySQL or PostgreSQL client. Auto Increment handles the primary key automatically.

3. QA & Test Automation — Generate Edge-Case Datasets

Use Enum to control allowed values (e.g., status: pending/active/banned), Integer with a tight range to test boundary conditions, and Boolean to mix true/false rows. Generate multiple batches with different configurations to cover positive, negative, and null-like scenarios.

4. Data Analysis & Reporting — Build Sample Datasets

Export as CSV and open directly in Excel, Google Sheets, or pandas. The CSV header row matches your field names exactly. Float with configurable decimals works for financial figures; Timestamp gives Unix-style date columns.

5. UI/UX Design — Realistic Figma & Storybook Data

A user list with Name (12 locales), Email, Phone, and Country covers international diversity in mockups. Hex Color works as an avatar seed. Lorem Text fills description fields without Lorem Ipsum's visual uniformity.

Frequently Asked Questions

What is the difference between Enum and Custom (Fixed)?

Enum picks a random value from your comma-separated list on every record — e.g., status could be 'pending', 'active', or 'banned' with equal probability. Custom outputs the exact same value for every record — e.g., currency is always 'USD'. Use Enum for categorical variation, Custom for constants that apply to all rows.

How does the Timestamp field differ from the Date field?

Date outputs a human-readable string (2024-03-15). Timestamp outputs a Unix epoch integer (1710460800). Timestamps are preferred by most APIs and backend systems because they are timezone-independent and arithmetically comparable. To convert to milliseconds (JavaScript's Date.now() format), multiply by 1000.

Can I generate multilingual data in the same dataset?

Yes. Each field is configured independently. Add a Name field with English locale for the full_name column, another Name field with Korean locale for the korean_name column, and a Phone field with Japanese locale — all in one schema. The generator treats each field's locale setting separately.

Is my schema saved when I leave the page?

Yes. The field definitions, record count, output format, and table name are all persisted to your browser's localStorage automatically. When you return to the page, everything is restored. Nothing is stored on any server.

How many records can I generate at once?

Up to 1,000 records per click. For large datasets, generate multiple batches and combine them. Because all computation runs in the browser with WebAssembly, 1,000 records with 10 fields generates in under 50 milliseconds on typical hardware.

Output Settings

Fields
MinMax