Break your app before your users do.

Generate production-realistic test data, mixed with a few chaotic edge cases. Emojis, boundary integers, malformed strings, and more. Your users are going to do it anyway, right?

Completely free to try. (See the FAQ for more details.)

What does chaotic data look like?

Realistic values with a few chaotic ones mixed in. Declared constraints are always respected.
See every anomaly.

email

Realistic

alex.smith@example.com

Anomalies

  • alex+promo@example.com
  • alex😺@example.com
  • alex@exämple.com

integer

Realistic

42

Anomalies

  • 2147483647
  • -2147483648
  • 0

timestamp

Realistic

2024-01-02 15:04:05

Anomalies

  • 2038-01-19 03:14:07
  • 1970-01-01 00:00:00
  • 9999-12-31 23:59:59

url

Realistic

https://example.com/items/42

Anomalies

  • javascript:alert(1)
  • https://user:pass@example.com/items/42
  • https://münchen.de/items/42

uuid

Realistic

7f1c2f9e-3b6a-4c1d-9e2f-1a2b3c4d5e6f

Anomalies

  • {7f1c2f9e-3b6a-4c1d-9e2f-1a2b3c4d5e6f}
  • 7F1C2F9E-3B6A-4C1D-9E2F-1A2B3C4D5E6F
  • 7f1c2f9e3b6a4c1d9e2f1a2b3c4d5e6f

text

Realistic

hello world

Anomalies

  • <script>alert("xss")</script>
  • ' OR '1'='1' --
  • 💥 hello world

Try it right now

Check out the output below, then edit the schema or crank up the chaos!

Equivalent request
output
ready
Press “Generate data”.

Works with the databases you already use. PostgreSQLMySQLSQLite

Don't use one of those? Suggest another one! features@chaosdata.net.

FAQ

Will it break my schema constraints?

No. Declared constraints are always respected: NOT NULL, UNIQUE, primary and foreign keys, VARCHAR(n) lengths, UNSIGNED, enum membership and simple CHECK ranges. Anomalies target the things your schema doesn't say: the assumptions your code makes.

Will the generated data actually load?

Yes. Output is ordered parent-first with valid foreign keys, wrapped in a transaction, and emitted in the syntax your database expects. If a generated row couldn't load, that's a bug.

What exactly gets injected?

Emoji and combining marks, bidi and zero-width characters, long-but-legal strings, boundary and negative numbers where nothing forbids them, extreme timestamps, malformed emails and dates, and XSS/SQL-injection payloads. The JSON response reports how many anomalies were injected.

What about password columns?

Don't let us invent them. Pin the exact value with const and every row gets it, unmutated, so a known hash can log a fixture in: users.password_hash=const:$2b$12$.... Use nochaos to keep a realistic value but drop that column's anomalies, or skip to leave the column entirely to a default, a trigger or a sequence. Hints has the details.

Is it free?

Yes. The quick-generate endpoint is free to try while we gauge interest. Join the waitlist to hear when we go live with even more features.

Can I reproduce a specific dataset?

Pass a seed and you'll get the exact same bytes every time. The seed is echoed in the metadata and in the SQL header.