Test Data Generator
Paste a CREATE TABLE and get realistic rows plus the values that break loaders, APIs and queries — apostrophes, emoji, the longest string a column allows, leap days, the largest number a type holds. Each one is marked with the reason it is there.
Table definition
9 columns read from customers.
Columns
How each column is filled, and how many traps it gets.
- customer_idbigintunique keywhole number
- full_namevarchar(40)NOT NULLtext16 edge cases
- emailvarchar(120)text17 edge cases
- countrychar(2)text17 edge cases
- balancenumeric(12,2)decimal6 edge cases
- is_activebooleantrue / false3 edge cases
- signup_datedatedate7 edge cases
- last_seentimestamptimestamp7 edge cases
- notestexttext16 edge cases
Generated rows
50 rows, 89 deliberate edge cases. Hover a marked value to see why it is there.
| # | customer_id | full_name | country | balance | is_active | signup_date | last_seen | notes | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1000 | O'Brien | O'Brien | O' | 0 | true | 2024-02-29 | 2024-02-29 23:59:59 | O'Brien |
| 2 | 1001 | Say "hello" | Say "hello" | Sa | 9999999999.99 | false | 1970-01-01 | 1970-01-01 00:00:00 | Say "hello" |
| 3 | 1002 | C:\temp\new | C:\temp\new | C: | -9999999999.99 | true | 1999-12-31 | 2026-03-29 02:30:00 | C:\temp\new |
| 4 | 1003 | Zoë Müller-Ñúñez | Zoë Müller-Ñúñez | Zo | 0.01 | false | 2038-01-19 | 2026-11-01 01:30:00 | Zoë Müller-Ñúñez |
| 5 | 1004 | 東京都 渋谷区 | 東京都 渋谷区 | 東京 | -0.01 | false | 1900-01-01 | 2038-01-19 03:14:08 | 東京都 渋谷区 |
| 6 | 1005 | مرحبا بالعالم | مرحبا بالعالم | مر | 62473.84 | true | 9999-12-31 | 2026-12-31 23:59:59.999 | مرحبا بالعالم |
| 7 | 1006 | Thanks 🙂👍 | Thanks 🙂👍 | Th | 88205.00 | true | 2023-04-16 | 2024-01-05 11:45:49 | Thanks 🙂👍 |
| 8 | 1007 | ␣␣padded␣␣ | ␣␣padded␣␣ | ␣␣ | NULL | false | NULL | 2020-03-16 16:35:10 | ␣␣padded␣␣ |
| 9 | 1008 | ‹empty› | ‹empty› | ‹empty› | 6178.08 | false | 2020-03-06 | 2025-07-15 10:50:09 | ‹empty› |
| 10 | 1009 | NULL | NULL | NU | 80901.49 | true | NULL | NULL | NULL |
| 11 | 1010 | line one↵line two | line one↵line two | li | 59672.35 | false | 2021-12-29 | 2025-08-22 21:44:56 | line one↵line two |
| 12 | 1011 | tab⇥separated | tab⇥separated | ta | 20418.81 | true | NULL | 2024-06-21 20:17:25 | tab⇥separated |
| 13 | 1012 | a, b; c | a, b; c | a, | 92783.06 | NULL | 2022-10-31 | 2020-11-25 12:23:17 | a, b; c |
| 14 | 1013 | 007 | 007 | 00 | 1584.27 | true | 2025-11-28 | NULL | 007 |
| 15 | 1014 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | xx | 93485.84 | false | 2023-06-02 | 2020-10-16 10:07:56 | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 16 | 1015 | éééééééééééééééééééééééééééééééééééééééé | éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé | éé | 56279.46 | true | 2022-03-19 | 2022-02-14 02:22:08 | charlie 16 |
| 17 | 1016 | Margaret Haddad | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| 18 | 1017 | Ingrid Chen | donald.18@example.com | BR | 69671.45 | false | 2020-08-12 | 2025-05-26 16:21:59 | hotel 18 |
| 19 | 1018 | Alan Larsen | katherine.19@example.com | NG | 33592.78 | false | 2022-02-22 | 2022-08-01 01:40:38 | golf 19 |
| 20 | 1019 | Barbara Lovelace | chidi.20@example.com | US | 60392.65 | true | NULL | 2024-08-27 02:06:35 | charlie 20 |
| 21 | 1020 | Barbara Lovelace | mei.21@example.com | FR | 17083.24 | true | 2022-11-08 | 2024-07-04 17:28:44 | charlie 21 |
| 22 | 1021 | Lars Liskov | aiko.22@example.com | AU | 32536.24 | true | 2021-06-14 | 2024-07-25 23:12:17 | alpha 22 |
| 23 | 1022 | Barbara Lovelace | katherine.23@example.com | CA | 91261.88 | true | 2025-09-13 | 2025-07-09 21:37:16 | delta 23 |
| 24 | 1023 | Alan Tanaka | katherine.24@example.com | JP | 49199.44 | false | 2020-05-08 | NULL | echo 24 |
| 25 | 1024 | Chidi Sharma | fatima.25@example.com | US | 59938.32 | true | 2024-06-22 | 2026-02-28 01:49:43 | charlie 25 |
| 26 | 1025 | Fatima Turing | ada.26@example.com | NULL | 72635.72 | false | 2024-08-24 | 2021-10-17 10:37:15 | alpha 26 |
| 27 | 1026 | Edsger Hamilton | ingrid.27@example.com | ES | 66635.02 | true | 2023-01-06 | 2022-03-07 14:41:39 | bravo 27 |
| 28 | 1027 | José Dijkstra | jose.28@example.com | DE | 376.45 | false | NULL | 2022-10-29 22:58:06 | alpha 28 |
| 29 | 1028 | Fatima Lovelace | katherine.29@example.com | JP | NULL | false | 2025-03-26 | 2025-04-15 15:04:13 | bravo 29 |
| 30 | 1029 | Grace Hopper | NULL | KE | 56099.58 | true | 2022-03-21 | 2025-06-22 10:38:35 | bravo 30 |
| 31 | 1030 | Mei Chen | jose.31@example.com | FR | 56853.04 | true | 2024-12-05 | 2024-07-07 11:09:28 | echo 31 |
| 32 | 1031 | Mei Chen | edsger.32@example.com | KE | 38684.45 | true | 2022-09-18 | 2023-07-02 20:46:16 | echo 32 |
| 33 | 1032 | Fatima Larsen | edsger.33@example.com | DE | 63075.93 | false | 2021-03-22 | 2025-12-06 03:22:59 | delta 33 |
| 34 | 1033 | Grace Hamilton | chidi.34@example.com | DE | 71726.56 | true | 2020-08-22 | 2022-06-19 20:30:30 | golf 34 |
| 35 | 1034 | Chidi Hopper | NULL | KE | 85605.82 | false | 2022-04-08 | NULL | bravo 35 |
| 36 | 1035 | Margaret Dijkstra | ingrid.36@example.com | DE | 10907.73 | false | 2020-10-06 | NULL | NULL |
| 37 | 1036 | Barbara Johnson | mei.37@example.com | US | 64913.60 | NULL | 2025-03-31 | 2021-05-05 15:34:39 | echo 37 |
| 38 | 1037 | Alan Hopper | donald.38@example.com | ES | 95157.41 | true | 2024-06-07 | 2025-01-22 09:29:13 | bravo 38 |
| 39 | 1038 | Chidi Tanaka | katherine.39@example.com | JP | 4984.86 | false | 2020-04-22 | 2024-09-04 16:24:34 | charlie 39 |
| 40 | 1039 | Fatima Hamilton | chidi.40@example.com | IN | 8745.92 | false | 2023-02-05 | 2024-01-27 02:45:23 | foxtrot 40 |
Showing the first 40 of 50 rows. The download has them all.
Output
Written for PostgreSQL: its quoting, string escaping and literal forms. Load it into both systems, then compare them with Parity Run.
How to Use Test Data Generator
How to generate test rows that find the values your code mishandles.
Paste a CREATE TABLE
From any of the 16 dialects. Column types, lengths, precision and NOT NULL are read from it, so every value fits the column it is for.
Get rows that find the bugs
The first rows walk each column through its traps — quotes, encodings, limits, awkward dates — each marked with the reason it is there. The rest are plausible values.
Load it anywhere
Download SQL INSERTs for your dialect, CSV or JSON Lines. Seed a test database, fill a staging table or feed a pipeline — and if the rows pass through two systems, compare both ends with Parity Run.
Frequently Asked Questions
Common questions about privacy, supported dialects, and how Test Data Generator works under the hood.
Which values does the Test Data Generator include?
For text: apostrophes, double quotes, backslashes, accented, Japanese and right-to-left text, emoji, leading and trailing spaces, an empty string next to NULL, the word NULL, embedded newlines and tabs, leading zeros, and the longest value the column allows. For numbers: zero, negatives and the largest and smallest values the type holds. For dates and times: a leap day, the Unix epoch, the 32-bit time limit and timestamps inside daylight-saving changes.
Is the same data generated every time?
Yes, for the same table definition, options and seed. That makes a failing row reproducible: keep the seed, and the exact rows can be generated again. Change the seed for a different set.
Will the SQL load into my database?
The INSERT statements are written for the dialect you choose — its identifier quoting, string escaping, date literals and boolean form. On SQL Server, text outside plain ASCII is written with an N prefix so it is not silently turned into question marks.
Is my table definition uploaded?
No. The definition is read and the rows are generated inside your browser tab. Nothing is sent to a server.