Rowsmith, Faker or Mockaroo: which to use
Checked 2026-10-20; prices and features can change. Corrections: business@meiorz.tech.
When each one is the better choice
Use Faker when your tests run in one language and you want nothing on the network. Faker is a library: pip
install Faker (or npm install @faker-js/faker), import it, and it runs in-process with no server, no rate limit
and no account. It ships many locales, so names, addresses and phone numbers come out in the language of your choice.
It is free and works offline for as long as you keep the package installed. Its seed is stable within one installed
version; Faker's own documentation asks you to pin the package to the patch number if your tests hardcode seeded
values (see the citation below). For most unit tests that is the right trade, and Faker is the right tool.
Use Mockaroo when you want a browser, very large files or your own formulas. Mockaroo is a web application: you design a schema in the browser, preview it, and download CSV, JSON, SQL, Excel, TXT or XML. Its formula language lets you compute one column from another. Its paid tiers are built for volume: Silver ($60/year) raises the file size to 100,000 rows and the API to 1,000,000 records a day, and Gold ($500/year) raises both to 10,000,000. If your need is a 50-million-row load file designed by someone who does not write code, Mockaroo is the right tool.
Use Rowsmith when the data has to stay the same after you upgrade, from every language. Rowsmith is an HTTP API
with a seed. Pin the output version, and for the same request and seed every data endpoint returns the same bytes for
the same output version and for as long as the service runs (for the payment sandbox, the same seed and call
sequence, apart from its random sandbox id); a golden test checks each version's bytes on every build,
and a retired version answers 409, never different bytes. The same call gives the same rows from any HTTP client that sends a
User-Agent header (Python's urllib needs one set; see the README), so one fixture serves every service in a polyglot system. The free tier needs no account and no key.
There is an MCP server (npx -y rowsmith-mcp, listed on the official MCP Registry) for Claude Desktop, Cursor and
other agents. Rowsmith also offers two things: an invalid-values catalogue (/v1/invalid) that returns emails,
cards, addresses, IBANs and SSNs that are invalid on purpose, each with the reason, and a payment sandbox that never
moves money, accepts only card numbers from Stripe's published testing list, and deletes itself one hour after it is
created. If your tests need a fixed dataset that survives upgrades, Rowsmith is the right tool.
Side by side
| Faker | Mockaroo | Rowsmith | |
|---|---|---|---|
| Install | A package: pip install Faker or npm install @faker-js/faker | Nothing; a browser. The API is HTTPS | Nothing; HTTPS calls. Optional: npx -y rowsmith-mcp (MCP) or pytest-rowsmith |
| Where it runs | In your process, offline | Mockaroo's servers | Cloudflare Workers, at testdata-api.re-jam620.workers.dev |
| Seed stability across upgrades | Stable within one installed version; Faker asks you to pin to the patch number | We found no statement on its pricing or docs pages (read 2026-10-20) | Pin version: the same bytes for the same request, seed and output version, for as long as the service runs (for the payment sandbox, the same seed and call sequence, apart from its random sandbox id); a retired version answers 409 |
| Output formats | Values in your language's types; CSV or files are yours to write | CSV, JSON, SQL, Excel, TXT, XML | CSV, JSON, SQL INSERTs; related tables as SQL or JSON |
| Price | Free (open source) | Free: 1,000 rows per file, 200 API requests a day. Silver $60/year. Gold $500/year. Enterprise $7,500/year | Free: 200 calls per caller per day, 500 rows per call. Pro $8/month or $60/year. Team $29/month or $240/year |
| Account needed | No | API calls need an API key; Mockaroo's docs say "Sign up to obtain an API Key" | Free tier: no account, no key. Pro and Team: a key |
Prices are the public list prices on 2026-10-20 and can change; the links at the end are the sources.
How to check our claim
Run the request from our README, with your own User-Agent, and look at the headers:
curl -s -D - -A 'my-tests/1.0' https://testdata-api.re-jam620.workers.dev/v1/generate -H 'content-type: application/json' \
-d '{"rows":20,"seed":42,"format":"csv","columns":[{"name":"order_id","type":"sequence","prefix":"ord_","pad":4},{"name":"email","type":"email"},{"name":"total_usd","type":"decimal","min":1,"max":500}]}'
The answer carries X-Output-Version: 1 (the generator version that produced these bytes), X-Output-SHA256 (the
sha256 of the body) and X-Reproduce (the same request with every default filled in and version pinned). Add
"version":"1" to the body, run it again next month or from another language, and compare the sha256: the same hash
is the same bytes. A version Rowsmith no longer serves answers 409 instead of different data. On 2026-10-20 this call
returned x-output-version: 1 and x-output-sha256: 05ccfc5c94a8c5ac6d72630cb59f1c51e7011b00b8a1eeb889576f3c2ac6ef3c.
Faker's own version note, from its documentation on seeding: "make sure you pinned the version of Faker down to the patch number" (https://faker.readthedocs.io/en/master/index.html#seeding-the-generator).
Sources
- Rowsmith: the README at https://github.com/meiorz/rowsmith-mcp; https://testdata-api.re-jam620.workers.dev/llms.txt; https://testdata-api.re-jam620.workers.dev/pricing.json; the live call above (2026-10-20 23:41Z). Paid-tier prices: /pricing and /pricing.json (pro 8/60, team 29/240).
- Faker: https://faker.readthedocs.io/en/master/index.html#seeding-the-generator (seeding and pinning); https://fakerjs.dev/ (JavaScript port).
- Mockaroo: https://mockaroo.com/pricing (Free 1,000 rows per file and 200 API requests/day; Silver $60/year; Gold $500/year; Enterprise $7,500/year); https://mockaroo.com/docs (API key, "Sign up to obtain an API Key"; formats json, csv, txt, sql, xml); https://mockaroo.com/ (CSV, JSON, SQL and Excel; formulas).