📐 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'swebcrypto(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\nline endings. - TSV uses tab separators and
\nline endings; embedded tabs and newlines in cell values are stripped to spaces. - Datetime strings follow ISO 8601 in UTC (
YYYY-MM-DDTHH:MM:SSZ).
Source references
- RFC 4180 — Common Format and MIME Type for CSV Files.
- RFC 9562 — UUIDs (defines v4).
- NDJSON specification (newline-delimited JSON).
- ISO 8601 — Date and time format.
- ISO 4217 — Currency codes.
- prng.di.unimi.it — xoshiro / xoroshiro generators (seeded mode PRNG).
API Usage Example:
POST /api/tools/data/sample-data-generator
Content-Type: application/json
{
"shape": "users",
"count": 10,
"format": "json"
}