PostgreSQL, MySQL, SQLite and SQL Server DDL, including quoted names, enums, CHECK lists and composite keys.
Seed data
from your schema.
Paste CREATE TABLE statements, TypeScript interfaces or a JSON sample. ScenarioLoom reads the tables, types and foreign keys and generates related rows that fit together: every order points at a real customer, totals match their line items, and the same seed gives the same data every time.
Runs in your browser. Free plan, no account needed.
Inputs and answers,
kept apart.
Source records go to the system you are testing. The answer key stays with you, so you can compare results afterwards.
Interfaces, intersections and common utility types, or a JSON sample to infer the shape from.
Foreign keys resolve to generated parents; order totals are reconciled with their items using exact money arithmetic.
JSON, CSV per table, or SQL INSERT statements for your dialect, ready for a migration or test fixture.
A sample, generated by ScenarioLoom.
Seed scenarioloom-sample, anchor date 2026-11-01. Open the setup to change the volume, scenarios or format; the same settings always reproduce these files.
-- An online shop: customers place orders for products.
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(120) NOT NULL UNIQUE,
phone VARCHAR(30),
city VARCHAR(80) NOT NULL,
country VARCHAR(60) NOT NULL,
postal_code VARCHAR(12),
is_verified BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT now()
);
CREATE TABLE products (
id SERIAL PRIMARY KEY,
sku VARCHAR(20) NOT NULL UNIQUE,
name VARCHAR(120) NOT NULL,
category VARCHAR(40) NOT NULL,
price NUMERIC(10,2) NOT NULL,
stock INTEGER NOT NULL DEFAULT 0,
description TEXT
);
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INTEGER NOT NULL REFERENCES customers(id),
status VARCHAR(20) NOT NULL
CHECK (status IN ('pending','paid','shipped','delivered','cancelled')),
shipping_address VARCHAR(200) NOT NULL,
…orders · first rows
| id | customer_id | status | total | created_at | shipped_at |
|---|---|---|---|---|---|
| 1 | 8 | paid | 111.97 | 2025-10-28 15:15:26 | |
| 2 | 6 | delivered | 467.96 | 2026-10-12 18:16:57 | 2026-10-14 11:43:09 |
| 3 | 1 | paid | 59.99 | 2025-11-30 23:12:04 | |
| 4 | 19 | shipped | 109.96 | 2026-07-22 00:07:29 | |
| 5 | 5 | delivered | 19.95 | 2025-01-09 05:51:52 | 2025-01-16 21:04:37 |
| 6 | 13 | paid | 21.95 | 2025-09-07 19:40:10 |
Sample files
Small enough for the Free plan. Answer-key files are marked; keep them away from the system under test.
- seed.sqlPostgreSQL INSERTs · 16.2 KB · All four tables in foreign-key order
- orders.jsonOrders (JSON) · 14.6 KB
- customers.csvCustomers (CSV) · 2.1 KB
Built for a repeatable test.
Seed a development database
Load consistent data into a local or staging database without copying production records.
Reproduce bugs
Share a setup file or link; the same seed, date and engine version regenerate the same rows.
Probe edge cases
Turn on edge-case mode for boundary values, long strings and empty optional fields.
Common questions.
Is my schema uploaded?
No. Parsing and generation run in your browser. The schema is only included in a share link or setup file if you choose to create one.
Which column types are understood?
Common SQL and TypeScript types, plus column names such as email, phone, city, price or created_at, which select realistic generators. You can override any column’s generator.
Can I control row counts?
Yes, per table. Small datasets update as you type; larger ones generate on demand with progress and cancel. Free exports up to 1,000 records per file.
Is there a command-line version?
Yes. Pro includes an offline app and a Node CLI that reads the same setups, for CI pipelines and air-gapped environments.
Other scenarios.
Generate your own.
Change the seed, volume and scenarios in the browser. Nothing is uploaded.