GTFS Express Open GTFS Express

Validate a GTFS feed with the MobilityData validator

What the MobilityData GTFS validator checks, its three severities, how to read its report, the typical errors, and when to fix a notice or accept it.

Updated on 21 October 2026

The MobilityData GTFS validator reads a feed and lists every departure from the specification as rules, each classed as an error, a warning or an info. Before delivering, fix the errors you introduced, look at the new warnings, and compare the report with the previous version's.

The reference validator

The MobilityData validator is open source. It runs from the command line (Java) or from an application, and produces an HTML report and a JSON file. MobilityData presents it as the canonical GTFS validator. Each rule carries a code, such as foreign_key_violation, which names the rule in the report.

What it checks

Three severities

Some rules depend on thresholds, such as the distance between a stop and its shape or the expiry date. Their values come from the validator's configuration.

Reading the report

For each rule, the report gives the number of occurrences and then, for each one, the file, row, field and value involved.

Start with the errors, then sort by number of occurrences. One cause often produces hundreds of occurrences: a stop deleted while trips still call at it gives one foreign_key_violation per stop_times.txt row that names it. Fix the cause, not each row.

For a change, then compare the report with the original feed's. Errors that were already there say nothing about the change; new ones say what it broke.

Typical errors and their causes

Warnings that often follow a change: unused_shape when a removed variant leaves its shape behind, stop_without_stop_time for a stop no longer served, unusable_trip for a trip cut down to a single call, fast_travel_between_consecutive_stops for running times that are too short.

Fix or accept

In GTFS Express

The validator's report (version 8.0.0) can be read free and without an account, along with a diagnostic that goes beyond the validator. It lists rules by severity with their occurrences; "Fix one by one" opens each offending row in the editor with the field flagged, then "Re-validate" runs the validator again. When you modify a network, a new error blocks the delivery, and errors already in the reference feed are accepted by name.

Further reading