vs. other tools
Database subsetting is a well-trodden space. CloneDB’s bet is that the engine is largely solved — the differentiation is in the workflow around it: a config generated from your schema and kept in sync as it drifts, and a re-runnable upsert that refreshes a live dev database in place.
At a glance
Section titled “At a glance”| Tool | Lang | Subset closure | Config | Load model | Masking |
|---|---|---|---|---|---|
| CloneDB | Rust | upstream + opt-in downstream cascade | generated, regeneratable (keeps edits) | idempotent upsert into a live DB, or SQL dump | planned (per-column seam) |
| Greenmask | Go | bidirectional, null-aware | hand-written YAML | dump → pg_restore | rich |
| Tonic Structural | SaaS | bidirectional (patented) | UI | upsert or dump | rich |
| Jailer | Java | bidirectional, restriction-gated | editable re-runnable model | SQL / DbUnit export, or upsert in place | limited |
| fixturize | Go | bidirectional (composite/cyclic) | hand-written | truncate + load | PII auto-discovery |
Redgate rgsubset | .NET | FK-aware (auto-detected) | editable, auto-classified | provision via clone | yes (rganonymize) |
Every tool above is actively maintained as of mid-2026. What sets CloneDB apart is the combination of two things — neither is unique on its own: a config generated from the live schema and regenerated while preserving your edits, and an idempotent upsert that refreshes a live dev database in place. Jailer already re-derives its data model from the schema and preserves your edits, and both Jailer and Tonic offer an upsert-style write. But, as far as we can tell, no other tool pairs a single regeneratable config with a re-runnable, referentially-consistent subset refresh into a live database.
What’s unique to CloneDB
Section titled “What’s unique to CloneDB”- Config lifecycle. Generate a single config from your schema, then regenerate to absorb schema changes while preserving your filters, virtual FKs, and comments in place. Greenmask and fixturize have you hand-author subset conditions. Jailer goes furthest of the others — it auto-generates and re-derives its data model (tables + FK associations) from the live schema — but keeps that separate from a hand-authored extraction model; CloneDB folds the schema-derived structure and your edits into one regeneratable file.
- Refresh model. A re-runnable upsert into a live dev database, rather than a one-shot dump/restore. Tonic and Jailer also offer an upsert (add/update) write mode; what’s distinct here is pairing that write with the regeneratable config, so a single command refreshes a referentially-consistent subset in place.
- Workflow ergonomics. Named scopes and ad-hoc CLI seeds (“pull this one account”) for
everyday development, plus
--watch/ scheduled refresh. - Cloud-native auth. First-class AWS IAM, GCP IAM, Secret Manager, env,
.env, and script credential providers — auth is a pluggable seam, not a bare connection string. - One Rust binary. No
pg_dumpshell-out, no server, no JVM. There is no other actively maintained Rust subsetter — the prior Rust entrant, Replibyte, is unmaintained (see below).
Where the others lead (today)
Section titled “Where the others lead (today)”- Anonymization. Greenmask and Tonic ship rich PII transformer libraries (fixturize and Redgate mask too). CloneDB v1 builds the per-column seam but defers the maskers.
- Schema/DDL rebuild. Tools that wrap
pg_dump/pg_restore(Greenmask) or provision a clone (Redgate) can rebuild a database from nothing. CloneDB loads data into a target whose schema already exists (e.g. from your migrations). - Maturity & UI. Jailer (since 2007) and Tonic’s hosted UI are more battle-tested and friendlier for people who don’t want a CLI.
Subsetting vs. cloning
Section titled “Subsetting vs. cloning”A related but different category clones or branches a whole database rather than reducing it — Postgres.ai Database Lab, Neon branching, Supabase branching. Postgres.ai and Neon hand you a full copy almost instantly (copy-on-write), but it’s the entire dataset (Supabase branches instead start empty and replay your migrations); either way there’s no referential slice, no size reduction, no PII removed. CloneDB instead produces a small, referentially-correct subset you can hand to a teammate or load anywhere. If you want a fast full copy or a fresh branch, reach for those; if you want a small valid slice, that’s subsetting.
Also in the space
Section titled “Also in the space”A few once-prominent tools are no longer good options, but you’ll see them referenced:
- Neosync — subset + mask + orchestration (Go server + Temporal), now discontinued: acquired in August 2025, the repo is archived, and the hosted service is offline.
- Snaplet — the real-data snapshot/subset tool was archived in 2026 after the company
wound down; the surviving
seedproject is synthetic-data only. - Replibyte — the earlier Rust entrant, now unmaintained (no release since 2022, last commits in 2024); subsetting shipped for Postgres but was never fully completed.
- Tonic Condenser (OSS Python) and pg_sample (Perl) — older OSS subsetters, now effectively dormant.
When to use what
Section titled “When to use what”- Referentially-correct dev slice you refresh often, with a config that survives schema drift, loaded into an existing schema → CloneDB.
- Heavy built-in anonymization, or rebuilding a full database including DDL today → Greenmask (OSS) or Tonic (commercial).
- A mature GUI to explore relationships and extract by hand → Jailer.
- A fast full copy or branch rather than a subset → a thin-clone / branching tool (Database Lab, Neon, Supabase).