GTFS · · 4 min read

Announcing transitland-lib v1.0.0

Announcing transitland-lib v1.0.0

We're pleased to announce the release of transitland-lib version 1.0.0. This software library, written in the Go programming language, is the foundation of the Transitland platform and integral to a growing range of purpose-built applications.

From experiment to production

In 2019, the Interline team began exploring how Go's performance characteristics could serve as a new foundation for Transitland's v2 platform. The goal was simple: process the largest and most complex GTFS feeds faster and more efficiently.

After years of iteration and real-world testing, with hundreds of thousands of GTFS feeds processed, we've finally tagged a v1.0.0. This release represents a stable production-ready library that powers critical transit data systems.

Real-world uses

transitland-lib can be found within many transit data platforms operated by Interline:

This component is also in use by other organizations. For example, Portland TriMet uses transitland-lib to efficiently clip Amtrak's country-wide feed to create a focused feed to ingest into their own OpenTripPlanner routing engine for the greater Portland, Oregon, region.

Built for handling many feeds

transitland-lib provides:

Performance in action

Let's look at one example of transitland-lib's capabilities to process and validate massive GTFS feeds. This demonstration covers Switzerland's entire transit network, one of the largest GTFS feeds in the world (view on transit.land):

✗ transitland validate https://data.opentransportdata.swiss/en/dataset/timetable-2025-gtfs2020/permalink

In about one and a half minutes on a laptop, transitland-lib downloads and processes a GTFS feed including 460 separate agencies, over 90,000 stops, over 4,000 routes, over 1.2 million trips, and a complicated set of calendar and calendar date records.

The library's ability to handle such large datasets reliably makes it an ideal choice for processing national-scale transit feeds or creating regional subsets of larger networks.

Extensible architecture

transitland-lib's extension framework enables support for both standard GTFS and experimental extensions. This flexibility has been crucial for:

We update transitland-lib to track the latest static GTFS and GTFS Realtime specifications. To check which version of the specifications you are using, simply run the transitland version command:

✗ transitland version
transitland-lib version: v1.0.0
transitland-lib commit: https://github.com/interline-io/transitland-lib/commit/bae91cd7f32c67ffe89965cab3636e22ddbce817 (time: 2025-03-11T18:47:50Z)
GTFS specification version: https://github.com/google/transit/blob/11a49075c1f50d0130b934833b7eeb3fe518961c/gtfs/spec/en/reference.md
GTFS Realtime specification version: https://github.com/google/transit/blob/7b9f229dfa0b539c3fcf461986638890024feb06/gtfs-realtime/proto/gtfs-realtime.proto

Validation and best practices

GTFS feeds can be messy. Therefore, transitland-lib:

With both static GTFS and GTFS Realtime processed using the same library, we're now able to put into ongoing production-scale use Interline's previous research with University of South Florida into GTFS Realtime validation.

💡
While transitland-lib implements many of the same validation and best practice rules as MobilityData's static GTFS validator, the purposes and advantages of each library are distinct.

The MobilityData validator lends itself well to interactive use when people and organizations creating GTFS feeds want to check to ensure their static feed is ready for submission to a third-party consumer. The MobilityData validator outputs a report that is useful for reference and sharing.

In contrast, transitland-lib is designed to efficiently process many feeds, to serve as a component within production-scale processing pipelines, and to optionally validate GTFS Realtime endpoints with the context of a static GTFS feed with associated schedules.

transitland-lib also gives developers options for how to handle invalid data:

Each application may have different goals and different tradeoffs for how to handle invalid data, and transitland-lib provides options to customize and control this behavior.

Powerful filtering system

transitland-lib's filtering system enables modifying and transforming GTFS feeds for specific project contexts, such as:

Interline uses transitland-lib to curate full-service data deliveries for our clients needing consistent GTFS data across states and countries.

Using transitland-lib

If you use the Transitland website or the Transitland APIs, you're already using transitland-lib.

Developers can visit github.com/interline-io/transitland-lib to learn more about transitland-lib as a command-line interface (CLI) or a library for programmatic usage.

transitland-lib is available under a dual license model enabling open-source use under the permissive GPLv3 license and also providing flexibility to Interline's clients under a customizable business license.

We look forward to continuing to maintain transitland-lib for another six years as the GTFS and GTFS Realtime specifications continue to evolve and as the number and size of source feeds continues to grow.

Read next