Visual schema diff & sync for desktop

See exactly what changed in your database — even when you forgot.

Local, staging, production — schemas can drift at any time. DiffyPick compares any two databases, shows the diff in 5 seconds, and syncs them safely.

DiffyPick comparing two MySQL databases: a color-coded diff list and the generated sync SQL side by side

Works with the databases you already run

MySQLMariaDBPostgreSQLSQL ServerSQLite

And it compares far more than table and column names — indexes, foreign keys, views, triggers, stored routines and more.
See everything DiffyPick compares →

Your migration files are lying.

Git made deploying code dramatically easier.

Deploying schema changes, though, still means eyeballing two structures side by side, or running migrations under strict discipline —

Exhausting either way.

The day we stopped opening migration files

Three years into the project, hundreds of migration files. Nobody reads them anymore. The truth only lives inside the database.

The hotfix SQL that never became a migration

Production incident, an ALTER typed straight into the console. It worked — and quietly broke every future environment build.

A column nobody remembers adding

Five people share the staging database. One day there is a new column. Who added it? When? For what?

Every check was green

Migration history was managed properly. Drift happened anyway — and no status check showed it.

Flyway and Liquibase manage history. DiffyPick shows reality.

Where it earns its keep

Multiple developers, multiple environments — applying to production, reproducing issues in a test environment, pulling in remote changes. Every day has a use for it.

Absorb per-environment drift in one pass

Day-to-day work happens on everyone’s own local Docker database. When it drifts from the shared or production environment, compare and apply — pull remote changes into local, or push yours out. Either direction, one pass.

Sanity-check every deploy

Did the migration actually leave the database the way you intended? Compare alongside your code deploys and replace “it should be applied” with proof.

Row sync, made safe

Reload a stale test environment straight from production with replacement sync. Only tables without structural diffs can be synced — pushing rows into a mismatched shape is impossible by design.

Visual diff. Visual selection. No options to tune.

DiffyPick turns this heavy, tedious responsibility into “pick and sync”.

Compare two databases, and the diff is extracted automatically — select what you want applied and run it.

See the diff. Pick what to apply.

Every difference is one row: color-coded, searchable, individually selectable. Even a large diff list — pin down exactly what you want to apply.

Diff rows with checkboxes and color-coded change tags

Dependencies, assembled for you.

Run SQL in the wrong order and it fails partway through. With DiffyPick, you do not have to think about the order — check the changes you want applied, their dependencies are selected alongside them, and the SQL is automatically arranged into a safe execution order.

For example:

  • Parent tables first when creating; child tables first when dropping.
  • When dropping a column, drop the indexes and constraints that use it first.

All of that ordering is handled for you.

Preview the exact SQL before it runs.

The SQL you see is the SQL that runs, statement by statement. Pick a syntax highlighting theme that suits you — it is a setting.

Generated sync SQL with syntax highlighting and an execute button

Guardrails before every execution.

Critical blockers stop the run. Advisories tell you what to check. Choices that are known to fail simply can’t be picked.

Pre-execution confirmation showing critical warnings and advisories

Sync, re-compare — zero diffs.

Apply the diff, then compare again. When it says “no differences”, you are actually done.

Comparison result after sync showing “no differences”

Cherry-pick your schema changes, intuitively.

Pick the databases, pick the diffs, run. This fast, every day.

Everything between “compare” and “done”, handled

The unglamorous parts between you and a clean sync — all taken care of.

FK-aware ordering

CREATE parents before children, DROP children before parents — automatically.

Cycle detection

Circular references are detected and FK checks are temporarily disabled for the run.

Preflight checks

Type casts, NOT NULL and UNIQUE constraints are sampled against the real data before execution.

Backup, one click away

Take a full DB / schema backup right from the confirmation dialog. Restore from history if anything goes wrong.

Statement-level execution & progress

Statements run one by one with live progress. On failure, execution stops on the spot and shows you exactly what happened.

Heavy ALTER warnings

Slow operations on large tables (100k+ rows) are flagged before you commit to them.

Multi-hop SSH tunnels

Multi-hop bastion setups are supported — chain through to reach the target database.

SSL/TLS client certs

