A Snaplet alternative that generates the data instead of copying it
Snaplet shut down in August 2024. The hosted service stopped and the team moved on, leaving projects that seeded from it looking for a replacement.
If you are reading this, you probably have a seeding step that used to work and now needs replacing. This page is meant to be useful for that, including the parts where Misata is the wrong answer.
What happened
- ·August 2024: Snaplet announces it is shutting down.
- ·Its seed library was open-sourced, so existing scripts can still run, but the product is no longer maintained or hosted.
- ·Teams that relied on copying and transforming production data lost the hosted half of that workflow.
Snaplet was good at what it did
Copying a real database and transforming it was genuinely convenient when you already had production data you were allowed to touch.
The seed API was pleasant, and its type-safe schema awareness set an expectation the category still measures itself against.
Two open-source test-data tools closing inside twelve months says something about the category rather than about either team. Individual developers rarely pay for seeding, and the budget that does exist sits with compliance, which wants a different product. Worth knowing when you pick the next one.
Where Misata is different
Nothing to copy in the first place
Snaplet's core motion started from a real database. Misata generates from a specification, so there is no production snapshot to obtain, anonymise, or justify to anyone. That removes the compliance conversation rather than managing it.
You declare what must be true, and it is checked
Beyond shapes and types, you can state facts the data must satisfy: this month's revenue totals exactly this, these segments split exactly so, this parent's total equals the sum of its children through two joins. An independent SQL engine then verifies the emitted rows.
Open source, and it stays on your machine
The engine is MIT licensed and runs locally, which is the specific failure mode that stranded Snaplet users: a hosted dependency that can be switched off. A local library cannot be shut down.
Where Misata is the wrong answer
If what you actually need is your production data with names swapped, Misata is not that tool and will not pretend to be. It never sees your data, so it cannot preserve the quirks of your real rows. Misata suits you when the data has to satisfy a specification, not resemble a specific database.
Is the data any good?
Fair question to ask of anything that generates rather than copies. There is a public benchmark: an 11-table schema with an M:N junction and a diamond dependency, checked by 110 SQL assertions that DuckDB runs against the emitted files. Misata passes 109 of 110, and the one failure is shown rather than hidden. A careful hand-written Faker script scores 70.
See every assertionMoving over
A Snaplet seed script describes tables and relationships you have already thought through. That thinking transfers.
- 1pip install misata
- 2Point it at your existing schema: Misata reads a SQL schema, a Prisma schema, or a live Postgres or SQLite database and builds the table graph for you.
- 3Add the facts that matter for your case, such as a monthly total or a status mix, as declarations rather than as loops in a script.
- 4Seed with `misata seed`, which inserts parents before children and verifies every foreign key against the database afterwards.

