Goose
Goose is a database migration tool for managing schema changes through incremental SQL files and Go migration functions.
What Goose is
Goose is a database migration tool for managing schema changes through incremental SQL files and Go migration functions. It is available as both a command-line utility and a library, with Linux, macOS, Windows, API, and self-hosted options listed. The CLI can apply, roll back, redo, reset, inspect, and version migrations. SQL migration files use an up annotation and may have a down annotation; filenames can use timestamps or sequential numbers. Statements in a migration file run in one transaction by default, though an annotation can place them outside one. Go migration functions can run within a SQL transaction when given a transaction argument. Listed CLI drivers include ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB. Other listed capabilities include embedded and out-of-order migrations, data seeding, and environment variable substitution in SQL migrations. The library provider accepts a dialect, database connection, migration filesystem, and optional configuration. By default, it does not lock the database during migrations, so callers must coordinate safe runs or configure a session locker. Goose is MIT-licensed and free.
Good
- Supports SQL migrations and Go migration functions
- CLI can apply and roll back migrations
- Lists drivers for eight database systems
- Supports embedded migrations and data seeding
- Free and MIT-licensed
Watch out
- Provider does not lock the database by default
- Caller must match dialect to database driver
- ClickHouse support has deployment-mode caveats
- Building from source requires Go 1.16 or later
Who it suits
Goose may suit developers who want to manage database schema changes from a command-line tool or integrate migration handling through a library. Teams using the provider need to arrange safe concurrent migrations themselves unless they configure a session locker.
Verdict
Goose offers migration workflows through both a CLI and a library, with SQL and Go migration formats. Its default lack of database locking means callers must plan for safe concurrent runs.
Plans and prices
From Goose's own pricing page, checked 7 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| Goose | Free | Open-source database migration tool |
The facts
Each one read from Goose's own pages, with the date it was checked.
What it does
- CLI and library
- The project is both a command-line utility and a library.checked 7 Oct 2026
- Concurrency
- The provider does not lock the database during migrations by default, so callers must ensure migrations run safely; a session locker can coordinate them.checked 7 Oct 2026
- Concurrency limitation
- By default, the provider does not lock the database during migrations, so the caller must ensure migrations are run safely; a session locker can be configured.checked 7 Oct 2026
- Database driver responsibility
- When using the provider, callers are responsible for matching the SQL dialect to the database driver.checked 7 Oct 2026
- Database support
- The documented CLI drivers include ClickHouse, MSSQL, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB.checked 7 Oct 2026
- Driver caveat
- The README warns that ClickHouse support is limited to some deployment modes and may require careful configuration or workarounds.checked 7 Oct 2026
- Go migrations
- Go migration functions can run within a SQL transaction when given a transaction argument.checked 7 Oct 2026
- Go requirement
- Building from source requires Go 1.16 or later.checked 7 Oct 2026
- Library configuration
- A Goose provider accepts a database dialect, a database connection, a filesystem for migration files, and optional configuration.checked 7 Oct 2026
- Library integration
- The Goose provider accepts a database connection and filesystem abstraction, including directory or embedded filesystems.checked 7 Oct 2026
- License
- The GitHub repository states that Goose is licensed under the MIT License.checked 7 Oct 2026
- Migration controls
- The CLI can apply, roll back, redo, reset, inspect, and version database migrations.checked 7 Oct 2026
- Migration formats
- It manages database schemas with incremental SQL changes and Go migration functions.checked 7 Oct 2026
- Migration options
- The project README lists embedded migrations, out-of-order migrations, data seeding, and environment variable substitution in SQL migrations.checked 7 Oct 2026
- Migration transactions
- Statements in a migration file run in one transaction by default, with an annotation to run them outside a transaction.checked 7 Oct 2026
- Purpose
- Goose is a database migration tool for managing database schemas with incremental SQL changes and/or Go functions.checked 7 Oct 2026
- SQL migration format
- SQL migration files use an up annotation and may include an optional down annotation; filenames use a timestamp or sequential number.checked 7 Oct 2026
- Supported database drivers
- The CLI lists ClickHouse, Microsoft SQL Server, MySQL, PostgreSQL, SQLite, Turso, Vertica, and YDB drivers.checked 7 Oct 2026
Where it runs
- Platforms
- The installation guide documents prebuilt or source installation for macOS, Linux, and Windows.checked 7 Oct 2026
Alternatives to Goose
- 1

Atlas
Free planOpen sourceWebAPILinuxmacOS8.3From $39 a month - 2
DeepFilterNet
Free planOpen sourceAPILinuxmacOSSelf-hosted7.6Free plan - 3
pgroll
Free planOpen sourceLinuxmacOSSelf-hostedWindows7.3Free plan - 4

Skeema
Free planLinuxmacOSWindows6.9From $649 a year - 5

Bytebase Enterprise
Free planWebAPISelf-hosted6.8From $20 a month - 6
Sqitch
Free planLinuxmacOSSelf-hostedWindows6.7Free plan
