Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

Mock Data Generator

Design the columns, link the tables, and download up to a million rows of test data.

Data No upload Works offline Free to try, no sign-up Pro tool Pro pass from ₹79

Tables and fields

Start from your own columns: a CSV header, sample rows, JSON, a CREATE TABLE or a saved schema

Field types are chosen from the column names, SQL types and sample values — check them below afterwards.

Settings

The same seed and fields always give the same data.

Preview

The first 10 rows of each table — exactly the start of the download.

Making the preview…

Generate

Next steps

About the Mock Data Generator

Describe the data you need — a table of customers, their orders, a product catalogue — and download as many rows as you like, up to 1,000,000 per table. Each field has a type (names, emails, Indian mobile numbers and PIN codes, addresses, companies, products, prices, dates in a range, numbers with a distribution, UUIDs, patterns, weighted lists, formulas over other fields …) and a share of empty cells; tables are linked by foreign keys, so every customer_id in orders is a real customer.

The same seed always gives the same data, so tests stay reproducible, and the preview is exactly the first rows of the download. Files are written in your browser as CSV, TSV, JSON, JSON Lines, SQL INSERT (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server, Oracle), Excel (.xlsx), XML or Parquet. Contact details are made safe: emails and web addresses use the reserved example.com domains, IP addresses come from documentation ranges, and Aadhaar, PAN, GSTIN and card numbers are look-alikes that deliberately fail their checksums.

How to use it

  1. Start from the example (customers and orders), add a ready-made table, or paste your own columns into Start from your own columns — a CSV header with or without sample rows, a JSON sample, a SQL CREATE TABLE script or a saved schema — and choose Replace tables.
  2. For each field choose a type and its settings (ranges, formats, list values with weights, a pattern or a formula), the % empty cells and whether values must be unique. A Reference field takes its values from a field of another table.
  3. Set the rows of each table, the names and addresses locale and the seed. The Preview shows the first 10 rows, and the problems that need fixing, if any.
  4. Pick the format (and the database for SQL), then Generate and download. Large files are written in the background with a progress bar; you can cancel at any time.

Examples

