Skip to content
SPECIFICTION
Get listed

dbmate

github.com

Free plan WindowsmacOSLinuxSelf-hosted
Visit github.com
Spec score 8.6 #3 of 32 in Database Migration Tools

What it is

dbmate is a free, open-source command-line tool for keeping database schemas in sync across developers and production servers. It works independently of application language and can be used with Go, Node.js, Python, Ruby, PHP, Rust, C++, and other languages or frameworks. Migrations are plain SQL in timestamp-versioned files. Commands create, apply, and roll back migrations, check status, dump or load a schema, and wait for a database server. The project lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse, and documents BigQuery connections and Spanner support for databases using the PostgreSQL dialect. Migrations run atomically in a transaction by default when the database supports transactions, though individual migration blocks can opt out. dbmate can maintain a schema.sql dump for source-control review and Git diffs; creating dumps relies on database client tools such as pg_dump, mysqldump, or sqlite3. It reads DATABASE_URL by default and can load environment variables from a .env file. Installation options include NPM, Homebrew, Scoop, a Linux binary, and Docker images. Go applications can use it as a library, and Go embed can package migrations into an application binary.

Spec sheet

Purpose
Dbmate is a database migration tool that keeps database schemas in sync across developers and production servers.Read 5 Oct 2026 · github.com
Support
The repository README links to a discussion of alternatives and a contribution guide, but the opened page does not specify a support service or response time.Read 5 Oct 2026 · github.com
License
The repository includes an MIT license.Read 5 Oct 2026 · github.com
Additional database support
The README also documents BigQuery connections and Spanner support limited to databases using the PostgreSQL dialect.Read 5 Oct 2026 · github.com
Commands
Its commands include creating, applying, and rolling back migrations, checking migration status, dumping or loading a schema, and waiting for a database server.Read 5 Oct 2026 · github.com
Configuration
Dbmate reads DATABASE_URL by default and has built-in support for loading environment variables from a .env file.Read 5 Oct 2026 · github.com
Database support
The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases.Read 5 Oct 2026 · github.com
Databases
The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse as supported databases.Read 5 Oct 2026 · github.com
Distribution
The README documents installation through NPM, Homebrew, Scoop, a Linux binary, and Docker images published to GitHub Container Registry.Read 5 Oct 2026 · github.com
Embedding
Dbmate can be used as a library in Go applications, and migrations can be embedded into an application binary using Go embed.Read 5 Oct 2026 · github.com
Framework support
It is a standalone command-line tool usable with Go, Node.js, Python, Ruby, PHP, Rust, C++, or other languages and frameworks.Read 5 Oct 2026 · github.com
Language independent
The standalone command line tool can be used with Go, Node.js, Python, Ruby, PHP, Rust, C++, or other languages and frameworks.Read 5 Oct 2026 · github.com
Limit
The README says Spanner schema dumps are not supported because pg_dump uses functions Spanner does not provide.Read 5 Oct 2026 · github.com
Migration transactions
Migrations run atomically inside a transaction by default when the database supports transactions, and migration blocks can opt out.Read 5 Oct 2026 · github.com
SaaS
The README says dbmate does not try to upsell users on a SaaS service.Read 5 Oct 2026 · github.com
Schema snapshots
Dbmate can keep a schema.sql dump updated for review in source control; dumping relies on database client tools such as pg_dump, mysqldump, or sqlite3.Read 5 Oct 2026 · github.com
Schema tracking
Dbmate can save a schema.sql file so schema changes can be diffed in Git.Read 5 Oct 2026 · github.com
Security and company details
The opened README and repository page do not state security certifications, support terms, company headquarters, or a founding date.Read 5 Oct 2026 · github.com
Security page
The repository's GitHub Security page is available, but the opened page does not state a security or compliance certification.Read 5 Oct 2026 · github.com
SQL migrations
Migrations are written as plain SQL in timestamp-versioned files, which the README says helps avoid version number conflicts among developers.Read 5 Oct 2026 · github.com
Transactions
Migrations run atomically inside a transaction, with per-migration transaction behavior configurable in migration files.Read 5 Oct 2026 · github.com

Plans and prices

dbmate Free Open-source database migration tool · no paid SaaS upsell stated Read 5 Oct 2026 · github.com

Every dbmate plan and price →

Strong points and limits

Strong points

  • Plain SQL migrations use timestamp-versioned files
  • Supports five listed database systems
  • Migrations use transactions by default when supported
  • Can create, apply, and roll back migrations
  • Free and open source

Limits

  • Schema dumps require database client tools
  • Spanner schema dumps are not supported
  • No specified support service or response time

Who it suits

dbmate suits developers who want SQL migration files and a standalone command-line workflow across different application languages. It can also fit Go applications that need migrations embedded in the binary.

Verdict

dbmate offers a language-independent migration workflow with rollback, transaction behavior, and schema snapshots. Check its database-specific limits and client-tool requirements if schema dumps are part of your process.

Where Specifiction places it

Alternatives to dbmateAll alternatives →