FREEDOM251

Freedom251 › Database Migration Tools

dbmate

Free plan LinuxMacSelf-hostedWindows

Visit dbmate Alternatives Pricing

dbmate's own site

What dbmate is

dbmate is a free, open-source database migration tool for keeping schemas in sync across developers and production servers. It is a standalone command-line tool, so it can be used with Go, Node.js, Python, Ruby, PHP, Rust, C++, and other languages or frameworks. Migrations are written as plain SQL in timestamp-versioned files. It can create, apply, and roll back migrations, report status, dump or load a schema, and wait for a database server. The README lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse, and documents BigQuery connections plus Spanner support for databases using the PostgreSQL dialect. Migrations run in a transaction by default when supported; individual migration files can opt out. dbmate can maintain a schema.sql file for source control review and Git diffs, though producing 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.

Who it suits

It suits developers and teams who want SQL-based database migrations across languages and frameworks. It can also suit Go applications that need migrations embedded in the application binary.

What it does well

  • Free and open source under an MIT license
  • Plain SQL migrations use timestamp-versioned files
  • Supports migration rollback and status checks
  • Can maintain schema.sql for source control review
  • Offers multiple installation options

What to know first

  • Schema dumps rely on database client tools
  • Spanner schema dumps are not supported

Limits

Spanner schema dumps are unsupported. Creating schema dumps also requires database client tools such as pg_dump, mysqldump, or sqlite3.

Plans

PlanBilled and limitsPrice
dbmateOpen-source database migration tool · no paid SaaS upsell statedFree

As github.com lists them, read 5 Oct 2026. The maker's own page has the final word.

Getting started

  1. Open the dbmate GitHub project page.
  2. Install through NPM, Homebrew, Scoop, a Linux binary, or a Docker image.
  3. Set DATABASE_URL for the database connection, or load environment variables from a .env file.
  4. Create a migration, then apply it with dbmate's migration commands.

dbmate is a free, open-source command-line tool for managing database migrations. It is best suited to teams that want plain SQL and a language-independent workflow. Its broad database coverage and rollback support are useful strengths, but schema dumps bring extra setup and a Spanner-specific constraint.

Overview

Dbmate uses timestamp-versioned SQL files for migrations, avoiding the need for developers to coordinate manually assigned version numbers. As a standalone CLI, it can sit alongside applications written in Go, Node.js, Python, Ruby, PHP, Rust, C++, or other languages and frameworks. That makes it a practical fit for mixed-language teams that prefer SQL over application-language migration code.

The command set covers creating, applying, and rolling back migrations, checking status, dumping or loading a schema, and waiting for a database server. Migrations run atomically in a transaction by default when the database supports transactions; individual migration blocks can opt out. That provides a sensible default while leaving room for migrations that need different transaction behavior.

Key features

Database coverage and schema snapshots

The documented database list includes MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse, with BigQuery connections and Spanner databases using the PostgreSQL dialect also documented. Dbmate can maintain a schema.sql snapshot for review and diffing in Git, which gives teams a way to see schema changes alongside code. Dumps depend on database client tools such as pg_dump, mysqldump, or sqlite3, so this feature requires setup beyond dbmate itself. Spanner schema dumps are not supported because pg_dump relies on functions Spanner does not provide.

Configuration and distribution

Dbmate 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 published to GitHub Container Registry. Go projects can also use dbmate as a library and embed migrations in an application binary with Go embed; that option is specific to Go rather than a general embedding path for every supported language.

Pricing

Dbmate is open source under the MIT license. Its dbmate plan costs nothing and includes the open-source database migration tool; there is no paid SaaS upsell. The free plan is therefore the complete stated offering rather than a trial or a capped entry tier, with no paid upgrade path described.

Platforms

Dbmate is listed for Linux, macOS, Windows, and self-hosted use. Its documented installation routes include packages, a Linux binary, and Docker images, making it possible to fit the tool into varied development and deployment environments.

Who it's for

Dbmate suits teams that want SQL migrations shared across developers and production servers without choosing a migration framework tied to one application language. It is especially relevant where rollback commands, transaction defaults, and Git-reviewed schema snapshots are useful parts of the workflow. Teams whose process depends on automated Spanner schema dumps should look elsewhere, and any team using schema dumps should account for the required database client tools.

Pros and cons

  • Pros: Plain SQL and timestamp-versioned files suit collaborative, language-mixed projects without manual version numbering.
  • Pros: Rollback, status checks, and transaction-by-default behavior cover important parts of migration operations.
  • Pros: A maintained schema snapshot can be diffed in Git, making changes easier to review alongside code.
  • Cons: Schema dumping requires external database client tools, adding dependencies to that workflow.
  • Cons: Spanner schema dumps are unsupported, limiting the snapshot workflow for those databases.
  • Cons: The project does not state a support service or response time, which may matter to teams needing a defined support commitment.

Alternatives

Compare dbmate with other Database Migration Tools if you are weighing different migration approaches. Choose Skeema if its free Community plan's tables, stored procedures and functions, and 18 linter checks better match a schema-management workflow; its Plus plan is $124 a month. Consider Atlas if you want an open-core tool with a free plan and trial, or FluentMigrator if an Apache-2.0 licensed framework distributed through NuGet is a better fit.

golang-migrate is another free migration tool with no paid plans or usage limits stated on its project pages. Goose is also a free, open-source database migration tool. Choose pgroll if PostgreSQL 14.0 or later and a single cross-platform binary suit your requirements, or Refinery if its MIT-licensed SQL toolkit and selectable database-driver features fit better. Bytebase Enterprise is worth considering if you need its stated Community allowance of up to 20 users and 10 database instances, or want a paid Pro plan billed per user at $20 a month.

Verdict

Choose dbmate if you want a free, language-independent CLI for plain SQL migrations, with rollback and a Git-friendly schema snapshot workflow. Its clearest strengths are flexible language fit and broad database coverage. Look elsewhere if Spanner schema dumps are essential, or if you need a defined support service rather than a self-managed open-source tool.

Verdict

dbmate provides migration management through a standalone CLI, with broad database and language coverage. Check the documented client-tool requirement for schema dumps and the Spanner dump limitation against your workflow.

Questions

How much does dbmate cost?

dbmate is free and open source. The listed plan is free.

Is dbmate a SaaS service?

The README says dbmate does not try to upsell users on a SaaS service.

Which databases does it support?

The project lists MySQL, MariaDB, PostgreSQL, SQLite, and ClickHouse. It also documents BigQuery connections and Spanner databases using the PostgreSQL dialect.

Can dbmate roll back migrations?

Yes. Its commands include rolling back migrations.

Which platforms can I use it on?

The listed platforms are Linux, macOS, self-hosted, and Windows. Installation routes include NPM, Homebrew, Scoop, a Linux binary, and Docker images.

What is its migration format?

Migrations are plain SQL in timestamp-versioned files.

Facts from dbmate's own pages

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

Where dbmate stands on Freedom251

Look at these too