← All GTFS fixes

Fix: service calendars that have already expired

Code: expired_calendar (MobilityData validator)

What this means

calendar.txt (and calendar_dates.txt) define the date ranges your service runs. Some of those ranges have an end date in the past, so they describe service that has already stopped. They are leftovers the export carried forward.

Why it matters

Expired calendars are dead weight. On their own they do not break a trip planner, but they are the early warning sign of the failure that does: a feed whose service quietly runs out. If the only calendars left are expiring, trip planners drop the agency on the day they lapse, and nobody is told first. Old calendars also make the feed harder for you and your vendor to read, because they hide which service is actually current.

How to fix it

How long it usually takes

One setting in most export tools, applied on the next run. Confirming the remaining service window is current is a quick look.

Authoritative rule

expired_calendar is a canonical MobilityData GTFS Validator notice used in validator reports across the GTFS ecosystem. Read the authoritative rule for expired_calendar in the GTFS Validator rules. (opens on an external site)

After you republish

Once the changed feed is live at your published URL, the next scorecard run checks it again. When the same complete producer contract no longer reports this finding, it can be recorded as a dated finding clearance. That confirms the later feed state, not who changed the feed or why.