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.

When rows have to reference each other across tables, these are the tools worth knowing, ordered by how well they hold relational data together.

  • Weavori: schema-driven for PostgreSQL. It reads your live schema or pasted CREATE TABLE statements, resolves foreign keys by construction, samples value distributions from pg_stats, and writes referentially intact rows straight into the target database. The pick when data has to relate across tables and run without a human in the loop.
  • pg_dump: an exact copy of real rows. Full relational fidelity because it is the real data. It carries production PII, goes stale, and is heavy to move. The pick when you need literal production values, not generated ones.
  • drizzle-seed, prisma db seed, and other ORM seeders: relation-aware, but only inside one framework. They follow your model's relations and nothing else, and value realism is on you. The pick when the project already lives in that ORM.
  • Faker (faker-js, Python Faker): realistic individual values. Great at one name or one email, with no concept of tables or foreign keys, so relational integrity is your job. The pick when you already have a script and just need plausible column values.
  • generate_series() with random(): pure SQL, no tool, no dependency. Foreign keys, distributions, and insert order are all manual, and it breaks silently as the schema changes. The pick for a handful of throwaway rows.

For PostgreSQL, Weavori is the only one that reads your schema and guarantees the rows relate. Everything else asks you to describe the columns or wire the relationships by hand.

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 column statistics PostgreSQL's own planner uses. 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.