A General Transit Feed Specification (GTFS) Schedule (static) feed validator, maintained by MobilityData.
Web version ● Desktop version ● Command line ● Docker
This README contains information for the latest version of the project, which is under active development. You can find the latest version of the validator application on the Releases page.
This is a cross-platform application written in Java that performs the following steps:
The GTFS Web Validator can be accessed at https://gtfs-validator.mobilitydata.org/. The GTFS Web Validator accepts locally saved datasets in a zip format and datasets available via the Web in an URL format. Validation reports have a unique URL link that can be shared and are available 30 days after creation.
The GTFS Web Validator contains two main components: the GTFS Web Validator Client and the GTFS Validator Web Service. More information about these components can be found in GTFS Web Validator Client and GTFS Validator Web Service.
Several users have reported issues with the validator when processing their GTFS feeds. These issues arise due to the configuration of their websites, which may not be set up to handle:
To facilitate easier debugging and logging, we have made our user agent header explicit. The user agent string follows the format: "MobilityData GTFS-Validator/{validatorVersion} (Java {java version})". In cases where the validatorVersion
is null, the {validatorVersion}
segment in the user agent string will be left blank. The string "MobilityData GTFS-Validator/5.0.1 (Java 11.0.1)" serves as an example of the User Agent string.
Gtfs Validator
installer for your operating system:
.msi
.dmg
.deb
Once installed, run the application and you will see the following screen:
There are two primary options to set:
GTFS Input
: Use this to specify the GTFS feed to validate. You can specify a URL, ZIP file, or a directory containing the individual .txt
files of a feed. You can paste the input location directly into the input field or use the Choose Local File...
button to open a file-chooser dialog to select a file on your local system.Output Directory
: This is the directory where the validation reports will be written.With these two options set, click the "Validate" button to begin validation.
When validation is complete, the application will automatically open the HTML validation report in your local browser. In addition, the application creates the following files in the output directory:
report.html
: the validation report in HTML format. It can be opened in a browser.report.json
: the validation report in JSON format.system_errors.json
: this file will be created every-time the validator is run. If no system errors were encountered, this file will be empty.Before running validation, tap the Advanced
button to configure other aspects of the application, including:
java --version
.Gtfs Validator
CLI jar (not OS-specific). It is located in the Assets section of the release, and it looks like gtfs-validator-vX.X.X_cli.jar
cd {directory path}
, where {directory path} is the absolute or relative path to the directory. You can then make sure you're in the right directory by typing pwd
in the terminal (this stands for present working directory). You can also make sure the jar file is there by typing ls
in the terminal (this stands for list and will display the list of files in this directory). More about commands to navigate file and directories here.You can run this validator using a GTFS dataset on your computer, or from a URL.
To validate a GTFS dataset on your computer, run the following command in the terminal, replacing the text in brackets:
java -jar {name of the jar file} -i {path to the GTFS file} -o {name of the output directory that will be created}
java -jar gtfs-validator-cli.jar -i /myDirectory/gtfs.zip -o output
To validate a GTFS dataset from a URL, run the following command in the terminal, replacing the text in brackets:
java -jar {name of the jar file} -u {URL to the GTFS file} -o {name of the output directory that will be created}
java -jar gtfs-validator-cli.jar -u https://www.abc.com/gtfs.zip -o output
More detailed instructions with all the parameters that exists are available on our "Usage" page.
In the output directory, the reports will be created as described here.
To obtain a validator Docker container image, you have two options:
Pull a published Docker container image from GitHub. For example, to pull the latest build of the master
branch:
docker pull ghcr.io/mobilitydata/gtfs-validator:latest
Build a Docker container image locally from any branch or working tree:
docker build . -t ghcr.io/mobilitydata/gtfs-validator:latest
To verify you can run the Docker image in a new container and see the help text:
docker run --rm ghcr.io/mobilitydata/gtfs-validator:latest --help
In order to pass files in and out of the validator, you'll need to use a volume mount to share a directory between your host computer and the Docker container:
docker run --rm -v /myDirectory:/work ghcr.io/mobilitydata/gtfs-validator:latest -i /work/gtfs.zip -o /work/output
where:
-v /myDirectory:/work
: syntax to share directories and data between the container and the host (your computer). With the above command, any files that you place in /myDirectory
on the host will show up in /work
inside the container and vice versa.NOTE: On Windows, you must provide the local volume (e.g., c:
) as well:
... c:/myDirectory:/work ...
The validator can then be executed via bash commands. See the preceeding instructions for command line usage.
In the output directory, the reports will be created as described here.
Have a suggestion for a new rule? Open an issue. You can see the complete process for adding new rules on the "Adding new rules" page.
We suggest using IntelliJ to import, build, and run this project.
Instructions to build the project from the command-line using Gradle are available in our Build documentation.
The architecture of the gtfs-validator
is described on our Architecture page.
In order to avoid sudden changes in the validation output that might declare previously valid datasets invalid, all code changes in pull requests are tested against GTFS datasets in the MobilityDatabase. The acceptance test process is described in ACCEPTANCE_TESTS.md.
CalTrans California Integrated Travel Project (Cal-ITP) GTFS Validator API - A thin wrapper around MobilityData/gtfs-validator.
Code licensed under the Apache 2.0 License.
We welcome contributions to the project! Please check out our Contribution guidelines for details.