• Reference
  • Version · 6.0
  • Change Automation Reference

status

Last updated: September 29, 2026

The status command states the number of undeployed changesets. Running status lists all undeployed changesets. It also lists the id, author, and file path name for each undeployed changeset. The status command does not modify the database.

Uses

The status command is typically used when changesets were added to a changelog through source control by another developer. The command confirms what has been deployed and what changesets are pending per author and corresponding IDs.

You may also find the status command useful alongside contexts and labels applied to your changesets. This lets you see which changesets are eligible for deployment according to the contexts or labels you've defined, which may help you realize when a changeset is marked with the wrong context or label. For example, if you have a changeset marked with labels="myLabel", when you run the status command, you can also specify --label-filter="myLabel". This way, Liquibase only shows the status of changesets marked with myLabel, and not other explicit labels. If a changeset has no label, it always included in the command output.

Displaying changeset attributes

Adding --verbose to the status command lists each pending changeset's attributes underneath its identifier. On its own, --verbose looks for labels, context, teams, releases, keywords, and conditions, and lists only the ones each changeset actually sets. The list can differ from one changeset to the next, and a changeset that sets none of them shows its identifier alone.

You can also tell --verbose which attributes to show, by giving it a comma-separated list of attribute names.

liquibase status --verbose=labels,teams,releases --changelog-file=example-changelog.xml

The attribute names --verbose accepts are: labels, context, teams, releases, keywords, conditions, runwith, runonchange, enddelimiter, rollback, and comments. You can also write label for labels, and contexts or contextFilter for context. The teams, releases, keywords, and conditions attributes are new in Liquibase Secure 6.0.

When you name the attributes yourself, every changeset lists all of them, in the order you gave. An attribute the changeset does not set shows its name with nothing after it, and so does an attribute name Liquibase does not recognize. Each line is labelled with the name you typed, in lowercase, so --verbose=contextFilter prints contextfilter:. Liquibase prints the first 128 characters of an attribute's value, so a long rollback or comments value does not crowd out the rest of the output.

Showing only the count

Adding --simple to the status command suppresses the per-changeset lines, leaving the count of pending changesets and nothing else. It is the flag to reach for when a script only needs to know whether anything is outstanding.

liquibase status --simple --changelog-file=example-changelog.xml

--simple also suppresses the attribute lines that --verbose adds, so combining the two leaves you with the count on its own. The message Liquibase prints when there is nothing to deploy is unaffected.

Syntax

To run the status command, specify the driver, classpath, and URL in the properties file. You can also specify these properties in your command line.

Run the status command:

liquibase status --changelog-file=example-changelog.xml

An example using labels:

liquibase status --label-filter="myLabel" --changelog-file=example-changelog.xml

Note: The username and password attributes are not required for connections and systems which use alternate means of authentication. Also, you can specify database credentials as part of the url attribute.

Command parameters

Attribute

Definition

Requirement

--changelog-file=<string>

The root changelog

Required

--url=<string>

The JDBC database connection URL.

Required

--context-filter=<string>

Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run.

Note: If you use Liquibase 4.23.0 or earlier, use the syntax --contexts instead of --context-filter.

Optional

--default-catalog-name=<string>

Name of the default catalog to use for the database connection

Optional

--default-schema-name=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

--driver=<string>

The JDBC driver class

Optional

--driver-properties-file=<string>

The JDBC driver properties file

Optional

--label-filter=<string>

Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run.

Optional

--conditions-filter=<string>

Specifies the changeset conditions to match. conditions is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

--keywords-filter=<string>

Specifies the changeset keywords to match. keywords is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

--releases-filter=<string>

Specifies the changeset releases to match. releases is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

--teams-filter=<string>

Specifies the changeset teams to match. teams is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

--password=<string>

Password to connect to the target database.

Optional

--simple=<true|false>

Suppresses the per-changeset lines, so only the count of pending changesets is shown. Default: false.

Optional

--username=<string>

Username to connect to the target database.

Optional

--verbose=<string>

Specifies which changeset attributes to display for each pending changeset. With no value or true, it shows whichever of labels, context, teams, releases, keywords, and conditions each changeset sets. With a comma-separated list of attribute names, such as labels,teams,releases, it shows those attributes for every changeset. Default: false.

Optional

Attribute

Definition

Requirement

cmdArgs: { changelog-file: "<string>" }

The root changelog

Required

cmdArgs: { url: "<string>" }

The JDBC database connection URL.

Required

cmdArgs: { context-filter: "<string>" }

Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run.

Note: If you use Liquibase 4.23.0 or earlier, use the syntax --contexts instead of --context-filter.

Optional

cmdArgs: { default-catalog-name: "<string>" }

Name of the default catalog to use for the database connection

Optional

cmdArgs: { default-schema-name: "<string>" }

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

cmdArgs: { driver: "<string>" }

The JDBC driver class

Optional

cmdArgs: { driver-properties-file: "<string>" }

The JDBC driver properties file

Optional

cmdArgs: { label-filter: "<string>" }

Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run.

Optional

cmdArgs: { conditions-filter: "<string>" }