Customers and their orders (the example, seed 20261003)
Input
customers: customer_id (row number), full_name, email (based on full_name, unique), mobile (India), city, pin_code, signup_date, tier
orders: order_id (ORD-######, unique), customer_id (reference to customers), order_date, quantity 1–5, unit_price 99–4,999, amount = round({quantity} * {unit_price}, 2), status, note (70% empty)
Result
customer_id,full_name,email,mobile,city,pin_code,signup_date,tier
1,Ganesh Bhattacharya,[email protected],+91 66409 44240,Faridkot,899306,2025-08-01,Silver
2,Divjot Mishra,[email protected],+91 81746 98049,Panaji,426020,2024-02-04,Silver

order_id,customer_id,order_date,quantity,unit_price,amount,status,note
ORD-706678,337,2026-08-16 08:16:33,2,1440.57,2881.14,Returned,

The first rows of the download with the example settings. Another seed gives other names and numbers; emails always use example.com, example.net or example.org, and a city is not matched to its PIN code.

A weighted list
Input
Delivered: 70
Shipped: 15
Returned: 10
Cancelled: 5
Result
About 70% of the rows say Delivered, 15% Shipped, 10% Returned and 5% Cancelled.
A formula field
Input
upper(left({city}, 3)) & "-" & pad({customer_id}, 5)
Result
PUN-00042

Formulas can use + − * / %, comparisons, if(), round(), text functions and dates; fields are written in braces.

Common uses

  • Seed data for a development or staging database, with foreign keys that hold.
  • Realistic CSV and Excel files to test an import, a report or a dashboard.
  • Load tests with a million rows, as CSV or Parquet.
  • Demo data for screenshots, training and teaching, with no real person’s details in it.
  • JSON fixtures for front-end and API tests that are the same on every run.

Field types

  • Identifiers: row numbers, UUID v4, ULID, Nano ID, patterns (a regular expression such as INV-20(25|26)-\d{5}), templates (ORD-######), hex and digit codes.
  • People and contact: first, last and full names, titles, sex, age, date of birth in an age range, job titles, emails and usernames that can be built from the name, Indian mobile numbers (+91, 10 digits from 6–9), phone numbers in the locale’s style.
  • Places: addresses, streets, cities, states, countries, 6-digit Indian PIN codes, postal codes, latitude and longitude (anywhere or within India), time zones.
  • Business and money: companies, products, departments, prices, amounts with a distribution, SKUs, ISBN-13 and EAN-13 barcodes (with correct check digits), currencies, account numbers, IFSC-shaped codes, UPI-style IDs on @example.
  • Numbers and dates: whole and decimal numbers — uniform, normal (bell curve), exponential or log-normal, clamped to your range — percentages, ratings, yes/no with a chance, dates, date-times (or Unix time) and times of day in a range, in six formats.
  • Text and more: words, sentences, paragraphs, slugs, hashtags, colours, airports and airlines, vehicles, files and MIME types, versions, Git SHAs, and constants, weighted lists, formulas and references to other tables.

Placeholders that are safe to use

Test data must never be confused with a real person. So:

  • Emails and URLs use example.com, example.net and example.org, which RFC 2606 reserves for documentation — no mail can be delivered to them. UPI-style IDs end in @example.
  • IPv4 addresses come from 192.0.2.0/24, 198.51.100.0/24 and 203.0.113.0/24 (RFC 5737) and IPv6 from 2001:db8::/32 (RFC 3849), which are never routed on the internet.
  • Aadhaar-shaped numbers have a wrong Verhoeff check digit; PAN-shaped values use a 4th letter (Q, X or Z) that is not issued; GSTINs have a wrong check character; card numbers fail the Luhn check; IBANs have the check digits 00; VINs have a wrong check digit. Validation in any real system rejects them.
  • Mobile and phone numbers are random in the right format, and some may belong to real people — do not call or message them.

Linked tables and reproducible data

A Reference field picks values from a field of another table, so an orders table only uses customer IDs that exist in customers (and the SQL output adds FOREIGN KEY constraints when the referenced field is that table’s key). Parent tables are written first.

Every field draws from its own random sequence, started from the seed, the table and the field. Adding, removing or renaming other fields does not change a field’s values, changing % empty only blanks some of them, and the same settings give the same file each time you generate it.

Formats

  • CSV/TSV: RFC 4180 quoting, a UTF-8 byte-order mark for Excel (optional) and semicolons for European Excel; one file per table, zipped when there are several.
  • JSON: an array of records (an object of arrays for several tables), numbers and booleans as real JSON values; JSON Lines: one record per line.
  • SQL: CREATE TABLE with types sized to the fields, a primary key when there is an always-filled ID or unique field, batched INSERTs in a transaction and FOREIGN KEY constraints, for six databases.
  • Excel (.xlsx): one sheet per table, real numbers, dates and times, a bold frozen header row.
  • XML: one element per row and field. Parquet: typed columns (64-bit integers, doubles, booleans, dates, timestamps, UTF-8 text), Snappy-compressed.

Limitations

  • Up to 10 tables, 60 fields per table and 1,000,000 rows per table. Very large files need memory; CSV and Parquet are the most compact.
  • Random values are not drawn from real statistics: names, cities and states are picked independently, so a city may not match its state or PIN code.
  • A unique field can only have as many different values as its type allows; a short template such as EMP#### runs out after 10,000, and the repeats are reported.
  • Fields can depend on other fields of the same row (formulas, emails based on names), but not on earlier rows.
  • The same seed reproduces the same data with this version of the tool; an update to its name and address lists can change the values a seed gives.

Privacy

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot.

Frequently asked questions

How do I generate fake data for testing?

Add the fields you need (or paste your column names or a CREATE TABLE), choose a type for each, set the number of rows and press Generate and download. The preview shows exactly what the first rows will be.

Can I get the same data again?

Yes. Keep the seed and the fields the same and the file is identical, row for row. Change the seed (or press New) for different data.

Are the Aadhaar, PAN and card numbers real?

No. They have the right shape so forms and parsers accept them as input, but each one deliberately fails its checksum (Verhoeff for Aadhaar, Luhn for cards) or uses a PAN holder type that is never issued, so they cannot belong to anyone.

How do I make related tables, like customers and orders?

Give the parent table an ID field (for example a row number), then add a field of type Reference to another table in the child table and choose that ID. Every value in the child then exists in the parent.

Is anything uploaded?

No. The data is generated and the file is written in your browser, in a background worker on your device.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.