ScenarioLoom
Schema to seed data

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.

What you get

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.

SQL

PostgreSQL, MySQL, SQLite and SQL Server DDL, including quoted names, enums, CHECK lists and composite keys.

TypeScript and JSON

Interfaces, intersections and common utility types, or a JSON sample to infer the shape from.

Related rows

Foreign keys resolve to generated parents; order totals are reconciled with their items using exact money arithmetic.

Exports

JSON, CSV per table, or SQL INSERT statements for your dialect, ready for a migration or test fixture.

Real output

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.

Input · e-commerce schema (PostgreSQL)
-- 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

idcustomer_idstatustotalcreated_atshipped_at
18paid111.972025-10-28 15:15:26
26delivered467.962026-10-12 18:16:572026-10-14 11:43:09
31paid59.992025-11-30 23:12:04
419shipped109.962026-07-22 00:07:29
55delivered19.952025-01-09 05:51:522025-01-16 21:04:37
613paid21.952025-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.

How teams use it

Built for a repeatable test.

01

Seed a development database

Load consistent data into a local or staging database without copying production records.

02

Reproduce bugs

Share a setup file or link; the same seed, date and engine version regenerate the same rows.

03

Probe edge cases

Turn on edge-case mode for boundary values, long strings and empty optional fields.

Scope. These are fictional, seeded test fixtures. Expected outcomes define a synthetic benchmark, not a legal or compliance determination about any real party, and they are not a substitute for practitioner review. Use them in isolated test environments.
Questions

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.

More test data

Generate your own.

Change the seed, volume and scenarios in the browser. Nothing is uploaded.

Open the generator