Specifies the changeset conditions to match. conditions is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

cmdArgs: { keywords-filter: "<string>" }

Specifies the changeset keywords to match. keywords is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

cmdArgs: { releases-filter: "<string>" }

Specifies the changeset releases to match. releases is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

cmdArgs: { teams-filter: "<string>" }

Specifies the changeset teams to match. teams is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

cmdArgs: { password: "<string>" }

Password to connect to the target database.

Optional

cmdArgs: { simple: "<true|false>" }

Suppresses the per-changeset lines, so only the count of pending changesets is shown. Default: false.

Optional

cmdArgs: { username: "<string>" }

Username to connect to the target database.

Optional

cmdArgs: { verbose: "<string>" }

Specifies which changeset attributes to display for each pending changeset. With true, it shows whichever of labels, context, teams, releases, keywords, and conditions each changeset sets. With a comma-separated list of attribute names, such as labels,teams,releases, it shows those attributes for every changeset. Default: false.

Optional

Attribute

Definition

Requirement

liquibase.command.changelogFile: <string>

liquibase.command.status.changelogFile: <string>

The root changelog

Required

liquibase.command.url: <string>

liquibase.command.status.url: <string>

The JDBC database connection URL.

Required

liquibase.command.contextFilter: <string>

liquibase.command.status.contextFilter: <string>

Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run.

Note: If you use Liquibase 4.23.0 or earlier, use the syntax --contexts instead of --context-filter.

Optional

liquibase.command.defaultCatalogName: <string>

liquibase.command.status.defaultCatalogName: <string>

Name of the default catalog to use for the database connection

Optional

liquibase.command.defaultSchemaName: <string>

liquibase.command.status.defaultSchemaName: <string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

liquibase.command.driver: <string>

liquibase.command.status.driver: <string>

The JDBC driver class

Optional

liquibase.command.driverPropertiesFile: <string>

liquibase.command.status.driverPropertiesFile: <string>

The JDBC driver properties file

Optional

liquibase.command.labelFilter: <string>

liquibase.command.status.labelFilter: <string>

Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run.

Optional

liquibase.command.conditionsFilter: <string>

liquibase.command.status.conditionsFilter: <string>

Specifies the changeset conditions to match. conditions is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

liquibase.command.keywordsFilter: <string>

liquibase.command.status.keywordsFilter: <string>

Specifies the changeset keywords to match. keywords is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

liquibase.command.releasesFilter: <string>

liquibase.command.status.releasesFilter: <string>

Specifies the changeset releases to match. releases is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

liquibase.command.teamsFilter: <string>

liquibase.command.status.teamsFilter: <string>

Specifies the changeset teams to match. teams is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

liquibase.command.password: <string>

liquibase.command.status.password: <string>

Password to connect to the target database.

Optional

liquibase.command.simple: <true|false>

liquibase.command.status.simple: <true|false>

Suppresses the per-changeset lines, so only the count of pending changesets is shown. Default: false.

Optional

liquibase.command.username: <string>

liquibase.command.status.username: <string>

Username to connect to the target database.

Optional

liquibase.command.verbose: <string>

liquibase.command.status.verbose: <string>

Specifies which changeset attributes to display for each pending changeset. With true, it shows whichever of labels, context, teams, releases, keywords, and conditions each changeset sets. With a comma-separated list of attribute names, such as labels,teams,releases, it shows those attributes for every changeset. Default: false.

Optional

Attribute

Definition

Requirement

JAVA_OPTS=-Dliquibase.command.changelogFile=<string>

JAVA_OPTS=-Dliquibase.command.status.changelogFile=<string>

The root changelog

Required

JAVA_OPTS=-Dliquibase.command.url=<string>

JAVA_OPTS=-Dliquibase.command.status.url=<string>

The JDBC database connection URL.

Required

JAVA_OPTS=-Dliquibase.command.contextFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.contextFilter=<string>

Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run.

Note: If you use Liquibase 4.23.0 or earlier, use the syntax --contexts instead of --context-filter.

Optional

JAVA_OPTS=-Dliquibase.command.defaultCatalogName=<string>

JAVA_OPTS=-Dliquibase.command.status.defaultCatalogName=<string>

Name of the default catalog to use for the database connection

Optional

JAVA_OPTS=-Dliquibase.command.defaultSchemaName=<string>

JAVA_OPTS=-Dliquibase.command.status.defaultSchemaName=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

JAVA_OPTS=-Dliquibase.command.driver=<string>

JAVA_OPTS=-Dliquibase.command.status.driver=<string>

The JDBC driver class

Optional

JAVA_OPTS=-Dliquibase.command.driverPropertiesFile=<string>

JAVA_OPTS=-Dliquibase.command.status.driverPropertiesFile=<string>

The JDBC driver properties file

Optional

JAVA_OPTS=-Dliquibase.command.labelFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.labelFilter=<string>

Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run.

Optional

JAVA_OPTS=-Dliquibase.command.conditionsFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.conditionsFilter=<string>

Specifies the changeset conditions to match. conditions is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

JAVA_OPTS=-Dliquibase.command.keywordsFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.keywordsFilter=<string>

