Mockaroo alternative: generate from your schema, not a field form

Mockaroo's browser form is the fastest way to get a flat file of plausible values, and it is good at that. It is also not schema-aware: you rebuild every column by hand, and nothing checks that your rows relate. Weavori reads your live PostgreSQL schema instead and writes referentially intact rows straight into the target database.

A Mockaroo alternative has one job for a PostgreSQL team: stop rebuilding the same column definitions by hand and read the schema that already exists. Mockaroo is a browser-based generator with a visual field builder and more than 100 data types. It is very good at that, and it is not schema-aware. No tables, no foreign keys, no distribution sampling, no CLI. This page covers where that boundary bites, and what generating from the schema looks like instead.

What Mockaroo does well

Credit where it is due. Nothing else in this category gets you to a first file as fast: open a browser, pick fields, download. Format coverage is wide (CSV, JSON, SQL, Excel, and XML), it can derive field names from an example file, and its mock API product line has no equivalent here.

If you need a plausible flat file in thirty seconds and the rows do not have to relate to each other, use Mockaroo. That is a real job and it does it well.

Where a field form stops working

Every limit traces back to one design choice. Mockaroo generates from your description of the data, not from the data's own structure.

  • No introspection. Your database is the source of truth about your columns. With a form, your memory is.
  • No foreign keys. There is no concept of a parent row, so insert ordering and reference validity are your work, every migration.
  • No distribution sampling. Values come from a type library with uniform randomness. A status column that is 70% active generates as an even spread.
  • No CLI. A REST API exists for programmatic downloads, but pipelines have to script HTTP calls and move files out of band.
  • Row caps by tier. Per-file and per-day limits, with generation speed throttled on the lower plans.

Field-by-field vs schema-driven

MockarooWeavori
InputA field form you build by handYour live schema, or pasted CREATE TABLE statements
Foreign keysNo concept of themDependency graph, parents generated before children
Value shapeUniform randomness from a type librarySampled from column statistics in pg_stats
InterfaceBrowser, plus a REST APICLI, CI pipelines, MCP server for AI assistants
OutputA file you download and loadWritten into the target database via COPY, or stdout
Row limitsPer file and per day, by tierNo per-run cap
PriceFree tier, then $60 to $7,500 per yearFree tier, then $15/month flat

Foreign keys without a script

A description of the data has the same weakness as a seed script: it goes stale. A form you filled in last year still produces last year's columns.

Foreign keys are the mechanical reason that matters. Children must reference parent rows that do not exist yet, so something has to decide the order. Hand-built approaches solve it by hard-coding IDs, querying the parent after each insert, or skipping the constraint and finding out in a test failure later.

When the schema is the input, the order is not a decision. It is computed: read the foreign keys, build the dependency graph, generate parents before children, and stream a cache of generated parent IDs forward. Every child references a real parent.

Value shape matters more than it looks

Uniform randomness is easy to spot in review. A status column spread evenly across four values, or order totals flat across a range, reads as generated immediately. It also behaves nothing like production in a query plan.

Weavori samples the same statistics PostgreSQL's own planner uses: most-common values and their frequencies, histograms for numeric columns. A column that is skewed in production stays skewed in the generated copy. It also holds cross-column rules, so timestamps order correctly, nullable columns stay conditionally null, and CHECK constraints pass.

Running it in a pipeline

Automation is where the two tools diverge most, because a browser form has no place in a build.

CI: generate into the test database on every push
$ weavori generate $TEST_DATABASE_URL --rows 5000 --output json

API-key authentication for headless runs, plain and json output for logs, standardized exit codes for pipeline branching, and offline license validation so runners on restricted networks never phone home. The CI/CD guide covers GitHub Actions, GitLab, CircleCI, and Jenkins.

Trying it on your own schema

$npx --yes @weavori/cli generate postgres://localhost:5432/mydb

If the schema is not deployed yet, paste the DDL instead. Weavori parses CREATE TABLE statements and generates from those, with no database connection required. That path is also the fastest way to evaluate it against a schema you know well.

i

Not ready to write rows?

Estimate first. The estimate command reports row counts and predicted runtime per table without writing anything to your database.

When to stay on Mockaroo

If you want a flat file of plausible values with nothing installed, and your rows do not need to reference each other, Mockaroo's form is faster and free at that size. If you need mock APIs, it is the only one of the two that does it.

Stay there for those jobs. Switch when your data has to hold together across tables, or when it has to run without a human in the loop.

Frequently asked questions

Quick, direct answers to the questions developers ask.

Ready to generate your first dataset?

Install Weavori in one command and connect to any PostgreSQL database.

$npm install -g @weavori/cli
macOS · Linux · Windows/No dependencies required

No credit card required. Start with a 14-day free trial of Pro, then free tier or subscribe.