CINXE.COM

GTFS - General Transit Feed Specification

<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="canonical" href="https://gtfs.org/resources/gtfs/"> <link rel="prev" href="../visualizations/"> <link rel="next" href="../gtfs-realtime/"> <link rel="alternate" href="./" hreflang="en"> <link rel="alternate" href="../../fr/resources/gtfs/" hreflang="fr"> <link rel="alternate" href="../../es/resources/gtfs/" hreflang="es"> <link rel="alternate" href="../../ja/resources/gtfs/" hreflang="ja"> <link rel="alternate" href="../../de/resources/gtfs/" hreflang="de"> <link rel="alternate" href="../../pt/resources/gtfs/" hreflang="pt"> <link rel="alternate" href="../../ru/resources/gtfs/" hreflang="ru"> <link rel="alternate" href="../../id/resources/gtfs/" hreflang="id"> <link rel="alternate" href="../../ko/resources/gtfs/" hreflang="ko"> <link rel="alternate" href="../../zh/resources/gtfs/" hreflang="zh"> <link rel="alternate" href="../../zh-TW/resources/gtfs/" hreflang="zh-TW"> <link rel="icon" href="../../assets/favicon.ico"> <meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.6.4+insiders-4.53.15"> <title>GTFS - General Transit Feed Specification</title> <link rel="stylesheet" href="../../assets/stylesheets/main.f15084e1.min.css"> <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Mulish:300,300i,400,400i,700,700i%7CSF+Mono:400,400i,700,700i&amp;display=fallback"> <style>:root{--md-text-font:"Mulish";--md-code-font:"SF Mono"}</style> <link rel="stylesheet" href="../../assets/stylesheets/extra.css"> <link rel="stylesheet" href="../../assets/stylesheets/footer.css"> <script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script> <script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-DRBTC7SSDT"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-DRBTC7SSDT",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-DRBTC7SSDT",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script> <script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script> </head> <body dir="ltr" data-md-color-scheme="gtfs" data-md-color-primary="custom" data-md-color-accent="custom"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#gtfs" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <header class="md-header" data-md-component="header"> <nav class="md-header__inner md-grid" aria-label="Header"> <a href="../.." title="General Transit Feed Specification" class="md-header__button md-logo" aria-label="General Transit Feed Specification" data-md-component="logo"> <img id="logo_light_mode" src="../../assets/logo.png" alt="logo"> <img id="logo_dark_mode" src="../.." alt="logo"> </a> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> General Transit Feed Specification </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> GTFS </span> </div> </div> </div> <form class="md-header__option" data-md-component="palette"> <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="gtfs" data-md-color-primary="custom" data-md-color-accent="custom" aria-hidden="true" type="radio" name="__palette" id="__palette_0"> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <div class="md-header__option"> <div class="md-select"> <button class="md-header__button md-icon" aria-label="Select language"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"/></svg> </button> <div class="md-select__inner"> <ul class="md-select__list"> <li class="md-select__item"> <a href="./" hreflang="en" class="md-select__link"> English </a> </li> <li class="md-select__item"> <a href="../../fr/resources/gtfs/" hreflang="fr" class="md-select__link"> Français </a> </li> <li class="md-select__item"> <a href="../../es/resources/gtfs/" hreflang="es" class="md-select__link"> Español </a> </li> <li class="md-select__item"> <a href="../../ja/resources/gtfs/" hreflang="ja" class="md-select__link"> 日本語 </a> </li> <li class="md-select__item"> <a href="../../de/resources/gtfs/" hreflang="de" class="md-select__link"> Deutsch (wird bald verfügbar sein) </a> </li> <li class="md-select__item"> <a href="../../pt/resources/gtfs/" hreflang="pt" class="md-select__link"> Português (em breve) </a> </li> <li class="md-select__item"> <a href="../../ru/resources/gtfs/" hreflang="ru" class="md-select__link"> Русский (будет добавлен позже) </a> </li> <li class="md-select__item"> <a href="../../id/resources/gtfs/" hreflang="id" class="md-select__link"> Bahasa Indonesia (akan segera hadir) </a> </li> <li class="md-select__item"> <a href="../../ko/resources/gtfs/" hreflang="ko" class="md-select__link"> 한국어 (곧 제공 예정) </a> </li> <li class="md-select__item"> <a href="../../zh/resources/gtfs/" hreflang="zh" class="md-select__link"> 中文 - 简体(即将推出) </a> </li> <li class="md-select__item"> <a href="../../zh-TW/resources/gtfs/" hreflang="zh-TW" class="md-select__link"> 中文 - 繁體(即將推出) </a> </li> </ul> </div> </div> </div> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class="md-search__options" aria-label="Search"> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class="md-search__suggest" data-md-component="search-suggest"></div> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta"> Initializing search </div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> <div class="md-header__source"> <a href="https://github.com/google/transit" title="Go to repository" class="md-source" data-md-component="source" target="_blank" rel="noopener"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class="md-source__repository"> GTFS Repository </div> </a> </div> </nav> </header> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href="../.." class="md-tabs__link"> Home </a> </li> <li class="md-tabs__item"> <a href="../../getting-started/what-is-GTFS/" class="md-tabs__link"> Getting started </a> </li> <li class="md-tabs__item"> <a href="../../documentation/overview/" class="md-tabs__link"> Technical Documentation </a> </li> <li class="md-tabs__item"> <a href="../../community/get-involved/" class="md-tabs__link"> Community </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../overview/" class="md-tabs__link"> Resources </a> </li> <li class="md-tabs__item"> <a href="../../about/" class="md-tabs__link"> About </a> </li> <li class="md-tabs__item"> <a href="../../blog/" class="md-tabs__link"> Blog </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="../.." title="General Transit Feed Specification" class="md-nav__button md-logo" aria-label="General Transit Feed Specification" data-md-component="logo"> <img id="logo_light_mode" src="../../assets/logo.png" alt="logo"> <img id="logo_dark_mode" src="../.." alt="logo"> </a> General Transit Feed Specification </label> <div class="md-nav__source"> <a href="https://github.com/google/transit" title="Go to repository" class="md-source" data-md-component="source" target="_blank" rel="noopener"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class="md-source__repository"> GTFS Repository </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../.." class="md-nav__link"> <span class="md-ellipsis"> Home </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-ellipsis"> Getting started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Getting started </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../getting-started/what-is-GTFS/" class="md-nav__link"> <span class="md-ellipsis"> What is GTFS? </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/why-use-GTFS/" class="md-nav__link"> <span class="md-ellipsis"> Why use GTFS? </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" > <label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0"> <span class="md-ellipsis"> How to produce GTFS? </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_3"> <span class="md-nav__icon md-icon"></span> How to produce GTFS? </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../getting-started/create/" class="md-nav__link"> <span class="md-ellipsis"> Create </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/validate/" class="md-nav__link"> <span class="md-ellipsis"> Validate </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/publish/" class="md-nav__link"> <span class="md-ellipsis"> Publish </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4" > <label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0"> <span class="md-ellipsis"> What can GTFS do? </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_4"> <span class="md-nav__icon md-icon"></span> What can GTFS do? </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../getting-started/features/overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/base/" class="md-nav__link"> <span class="md-ellipsis"> Base </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/base-add-ons/" class="md-nav__link"> <span class="md-ellipsis"> Base add-ons </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/accessibility/" class="md-nav__link"> <span class="md-ellipsis"> Accessibility </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/fares/" class="md-nav__link"> <span class="md-ellipsis"> Fares </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/pathways/" class="md-nav__link"> <span class="md-ellipsis"> Pathways </span> </a> </li> <li class="md-nav__item"> <a href="../../getting-started/features/flexible-services/" class="md-nav__link"> <span class="md-ellipsis"> Flexible services </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../getting-started/example-feed/" class="md-nav__link"> <span class="md-ellipsis"> Example GTFS feed </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" > <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-ellipsis"> Technical Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Technical Documentation </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" > <label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0"> <span class="md-ellipsis"> Schedule </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_2"> <span class="md-nav__icon md-icon"></span> Schedule </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/schedule/reference/" class="md-nav__link"> <span class="md-ellipsis"> Reference </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/schedule-best-practices/" class="md-nav__link"> <span class="md-ellipsis"> Best Practices </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_3" > <label class="md-nav__link" for="__nav_3_2_3" id="__nav_3_2_3_label" tabindex="0"> <span class="md-ellipsis"> Data examples </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_2_3"> <span class="md-nav__icon md-icon"></span> Data examples </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/attributions/" class="md-nav__link"> <span class="md-ellipsis"> Attributions </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/continuous-stops/" class="md-nav__link"> <span class="md-ellipsis"> Continuous stops </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/flex/" class="md-nav__link"> <span class="md-ellipsis"> Demand responsive services </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/fares-v1/" class="md-nav__link"> <span class="md-ellipsis"> Fares v1 </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/fares-v2/" class="md-nav__link"> <span class="md-ellipsis"> Fares v2 </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/feed-info/" class="md-nav__link"> <span class="md-ellipsis"> Feed information </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/frequencies/" class="md-nav__link"> <span class="md-ellipsis"> Frequencies </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/pathways/" class="md-nav__link"> <span class="md-ellipsis"> Pathways </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/routes-stops-trips/" class="md-nav__link"> <span class="md-ellipsis"> Routes, Stops & Trips </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/shapes/" class="md-nav__link"> <span class="md-ellipsis"> Shapes </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/text-to-speech/" class="md-nav__link"> <span class="md-ellipsis"> Text-to-speech </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/transfers/" class="md-nav__link"> <span class="md-ellipsis"> Transfers </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/examples/translations/" class="md-nav__link"> <span class="md-ellipsis"> Translations </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_4" > <label class="md-nav__link" for="__nav_3_2_4" id="__nav_3_2_4_label" tabindex="0"> <span class="md-ellipsis"> Change history </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_2_4"> <span class="md-nav__icon md-icon"></span> Change history </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/schedule/change-history/recent-additions/" class="md-nav__link"> <span class="md-ellipsis"> Recent additions </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/schedule/change-history/revision-history/" class="md-nav__link"> <span class="md-ellipsis"> Full revision history </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" > <label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0"> <span class="md-ellipsis"> Realtime </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_3"> <span class="md-nav__icon md-icon"></span> Realtime </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/realtime/reference/" class="md-nav__link"> <span class="md-ellipsis"> Reference </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/realtime-best-practices/" class="md-nav__link"> <span class="md-ellipsis"> Best Practices </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_3" > <label class="md-nav__link" for="__nav_3_3_3" id="__nav_3_3_3_label" tabindex="0"> <span class="md-ellipsis"> Feed Entities </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_3_3"> <span class="md-nav__icon md-icon"></span> Feed Entities </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/realtime/feed-entities/overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/feed-entities/trip-updates/" class="md-nav__link"> <span class="md-ellipsis"> Trip Updates </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/feed-entities/service-alerts/" class="md-nav__link"> <span class="md-ellipsis"> Service Alerts </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/feed-entities/vehicle-positions/" class="md-nav__link"> <span class="md-ellipsis"> Vehicle Positions </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/feed-entities/trip-modifications/" class="md-nav__link"> <span class="md-ellipsis"> Trip Modifications </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/proto/" class="md-nav__link"> <span class="md-ellipsis"> Protobuf </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_5" > <label class="md-nav__link" for="__nav_3_3_5" id="__nav_3_3_5_label" tabindex="0"> <span class="md-ellipsis"> Language Bindings </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_3_5"> <span class="md-nav__icon md-icon"></span> Language Bindings </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/dotnet/" class="md-nav__link"> <span class="md-ellipsis"> .NET </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/java/" class="md-nav__link"> <span class="md-ellipsis"> Java </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/nodejs/" class="md-nav__link"> <span class="md-ellipsis"> JavaScript/Node.js </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/python/" class="md-nav__link"> <span class="md-ellipsis"> Python </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/golang/" class="md-nav__link"> <span class="md-ellipsis"> Golang </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/ruby/" class="md-nav__link"> <span class="md-ellipsis"> Ruby </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/language-bindings/php/" class="md-nav__link"> <span class="md-ellipsis"> PHP </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_6" > <label class="md-nav__link" for="__nav_3_3_6" id="__nav_3_3_6_label" tabindex="0"> <span class="md-ellipsis"> Data examples </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_3_6"> <span class="md-nav__icon md-icon"></span> Data examples </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/realtime/examples/service-alerts/" class="md-nav__link"> <span class="md-ellipsis"> Service alerts </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/examples/trip-updates/" class="md-nav__link"> <span class="md-ellipsis"> Trip updates </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/examples/migration-duplicated/" class="md-nav__link"> <span class="md-ellipsis"> Migration duplicated </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_7" > <label class="md-nav__link" for="__nav_3_3_7" id="__nav_3_3_7_label" tabindex="0"> <span class="md-ellipsis"> Change history </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3_3_7"> <span class="md-nav__icon md-icon"></span> Change history </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../documentation/realtime/change-history/recent-additions/" class="md-nav__link"> <span class="md-ellipsis"> Recent Additions </span> </a> </li> <li class="md-nav__item"> <a href="../../documentation/realtime/change-history/revision-history/" class="md-nav__link"> <span class="md-ellipsis"> Full revision history </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-ellipsis"> Community </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Community </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../community/get-involved/" class="md-nav__link"> <span class="md-ellipsis"> Get involved </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_2" > <label class="md-nav__link" for="__nav_4_2" id="__nav_4_2_label" tabindex="0"> <span class="md-ellipsis"> Governance </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_2"> <span class="md-nav__icon md-icon"></span> Governance </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../community/governance/gtfs-schedule-amendment-process/" class="md-nav__link"> <span class="md-ellipsis"> GTFS Schedule Amendment Process </span> </a> </li> <li class="md-nav__item"> <a href="../../community/governance/gtfs-realtime-amendment-process/" class="md-nav__link"> <span class="md-ellipsis"> GTFS Realtime Amendment Process </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_3" > <label class="md-nav__link" for="__nav_4_3" id="__nav_4_3_label" tabindex="0"> <span class="md-ellipsis"> Extensions </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4_3"> <span class="md-nav__icon md-icon"></span> Extensions </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../../community/extensions/overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../../community/extensions/fares-v2/" class="md-nav__link"> <span class="md-ellipsis"> Fares v2 </span> </a> </li> <li class="md-nav__item"> <a href="../../community/extensions/flex/" class="md-nav__link"> <span class="md-ellipsis"> Flex </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked> <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex=""> <span class="md-ellipsis"> Resources </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> Resources </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../overview/" class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item"> <a href="../getting-started/" class="md-nav__link"> <span class="md-ellipsis"> Getting Started </span> </a> </li> <li class="md-nav__item"> <a href="../community/" class="md-nav__link"> <span class="md-ellipsis"> Community </span> </a> </li> <li class="md-nav__item"> <a href="../data/" class="md-nav__link"> <span class="md-ellipsis"> Data </span> </a> </li> <li class="md-nav__item"> <a href="../software-for-creating-apis/" class="md-nav__link"> <span class="md-ellipsis"> Software for Creating APIs </span> </a> </li> <li class="md-nav__item"> <a href="../agency-tools/" class="md-nav__link"> <span class="md-ellipsis"> Agency Tools </span> </a> </li> <li class="md-nav__item"> <a href="../hardware/" class="md-nav__link"> <span class="md-ellipsis"> Hardware </span> </a> </li> <li class="md-nav__item"> <a href="../apps/" class="md-nav__link"> <span class="md-ellipsis"> Apps </span> </a> </li> <li class="md-nav__item"> <a href="../sdk/" class="md-nav__link"> <span class="md-ellipsis"> SDKs </span> </a> </li> <li class="md-nav__item"> <a href="../visualizations/" class="md-nav__link"> <span class="md-ellipsis"> Visualizations </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> GTFS </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> GTFS </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#gtfs-libraries" class="md-nav__link"> <span class="md-ellipsis"> GTFS Libraries </span> </a> <nav class="md-nav" aria-label="GTFS Libraries"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#c" class="md-nav__link"> <span class="md-ellipsis"> C </span> </a> </li> <li class="md-nav__item"> <a href="#c_1" class="md-nav__link"> <span class="md-ellipsis"> C++ </span> </a> </li> <li class="md-nav__item"> <a href="#c_2" class="md-nav__link"> <span class="md-ellipsis"> C </span> </a> </li> <li class="md-nav__item"> <a href="#go" class="md-nav__link"> <span class="md-ellipsis"> Go </span> </a> </li> <li class="md-nav__item"> <a href="#java" class="md-nav__link"> <span class="md-ellipsis"> Java </span> </a> </li> <li class="md-nav__item"> <a href="#javascript" class="md-nav__link"> <span class="md-ellipsis"> JavaScript </span> </a> </li> <li class="md-nav__item"> <a href="#postgresql" class="md-nav__link"> <span class="md-ellipsis"> PostgreSQL </span> </a> </li> <li class="md-nav__item"> <a href="#python" class="md-nav__link"> <span class="md-ellipsis"> Python </span> </a> </li> <li class="md-nav__item"> <a href="#r" class="md-nav__link"> <span class="md-ellipsis"> R </span> </a> </li> <li class="md-nav__item"> <a href="#ruby" class="md-nav__link"> <span class="md-ellipsis"> Ruby </span> </a> </li> <li class="md-nav__item"> <a href="#rust" class="md-nav__link"> <span class="md-ellipsis"> Rust </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#gtfs-converters" class="md-nav__link"> <span class="md-ellipsis"> GTFS Converters </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-data-collection-and-maintenance-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Data Collection and Maintenance Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-merge-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Merge Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-analysis-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Analysis Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-timetable-publishing-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Timetable Publishing Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-validators" class="md-nav__link"> <span class="md-ellipsis"> GTFS Validators </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../gtfs-realtime/" class="md-nav__link"> <span class="md-ellipsis"> GTFS Realtime </span> </a> </li> <li class="md-nav__item"> <a href="../siri/" class="md-nav__link"> <span class="md-ellipsis"> SIRI </span> </a> </li> <li class="md-nav__item"> <a href="../multimodal/" class="md-nav__link"> <span class="md-ellipsis"> Multimodal </span> </a> </li> <li class="md-nav__item"> <a href="../other/" class="md-nav__link"> <span class="md-ellipsis"> Other </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" > <div class="md-nav__link md-nav__container"> <a href="../../about/" class="md-nav__link "> <span class="md-ellipsis"> About </span> </a> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> About </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" > <div class="md-nav__link md-nav__container"> <a href="../../blog/" class="md-nav__link "> <span class="md-ellipsis"> Blog </span> </a> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7"> <span class="md-nav__icon md-icon"></span> Blog </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#gtfs-libraries" class="md-nav__link"> <span class="md-ellipsis"> GTFS Libraries </span> </a> <nav class="md-nav" aria-label="GTFS Libraries"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#c" class="md-nav__link"> <span class="md-ellipsis"> C </span> </a> </li> <li class="md-nav__item"> <a href="#c_1" class="md-nav__link"> <span class="md-ellipsis"> C++ </span> </a> </li> <li class="md-nav__item"> <a href="#c_2" class="md-nav__link"> <span class="md-ellipsis"> C </span> </a> </li> <li class="md-nav__item"> <a href="#go" class="md-nav__link"> <span class="md-ellipsis"> Go </span> </a> </li> <li class="md-nav__item"> <a href="#java" class="md-nav__link"> <span class="md-ellipsis"> Java </span> </a> </li> <li class="md-nav__item"> <a href="#javascript" class="md-nav__link"> <span class="md-ellipsis"> JavaScript </span> </a> </li> <li class="md-nav__item"> <a href="#postgresql" class="md-nav__link"> <span class="md-ellipsis"> PostgreSQL </span> </a> </li> <li class="md-nav__item"> <a href="#python" class="md-nav__link"> <span class="md-ellipsis"> Python </span> </a> </li> <li class="md-nav__item"> <a href="#r" class="md-nav__link"> <span class="md-ellipsis"> R </span> </a> </li> <li class="md-nav__item"> <a href="#ruby" class="md-nav__link"> <span class="md-ellipsis"> Ruby </span> </a> </li> <li class="md-nav__item"> <a href="#rust" class="md-nav__link"> <span class="md-ellipsis"> Rust </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#gtfs-converters" class="md-nav__link"> <span class="md-ellipsis"> GTFS Converters </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-data-collection-and-maintenance-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Data Collection and Maintenance Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-merge-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Merge Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-analysis-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Analysis Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-timetable-publishing-tools" class="md-nav__link"> <span class="md-ellipsis"> GTFS Timetable Publishing Tools </span> </a> </li> <li class="md-nav__item"> <a href="#gtfs-validators" class="md-nav__link"> <span class="md-ellipsis"> GTFS Validators </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <h1 id="gtfs">GTFS<a class="headerlink" href="#gtfs" title="Permanent link">&para;</a></h1> <ul> <li><a href="https://gtfs.org/schedule/reference/" target="_blank" rel="noopener">GTFS Spec</a> - Specification for the General Transit Data Feed, or GTFS. Available in several languages.</li> <li><a href="http://gtfs.org/best-practices/" target="_blank" rel="noopener">GTFS Best Practices</a> - Best practices for producers of a GTFS feed.</li> </ul> <h2 id="gtfs-libraries">GTFS Libraries<a class="headerlink" href="#gtfs-libraries" title="Permanent link">&para;</a></h2> <p>Software that makes it easy to consume GTFS data in a variety of languages.</p> <h3 id="c">C<a class="headerlink" href="#c" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/rakhack/cgtfs" target="_blank" rel="noopener">CGTFS</a> - C library for reading static GTFS feeds. Supports reading unpacked feeds into application memory or into SQLite databases.</li> <li><a href="https://github.com/bliksemlabs/rrrr" target="_blank" rel="noopener">RRRR Rapid Real-time Routing</a> - RRRR (usually pronounced R4) is a C-language implementation of the RAPTOR public transit routing algorithm.</li> </ul> <h3 id="c_1">C++<a class="headerlink" href="#c_1" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/mesozoic-drones/just_gtfs" target="_blank" rel="noopener">just_gtfs</a> - C++17 header-only library for reading and writing GTFS (used in <a href="https://github.com/valhalla/valhalla" target="_blank" rel="noopener">Valhalla</a>). Main features: fast reading and writing of GTFS feeds, support for <a href="https://developers.google.com/transit/gtfs/reference/extended-route-types" target="_blank" rel="noopener">extended GTFS route types</a>, simple working with GTFS Date and Time formats.</li> </ul> <h3 id="c_2">C<a class="headerlink" href="#c_2" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/Esri/public-transit-tools" target="_blank" rel="noopener">ESRI public-transit-tools</a> - Tools for working with public transit data in ArcGIS (license for ArcGIS required).</li> <li><a href="https://github.com/OsmSharp/GTFS" target="_blank" rel="noopener">GTFS Feed Parser</a> - .Net/Mono implementation of a GTFS parser.</li> </ul> <h3 id="go">Go<a class="headerlink" href="#go" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/geops/gtfsparser" target="_blank" rel="noopener">Go GTFS Parser</a> - A GTFS parsing library for Go.</li> </ul> <h3 id="java">Java<a class="headerlink" href="#java" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/OneBusAway/onebusaway-gtfs-modules/wiki" target="_blank" rel="noopener">OneBusAway GTFS Modules</a> - A Java-based library for reading, writing, and transforming public transit data in the GTFS format, including database support.</li> </ul> <h3 id="javascript">JavaScript<a class="headerlink" href="#javascript" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/evansiroky/gtfs-sequelize" target="_blank" rel="noopener">gtfs-sequelize</a> - Node.js library modeling the static GTFS using sequelize.js.</li> <li><a href="https://github.com/public-transport/gtfs-utils" target="_blank" rel="noopener">gtfs-utils</a> – Utilities to process GTFS data sets (e.g., "flattening" <code>calendar.txt</code> &amp; <code>calendar_dates.txt</code>, computing arrival/departure times of trips).</li> <li><a href="https://github.com/derhuerst/gtfs-via-postgres" target="_blank" rel="noopener">gtfs-via-postgres</a> – Yet another tool to process GTFS using PostgreSQL.</li> <li><a href="https://github.com/BlinkTagInc/node-gtfs" target="_blank" rel="noopener">Node-GTFS</a> - 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.</li> </ul> <h3 id="postgresql">PostgreSQL<a class="headerlink" href="#postgresql" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/tyleragreen/gtfs-schema" target="_blank" rel="noopener">gtfs-schema</a> - PostgreSQL schema for GTFS feeds.</li> <li><a href="https://github.com/derhuerst/gtfs-via-postgres" target="_blank" rel="noopener">gtfs-via-postgres</a> – Yet another tool to process GTFS using PostgreSQL.</li> </ul> <h3 id="python">Python<a class="headerlink" href="#python" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/Esri/public-transit-tools" target="_blank" rel="noopener">ESRI public-transit-tools</a> - Tools for working with public transit data in ArcGIS (license for ArcGIS required).</li> <li><a href="https://github.com/OpenTransitTools/gtfsdb" target="_blank" rel="noopener">gtfsdb</a> - Python library for converting GTFS files into a relational database.</li> <li><a href="https://github.com/Bondify/gtfs_functions" target="_blank" rel="noopener">gtfs_functions</a> - Python package with useful functions to create geo-spatial visualizations from GTFS feeds.</li> <li><a href="https://github.com/UTEL-UIUC/gtfs_segments" target="_blank" rel="noopener">gtfs-segments</a> - Python package that represents GTFS data for buses in a concise tabular manner using segments.</li> <li><a href="https://github.com/afimb/gtfslib-python" target="_blank" rel="noopener">gtfslib-python</a> - An open source library in python for reading GTFS files and computing various stats and indicators about Public Transport networks.</li> <li><a href="https://github.com/geops/gtfsman" target="_blank" rel="noopener">gtfsman</a> - Repository-like tool in Python to manage and update a huge number of GTFS feeds.</li> <li><a href="https://github.com/CxAalto/gtfspy" target="_blank" rel="noopener">gtfspy</a> - Public transport network analysis and travel time computations using Python3. Compatible with Postgres/PostGIS, Oracle, MySQL, and SQLite. Used by <a href="https://github.com/CxAalto/gtfspy-webviz" target="_blank" rel="noopener">gtfspy-webviz</a>.</li> <li><a href="https://github.com/mrcagney/gtfs_kit" target="_blank" rel="noopener">GTFS Kit</a> - A Python 3.8+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes GTFSTK.</li> <li><a href="https://github.com/mrcagney/make_gtfs" target="_blank" rel="noopener">Make GTFS</a> - A Python library to make GTFS feeds from basic route information.</li> <li><a href="https://github.com/transitland/mapzen-gtfs" target="_blank" rel="noopener">Mapzen GTFS</a> - A Python GTFS library that supports reading individual GTFS tables, or constructing a graph to represent each agency in a feed.</li> <li><a href="https://github.com/tulsawebdevs/django-multi-gtfs" target="_blank" rel="noopener">multigtfs</a> - A Django application to import and export GTFS.</li> <li><a href="https://github.com/remix/partridge" target="_blank" rel="noopener">partridge</a> - A fast, forgiving Python GTFS reader built on pandas DataFrames.</li> <li><a href="https://github.com/psrc/transit_service_analyst" target="_blank" rel="noopener">transit_service_analyst</a> - A Python library to support transit service analysis.</li> <li><a href="https://github.com/UTEL-UIUC/TransitGPT" target="_blank" rel="noopener">TransitGPT</a> - TransitGPT is a Generative AI-powered chatbot that enables transit enthusiasts to access and analyze General Transit Feed Specification (GTFS) data through natural language instructions.</li> </ul> <h3 id="r">R<a class="headerlink" href="#r" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/r-transit" target="_blank" rel="noopener">r-transit</a> - Collection of tools for GTFS in R.</li> <li><a href="https://github.com/r-transit/gtfsio" target="_blank" rel="noopener">gtfsio</a> - Fast and flexible functions to read and write GTFS in R.</li> <li><a href="https://github.com/r-transit/tidytransit" target="_blank" rel="noopener">tidytransit</a> - 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.</li> </ul> <h3 id="ruby">Ruby<a class="headerlink" href="#ruby" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/vasile/GTFS-viz" target="_blank" rel="noopener">GTFS-viz</a> - Ruby script that converts a set of GTFS files into a SQLite database + GeoJSONs (needed by the <a href="https://github.com/vasile/transit-map" target="_blank" rel="noopener">Transit Map</a> web application)</li> </ul> <h3 id="rust">Rust<a class="headerlink" href="#rust" title="Permanent link">&para;</a></h3> <ul> <li><a href="https://github.com/rust-transit/gtfs-structure" target="_blank" rel="noopener">gtfs-structure</a> - This crates provides GTFS structures and helpers to read GTFS archives.</li> </ul> <h2 id="gtfs-converters">GTFS Converters<a class="headerlink" href="#gtfs-converters" title="Permanent link">&para;</a></h2> <p>Converters from various static schedule formats to and from GTFS.</p> <ul> <li><a href="https://enroute.atlassian.net/wiki/spaces/PUBLIC/pages/539426886/Chouette+Convert" target="_blank" rel="noopener">Chouette</a> - Converts between French-Transmodel <a href="https://transmodel-cen.eu/index.php/netex/" target="_blank" rel="noopener">NeTEX</a> and GTFS.</li> <li><a href="https://github.com/derhuerst/extract-gtfs-pathways" target="_blank" rel="noopener">extract-gtfs-pathways</a> – Command-line tool to extract pathways as GeoJSON from a GTFS dataset.</li> <li><a href="https://github.com/derhuerst/extract-gtfs-shapes" target="_blank" rel="noopener">extract-gtfs-shapes</a> – Command-line tool to extract shapes as GeoJSON from a GTFS dataset.</li> <li><a href="https://github.com/CUTR-at-USF/gtfs-osm-sync" target="_blank" rel="noopener">GTFS-OSM-Sync</a> - A Java tool for synchronizing data in GTFS format with <a href="http://www.openstreetmap.org/" target="_blank" rel="noopener">OpenStreetMap.org</a>.</li> <li><a href="https://github.com/ioTransit/gtfs-parser" target="_blank" rel="noopener">gtfs-parser</a> - The GTFS-PARSER library is a library to allow javascript to parse gtfs and create geojson on client or server.</li> <li><a href="https://github.com/cal-itp/gtfs-service-area" target="_blank" rel="noopener">gtfs-service-area</a> - Compute a transit service area from static GTFS. Results are output as single-layer .geojson files. Dockerized version of <a href="https://github.com/BlinkTagInc/gtfs-to-geojson" target="_blank" rel="noopener">gtfs-to-geojson</a>.</li> <li><a href="https://github.com/kotrc/GTFS-route-shapes" target="_blank" rel="noopener">GTFS-route-shapes</a> - A Python script to generate a single geoJSON shape for each transit route in a GTFS archive.</li> <li><a href="https://github.com/BlinkTagInc/gtfs-to-geojson" target="_blank" rel="noopener">gtfs-to-geojson</a> - Javascript tool that converts transit data in GTFS shapes and stops into geoJSON. This is useful for creating maps of transit routes.</li> <li><a href="https://github.com/ipeaGIT/gtfs2gps" target="_blank" rel="noopener">gtfs2gps</a> - An R package that converts public transportation data in GTFS format to GPS-like records in a <code>data.table</code>, where each row represents the timestamp of each vehicle at a given spatial resolution.</li> <li><a href="https://github.com/ipeaGIT/gtfs2emis" target="_blank" rel="noopener">gtfs2emis</a> - An R package to estimate the emission levels of public transport vehicles based on General Transit Feed Specification (GTFS) data.</li> <li><a href="https://github.com/r-gtfs/gtsf" target="_blank" rel="noopener">gtsf</a> - general transit (GTFS) simple (geographic) features (sf) in R. can be used to convert from GTFS to Shapefile, GeoJSON, and other formats through GDAL.</li> <li><a href="https://github.com/derhuerst/hafas-generate-gtfs" target="_blank" rel="noopener">hafas-generate-gtfs</a> <em>(work-in-progress)</em> – A Javascript tool to generate GTFS dumps from HAFAS endpoints.</li> <li><a href="https://github.com/geops/hafas2gtfs" target="_blank" rel="noopener">Hafas2GTFS</a> - Hafas2GTFS converter written in Python, optimized for SBB HAFAS feeds.</li> <li><a href="https://github.com/bdferris/kml-to-gtfs-shapes/tree/gh-pages" target="_blank" rel="noopener">kml-to-gtfs-shapes</a> - Javascript tool to convert polylines from a KML file into a GTFS shapes.txt file. Hosted on GitHub <a href="http://bdferris.github.io/kml-to-gtfs-shapes/" target="_blank" rel="noopener">here</a>.</li> <li><a href="https://github.com/entur/netex-gtfs-converter-java" target="_blank" rel="noopener">NeTEx-to-GTFS Converter Java</a> - Converts NeTEX datasets into GTFS datasets. The input NeTEx datasets are required to follow the Nordic NeTEx Profile.</li> <li><a href="https://github.com/hiposfer/o2g" target="_blank" rel="noopener">o2g</a> - A simple tool to extract GTFS feed from OpenStreetMap.</li> <li><a href="https://github.com/Open-Transport/synthese/wiki" target="_blank" rel="noopener">Open-Transport SYNTHESE Convertors</a> - Converts French-Transmodel, SIRI, NETeX, HAFAS, HASTUS, VDV452, and more.</li> <li><a href="https://github.com/OneBusAway/onebusaway-gtfs-to-barefoot" target="_blank" rel="noopener">onebusaway-gtfs-to-barefoot</a> - A Java tool to create a <a href="https://github.com/bmwcarit/barefoot" target="_blank" rel="noopener">Barefoot</a> mapfile from a GTFS file.</li> <li><a href="https://github.com/OneBusAway/onebusaway-vdv-modules" target="_blank" rel="noopener">onebusaway-vdv-modules</a> - A Java library for working with transit data in the VDV format, including converting VDV-452 schedule data into GTFS.</li> <li><a href="https://github.com/grote/osm2gtfs" target="_blank" rel="noopener">osm2gtfs</a> - Turn OpenStreetMap data and schedule information into GTFS.</li> <li><a href="https://github.com/hove-io/transit_model" target="_blank" rel="noopener">transit_model</a> - A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see <a href="../software-for-creating-apis/">Software for Creating APIs</a>), TransXChange (UK specification), KV1 (NL specification), NeTEx (EU specification).</li> <li><a href="https://github.com/laidig/transloc-gtfs-rectifier" target="_blank" rel="noopener">transloc-gtfs-rectifier</a> - Python application that attempts to assign GTFS stop_ids to <a href="http://transloc.com/" target="_blank" rel="noopener">TransLoc</a> IDs using <a href="https://market.mashape.com/transloc/openapi-1-2" target="_blank" rel="noopener">TransLoc's API</a> (<a href="http://transloc.com/" target="_blank" rel="noopener">TransLoc</a> doesn't provide GTFS <code>stop_ids</code> in their API).</li> <li><a href="https://github.com/bliksemlabs/bliksemintegration" target="_blank" rel="noopener">Transmodel and IFF to GTFS</a> - 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.</li> <li><a href="https://github.com/Transporter-Project/transxchange-to-gtfs" target="_blank" rel="noopener">Transporter-Project transxchange-to-gtfs</a> TransXChange to GTFS converter written in Objective-C.</li> <li><a href="https://www.gov.uk/government/publications/transxchange-publisher" target="_blank" rel="noopener">TXC TransXChange publisher (UK Department for Transport)</a> - The TXC TransXChange publisher is a standalone software tool that can be used to publish TransXChange compliant XML documents in a format that’s easy to read and print.</li> <li><a href="https://itsleeds.github.io/UK2GTFS/" target="_blank" rel="noopener">UK2GTFS</a> - R package that converts UK format TransXchange (bus, metro, tram, ferry) and CIF (rail) timetables to GTFS.</li> </ul> <h2 id="gtfs-data-collection-and-maintenance-tools">GTFS Data Collection and Maintenance Tools<a class="headerlink" href="#gtfs-data-collection-and-maintenance-tools" title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/atlregional/bus-router" target="_blank" rel="noopener">bus-router</a> - Python script that generates missing shapes.txt for GTFS using routing from <a href="https://developers.google.com/maps/documentation/directions/" target="_blank" rel="noopener">Google Maps Directions API</a> or <a href="https://github.com/Project-OSRM/osrm-backend/wiki/Server-api" target="_blank" rel="noopener">OSRM</a>.</li> <li><a href="https://github.com/TransitApp/GTFS-blocks-to-transfers" target="_blank" rel="noopener">gtfs-blocks-to-transfers</a> - A Python tool to convert GTFS blocks, defined by setting <a href="https://github.com/google/transit/blob/master/gtfs/spec/en/reference.md#example-blocks-and-service-day" target="_blank" rel="noopener">trip.block_id</a> into a series of <a href="https://github.com/google/transit/pull/303" target="_blank" rel="noopener">trip-to-trip transfers (proposal)</a>.</li> <li><a href="https://transport.data.gouv.fr/tools/gtfs_diff" target="_blank" rel="noopener">GTFS Diff</a> - GTFS Diff is a specification created by transport.data.gouv.fr and aims at providing a simple and unified way to express differences between GTFS files.</li> <li><a href="https://github.com/conveyal/gtfs-editor" target="_blank" rel="noopener">GTFS Editor</a> - A (self-hosted) web-based GTFS editing framework. (Note: this project has been deprecated in favor of <a href="https://github.com/ibi-group/datatools-ui" target="_blank" rel="noopener">IBI Data Tools</a>.)</li> <li><a href="https://github.com/laidig/vagrant-gtfs-editor" target="_blank" rel="noopener">GTFS Editor for Vagrant</a> - Quickly set up the GTFS editor (above) using <a href="https://www.vagrantup.com/" target="_blank" rel="noopener">Vagrant</a></li> <li><a href="https://github.com/WRI-Cities/static-GTFS-manager" target="_blank" rel="noopener">static-GTFS-manager</a> - A (self-hosted) browser-based user interface for creating, editing, exporting static GTFS (see <a href="https://groups.google.com/forum/#!topic/transit-developers/GFz5rTJTB0I" target="_blank" rel="noopener">related post</a>). </li> <li><a href="https://github.com/conveyal/transit-wand" target="_blank" rel="noopener">TransitWand</a> - An open source web and mobile application for collecting transit data. Use it to create GTFS feeds, capture passenger counts or generate GIS datasets.</li> <li><a href="https://github.com/ibi-group/datatools-ui" target="_blank" rel="noopener">IBI Data Tools</a> - A web application that handles GTFS editing, validating, quality checking, and deploying to OpenTripPlanner. (Combines and builds upon the functionality of the deprecated <a href="https://github.com/conveyal/gtfs-data-manager" target="_blank" rel="noopener">Gtfs Data Manager</a> and <a href="https://github.com/conveyal/gtfs-editor" target="_blank" rel="noopener">GTFS Editor</a>.)</li> <li><a href="https://github.com/cal-itp/ibi-datatools-infra" target="_blank" rel="noopener">IBI Data Tools Infra</a> - A tool to quickly setup and run a local instance of the above IBI Data Tools project. </li> <li><a href="https://gtfs.pleasantprogrammer.com" target="_blank" rel="noopener">GTFS.html</a> - An entirely browser-based tool to view GTFS feeds. Use it to view routes, stops, timetables, etc.</li> <li><a href="https://github.com/ad-freiburg/pfaedle" target="_blank" rel="noopener">pfaedle</a> - Precise map-matching for GTFS using OpenStreetMap data</li> <li><a href="https://github.com/HSLdevcom/gtfs_shape_mapfit" target="_blank" rel="noopener">GTFS shape mapfit</a> - Python tool that fits GTFS shape files and stops to a given OSM map file. Uses <a href="https://github.com/tru-hy/pymapmatch" target="_blank" rel="noopener">pymapmatch</a> for the matching.</li> <li><a href="http://nationalrtap.org/Web-Apps/GTFS-Builder" target="_blank" rel="noopener">GTFS Builder</a> - A free web-based application to help you create GTFS files. Maintained by the National Rural Transit Assistance Program (RTAP).</li> <li><a href="https://github.com/kostjerry/gtfs-station-builder" target="_blank" rel="noopener">gtfs-station-builder</a> - UI tool to help build the internal structure of stations (including pathways.txt)</li> <li><a href="https://github.com/BlinkTagInc/node-gtfs-tts" target="_blank" rel="noopener">GTFS Text-to-Speech Tester</a> - 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.</li> <li><a href="https://sparelabs.com/en/spare-gtfs-flex-builder" target="_blank" rel="noopener">Spare GTFS-Flex Builder</a> - A free tool that helps transit agencies easily create, manage, and export their transportation data in GTFS-Flex format. </li> <li><a href="https://goswift.ly/" target="_blank" rel="noopener">Swiftly</a> - Tool generate realtime transit data.</li> <li><a href="https://bitbucket.org/enroute-mobi/chouette-core" target="_blank" rel="noopener">Chouette SaaS</a> - Tool to generate GTFS Schedule data</li> <li><a href="https://bitbucket.org/enroute-mobi/ara" target="_blank" rel="noopener">Ara SaaS</a> - Tool to generate GTFS Realtime data.</li> </ul> <h2 id="gtfs-merge-tools">GTFS Merge Tools<a class="headerlink" href="#gtfs-merge-tools" title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/psrc/combine_gtfs_feeds" target="_blank" rel="noopener">combine_gtfs_feeds</a> - A Python tool to combine multiple gtfs feeds into one feed/dataset.</li> <li><a href="https://github.com/mrcagney/gtfs_kit" target="_blank" rel="noopener">GTFS Kit</a> - A Python 3.8+ tool kit for analyzing and merging General Transit Feed Specification (GTFS) data. <a href="https://mrcagney.github.io/gtfs_kit_docs/index.html#module-gtfs_kit.cleaners" target="_blank" rel="noopener">Info on how to aggregate and clean feeds provided here</a>.</li> <li><a href="https://github.com/google/transitfeed/wiki/Merge" target="_blank" rel="noopener">Transitfeed merge function</a> - A Python library with a function to merge two different GTFS feeds.</li> <li><a href="https://github.com/now8-org/gtfsmerge" target="_blank" rel="noopener">gtfsmerge</a> - A Python Script to merge GTFS ZIP archives into one.</li> </ul> <h2 id="gtfs-analysis-tools">GTFS Analysis Tools<a class="headerlink" href="#gtfs-analysis-tools" title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/mrcagney/gtfs_kit" target="_blank" rel="noopener">GTFS Kit</a> - A Python 3.6+ tool kit for analyzing General Transit Feed Specification (GTFS) data. Supersedes <a href="https://github.com/araichev/gtfstk" target="_blank" rel="noopener">GTFSTK</a>.</li> <li><a href="https://github.com/ipeaGIT/gtfstools" target="_blank" rel="noopener">gtfstools</a> - A set of convenient tools for editing and analysing transit feeds in GTFS format in R.</li> <li><a href="https://github.com/psrc/transit_service_analyst" target="_blank" rel="noopener">transit_service_analyst</a> - A Python library to support transit service analysis.</li> <li><a href="https://github.com/kuanb/peartree" target="_blank" rel="noopener">Peartree</a> - A Python library for converting transit data into a directed graph for network analysis.</li> <li><a href="https://github.com/conveyal/r5" target="_blank" rel="noopener">R5: Rapid Realistic Routing on Real-world and Reimagined networks</a> - 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 (<a href="https://github.com/ipeaGIT/r5r/" target="_blank" rel="noopener">r5r</a>) is developed independently by IPEA. See also the performance comparison from Higgins et al. (2022), linked below.</li> <li><a href="https://github.com/r-transit/tidytransit" target="_blank" rel="noopener">tidytransit</a> - 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.</li> <li><a href="https://github.com/tmelliott/transitr" target="_blank" rel="noopener">transitr</a> - An R package for constructing and modelling a transit network in real time to obtain vehicle ETAs</li> <li><a href="https://github.com/ioTransit/transit-intensity" target="_blank" rel="noopener">transit-intensity</a> - A simple project for measuring transit intensity written in Go.</li> <li><a href="https://github.com/bmander/busbuzzard" target="_blank" rel="noopener">Busbuzzard</a> - Inference of probabilistic schedules from empirical data about transit vehicles.</li> <li><a href="https://github.com/Esri/public-transit-tools" target="_blank" rel="noopener">ESRI ArcGIS Public Transit Tools (GTFS)</a> - Tools for working with public transit data in ArcGIS</li> <li><a href="https://github.com/BlinkTagInc/gtfs-to-chart" target="_blank" rel="noopener">GTFS-to-Chart</a> - Creates stringline charts showing all vehicles on a transit route from GTFS data.</li> <li><a href="https://codeberg.org/dancingCycle/gtfs-display" target="_blank" rel="noopener">GTFS Display</a> - Analyse, monitor and maintain GTFS data (<a href="https://www.swingbe.de/activity/gtfs-display/" target="_blank" rel="noopener">Example instances</a>).</li> <li><a href="https://wiki.openstreetmap.org/wiki/Public_Transport_Network_Analysis" target="_blank" rel="noopener">PTNA</a> - Public Transit Nework Analysis is a open source system for finding and aggregating information about public transportation lines mapped in OSM.</li> </ul> <h2 id="gtfs-timetable-publishing-tools">GTFS Timetable Publishing Tools<a class="headerlink" href="#gtfs-timetable-publishing-tools" title="Permanent link">&para;</a></h2> <ul> <li><a href="https://gtfstohtml.com" target="_blank" rel="noopener">GTFS-to-HTML</a> - Generate human-readable timetables in HTML or PDF format directly from GTFS.</li> <li><a href="https://github.com/neroden/timetable_kit" target="_blank" rel="noopener">Timetable Kit</a> - An open source Python 3.10 module and scripts depending on <a href="https://github.com/mrcagney/gtfs_kit" target="_blank" rel="noopener">GTFS Kit</a>, 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. </li> <li><a href="https://github.com/OpenTransitTools/ttpub" target="_blank" rel="noopener">TimeTablePublisher (TTPUB)</a> - 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</li> </ul> <h2 id="gtfs-validators">GTFS Validators<a class="headerlink" href="#gtfs-validators" title="Permanent link">&para;</a></h2> <ul> <li><a href="https://github.com/conveyal/gtfs-validator" target="_blank" rel="noopener">Conveyal's gtfs-validator</a> - A Java-based GTFS validator based on the OneBusAway GTFS Modules, runs in Java and is faster than the Google provided one.</li> <li><a href="https://github.com/conveyal/gtfs-lib/" target="_blank" rel="noopener">Conveyal's gtfs-lib</a> - Conveyal's successor to their own <a href="https://github.com/conveyal/gtfs-validator" target="_blank" rel="noopener">gtfs-validator</a>, a Java-based library for loading and saving GTFS feeds of arbitrary size with disk-backed storage.</li> <li><a href="https://github.com/google/transitfeed/wiki/FeedValidator" target="_blank" rel="noopener">Google's feedValidator</a> - Google-supported Python-based GTFS validator.</li> <li><a href="https://github.com/Stephen-Gates/GTFS" target="_blank" rel="noopener">GTFS Data Package Specification</a> - 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.</li> <li><a href="https://github.com/patrickbr/gtfstidy" target="_blank" rel="noopener">gtfstidy</a> - A Go-based tool to tidy and validate GTFS feeds.</li> <li><a href="https://github.com/cal-itp/gtfs-validator-api" target="_blank" rel="noopener">gtfs-validator-api</a> - This Python package is a thin wrapper around <a href="https://github.com/MobilityData/gtfs-validator" target="_blank" rel="noopener">MobilityData/gtfs-validator</a> 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.</li> <li><a href="https://github.com/mecatran/gtfsvtor" target="_blank" rel="noopener">GTFSVTOR</a> - An open-source GTFS validator implemented in Java licensed under GPLv3 maintained by <a href="https://www.mecatran.com/" target="_blank" rel="noopener">Mecatran</a>.</li> <li><a href="https://github.com/MobilityData/gtfs-validator" target="_blank" rel="noopener">MobilityData's gtfs-validator</a> - A open-source GTFS validator canonically following the GTFS spec implemented in Java licensed under Apache v2.0 maintained by <a href="https://mobilitydata.org/" target="_blank" rel="noopener">MobilityData</a>.</li> <li><a href="https://reflect.foursquareitp.com" target="_blank" rel="noopener">Reflect GTFS Validator (hosted by Foursquare ITP)</a> - Transit schedule and GTFS validation platform by <a href="https://www.foursquareitp.com" target="_blank" rel="noopener">Foursquare ITP</a> that includes a free, web-based GTFS validator based on <a href="https://github.com/conveyal/gtfs-lib/" target="_blank" rel="noopener">gtfs-lib</a>.</li> <li><a href="https://github.com/TransitApp/gtfs-fares-v2-validator" target="_blank" rel="noopener">Transit App's gtfs-fares-v2-validator</a> - A Python tool that validators GTFS-Fares-v2 data based on the <a href="https://docs.google.com/document/d/19j-f-wZ5C_kYXmkLBye1g42U-kvfSVgYLkkG5oyBauY/edit#" target="_blank" rel="noopener">draft specification</a>.</li> <li><a href="https://github.com/etalab/transport-validator/" target="_blank" rel="noopener">Transport Validator</a> - An open-source validator implemented in <a href="https://www.rust-lang.org/" target="_blank" rel="noopener">Rust</a>. Used by the <a href="https://transport.data.gouv.fr/validation/" target="_blank" rel="noopener">French National Access Point</a>.</li> <li><a href="https://github.com/BlinkTagInc/gtfs-accessibility-validator" target="_blank" rel="noopener">gtfs-accessiblity-validator</a> - Validates the presence of accessiblity-related fields and files in a GTFS file. Can be a command line tool or node.js package.</li> </ul> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type="button" class="md-top md-icon" data-md-component="top" hidden> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class="md-footer"> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-footer-copyright"> <c>Maintained by </c> <a class="footer-link" href="https://mobilitydata.org/" target="_blank" rel="noopener"> <svg class="only-light" width="26%" height="26%" style="vertical-align:middle" style="float:left" version="1.1" id="Calque_1" x="0px" y="0px" viewBox="0 0 850.40002 205.24001" xml:space="preserve" sodipodi:docname="md-white.svg" inkscape:version="1.1.1 (c3084ef, 2021-09-22)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg"><defs id="defs39" /><sodipodi:namedview id="namedview37" pagecolor="#505050" bordercolor="#ffffff" borderopacity="1" inkscape:pageshadow="0" inkscape:pageopacity="0" inkscape:pagecheckerboard="1" showgrid="false" inkscape:zoom="0.44880624" inkscape:cx="355.38721" inkscape:cy="387.69514" inkscape:window-width="1277" inkscape:window-height="847" inkscape:window-x="0" inkscape:window-y="25" inkscape:window-maximized="0" inkscape:current-layer="Calque_1" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" /> <style type="text/css" id="style2"> .st0{fill:#19132D;} </style> <g id="g32" style="fill:#ffffff" transform="translate(-31.33,-15.87)"> <path class="st0" d="m 322.73,81.87 h -12.08 c -0.37,0 -0.7,0.19 -0.89,0.51 L 287.48,115.86 265.1,82.37 c -0.19,-0.31 -0.52,-0.51 -0.89,-0.51 h -12.08 c -0.55,0 -1,0.45 -1,1 v 72.39 c 0,0.55 0.45,1 1,1 h 13.42 c 0.55,0 1,-0.45 1,-1 v -43.7 c 0,-0.14 0.18,-0.19 0.25,-0.07 l 19.81,28.8 c 0.19,0.3 0.52,0.46 0.87,0.47 0.35,0 0.67,-0.18 0.87,-0.48 l 19.59,-29.19 c 0.07,-0.12 0.25,-0.07 0.25,0.07 l 0.22,44.05 c 0,0.58 0.47,1.05 1.04,1.05 h 13.28 c 0.55,0 1,-0.45 1,-1 V 82.86 c 0,-0.55 -0.45,-0.99 -1,-0.99 z" id="path4" style="fill:#ffffff" /> <path class="st0" d="m 360.01,101.15 c -16.28,0 -29.03,12.42 -29.03,28.28 0,15.86 12.75,28.28 29.03,28.28 16.34,0 29.14,-12.42 29.14,-28.28 0,-15.86 -12.8,-28.28 -29.14,-28.28 z m 13.58,28.28 c 0,7.76 -5.71,13.4 -13.58,13.4 -7.81,0 -13.47,-5.64 -13.47,-13.4 0,-7.76 5.67,-13.4 13.47,-13.4 7.87,0 13.58,5.63 13.58,13.4 z" id="path6" style="fill:#ffffff" /> <path class="st0" d="m 427.6,101.15 c -6.77,0 -12.25,2.05 -16.35,6.11 v -24.4 c 0,-0.55 -0.45,-1 -1,-1 h -13.56 c -0.55,0 -1,0.45 -1,1 v 72.39 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 v -3.66 c 4.1,4.06 9.59,6.11 16.35,6.11 7.2,0 13.95,-2.9 19,-8.17 5.09,-5.31 7.9,-12.45 7.9,-20.11 0,-7.66 -2.8,-14.8 -7.9,-20.11 -5.06,-5.26 -11.81,-8.16 -19,-8.16 z m 11.34,28.28 c 0,8.07 -5.72,13.71 -13.9,13.71 -8.12,0 -13.79,-5.64 -13.79,-13.71 0,-8.07 5.67,-13.71 13.79,-13.71 8.18,0 13.9,5.63 13.9,13.71 z" id="path8" style="fill:#ffffff" /> <path class="st0" d="m 469.41,80.31 c -4.83,0 -8.9,4.02 -8.9,8.79 0,4.71 4.08,8.69 8.9,8.69 4.96,0 9,-3.9 9,-8.69 0,-4.77 -4.12,-8.79 -9,-8.79 z" id="path10" style="fill:#ffffff" /> <path class="st0" d="m 476.24,102.6 h -13.56 c -0.55,0 -1,0.45 -1,1 v 51.66 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 V 103.6 c 0,-0.55 -0.45,-1 -1,-1 z" id="path12" style="fill:#ffffff" /> <path class="st0" d="m 504.74,78.76 h -13.56 c -0.55,0 -1,0.45 -1,1 v 75.5 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 v -75.5 c 0,-0.56 -0.45,-1 -1,-1 z" id="path14" style="fill:#ffffff" /> <path class="st0" d="m 532.65,102.6 h -13.56 c -0.55,0 -1,0.45 -1,1 v 51.66 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 V 103.6 c 0,-0.55 -0.45,-1 -1,-1 z" id="path16" style="fill:#ffffff" /> <path class="st0" d="m 525.82,80.31 c -4.83,0 -8.9,4.02 -8.9,8.79 0,4.71 4.08,8.69 8.9,8.69 4.96,0 9,-3.9 9,-8.69 0.01,-4.77 -4.12,-8.79 -9,-8.79 z" id="path18" style="fill:#ffffff" /> <path class="st0" d="M 576.69,102.6 H 565.65 V 89.08 c 0,-0.55 -0.45,-1 -1,-1 h -13.56 c -0.55,0 -1,0.45 -1,1 v 13.52 h -8.27 c -0.55,0 -1,0.45 -1,1 v 12.67 c 0,0.55 0.45,1 1,1 h 8.27 v 20.66 c 0,6.93 1.56,11.56 4.91,14.57 3.13,2.81 7.86,4.18 14.64,4.18 2.17,0 4.55,-0.14 7.15,-0.42 0.51,-0.05 0.89,-0.48 0.89,-0.99 v -11.95 c 0,-0.27 -0.11,-0.54 -0.31,-0.72 -0.2,-0.19 -0.47,-0.29 -0.74,-0.27 -4.86,0.25 -8.41,0.32 -9.95,-1.14 -0.71,-0.67 -1.04,-1.7 -1.04,-3.25 v -20.66 h 11.04 c 0.55,0 1,-0.45 1,-1 V 103.6 c 0.01,-0.55 -0.44,-1 -0.99,-1 z" id="path20" style="fill:#ffffff" /> <path class="st0" d="M 676.43,81.87 H 646.9 c -0.55,0 -1,0.45 -1,1 v 72.39 c 0,0.55 0.45,1 1,1 h 29.53 c 10.15,0 19.49,-3.82 26.31,-10.76 6.77,-6.89 10.5,-16.28 10.5,-26.44 0,-10.16 -3.73,-19.55 -10.5,-26.44 -6.82,-6.93 -16.16,-10.75 -26.31,-10.75 z m 20.93,37.19 c 0,12.77 -8.61,21.69 -20.93,21.69 H 662.42 V 97.37 h 14.01 c 12.32,0 20.93,8.92 20.93,21.69 z" id="path22" style="fill:#ffffff" /> <path class="st0" d="M 775.16,102.6 H 761.6 c -0.55,0 -1,0.45 -1,1 v 3.7 c -4.15,-4.03 -9.8,-6.15 -16.46,-6.15 -7.15,0 -13.87,2.9 -18.91,8.17 -5.08,5.31 -7.88,12.45 -7.88,20.1 0,7.65 2.8,14.79 7.88,20.11 5.04,5.27 11.76,8.17 18.91,8.17 6.66,0 12.3,-2.12 16.46,-6.15 v 3.7 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 V 103.6 c 0,-0.55 -0.45,-1 -1,-1 z m -14.56,26.83 c 0,8.07 -5.72,13.71 -13.9,13.71 -8.12,0 -13.79,-5.64 -13.79,-13.71 0,-8.07 5.67,-13.71 13.79,-13.71 8.19,0 13.9,5.63 13.9,13.71 z" id="path24" style="fill:#ffffff" /> <path class="st0" d="M 818.36,102.6 H 807.32 V 89.08 c 0,-0.55 -0.45,-1 -1,-1 h -13.56 c -0.55,0 -1,0.45 -1,1 v 13.52 h -8.27 c -0.55,0 -1,0.45 -1,1 v 12.67 c 0,0.55 0.45,1 1,1 h 8.27 v 20.66 c 0,6.93 1.56,11.56 4.91,14.57 3.13,2.81 7.86,4.18 14.64,4.18 2.17,0 4.55,-0.14 7.15,-0.42 0.51,-0.05 0.89,-0.48 0.89,-0.99 v -11.95 c 0,-0.27 -0.11,-0.54 -0.31,-0.72 -0.2,-0.19 -0.47,-0.29 -0.74,-0.27 -4.85,0.25 -8.41,0.32 -9.95,-1.14 -0.71,-0.67 -1.04,-1.7 -1.04,-3.25 v -20.66 h 11.04 c 0.55,0 1,-0.45 1,-1 V 103.6 c 0.01,-0.55 -0.44,-1 -0.99,-1 z" id="path26" style="fill:#ffffff" /> <path class="st0" d="m 880.73,102.6 h -13.56 c -0.55,0 -1,0.45 -1,1 v 3.7 c -4.15,-4.03 -9.8,-6.15 -16.46,-6.15 -7.15,0 -13.87,2.9 -18.91,8.17 -5.08,5.31 -7.88,12.45 -7.88,20.1 0,7.65 2.8,14.79 7.88,20.11 5.04,5.27 11.76,8.17 18.91,8.17 6.66,0 12.31,-2.12 16.46,-6.15 v 3.7 c 0,0.55 0.45,1 1,1 h 13.56 c 0.55,0 1,-0.45 1,-1 V 103.6 c -0.01,-0.55 -0.45,-1 -1,-1 z m -14.56,26.83 c 0,8.07 -5.72,13.71 -13.9,13.71 -8.12,0 -13.79,-5.64 -13.79,-13.71 0,-8.07 5.67,-13.71 13.79,-13.71 8.18,0 13.9,5.63 13.9,13.71 z" id="path28" style="fill:#ffffff" /> <path class="st0" d="m 637.94,102.65 h -14.4 c -0.49,0 -0.92,0.31 -1.08,0.77 l -11.13,33.32 -13.05,-33.37 c -0.17,-0.44 -0.59,-0.72 -1.06,-0.72 h -14.71 c -0.38,0 -0.74,0.19 -0.95,0.51 -0.21,0.32 -0.25,0.72 -0.1,1.07 l 21.83,50.99 c -2.51,6.69 -6.12,9.31 -12.78,9.31 -0.05,0 -0.1,0 -0.14,0 -0.3,0 -0.59,0.12 -0.8,0.33 -0.22,0.21 -0.33,0.5 -0.33,0.8 v 12.36 c 0,0.61 0.48,1.11 1.08,1.14 0.63,0.03 1.25,0.05 1.87,0.05 6.25,0 11.45,-1.62 15.85,-4.92 4.83,-3.63 8.57,-9.21 11.43,-17.07 L 639,104.17 c 0.13,-0.35 0.08,-0.74 -0.13,-1.04 -0.21,-0.3 -0.56,-0.48 -0.93,-0.48 z" id="path30" style="fill:#ffffff" /> </g> <path class="st0" d="m 215.93,168.67 -9.88,-9.88 -3.3,3.3 5.03,5.03 h -22.43 c -0.93,-2.53 -2.93,-4.55 -5.45,-5.51 V 35.56 c 0,-2.16 -1.75,-3.91 -3.91,-3.91 h -27.18 c -1.8,0 -3.49,0.95 -4.42,2.49 L 108.64,90.65 72.71,34.12 C 71.77,32.59 70.09,31.65 68.3,31.65 H 49.2 C 48.24,29.13 46.23,27.13 43.7,26.2 V 0 h -6.4 v 26.2 c -2.56,0.94 -4.6,2.98 -5.54,5.54 H 8.83 l 5.03,-5.03 -3.3,-3.3 -9.88,9.88 C 0.24,33.73 0,34.32 0,34.94 c 0,0.62 0.25,1.21 0.68,1.65 l 9.88,9.88 3.3,-3.3 -5.03,-5.03 h 22.91 c 0.93,2.54 2.93,4.56 5.46,5.52 V 169.7 c 0,2.16 1.75,3.91 3.91,3.91 h 28.82 c 2.16,0 3.91,-1.75 3.91,-3.91 v -68.08 l 30.47,46.42 c 0.92,1.41 2.5,2.29 4.23,2.35 0.04,0 0.08,0 0.12,0 1.75,0 3.37,-0.89 4.34,-2.39 l 30.1,-46.99 0.35,67.38 c 0,2.87 2.32,5.21 5.18,5.21 h 19.26 c 0.96,2.52 2.97,4.52 5.51,5.45 v 26.19 h 6.4 v -26.19 c 2.56,-0.94 4.6,-2.98 5.54,-5.54 h 22.43 l -5.03,5.03 3.3,3.3 9.88,-9.88 c 0.92,-0.91 0.92,-2.38 0.01,-3.29 z M 40.49,39.6 c -0.16,0 -0.32,-0.01 -0.48,-0.02 -0.03,0 -0.06,-0.01 -0.09,-0.01 -0.13,-0.02 -0.25,-0.03 -0.37,-0.06 -0.02,0 -0.04,-0.01 -0.07,-0.02 -0.13,-0.03 -0.26,-0.06 -0.38,-0.1 -0.01,0 -0.03,-0.01 -0.04,-0.02 -0.13,-0.04 -0.26,-0.09 -0.39,-0.14 0,0 0,0 0,0 -0.14,-0.06 -0.27,-0.12 -0.4,-0.19 -0.4,-0.22 -0.76,-0.49 -1.07,-0.8 -0.03,-0.03 -0.05,-0.06 -0.08,-0.09 -0.2,-0.21 -0.38,-0.43 -0.53,-0.68 0,0 0,0 0,0 -0.08,-0.12 -0.15,-0.24 -0.22,-0.37 0,-0.01 -0.01,-0.02 -0.01,-0.03 -0.06,-0.12 -0.12,-0.24 -0.17,-0.36 -0.01,-0.02 -0.02,-0.05 -0.03,-0.07 -0.04,-0.11 -0.09,-0.22 -0.12,-0.34 -0.01,-0.04 -0.02,-0.09 -0.03,-0.14 -0.03,-0.1 -0.05,-0.2 -0.07,-0.3 -0.02,-0.08 -0.02,-0.15 -0.04,-0.23 -0.01,-0.07 -0.03,-0.15 -0.03,-0.22 -0.02,-0.15 -0.02,-0.31 -0.02,-0.46 0,0 0,0 0,0 0,-0.16 0.01,-0.31 0.02,-0.47 0.01,-0.08 0.02,-0.15 0.03,-0.22 0.01,-0.08 0.02,-0.15 0.03,-0.23 0.02,-0.1 0.05,-0.2 0.08,-0.3 0.01,-0.04 0.02,-0.09 0.03,-0.13 0.04,-0.12 0.08,-0.23 0.12,-0.35 0.01,-0.02 0.02,-0.04 0.02,-0.07 0.05,-0.13 0.11,-0.25 0.17,-0.37 0,-0.01 0.01,-0.02 0.01,-0.02 0.2,-0.39 0.46,-0.74 0.76,-1.05 0.05,-0.05 0.1,-0.1 0.15,-0.15 0.21,-0.2 0.44,-0.38 0.68,-0.54 0,0 0,0 0,0 0.12,-0.08 0.24,-0.15 0.37,-0.22 0.01,0 0.02,-0.01 0.02,-0.01 0.12,-0.06 0.24,-0.12 0.37,-0.17 0.02,-0.01 0.05,-0.02 0.07,-0.02 0.11,-0.04 0.23,-0.09 0.34,-0.12 0.04,-0.01 0.09,-0.02 0.13,-0.03 0.1,-0.03 0.2,-0.05 0.3,-0.07 0.08,-0.02 0.15,-0.02 0.23,-0.04 0.07,-0.01 0.14,-0.03 0.22,-0.03 0.15,-0.02 0.31,-0.02 0.47,-0.02 0.16,0 0.31,0.01 0.47,0.02 0.07,0.01 0.15,0.02 0.22,0.03 0.08,0.01 0.16,0.02 0.23,0.04 0.1,0.02 0.2,0.05 0.3,0.07 0.04,0.01 0.09,0.02 0.13,0.03 0.12,0.04 0.23,0.08 0.34,0.12 0.02,0.01 0.05,0.02 0.07,0.02 0.13,0.05 0.25,0.11 0.37,0.17 0.01,0 0.02,0.01 0.02,0.01 0.13,0.07 0.25,0.14 0.37,0.22 0,0 0,0 0,0 0.24,0.16 0.47,0.34 0.68,0.54 0.02,0.02 0.05,0.04 0.07,0.06 0.32,0.32 0.59,0.68 0.81,1.07 0,0 0,0 0,0 0.07,0.13 0.13,0.26 0.19,0.39 0,0.01 0.01,0.01 0.01,0.02 0.05,0.13 0.1,0.25 0.14,0.38 0,0.02 0.01,0.03 0.02,0.05 0.04,0.12 0.07,0.24 0.1,0.37 0.01,0.03 0.02,0.05 0.02,0.08 0.02,0.12 0.04,0.24 0.06,0.36 0,0.04 0.01,0.07 0.02,0.11 0.02,0.16 0.02,0.31 0.02,0.47 0,0 0,0 0,0 0.01,2.57 -2.07,4.65 -4.64,4.65 z m 109.13,50.25 c -0.01,-1.46 -0.97,-2.74 -2.37,-3.14 -1.4,-0.41 -2.9,0.16 -3.69,1.39 L 108.63,142.63 73.3,88.8 c -0.8,-1.22 -2.3,-1.76 -3.69,-1.35 -1.39,0.42 -2.35,1.7 -2.35,3.15 v 76.42 H 43.79 V 43.66 c 2.49,-0.95 4.48,-2.93 5.42,-5.43 h 18.3 l 38.35,60.33 c 0.6,0.95 1.65,1.53 2.78,1.53 0,0 0,0 0,0 1.13,0 2.18,-0.58 2.78,-1.53 l 38.16,-60.32 h 23.72 v 123.37 c -2.49,0.94 -4.47,2.93 -5.42,5.42 h -17.87 z m 30.18,83.83 v 0 c -0.21,0.2 -0.44,0.38 -0.68,0.54 0,0 0,0 0,0 -0.12,0.08 -0.24,0.15 -0.37,0.22 -0.01,0 -0.02,0.01 -0.03,0.01 -0.12,0.06 -0.24,0.12 -0.37,0.17 -0.02,0.01 -0.05,0.02 -0.07,0.02 -0.11,0.04 -0.23,0.09 -0.34,0.12 -0.04,0.01 -0.09,0.02 -0.13,0.03 -0.1,0.03 -0.2,0.05 -0.3,0.07 -0.07,0.01 -0.15,0.02 -0.23,0.03 -0.07,0.01 -0.15,0.03 -0.22,0.03 -0.15,0.02 -0.31,0.02 -0.47,0.02 -0.16,0 -0.31,-0.01 -0.47,-0.02 -0.07,-0.01 -0.15,-0.02 -0.22,-0.03 -0.08,-0.01 -0.15,-0.02 -0.23,-0.03 -0.1,-0.02 -0.2,-0.05 -0.3,-0.07 -0.04,-0.01 -0.09,-0.02 -0.13,-0.03 -0.12,-0.04 -0.23,-0.08 -0.34,-0.12 -0.02,-0.01 -0.05,-0.02 -0.07,-0.03 -0.12,-0.05 -0.25,-0.11 -0.36,-0.17 -0.01,0 -0.02,-0.01 -0.03,-0.01 -0.13,-0.07 -0.25,-0.14 -0.37,-0.22 0,0 0,0 0,0 -0.24,-0.16 -0.47,-0.34 -0.68,-0.54 -0.03,-0.02 -0.05,-0.05 -0.08,-0.07 -0.32,-0.32 -0.59,-0.68 -0.8,-1.07 0,0 0,0 0,0 -0.07,-0.13 -0.13,-0.26 -0.19,-0.4 0,0 0,-0.01 -0.01,-0.01 -0.05,-0.12 -0.1,-0.25 -0.14,-0.38 -0.01,-0.02 -0.01,-0.03 -0.02,-0.05 -0.04,-0.12 -0.07,-0.24 -0.09,-0.36 -0.01,-0.03 -0.02,-0.06 -0.02,-0.08 -0.02,-0.11 -0.04,-0.22 -0.05,-0.34 -0.01,-0.04 -0.01,-0.08 -0.02,-0.13 -0.02,-0.16 -0.02,-0.31 -0.02,-0.48 0,-2.56 2.09,-4.65 4.65,-4.65 0.16,0 0.32,0.01 0.48,0.02 0.04,0 0.08,0.01 0.13,0.02 0.11,0.01 0.22,0.03 0.33,0.05 0.03,0.01 0.06,0.02 0.09,0.02 0.12,0.03 0.24,0.06 0.36,0.09 0.02,0.01 0.04,0.02 0.06,0.02 0.12,0.04 0.25,0.08 0.37,0.14 0.01,0 0.02,0.01 0.03,0.01 0.13,0.06 0.25,0.12 0.38,0.18 0,0 0.01,0 0.01,0.01 0.39,0.21 0.75,0.48 1.06,0.8 0.02,0.03 0.05,0.05 0.07,0.08 v 0 c 0.2,0.21 0.38,0.44 0.54,0.68 0,0 0,0 0,0 0.08,0.12 0.15,0.24 0.22,0.37 0,0.01 0.01,0.02 0.01,0.03 0.06,0.12 0.12,0.24 0.17,0.37 0.01,0.02 0.02,0.05 0.03,0.07 0.04,0.11 0.09,0.23 0.12,0.34 0.01,0.04 0.02,0.09 0.03,0.13 0.03,0.1 0.05,0.2 0.07,0.3 0.01,0.07 0.02,0.15 0.03,0.23 0.01,0.07 0.03,0.15 0.03,0.22 0.02,0.15 0.02,0.31 0.02,0.47 0,0.16 -0.01,0.31 -0.02,0.47 -0.01,0.08 -0.02,0.15 -0.03,0.22 -0.01,0.08 -0.02,0.15 -0.03,0.23 -0.02,0.1 -0.05,0.2 -0.07,0.3 -0.01,0.04 -0.02,0.09 -0.03,0.13 -0.04,0.12 -0.08,0.23 -0.12,0.34 -0.01,0.02 -0.02,0.05 -0.03,0.07 -0.05,0.12 -0.11,0.25 -0.17,0.37 0,0.01 -0.01,0.02 -0.01,0.03 -0.07,0.13 -0.14,0.25 -0.22,0.37 0,0 0,0 0,0 -0.16,0.24 -0.34,0.47 -0.54,0.68 v 0 c -0.06,0.06 -0.11,0.12 -0.17,0.17 z" id="path34" style="fill:#ffffff" /> </svg> </a> </div> <div class="md-social"> <a href="https://gtfs.org/blog/feed_rss_created.xml" target="_blank" rel="noopener" title="GTFS Digest RSS feed" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M64 32C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h320c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm32 104c0-13.3 10.7-24 24-24 137 0 248 111 248 248 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200-13.3 0-24-10.7-24-24m0 96c0-13.3 10.7-24 24-24 83.9 0 152 68.1 152 152 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104-13.3 0-24-10.7-24-24m0 120a32 32 0 1 1 64 0 32 32 0 1 1-64 0"/></svg> </a> <a href="https://github.com/MobilityData" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href="https://www.linkedin.com/company/mobilitydata" target="_blank" rel="noopener" title="www.linkedin.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9z"/></svg> </a> <a href="https://share.mobilitydata.org/slack" target="_blank" rel="noopener" title="share.mobilitydata.org" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1s21.16-47.06 47.06-47.06h47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06S448 171 448 196.9s-21.16 47.06-47.06 47.06h-47.06zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06S309 480 283.1 480s-47.06-21.16-47.06-47.06v-47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06s21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06z"/></svg> </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <div class="md-consent" data-md-component="consent" id="__consent" hidden> <div class="md-consent__overlay"></div> <aside class="md-consent__inner"> <form class="md-consent__form md-grid md-typeset" name="consent"> <h4>Cookie Consent</h4> <p>We use cookies to track visits, stored anonymously. With your consent, you're helping us to make our documentation better. See our <a href="https://mobilitydata.org/privacy-policy/" target="_blank" rel="noopener">Privacy Policy</a>.</p> <input class="md-toggle" type="checkbox" id="__settings" > <div class="md-consent__settings"> <ul class="task-list"> <li class="task-list-item"> <label class="task-list-control"> <input type="checkbox" name="analytics" checked> <span class="task-list-indicator"></span> Google Analytics </label> </li> <li class="task-list-item"> <label class="task-list-control"> <input type="checkbox" name="github" checked> <span class="task-list-indicator"></span> GitHub </label> </li> </ul> </div> <div class="md-consent__controls"> <button class="md-button md-button--primary">Accept</button> <button type="reset" class="md-button md-button--primary">Reject</button> <label class="md-button" for="__settings">Manage settings</label> </div> </form> </aside> </div> <script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script> <script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.indexes", "navigation.top", "navigation.footer", "content.tabs.link", "search.suggest"], "search": "../../assets/javascripts/workers/search.c7c1ca2c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src="../../assets/javascripts/bundle.5a789024.min.js"></script> <script src="../../assets/javascript/anchor-redirects.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10