Tide is an open-source schema migration tool that's fast, type-safe, and has a real rollback story. Works with Postgres, MySQL, and MSSQL. Zero dependencies. Single static binary.
$ tide new add_user_billing_fk
✓ created migrations/20251210_121418_add_user_billing_fk.sql
✓ created migrations/20251210_121418_add_user_billing_fk.down.sql
$ tide up
→ 20251210_121418_add_user_billing_fk applied 41ms
→ 20251208_184002_billing_accounts applied 112ms
$ tide status
8 migrations applied · 0 pending · schema clean · OK
safeEvery migration runs inside a transaction on databases that support them. Failure rolls back cleanly. No half-applied schemas.
fastSingle static binary, <8 MB. Starts in under 40ms. No runtime, no Ruby, no JVM. Perfect for CI pipelines and lightweight containers.
rollbackEvery up migration gets a matching down. Dry-run mode shows the exact SQL. Point-in-time rollback in one command.
4 enginesSame migration tool across dev, staging, and prod. Dialect-aware SQL validation catches mistakes locally.
ciExit codes that match what your CI expects. JSON output for scripting. Drift detection as a GitHub Action. No surprises in prod.
hooksRun seed data, smoke tests, or a schema-dump verification after every migration. Roll back the whole release if anything fails.
Install, write your first migration, and deploy it to Postgres. 8 minutes.
Zero-Downtime Migrations →Expand-contract patterns for changing schemas without taking prod offline.
CI & GitOps Recipes →GitHub Actions, GitLab pipelines, and the recommended deploy-gate pattern.
Full CLI Reference →Every command, every flag, every exit code. Single-page reference.
# macOS / Linux
$ curl -sSL tide.sh | sh
# Windows (PowerShell)
> irm https://tide.sh/install.ps1 | iex
# Or via homebrew / scoop / apt
$ brew install tide