GTFS¶
- GTFS Spec - Specification for the General Transit Data Feed, or GTFS. Available in several languages.
- GTFS Best Practices - Best practices for producers of a GTFS feed.
GTFS Libraries¶
Software that makes it easy to consume GTFS data in a variety of languages.
C¶
- CGTFS - C library for reading static GTFS feeds. Supports reading unpacked feeds into application memory or into SQLite databases.
- RRRR Rapid Real-time Routing - RRRR (usually pronounced R4) is a C-language implementation of the RAPTOR public transit routing algorithm.
C++¶
- just_gtfs - C++17 header-only library for reading and writing GTFS (used in Valhalla). Main features: fast reading and writing of GTFS feeds, support for extended GTFS route types, simple working with GTFS Date and Time formats.
C¶
- ESRI public-transit-tools - Tools for working with public transit data in ArcGIS (license for ArcGIS required).
- GTFS Feed Parser - .Net/Mono implementation of a GTFS parser.
Go¶
- Go GTFS Parser - A GTFS parsing library for Go.
Java¶
- OneBusAway GTFS Modules - A Java-based library for reading, writing, and transforming public transit data in the GTFS format, including database support.
JavaScript¶
- gtfs-sequelize - Node.js library modeling the static GTFS using sequelize.js.
- gtfs-utils – Utilities to process GTFS data sets (e.g., "flattening"
calendar.txt
&calendar_dates.txt
, computing arrival/departure times of trips). - gtfs-via-postgres – Yet another tool to process GTFS using PostgreSQL.
- Node-GTFS - Loads transit data from GTFS files, unzips it and stores it to a SQLite database. Provides some methods to query for agencies, routes, stops and times.
PostgreSQL¶
- gtfs-schema - PostgreSQL schema for GTFS feeds.
- gtfs-via-postgres – Yet another tool to process GTFS using PostgreSQL.
Python¶
- ESRI public-transit-tools - Tools for working with public transit data in ArcGIS (license for ArcGIS required).
- gtfsdb - Python library for converting GTFS files into a relational database.
- gtfs-segments - Python package that represents GTFS data for buses in a concise tabular manner using segments.
- gtfslib-python - An open source library in python for reading GTFS files and computing various stats and indicators about Public Transport networks.
- gtfsman - Repository-like tool in Python to manage and update a huge number of GTFS feeds.
- gtfspy - Public transport network analysis and travel time computations using Python3. Compatible with Postgres/PostGIS, Oracle, MySQL, and SQLite. Used by gtfspy-webviz.
- GTFS Kit - A Python 3.8+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes GTFSTK.
- GTFSTK - A Python 3 toolkit for analyzing GTFS data in memory. Uses Pandas and Shapely for speed. Superseded by GTFS Kit.
- Make GTFS - A Python library to make GTFS feeds from basic route information.
- Mapzen GTFS - A Python GTFS library that supports reading individual GTFS tables, or constructing a graph to represent each agency in a feed.
- multigtfs - A Django application to import and export GTFS.
- partridge - A fast, forgiving Python GTFS reader built on pandas DataFrames.
- transit_service_analyst - A Python library to support transit service analysis.
R¶
- gtfsio - Fast and flexible functions to read and write GTFS in R.
- trread - A transit (GTFS) file reader for R.
Ruby¶
- GTFS-viz - Ruby script that converts a set of GTFS files into a SQLite database + GeoJSONs (needed by the Transit Map web application)
GTFS Converters¶
Converters from various static schedule formats to and from GTFS.
- Chouette - Converts French-Transmodel, SIRI, NETeX. See Chouette.mobi website for more info.
- extract-gtfs-pathways – Command-line tool to extract pathways as GeoJSON from a GTFS dataset.
- extract-gtfs-shapes – Command-line tool to extract shapes as GeoJSON from a GTFS dataset.
- GTFS-OSM-Sync - A Java tool for synchronizing data in GTFS format with OpenStreetMap.org.
- gtfs-service-area - Compute a transit service area from static GTFS. Results are output as single-layer .geojson files. Dockerized version of gtfs-to-geojson.
- GTFS-route-shapes - A Python script to generate a single geoJSON shape for each transit route in a GTFS archive.
- gtfs-to-geojson - Javascript tool that converts transit data in GTFS shapes and stops into geoJSON. This is useful for creating maps of transit routes.
- gtfs2gps - An R package that converts public transportation data in GTFS format to GPS-like records in a
data.table
, where each row represents the timestamp of each vehicle at a given spatial resolution. - gtfs2emis - An R package to estimate the emission levels of public transport vehicles based on General Transit Feed Specification (GTFS) data.
- gtsf - general transit (GTFS) simple (geographic) features (sf) in R. can be used to convert from GTFS to Shapefile, GeoJSON, and other formats through GDAL.
- hafas-generate-gtfs (work-in-progress) – A Javascript tool to generate GTFS dumps from HAFAS endpoints.
- Hafas2GTFS - Hafas2GTFS converter written in Python, optimized for SBB HAFAS feeds.
- kml-to-gtfs-shapes - Javascript tool to convert polylines from a KML file into a GTFS shapes.txt file. Hosted on GitHub here.
- NeTEx-to-GTFS Converter Java - Converts NeTEX datasets into GTFS datasets. The input NeTEx datasets are required to follow the Nordic NeTEx Profile.
- o2g - A simple tool to extract GTFS feed from OpenStreetMap.
- Open-Transport SYNTHESE Convertors - Converts French-Transmodel, SIRI, NETeX, HAFAS, HASTUS, VDV452, and more.
- onebusaway-gtfs-to-barefoot - A Java tool to create a Barefoot mapfile from a GTFS file.
- onebusaway-vdv-modules - A Java library for working with transit data in the VDV format, including converting VDV-452 schedule data into GTFS.
- osm2gtfs - Turn OpenStreetMap data and schedule information into GTFS.
- transit_model - A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see Software for Creating APIs), TransXChange (UK standard format), KV1 (Netherland standard format) or NeTEx (European standard format).
- transloc-gtfs-rectifier - Python application that attempts to assign GTFS stop_ids to TransLoc IDs using TransLoc's API (TransLoc doesn't provide GTFS
stop_ids
in their API). - Transmodel and IFF to GTFS - Imports and syncs (Transmodel) BISON Koppelvlak1, IFF (a format written by HP/EDS, somewhat similiar to ATCO CIF) to import timetables of the railway networks. The internal pseudo-NETeX datastructure allows to export to GTFS and there are proof-of-concepts to export to other formats such as NETeX, GTFS and IFF.
- UK2GTFS - R package that converts UK format TransXchange (bus, metro, tram, ferry) and CIF (rail) timetables to GTFS.
GTFS Data Collection and Maintenance Tools¶
- bus-router - Python script that generates missing shapes.txt for GTFS using routing from Google Maps Directions API or OSRM.
- gtfs-blocks-to-transfers - A Python tool to convert GTFS blocks, defined by setting trip.block_id into a series of trip-to-trip transfers (proposal).
- GTFS Display - Analyse, monitor and maintain GTFS data (Example instances).
- GTFS Editor - A (self-hosted) web-based GTFS editing framework. (Note: this project has been deprecated in favor of IBI Data Tools.)
- GTFS Editor for Vagrant - Quickly set up the GTFS editor (above) using Vagrant
- static-GTFS-manager - A (self-hosted) browser-based user interface for creating, editing, exporting static GTFS (see related post). Live demo here.
- TransitWand - An open source web and mobile application for collecting transit data. Use it to create GTFS feeds, capture passenger counts or generate GIS datasets.
- IBI Data Tools - A web application that handles GTFS editing, validating, quality checking, and deploying to OpenTripPlanner. (Combines and builds upon the functionality of the deprecated Gtfs Data Manager and GTFS Editor.)
- GTFS.html - An entirely browser-based tool to view GTFS feeds. Use it to view routes, stops, timetables, etc.
- pfaedle - Precise map-matching for GTFS using OpenStreetMap data
- GTFS shape mapfit - Python tool that fits GTFS shape files and stops to a given OSM map file. Uses pymapmatch for the matching.
- GTFS Builder - A free web-based application to help you create GTFS files. Maintained by the National Rural Transit Assistance Program (RTAP).
- gtfs-station-builder - UI tool to help build the internal structure of stations (including pathways.txt)
- GTFS Text-to-Speech Tester - A command-line tool that reads GTFS stop names out loud using Text-to-Speech to determine which need Text-to-Speech values for tts_stop_name in stops.txt.
GTFS Merge Tools¶
- combine_gtfs_feeds - A Python tool to combine multiple gtfs feeds into one feed/dataset.
- GTFS Kit - A Python 3.8+ tool kit for analyzing and merging General Transit Feed Specification (GTFS) data. Info on how to aggregate and clean feeds provided here.
- onebusaway-gtfs-merge-cli - A command line tool for merging GTFS feeds. Info provided at the link on how the tool detects and merges duplicate IDs.
- Transitfeed merge function - A Python library with a function to merge two different GTFS feeds.
GTFS Analysis Tools¶
- GTFS Kit - A Python 3.6+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes GTFSTK.
- gtfstools - A set of convenient tools for editing and analysing transit feeds in GTFS format in R.
- transit_service_analyst - A Python library to support transit service analysis.
- Peartree - A Python library for converting transit data into a directed graph for network analysis.
- R5: Rapid Realistic Routing on Real-world and Reimagined networks - A Java-based routing engine developed by Conveyal for multimodal (transit/bike/walk/car) networks. It currently plans many trips over a time window for scenario planning and analytics purposes. A related R wrapper package (r5r) is developed independently by IPEA. See also the performance comparison from Higgins et al. (2022), linked below.
- tidytransit - An R package to read GTFS data into tibbles and simple features dataframes to map transit stops and routes, calculate travel times and transit frequencies, and validate transit feeds.
- transitr - An R package for constructing and modelling a transit network in real time to obtain vehicle ETAs
- Busbuzzard - Inference of probabilistic schedules from empirical data about transit vehicles.
- ESRI ArcGIS Public Transit Tools (GTFS) - Tools for working with public transit data in ArcGIS
- GTFS-to-Chart - Creates stringline charts showing all vehicles on a transit route from GTFS data.
- GTFS Display - Analyse, monitor and maintain GTFS data (Example instances).
GTFS Timetable Publishing Tools¶
- GTFS-to-HTML - Generate human-readable timetables in HTML or PDF format directly from GTFS.
- Timetable Kit - An open source Python 3.10 module and scripts depending on GTFS Kit, designed to create complex printed/PDF timetables with flexible layouts. Currently only working out of the box for Amtrak's GTFS, but under active development.
- TimeTablePublisher (TTPUB) - A web publishing system developed by TriMet that allows a transit agency to examine, modify, and transform raw scheduling data into easy-to-read timetables for customer information purposes
GTFS Validators¶
- Conveyal's gtfs-validator - A Java-based GTFS validator based on the OneBusAway GTFS Modules, runs in Java and is faster than the Google provided one.
- Conveyal's gtfs-lib - Conveyal's successor to their own gtfs-validator, a Java-based library for loading and saving GTFS feeds of arbitrary size with disk-backed storage.
- Google's feedValidator - Google-supported Python-based GTFS validator.
- GTFS Data Package Specification - A Data Package specification with validation accomplished with Good Tables. Includes a data package, schemas, tests, and uses South East Queensland GTFS data as an example.
- gtfstidy - A Go-based tool to tidy and validate GTFS feeds.
- gtfs-validator-api - This Python package is a thin wrapper around MobilityData/gtfs-validator that handles intermediate files produced and finds gtfs-validator's output file so it can be given a specific name or returned as a string.
- GTFSVTOR - An open-source GTFS validator implemented in Java licensed under GPLv3 maintained by Mecatran.
- MobilityData's gtfs-validator - A open-source GTFS validator canonically following the GTFS spec implemented in Java licensed under Apache v2.0 maintained by MobilityData.
- Reflect GTFS Validator (hosted by Foursquare ITP) - Transit schedule and GTFS validation platform by Foursquare ITP that includes a free, web-based GTFS validator based on gtfs-lib.
- Transit App's gtfs-fares-v2-validator - A Python tool that validators GTFS-Fares-v2 data based on the draft specification.
- Transport Validator - An open-source validator implemented in Rust. Used by the French National Access Point.