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_functions - Python package with useful functions to create geo-spatial visualizations from GTFS feeds.
- 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¶
- [r-transit](https://github.com/r-transit) - Collection of tools for GTFS in R.
- gtfsio - Fast and flexible functions to read and write GTFS in R.
- tidytransit - Use tidytransit to map transit stops and routes, calculate travel times and transit frequencies, and validate transit feeds. tidytransit reads the General Transit Feed Specification into tidyverse and simple features data frames.
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-parser - The GTFS-PARSER library is a library to allow javascript to parse gtfs and create geojson on client or server.
- 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.)
- IBI Data Tools Infra - A tool to quickly setup and run a local instance of the above IBI Data Tools project.
- 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.
- Spare GTFS-Flex Builder - A free tool that helps transit agencies easily create, manage, and export their transportation data in GTFS-Flex format.
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.
- gtfsmerge - A Python Script to merge GTFS ZIP archives into one.
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
- transit-intensity - A simple project for measuring transit intensity written in Go.
- 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).
- PTNA - Public Transit Nework Analysis is a open source system for finding and aggregating information about public transportation lines mapped in OSM.
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.