Specifies the changeset keywords to match. keywords is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

JAVA_OPTS=-Dliquibase.command.releasesFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.releasesFilter=<string>

Specifies the changeset releases to match. releases is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

JAVA_OPTS=-Dliquibase.command.teamsFilter=<string>

JAVA_OPTS=-Dliquibase.command.status.teamsFilter=<string>

Specifies the changeset teams to match. teams is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

JAVA_OPTS=-Dliquibase.command.password=<string>

JAVA_OPTS=-Dliquibase.command.status.password=<string>

Password to connect to the target database.

Optional

JAVA_OPTS=-Dliquibase.command.simple=<true|false>

JAVA_OPTS=-Dliquibase.command.status.simple=<true|false>

Suppresses the per-changeset lines, so only the count of pending changesets is shown. Default: false.

Optional

JAVA_OPTS=-Dliquibase.command.username=<string>

JAVA_OPTS=-Dliquibase.command.status.username=<string>

Username to connect to the target database.

Optional

JAVA_OPTS=-Dliquibase.command.verbose=<string>

JAVA_OPTS=-Dliquibase.command.status.verbose=<string>

Specifies which changeset attributes to display for each pending changeset. With true, it shows whichever of labels, context, teams, releases, keywords, and conditions each changeset sets. With a comma-separated list of attribute names, such as labels,teams,releases, it shows those attributes for every changeset. Default: false.

Optional

Attribute

Definition

Requirement

LIQUIBASE_COMMAND_CHANGELOG_FILE=<string>

LIQUIBASE_COMMAND_STATUS_CHANGELOG_FILE=<string>

The root changelog

Required

LIQUIBASE_COMMAND_URL=<string>

LIQUIBASE_COMMAND_STATUS_URL=<string>

The JDBC database connection URL.

Required

LIQUIBASE_COMMAND_CONTEXT_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_CONTEXT_FILTER=<string>

Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run.

Note: If you use Liquibase 4.23.0 or earlier, use the syntax --contexts instead of --context-filter.

Optional

LIQUIBASE_COMMAND_DEFAULT_CATALOG_NAME=<string>

LIQUIBASE_COMMAND_STATUS_DEFAULT_CATALOG_NAME=<string>

Name of the default catalog to use for the database connection

Optional

LIQUIBASE_COMMAND_DEFAULT_SCHEMA_NAME=<string>

LIQUIBASE_COMMAND_STATUS_DEFAULT_SCHEMA_NAME=<string>

Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

LIQUIBASE_COMMAND_DRIVER=<string>

LIQUIBASE_COMMAND_STATUS_DRIVER=<string>

The JDBC driver class

Optional

LIQUIBASE_COMMAND_DRIVER_PROPERTIES_FILE=<string>

LIQUIBASE_COMMAND_STATUS_DRIVER_PROPERTIES_FILE=<string>

The JDBC driver properties file

Optional

LIQUIBASE_COMMAND_LABEL_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_LABEL_FILTER=<string>

Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run.

Optional

LIQUIBASE_COMMAND_CONDITIONS_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_CONDITIONS_FILTER=<string>

Specifies the changeset conditions to match. conditions is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

LIQUIBASE_COMMAND_KEYWORDS_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_KEYWORDS_FILTER=<string>

Specifies the changeset keywords to match. keywords is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

LIQUIBASE_COMMAND_RELEASES_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_RELEASES_FILTER=<string>

Specifies the changeset releases to match. releases is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

LIQUIBASE_COMMAND_TEAMS_FILTER=<string>

LIQUIBASE_COMMAND_STATUS_TEAMS_FILTER=<string>

Specifies the changeset teams to match. teams is a tag you can add to changesets to control which changesets will be executed in any migration run. Matching is a straight string comparison. Prefix the value with the @ operator to match strictly, so that only changesets with the exact value match. Available in Liquibase Secure 6.0 and later.

Optional

LIQUIBASE_COMMAND_PASSWORD=<string>

LIQUIBASE_COMMAND_STATUS_PASSWORD=<string>

Password to connect to the target database.

Optional

LIQUIBASE_COMMAND_SIMPLE=<true|false>

LIQUIBASE_COMMAND_STATUS_SIMPLE=<true|false>

Suppresses the per-changeset lines, so only the count of pending changesets is shown. Default: false.

Optional

LIQUIBASE_COMMAND_USERNAME=<string>

LIQUIBASE_COMMAND_STATUS_USERNAME=<string>

Username to connect to the target database.

Optional

LIQUIBASE_COMMAND_VERBOSE=<string>

LIQUIBASE_COMMAND_STATUS_VERBOSE=<string>

Specifies which changeset attributes to display for each pending changeset. With true, it shows whichever of labels, context, teams, releases, keywords, and conditions each changeset sets. With a comma-separated list of attribute names, such as labels,teams,releases, it shows those attributes for every changeset. Default: false.

Optional

Output

When successful, the status command produces the following output:

--verbose=false (default)

loading

--verbose=true

loading

--verbose=labels,teams,releases

loading

--simple

loading