Mock data
Generate believable fake rows — names, emails, dates, ids — from a seed, so the same seed gives the same data.
uuid → 3f1c…-…-4a2b
[
{
"id": "1f556c55-976e-4314-9b86-c2d8b97e324d",
"first_name": "Kevin",
"last_name": "Wilkerson",
"email": "kevinwilkerson@relay.test",
"city": "Prague",
"created_at": "2025-12-12T15:19:47Z",
"active": true
},
{
"id": "f9437a79-0676-45dc-8e8f-99c15786fbf5",
"first_name": "Uriel",
"last_name": "Jackson",
"email": "urieljackson@inbox.test",
"city": "Wroclaw",
"created_at": "2025-05-07T22:19:16Z",
"active": false
},
{
"id": "b0003e1d-9408-455b-9758-c4ddc83e987a",
"first_name": "Nora",
"last_name": "Gilmore",
"email": "noragilmore@post.example",
"city": "Portland",
"created_at": "2021-04-13T05:07:18Z",
"active": true
},
{
"id": "6413a615-f6a7-473f-8650-93606b05587d",
"first_name": "Leo",
"last_name": "Harding",
"email": "leo.harding95@example.org",
"city": "Melbourne",
"created_at": "2023-06-29T23:05:51Z",
"active": true
},
{
"id": "219e5317-e2bf-4692-9621-0b6eb3e45431",
"first_name": "Phoebe",
"last_name": "Joyce",
"email": "pjoyce@mailinator.test",
"city": "Hobart",
"created_at": "2025-12-23T14:48:58Z",
"active": false
},
{
"id": "0baac440-e5c9-4166-9427-7ae13aa018cb",
"first_name": "Bodhi",
"last_name": "Farmer",
"email": "bodhi.farmer8@example.com",
"city": "Sendai",
"created_at": "2022-12-30T17:43:41Z",
"active": true
},
{
"id": "62450059-dd96-446d-9038-343c6d074139",
"first_name": "Clara",
"last_name": "Newton",
"email": "clara.newton@mail.example",
"city": "Glasgow",
"created_at": "2025-11-07T00:35:37Z",
"active": false
},
{
"id": "f3ef535d-82cb-4055-bd9a-5bcc68071bf6",
"first_name": "Fatima",
"last_name": "Tucker",
"email": "fatima.tucker@example.com",
"city": "Thessaloniki",
"created_at": "2024-08-07T11:13:19Z",
"active": true
},
{
"id": "cb225b06-c271-4faf-a3ca-7461aadb5810",
"first_name": "Jamal",
"last_name": "Mayer",
"email": "jamal.mayer54@relay.test",
"city": "Lagos",
"created_at": "2021-12-01T15:34:05Z",
"active": false
},
{
"id": "b79bf628-357c-42cd-997d-8b0701bffb48",
"first_name": "Rocco",
"last_name": "Taylor",
"email": "rocco.taylor@example.net",
"city": "Fort Worth",
"created_at": "2022-11-28T17:30:46Z",
"active": false
},
{
"id": "a11e2334-69b0-480c-9a62-3d11ce285b53",
"first_name": "Lars",
"last_name": "Dorsey",
"email": "lars.dorsey67@mailinator.test",
"city": "Tampa",
"created_at": "2022-01-24T09:54:02Z",
"active": true
},
{
"id": "c3f63545-dd16-40bb-906e-1185a1a296e1",
"first_name": "Luis",
"last_name": "Brooks",
"email": "luis_brooks@post.example",
"city": "Dresden",
"created_at": "2020-01-31T22:44:57Z",
"active": false
}
]The seed is the whole point. Every value comes from a mulberry32 stream keyed by the seed, the row number and the column name — never from Math.random — so this seed and these fields give you byte-for-byte the same fixture today, in CI, and on someone else's laptop. Change the seed for different data; reorder or rename nothing to keep what you have. Each row is internally consistent: the email and username are built from that row's own first and last name. Dates draw from a fixed 2020-01-01 – 2025-12-31 window rather than a rolling one for the same reason, and can be narrowed per field. SQL emits a single multi-row INSERT with quotes doubled and awkward identifiers delimited. Capped at 5,000 rows.
Test fixtures need to look like real records without being real records. They also need to be stable: data that changes every run makes a failing test impossible to reproduce.
Pick the fields you want and a row count, and the output comes back as JSON, CSV or SQL inserts. Everything derives from a seed you control, so the same seed produces byte-identical output every time.
What people open it for
- Filling a development database with plausible records
- Building a stable fixture for a test suite
- Producing sample rows for a demo or a screenshot
In the terminal
tools mock
Every utility is also a command in the desktop's shell.