Test Data Generator

Generate realistic datasets where the tables actually relate: orders point to real customers, items point to real products.

Processed in your browser. Files never leave your device.

 
Field types

Write table name rowCount, then one field: type(args) per line. Add blank=20 to leave 20% of values empty. Reference earlier tables with ref(table.field).

    How it works

    1. Pick a preset (e-commerce, SaaS, CRM, inventory, or people) or write your own definition.
    2. Adjust row counts, add or remove fields, and set how often a field is blank.
    3. Generate and preview each table.
    4. Download CSV, JSON, SQL, or Excel, or copy TypeScript interfaces.

    Fake data that behaves like real data

    Random names and emails are easy. What makes test data useful is structure: every order should belong to a customer that exists, every line item should reference a real product and order, and statuses should follow a realistic mix instead of a uniform spread. Structura generates related tables from a short definition you can read and edit.

    Use it to seed a development database, demo a dashboard without customer data, load-test an import, or build fixtures for tests. Set a seed and you get exactly the same dataset every time, so tests and screenshots stay stable.

    What you get

    Worked example

    The e-commerce preset creates 200 customers, 60 products, 600 orders, and 1,500 order items. Every order_items.order_id exists in orders, and the SQL export declares those foreign keys, so you can load it straight into Postgres or SQLite.

    Limits

    Up to 25,000 rows in total per generation for free, or 250,000 with Structura Pro, created in your browser. All names, emails, and phone numbers are fictional; phone numbers use the reserved 555-01xx range.

    Related tools: JSON → TypeScript · JSON → Zod · JSON Formatter · CSV & Excel Compare · JSON Compare

    FAQ

    Does my data get uploaded or stored?

    No. Processing runs entirely in your browser. Structura does not upload your files for processing and does not keep file contents on a server. Closing the tab clears the in-memory copy.

    Is processing private / local-only?

    Yes for the tool’s job. Your files stay on the device. Optional Cloudflare Web Analytics may record page views and anonymous events such as tool runs and downloads, never file contents or file names.

    Is the generated data realistic?

    It uses real-looking names from many regions, cities with their matching countries, emails derived from the person’s name, and weighted status values. It is fictional and not drawn from real people.

    Can I get the same data again?

    Yes. The output depends only on the definition and the seed. Keep the seed and you get identical data, which keeps tests and demos stable.

    How do related tables work?

    Define the parent table first, then use ref(parent.field) in the child table. Each child row picks a value that exists in the parent, and the SQL export adds a foreign key when the parent field is its primary key.

    Which SQL databases does the export work with?

    The output uses standard SQL types (INTEGER, NUMERIC, VARCHAR, DATE, TIMESTAMP, BOOLEAN, UUID). It loads into PostgreSQL as is; for MySQL or SQLite you may need to adjust UUID and BOOLEAN columns.

    Do I need an account?

    No. All Structura tools are free to use without signup.

    Need a data tool we don’t have yet?

    Tell us what you are trying to convert, clean, compare, or validate. We prioritize tools based on real requests. Want a dataset preset for your industry, or computed fields like order totals?

    Request a tool →