Skip to main content
SnipKit

Mock Data Generator

Generate JSON, CSV, SQL, and XML test data with a custom schema — 27 field types, up to 10,000 rows.

Processed locally in your browser

Build a schema, pick a row count, and export to JSON, CSV, SQL, or XML.

Schema

Define columns and pick a data type for each.

6 fields

Settings

max 1,000
0 rows
Click Generate to create mock data with the schema above.

Unlock the full toolkit

Batch processing, no ads, higher limits, and API access.

Go Premium

How to Use

Build a schema, pick a row count, and export to JSON, CSV, SQL, or XML.

  1. Define your schema — add columns by clicking **Add field**, name them, and pick a type. 27 types are available, grouped by Identity, Contact, Location, Business, Date, Number, Web, Text, and Custom.
  2. Configure type-specific options — min/max for numbers, decimals for floats, comma-separated values for enums, regex patterns for custom strings, or a fixed value for static columns.
  3. (Optional) Tick **null 5%** on any field to randomly null ~5% of rows for that column. Useful when testing nullable columns and validation.
  4. Set the row count (1–1,000 by default; flip the **Advanced** switch to go up to 10,000) and an optional **Seed** for deterministic output.
  5. Click **Generate**. The tool runs entirely in your browser — no upload, no signup, no rate limits.
  6. Switch between **JSON / CSV / SQL / XML** tabs and copy or download the result. For SQL, set the table name; unsafe names fall back to <code>mock_data</code> automatically.

Pair this with the JSON Formatter to inspect output, CSV to JSON to round-trip, or UUID Generator and Lorem Ipsum Generator for one-off values.

Features

  • 27 field types: names, emails, addresses, dates, numbers, regex, enum, static
  • 4 export formats: JSON, CSV, SQL INSERT, XML
  • Up to 10,000 rows in advanced mode
  • Optional seed for reproducible output
  • 5% nullable toggle per column for realistic test data
  • Live preview table (first 10 rows)
  • Copy to clipboard or download as a file
  • 100% client-side — your schema and data never leave your browser

Frequently Asked Questions

What is mock data and when should I use it?
Mock data (also called test data, sample data, or fake data) is synthetically generated content used to populate development databases, test API responses, build UI prototypes, or seed staging environments. Use it whenever you need realistic-looking records but cannot — or should not — use real production data. It removes any privacy or compliance concern because no actual user information is involved.
Can I safely insert this into a real database?
Yes, into testing or staging databases. The SQL output uses parameterised-style INSERT statements with single-quote escaping, so the values are safe to run as long as you trust the table name. Never use mock data in production datasets — names, emails, and addresses are randomly composed and may collide with real records by coincidence.
Is this GDPR / privacy compliant?
Mock data is synthetic, so it contains no personal information about real people. GDPR and similar regulations only cover identifiable individuals. Beyond that, this tool runs entirely in your browser — your schema, seed, and generated rows are never sent to a server, so even your column names stay local.
How many field types are supported?
Twenty-seven, covering the most common use cases: identity (first/last name, full name, username, UUID), contact (email, phone), location (street address, city, country, ZIP), business (company, job title), dates (date, recent date, future date, ISO datetime), numbers (integer, float, boolean), web (URL, IP), text (lorem sentence, lorem paragraph), and custom (enum, regex, static). The integer and float types support min/max and fractional digits; enum picks from a list you provide; regex generates strings matching your pattern.
How does the seed work?
The seed is a number that initialises the underlying pseudo-random generator (powered by Faker.js). Generating with the same seed and the same schema always produces the same rows — useful for snapshot tests, reproducible bug reports, or sharing a fixed dataset with a teammate. Leave it empty to get fresh data on every click.
Why is the row limit 1,000 by default?
Generating beyond ~1,000 rows starts to feel sluggish in the browser and produces files that are awkward to scroll through inline. Toggling the **Advanced** switch lifts the cap to 10,000, which is enough to load realistic page-size pagination, fixture files, or initial seeds. For larger volumes, generate the schema once with the seed set, then re-generate in batches.
How are CSV and SQL outputs escaped?
CSV uses RFC 4180: any cell containing a comma, double quote, or newline is wrapped in double quotes, and embedded quotes are doubled. SQL escapes single quotes by doubling them (Postgres / MySQL / SQLite friendly), nulls become <code>NULL</code>, and booleans become <code>TRUE</code>/<code>FALSE</code>. Table names are validated against <code>[A-Za-z_][A-Za-z0-9_]*</code> and fall back to <code>mock_data</code> if you type something that could break the statement.
Why does my regex use [0-9] instead of \d?
The underlying regex-to-string generator does not expand short escapes like <code>\d</code> or <code>\w</code>. Use explicit character classes instead: <code>[0-9]</code> for digits, <code>[a-zA-Z]</code> for letters, <code>[a-zA-Z0-9]</code> for alphanumerics. Quantifiers (<code>{3}</code>, <code>{2,5}</code>, <code>+</code>, <code>*</code>, <code>?</code>) and alternation (<code>|</code>) all work as expected.