{"id":33044421,"url":"https://github.com/mecatran/gtfsvtor","last_synced_at":"2025-11-16T20:01:48.240Z","repository":{"id":51261445,"uuid":"239493877","full_name":"mecatran/gtfsvtor","owner":"mecatran","description":"GTFSVTOR - Fast GTFS validator","archived":false,"fork":false,"pushed_at":"2024-11-28T14:36:45.000Z","size":1397,"stargazers_count":28,"open_issues_count":19,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-28T15:24:43.428Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mecatran.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-10T11:18:28.000Z","updated_at":"2024-11-28T15:04:20.000Z","dependencies_parsed_at":"2024-07-11T11:12:59.370Z","dependency_job_id":null,"html_url":"https://github.com/mecatran/gtfsvtor","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mecatran/gtfsvtor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mecatran%2Fgtfsvtor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mecatran%2Fgtfsvtor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mecatran%2Fgtfsvtor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mecatran%2Fgtfsvtor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mecatran","download_url":"https://codeload.github.com/mecatran/gtfsvtor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mecatran%2Fgtfsvtor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284767947,"owners_count":27060132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-11-14T00:00:28.414Z","updated_at":"2025-11-16T20:01:48.232Z","avatar_url":"https://github.com/mecatran.png","language":"Java","funding_links":[],"categories":["Producing Data","Uncategorized"],"sub_categories":["GTFS","Uncategorized"],"readme":"GTFSVTOR\n========\n\nAn open-source GTFS validator, released under GPLv3.\nSee the [LICENSE file](LICENSE) for more information.\n\n![Java CI](https://github.com/mecatran/gtfsvtor/workflows/Java%20CI/badge.svg)\n\nOnline public validator\n-----------------------\n\n**New!** A free online validator is hosted here: [https://gtfsvtor.mecatran.com/](https://gtfsvtor.mecatran.com/).\n\nFeatures and project goals\n--------------------------\n\n- Fast\n- Memory-efficient, ability to process very large GTFS\n- Extensible, code easy to read and maintain\n- Extensive coverage of validation\n- Backward-compatible with the historical \"python\" validator\n- Various outputs (json, html...)\n\nHow to use GTFSVTOR\n-------------------\n\nGTFSVTOR is in a workable state.\n\nAs the time of writing, all the tables and fields from the GTFS specifications are loaded.\n\nAlmost all validation rules of the legacy feedvalidator.py are implemented.\nSee the [list of issues in github](https://github.com/mecatran/gtfsvtor/issues?q=is%3Aopen+is%3Aissue+label%3Abackward-compat) to check the few missing rules.\nOther (new or refined) rules have also been added, aiming for backward-compatibility when possible.\nThe most notable backward-incompability is the taking into account of exact shapes in computing too fast travels;\nhowever this change in behavior increase the accuracy and reliability of too fast travels validation.\n\nYou can browse this [HTML example report](https://mecatran.github.io/gtfsvtor/validation-results.html)\nto see the validation result of the \"verybad\" dataset.\nAlso see this [JSON example report summary](https://raw.githubusercontent.com/mecatran/gtfsvtor/master/docs/validation-results.json).\n\nTo use it:\n\n- Download the latest release (available in the project github)\n- Unzip the file somewhere\n- Run gtfsvtor:\n\n```\n    ./gtfsvtor/bin/gtfsvtor --help\n    ./gtfsvtor/bin/gtfsvtor [options] \u003cGTFS file\u003e\n```\n\nOn Windows, use the provided `gtfsvtor.bat` file instead.\n\nPlease note that a Java JRE is required to run the application.\n\nA sample config.properties file is included in the root of the project\nif you want to configure the validation (see [Configuration](#configuration) section below).\n\nFor large GTFS, you can increase the default JVM heap size by setting\nthe appropriate JVM options in the `GTFSVTOR_OPTS` variable:\n\n    GTFSVTOR_OPTS=-Xmx6G ./gtfsvtor/bin/gtfsvtor \u003cGTFS file\u003e\n\nAlso, unzipping data on disk can reduce memory usage for large GTFS.\n\nPerformances\n------------\n\nPerformance tests are done using:\n\n- in-memory option (-m) enabled for feedvalidator.py\n- duplicate trips detection option (-d) disabled for feedvalidator.py\n- small memory-footprint GtfsStopTime implementation enabled for GTFSVTOR\n- multi-threading validation enabled (--numThreads 8) for GTFSVTOR\n\n  | GTFS            | Routes | Stops  | Trips   | Times  | Shp pts | FeedValidator | GTFSVTOR      |\n  |-----------------|--------|--------|---------|--------|---------|---------------|---------------|\n  | MBTA Boston     |    236 |   9861 |   70446 |  1829k |    323k | 2m20s         | 8s            |\n  | Montréal        |    229 |   9241 |  206069 |  7814k |    199k | 9m23s         | 20s           |\n  | IDFM Paris      |   1870 |  63471 |  467457 | 10564k |       - | 57m50s        | 40s           |\n  | OV Netherlands  |   2703 |  63995 |  787736 | 16103k |   3384k | ?             | 1m50s         |\n  | DELFI Germany   |  20656 | 565016 | 2161712 | 41971k |   8322k | ?             | 2m44s         |\n  \n**Note**: Performances comparisons should be fairly accurate now,\nas GTFSVTOR do have all CPU-intensive validators implemented\n(loading and conversion of stops, trips, times, shapes, calendars; shape linear indexing; calendar indexing;\nstop spatial indexing; too fast travel checks, trip duplication detection, block ID overlap...).\nAlso GTFSVTOR has trip duplication detection enabled, whereas feedvalidator.py does not.\n\nDocker\n------\n\nRun a dockerized GTFSVTOR using the [`laurentgregoire/gtfsvtor` Docker image](https://hub.docker.com/r/laurentgregoire/gtfsvtor):\n\n```sh\ndocker run --rm -i -v \u003cpath_data_directory, e.g. $(PWD)\u003e:/data -e TZ=Europe/Berlin laurentgregoire/gtfsvtor /data/\u003cgtfs-file\u003e\n```\n\nGTFSVTOR is executed in the mounted `/data` dir. If you'd like to use a custom config.properties, \nyou may place it besides the gtfs file and supply `-c config.properties` as additional parameters.\nNote that the timezone must be specified explicitly (via `-e TZ=\u003cyour timezone\u003e`) to have correct timestamps \nreported in the validation-results.html.\n\nConfiguration\n-------------\n\nYou can configure GTFSVTOR by editing a config file in the project root folder.\nYou should specify which config file to load by using the `--config` command-line option.\nSee the provided [config.properties](config.properties) example.\n\nYou can disable a validator (or enable a validator disabled by default) by writing:\n\n    validator.SomeValidator.enabled = true\n    validator.SomeOtherValidator.enabled = false\n\nWhen `SomeValidator` is the class name of the validator to enable/disable.\n\nUse the `--listValidators` command-line option to list all validators and their options.\n\nTo configure a validator option, write for example:\n\n    validator.CalendarValidator.expiredCutoffDate = 2020/12/31\n\nThis example will configure the feed expiry cutoff date to the specified date\n(for information by default the default expiry date is \"today\").\n\nBug tracking\n------------\n\nIf you experience a bug, please create a ticket in the issue page of the GTFSVTOR github project [here](https://github.com/mecatran/gtfsvtor/issues/new).\n\nPlease follow standard best-practices by providing:\n\n- A short summary of the bug\n- What is wrong\n- What is expected\n- The version of GTFSVTOR used\n- The options used (command-line options if any, config file if any)\n- A (minimal) example of (GTFS) data that experience the behavior (or a link to this data)\n- If relevant to the bug, your environment (JVM \u0026 OS type and version...)\n\nCreate a distinct issue per different bug.\n\nDeveloper guide\n---------------\n\n**TODO**\n\n- Code documentation\n- Adding new validation rules\n- Using GTFSVTOR as a library\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmecatran%2Fgtfsvtor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmecatran%2Fgtfsvtor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmecatran%2Fgtfsvtor/lists"}