v3.4.0 · MIT license · 12.8k stars on GitHub

The database
migration tool
you meant to build.

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.

$ curl -sSL tide.sh | sh
~/projects/acme-api
$ 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
WHY TIDE

Boring migrations are good migrations.

safe

Transactional by default

Every migration runs inside a transaction on databases that support them. Failure rolls back cleanly. No half-applied schemas.

fast

Built in Go

Single static binary, <8 MB. Starts in under 40ms. No runtime, no Ruby, no JVM. Perfect for CI pipelines and lightweight containers.

rollback

Real rollback semantics

Every up migration gets a matching down. Dry-run mode shows the exact SQL. Point-in-time rollback in one command.

4 engines

Postgres · MySQL · MSSQL

Same migration tool across dev, staging, and prod. Dialect-aware SQL validation catches mistakes locally.

ci

CI-friendly

Exit codes that match what your CI expects. JSON output for scripting. Drift detection as a GitHub Action. No surprises in prod.

hooks

Pre & post hooks

Run seed data, smoke tests, or a schema-dump verification after every migration. Roll back the whole release if anything fails.

12.8kStars on GitHub
382Contributors
5.4MInstalls / month
v3.4.0Latest release

Get started in 60 seconds.

# macOS / Linux
$ curl -sSL tide.sh | sh

# Windows (PowerShell)
> irm https://tide.sh/install.ps1 | iex

# Or via homebrew / scoop / apt
$ brew install tide
✏️ Edit on Tilkly