📦 Sample Data Generator

📐 Data shape

Each shape has a fixed set of fields baked into the generator. Pick the one closest to your fixture and tweak the count.

📊 How many records

1 ≤ count ≤ 500. Defaults to 10 when blank.

📄 Output format

🔁 Seed (optional)

⚠️ When a seed is set, output is deterministic via xoshiro128**. This is NOT cryptographically secure — never use seeded output for tokens, salts, keys, IVs, or nonces.

📤 Output ({{ format.toUpperCase() }})

⚠️

ℹ️ About Sample Data Generator

Ready-made demo datasets for common business shapes

This tool emits curated sample/demo data for nine pre-built shapes — users, orders, products, log_lines, transactions, inventory, tickets, employees, and analytics_events. Field layouts are baked in, so you do not have to define a schema by hand. Pick a shape, a count, a format, and (optionally) a seed.

Output options match what most data pipelines want: pretty-printed JSON arrays, line-delimited NDJSON for streaming consumers, RFC 4180 CSV for spreadsheets and SQL LOAD DATA, and tab-separated TSV for terminal-friendly piping.

Pre-built shapes

  • users — id (UUID), firstName, lastName, email, age (18-80), createdAt (last 5 years), active (bool).
  • orders — id, customerId, orderNumber (ORD-YYYY-NNNNNN), total (10-5000, 2 decimals), status (pending/shipped/delivered/cancelled), placedAt.
  • products — id, sku (SKU-XXXXXXXX), name, category, price (1-500), stock (0-1000).
  • log_lines — timestamp (last 24h), level (INFO/WARN/ERROR/DEBUG), message, source (api/db/cache/auth/worker).
  • transactions — id, accountFrom, accountTo (12-digit), amount (1-10000), currency (ISO 4217), settledAt.
  • inventory — itemId, warehouseId (WH-NNNN), quantity (0-10000), lastUpdated (last 30 days).
  • tickets — id (TKT-NNNNNN), title, priority, status, assignee, createdAt.
  • employees — id, firstName, lastName, department, title, startDate (past 10 years), salary (40k-200k).
  • analytics_events — eventId, userId, eventType (page_view / click / scroll / …), timestamp (last 7 days), sessionId.

Randomness source

  • Default (no seed): crypto.getRandomValues — the platform CSPRNG exposed through Web Crypto (browser) and Node's webcrypto (server). Output cannot be reproduced.
  • Seeded mode: the seed string is mixed into a 128-bit state with a four-lane MurmurHash3 finaliser, then expanded through xoshiro128** (Blackman & Vigna). Same seed + same shape + same count + same format = byte-identical output.
  • Date anchor: ranges like "last 24h" or "past 5 years" are anchored at 2025-01-01T00:00:00Z, so seeded runs are reproducible regardless of host wall-clock time.
  • Security note: seeded mode is NOT cryptographically secure. Use it for fixtures and reproducibility only — never for tokens, passwords, salts, IVs, or anything an attacker should not be able to predict.

Bounds and notes

  • count: 1 to 500 records per request (default 10).
  • UUIDs follow RFC 9562 v4 with version and variant nibbles set.
  • CSV uses RFC 4180 quoting (commas, quotes, and newlines wrapped in double quotes; embedded double quotes doubled) and \r\n line endings.
  • TSV uses tab separators and \n line endings; embedded tabs and newlines in cell values are stripped to spaces.
  • Datetime strings follow ISO 8601 in UTC (YYYY-MM-DDTHH:MM:SSZ).

API Usage Example:

POST /api/tools/data/sample-data-generator
Content-Type: application/json

{
    "shape": "users",
    "count": 10,
    "format": "json"
}
Ready