CA, client certificate and key — per connection.

Data sync

Replacement sync (TRUNCATE + INSERT) with chunked transactions and native bulk loading.

Cross-dialect conversion

Type mapping with decomposition / JSON fallback rules carries structures across DBMS.

HTML reports

Export the diff as a report. A single HTML file — share one file with your team for review.

English & Japanese

Fully localized UI, warnings included. More languages are on the way.

Safe to point at production

A tool that alters schemas should err on the side of caution. DiffyPick is designed to fail safe.

Fail-closed by design

SQL that needs manual attention cannot be executed — the run is blocked, not warned away.

Everything surfaced before execution

Critical blockers in red, advisories in yellow — all in one confirmation screen, never buried in logs.

A way back

Back up the whole DB or schema first, restore it from history if you need to.

Your data never leaves your machine

No telemetry. No cloud sync. Your schemas, queries and results are never uploaded. Connection credentials are encrypted with AES-256-GCM, and the key itself is wrapped by the OS key store — Keychain on macOS, DPAPI on Windows, libsecret on Linux — so copying the files off the machine gets you nothing.

The only outbound requests are license verification and update checks.

Execution confirmation dialog with per-item list, warnings and backup button

Built for the age of AI-written code

AI writes SQL. Someone has to check it.

Migrations and SQL are increasingly machine-written. The more SQL gets generated, the more you need a place where a human can see exactly what will change before it hits production. DiffyPick is that place.

More non-DBAs touch databases than ever

With ORMs and service ownership, schemas belong to app developers now. DiffyPick is built for engineers who touch databases — not only for database engineers.

Schema migration to a different DBMS

From MySQL to PostgreSQL. Or SQL Server to MariaDB.

DiffyPick converts table and column structures between dialects. Engine-specific objects are, of course, out of reach in principle — but as groundwork for a cross-DBMS migration, it does the heavy lifting.

Every pair, both directions: 50 routes, round-trip tested until the diff comes back empty.

Sync direction label showing a MySQL source and a PostgreSQL targetCross-dialect comparison between a MySQL and a PostgreSQL database

Pricing

One license, one named user — personal or commercial, any use case. Current rates are launch pricing.

Free

$0
  • SQLite connections only
  • Same features as the paid plans
  • No account, no timer
Download

Monthly

Launch pricing
$18/month

Prices exclude applicable sales tax/VAT.

  • MySQL / MariaDB / PostgreSQL / SQL Server / SQLite
  • All features included
  • Cancel anytime
Buy a license

2-Year

Launch pricing
$360/2 years

Prices exclude applicable sales tax/VAT.

  • MySQL / MariaDB / PostgreSQL / SQL Server / SQLite
  • All features included
  • $15/month equivalent — 17% off monthly
  • Renews every 2 years
Buy a license

On both the Monthly and 2-Year plans, as long as you don't cancel (including payment failure), you keep the prices above even after launch pricing ends.

FAQ

Which platforms are supported?

macOS, Windows and Linux.

Can I try it for free?

Yes. SQLite connections only: no feature limits, no trial period. No account, no credit card.

Does it replace Flyway / Liquibase?

Either way works — side by side or DiffyPick on its own. But when you split the roles — your migration tool for history, DiffyPick for what the database actually looks like right now — your existing migration files stay healthier.

Is it safe to point at production?

A preflight check runs on the confirmation screen before execution. In most cases there is nothing to worry about — and when there is a risk or warning, it is shown clearly. A backup is one click away right before executing, so if you are unsure, take one first.

Read the full FAQ →

From the designer

Across the many projects I have moved through, I kept seeing the same thing: migration files quietly decaying into something nobody trusted.

Looking at the development flow, the real schema does live only inside the database — yet there are surprisingly few ways to compare it, and the options that do exist are built around UIs so complex that only database professionals can really drive them.

So I designed a tool that extracts the diff automatically, lets you pick, and applies changes safely, with as little visual and operational load as possible.

If you have ever wished you could ship database changes as easily and reliably as a Git code deploy — without migrations — DiffyPick should feel familiar from the first minute.

Come back from another task — and see the diff at a glance.

Download it and start by comparing the databases you already run.