Mockaroo is the gold standard of test-data generators, and this guide starts by saying so: 150+ field types (localized names, geo coordinates, regex patterns, custom formulas), output as CSV, JSON, SQL inserts, Excel or XML, and you can download files from the browser without even signing up. If your job is "produce a big file of realistic rows", keep using Mockaroo โ we won't pretend to match that catalogue.
The walls show up when the data needs to live somewhere (all verified against Mockaroo's official docs and pricing page, July 2026):
X-API-Key on every request, and runs at "1x speed" (paid plans are 8x). 200/day is about one request every 7 minutes of a working day โ a React dev server with hot reload can burn that before lunch.POST to, page through, or filter. The usual workaround is Mockaroo โ download โ json-server / S3 / hand-rolled Express โ now you're hosting your fake data yourself.Mockaroo does have a Mock APIs feature (custom URLs, request-parameter handling, simulated errors โ genuinely useful), but it shares the free plan's request cap, and responses come from your schema definitions rather than a datastore you can write to. The moment the fake data has to act like a database behind an API โ create, edit, delete, filter, and still be there tomorrow โ you want a different shape of tool.
Mockbird's public demo is a live, persistent mock API โ and since spreadsheets are the lingua franca here, it speaks CSV both ways:
curl 'https://HOST/m/demo/products?limit=3' # JSON, like any API
curl 'https://HOST/m/demo/products?mock_format=csv&select=name,price,inStock'
# id,name,price,inStock
# 1,Team Month,155.82,true
# 2,Light Stone Life House Work,250.62,true
# ...
This is the migration path: generate your rows in Mockaroo (their generators are better than ours โ use them!), then host the result here. Take any CSV โ this one uses Mockaroo's default columns:
curl -X POST 'https://HOST/api/projects/import?resource=people&name=my-api' \
-H 'content-type: text/csv' --data-binary @MOCK_DATA.csv
# โ {"id":"abc123","adminKey":"KEY",
# "baseUrl":"https://HOST/m/abc123",
# "resources":[{"name":"people","records":1000, ...}]}
Every row is now a typed record behind a real endpoint โ columns are type-sniffed (numbers stay numbers, booleans stay booleans, zero-padded codes stay strings), your id column is preserved, and all of this works immediately:
curl 'https://HOST/m/abc123/people?last_name_like=hop' # substring filter
curl 'https://HOST/m/abc123/people/1' # a single row, by id
curl -X POST 'https://HOST/m/abc123/people' \
-H 'content-type: application/json' \
-d '{"first_name":"Alan","last_name":"Turing","email":"alan@example.com"}'
# โ persisted with the next id; GET it back tomorrow, it's still there
curl 'https://HOST/m/abc123/people?mock_format=csv' # full round-trip: CSV back out
Sorting (?_sort=last_name), pagination (?_page=2&_limit=50), full-text search (?q=turing), range filters (?salary_gte=100000), GraphQL, types.ts/Zod/OpenAPI/Postman exports โ all included, all free. Up to 1,000 records per collection (a familiar number, except ours is a storage limit on a live API, not a per-download cap โ and you get 10,000 requests/day against it).
Prefer a UI? The dashboard's import panel takes a pasted or picked CSV file โ no terminal involved.
curl -X POST https://HOST/api/projects \
-H 'content-type: application/json' -d '{"preset":"ecommerce"}'
# โ products, orders, customers, reviews โ seeded and live in one call
Or define your own schema with our ~40 field types (names, emails, prices, dates, UUIDs, cities, enum-style oneOfโฆ). It's a fraction of Mockaroo's catalogue โ but each seeded collection is a persistent, writable API from the first second.
| Mockaroo | Mockbird |
|---|---|
| Schema (field list + types) | Resource with fields (or a preset / CSV import that infers them) |
| Download 1,000-row file | GET /people?mock_format=csv โ same file shape, from live data, any time |
Generate API (X-API-Key, 200 req/day free) | Every project URL, no key, 10,000 req/day |
| Mock APIs: custom URLs | Custom routes with templating ({{params}}, {{now}}, {{uuid}}) |
| Mock APIs: simulated errors | ?mock_status=500, ?mock_delay=2000, ?mock_chaos=0.3 on any endpoint |
| Datasets (upload for lookups) | CSV / JSON / db.json / HAR / Postman / OpenAPI import โ rows become records verbatim |
| โ (no persistence) | POST/PUT/PATCH/DELETE persist; snapshots save/restore whole datasets |
| โ (no auth simulation) | Mock JWT login against your seeded users |
| Mockaroo (free) | Mockbird | |
|---|---|---|
| Field-type catalogue | โ 150+, localized, regex, formulas | ~40 types |
| Output formats | โ CSV, JSON, SQL, Excel, XML | JSON, CSV, db.json + OpenAPI/Postman/TS/Zod schema exports |
| Rows | 1,000/file (100k at $60/yr) | 1,000 stored records per collection, free |
| API requests | 200/day, signup + API key | โ 10,000/day per project, no signup, no key |
| Data persists behind a URL | โ (files / per-request generation) | โ it's a live datastore |
| CRUD writes | โ | โ persisted, webhooks fire, inspector logs them |
| Filter / search / sort / paginate | โ (you get what you generated) | โ any field, ranges, substring, full-text |
| GraphQL | โ | โ same data, typed schema |
| Self-host | docker image at $7,500/yr (Enterprise) | eject anytime: db.json export โ npx json-server |
Fair is fair: for generating a file of rich, localized, formula-derived fake data, Mockaroo wins and it isn't close. Use us when those rows need to sit behind a URL and behave like your future backend. The two compose nicely โ Mockaroo generates, Mockbird hosts.
This page is written by the Mockbird maker โ bias disclosed. Mockaroo facts (1,000 rows/file free, 200 API requests/day, X-API-Key requirement, $60/$500/$7,500 yearly tiers, 1x vs 8x speed) taken from mockaroo.com's official pricing and docs pages, July 2026 โ check them for current numbers. Every Mockbird command above was run against production before publishing.
More guides: CSV โ REST API in one curl ยท randomuser.me alternative ยท host any JSON as an API. Create your API โ