GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-01-23T16:07:39Z,
for the dataset file:///shared/ens-falls-transit-system.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


  • Greater Glens Falls Transit (518-792-1085)

Feed Info


Publisher Name:
Greater Glens Falls Transit
Publisher URL:
https://gftransit.org/
Feed Email:
N/A
Feed Language:
English
Feed Start Date:
N/A
Feed End Date:
N/A

Files included


  1. agency.txt
  2. calendar.txt
  3. calendar_dates.txt
  4. feed_info.txt
  5. routes.txt
  6. shapes.txt
  7. stop_times.txt
  8. stops.txt
  9. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 13
  • Shapes: 52
  • Stops: 70
  • Trips: 311

Specification Compliance report

937 notices reported (1 errors, 933 warnings, 3 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates ERROR 1

equal_shape_distance_diff_coordinates

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than the 1.11m.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and different coordinates indicate an error.

You can see more about this notice here.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"z4bj" 9190 17134.016080377878 176 9189 17134.016080377878 175 1.111951011220228
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 20

equal_shape_distance_diff_coordinates_distance_below_threshold

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than 0 but less than 1.11m.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and small difference of coordinates (greater than 0 but less than 1.11 m distance) result in a warning.

You can see more about this notice here.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4625 4185.852714268023 34 4624 4185.852714268023 33 1.0746416415112021
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4626 4185.852714268023 35 4625 4185.852714268023 34 0.11119510090982554
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4661 7069.23500243646 70 4660 7069.23500243646 69 0.2749674150047091
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4662 7069.23500243646 71 4661 7069.23500243646 70 0.2749674150047091
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4683 8024.047176803962 92 4682 8024.047176803962 91 0.23662961919697978
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4684 8024.047176803962 93 4683 8024.047176803962 92 0.23662961919697978
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4697 11007.630778194807 106 4696 11007.630778194807 105 0.08088192198511301
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4698 11007.630778194807 107 4697 11007.630778194807 106 0.08088192198511301
"63688a1e-090b-4559-b1c8-9611332c11c9" 2398 2861.9677583655166 18 2397 2861.9677583655166 17 0.26691098235557653
"63688a1e-090b-4559-b1c8-9611332c11c9" 2399 2861.9677583655166 19 2398 2861.9677583655166 18 0.2669109823555766
"63688a1e-090b-4559-b1c8-9611332c11c9" 2558 16415.46613989304 178 2557 16415.46613989304 177 0.5559755052564519
"63688a1e-090b-4559-b1c8-9611332c11c9" 2601 20547.830755621842 221 2600 20547.830755621842 220 0.7949645991825065
"63688a1e-090b-4559-b1c8-9611332c11c9" 2701 29999.80689233781 321 2700 29999.80689233781 320 0.7379818651135834
"63688a1e-090b-4559-b1c8-9611332c11c9" 2702 29999.80689233781 322 2701 29999.80689233781 321 0.7379818651135834
"b3c021e3-6ea0-409e-a250-503b776c0729" 4167 12070.191357503021 107 4166 12070.191357503021 106 0.7802425928725989
"nx3a" 7814 8462.920888190421 78 7813 8462.920888190421 77 0.6562586041537498
"shzi" 8646 9516.01483239615 78 8645 9516.01483239615 77 0.3925687943306164
"shzi" 8659 11005.656583447926 91 8658 11005.656583447926 90 0.32352768691145456
"shzi" 8692 13900.798730072875 124 8691 13900.798730072875 123 0.7802425928725989
"z4bj" 9094 8462.944680381923 80 9093 8462.944680381923 79 0.6562586041537498
equal_shape_distance_same_coordinates WARNING 124

equal_shape_distance_same_coordinates

Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.txt.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and the same coordinates indicate a duplicative shape point.

You can see more about this notice here.

Only the first 50 of 124 affected records are displayed below.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the faulty record. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the previous shape point. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`.
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4592 0.0 1 4591 0.0 0
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4593 0.0 2 4592 0.0 1
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4594 0.0 3 4593 0.0 2
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4600 1204.1806444530453 9 4599 1204.1806444530453 8
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4601 1204.1806444530453 10 4600 1204.1806444530453 9
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4602 1204.1806444530453 11 4601 1204.1806444530453 10
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4603 1204.1806444530453 12 4602 1204.1806444530453 11
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4605 1204.2242589282523 14 4604 1204.2242589282523 13
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4606 1204.2242589282523 15 4605 1204.2242589282523 14
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4619 3202.28470698835 28 4618 3202.28470698835 27
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4620 3202.28470698835 29 4619 3202.28470698835 28
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4655 7069.001027048752 64 4654 7069.001027048752 63
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4656 7069.001027048752 65 4655 7069.001027048752 64
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4657 7069.001027048752 66 4656 7069.001027048752 65
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4658 7069.001027048752 67 4657 7069.001027048752 66
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4659 7069.001027048752 68 4658 7069.001027048752 67
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4680 8023.778620126877 89 4679 8023.778620126877 88
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4681 8023.778620126877 90 4680 8023.778620126877 89
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4693 11007.25416238264 102 4692 11007.25416238264 101
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4694 11007.25416238264 103 4693 11007.25416238264 102
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4713 13501.709676670533 122 4712 13501.709676670533 121
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4714 13501.709676670533 123 4713 13501.709676670533 122
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4715 13501.709676670533 124 4714 13501.709676670533 123
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4716 13501.709676670533 125 4715 13501.709676670533 124
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4735 13830.253782068112 144 4734 13830.253782068112 143
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4736 13830.253782068112 145 4735 13830.253782068112 144
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4737 13830.253782068112 146 4736 13830.253782068112 145
"c7eab09b-c235-42e2-921d-028bb1528ec4" 4741 13903.168939481766 150 4740 13903.168939481766 149
"63688a1e-090b-4559-b1c8-9611332c11c9" 2381 0.0 1 2380 0.0 0
"63688a1e-090b-4559-b1c8-9611332c11c9" 2382 0.0 2 2381 0.0 1
"63688a1e-090b-4559-b1c8-9611332c11c9" 2395 2861.743588452698 15 2394 2861.743588452698 14
"63688a1e-090b-4559-b1c8-9611332c11c9" 2396 2861.743588452698 16 2395 2861.743588452698 15
"63688a1e-090b-4559-b1c8-9611332c11c9" 2451 7893.4795460741 71 2450 7893.4795460741 70
"63688a1e-090b-4559-b1c8-9611332c11c9" 2452 7893.4795460741 72 2451 7893.4795460741 71
"63688a1e-090b-4559-b1c8-9611332c11c9" 2453 7893.4795460741 73 2452 7893.4795460741 72
"63688a1e-090b-4559-b1c8-9611332c11c9" 2467 8463.61237731201 87 2466 8463.61237731201 86
"63688a1e-090b-4559-b1c8-9611332c11c9" 2468 8463.61237731201 88 2467 8463.61237731201 87
"63688a1e-090b-4559-b1c8-9611332c11c9" 2470 8463.633613905617 90 2469 8463.633613905617 89
"63688a1e-090b-4559-b1c8-9611332c11c9" 2488 9690.550152464763 108 2487 9690.550152464763 107
"63688a1e-090b-4559-b1c8-9611332c11c9" 2489 9690.550152464763 109 2488 9690.550152464763 108
"63688a1e-090b-4559-b1c8-9611332c11c9" 2491 9690.625024333773 111 2490 9690.625024333773 110
"63688a1e-090b-4559-b1c8-9611332c11c9" 2492 9690.625024333773 112 2491 9690.625024333773 111
"63688a1e-090b-4559-b1c8-9611332c11c9" 2554 16414.864530067887 174 2553 16414.864530067887 173
"63688a1e-090b-4559-b1c8-9611332c11c9" 2555 16414.864530067887 175 2554 16414.864530067887 174
"63688a1e-090b-4559-b1c8-9611332c11c9" 2559 16415.46613989304 179 2558 16415.46613989304 178
"63688a1e-090b-4559-b1c8-9611332c11c9" 2563 16685.78968092264 183 2562 16685.78968092264 182
"63688a1e-090b-4559-b1c8-9611332c11c9" 2564 16685.78968092264 184 2563 16685.78968092264 183
"63688a1e-090b-4559-b1c8-9611332c11c9" 2602 20547.830755621842 222 2601 20547.830755621842 221
"63688a1e-090b-4559-b1c8-9611332c11c9" 2603 20547.830755621842 223 2602 20547.830755621842 222
"63688a1e-090b-4559-b1c8-9611332c11c9" 2698 29998.932843898114 318 2697 29998.932843898114 317
expired_calendar WARNING 9

expired_calendar

Dataset should not contain date ranges for services that have already expired.

This warning takes into account the calendar_dates.txt file as well as the calendar.txt file.

You can see more about this notice here.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
2 "MSat"
3 "NightWD"
4 "Sat"
5 "SumWD2023"
6 "Summer 6d"
7 "Summer7d"
8 "WD"
9 "WinWD2022"
10 "EarlySeason"
missing_feed_contact_email_and_url WARNING 1

missing_feed_contact_email_and_url

Best Practices for feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

You can see more about this notice here.

csvRowNumber (?) The row number of the validated record.
2
missing_recommended_field WARNING 3

missing_recommended_field

A recommended field is missing.

The given field has no value in some input row, even though values are recommended.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"feed_info.txt" 2 "feed_start_date"
"feed_info.txt" 2 "feed_end_date"
"feed_info.txt" 2 "feed_version"
missing_timepoint_value WARNING 735

missing_timepoint_value

stop_times.timepoint value is missing for a record.

When at least one of stop_times.arrival_time or stop_times.departure_time are provided, stop_times.timepoint should be defined

You can see more about this notice here.

Only the first 50 of 735 affected records are displayed below.

csvRowNumber (?) The row number of the faulty record. tripId (?) The faulty record's `stop_times.trip_id`. stopSequence (?) The faulty record's `stop_times.stop_sequence`.
2 "GF_HF_Sat_Loop02_T01" 0
5 "GF_HF_Sat_Loop02_T01" 3
8 "GF_HF_Sat_Loop01_T01" 1
11 "GF_HF_Sat_Loop01_T01" 4
12 "GF_BQ_SA_L02_T01" 0
13 "GF_BQ_SA_L02_T01" 1
14 "GF_BQ_SA_L02_T01" 2
15 "GF_BQ_SA_L02_T01" 3
16 "GF_BQ_SA_L01_T01" 0
17 "GF_BQ_SA_L01_T01" 1
18 "GF_BQ_SA_L01_T01" 2
19 "GF_BQ_SA_L01_T01" 3
20 "GF_BQ_SA_L01_T01" 4
21 "GF_BQ_SA_L01_T01" 5
22 "GF_BQ_SA_L01_T01" 6
23 "GF_BQ_SA_L01_T01" 7
24 "GF_BQ_SA_L01_T03" 0
25 "GF_BQ_SA_L01_T03" 1
26 "GF_BQ_SA_L01_T03" 2
27 "GF_BQ_SA_L01_T03" 3
28 "GF_BQ_SA_L01_T03" 4
29 "GF_BQ_SA_L01_T03" 5
30 "GF_BQ_SA_L01_T03" 6
31 "GF_BQ_SA_L01_T03" 7
32 "GF_BQ_SA_L01_T02" 0
33 "GF_BQ_SA_L01_T02" 1
34 "GF_BQ_SA_L01_T02" 2
35 "GF_BQ_SA_L01_T02" 3
36 "GF_BQ_SA_L01_T02" 4
37 "GF_BQ_SA_L01_T02" 5
38 "GF_BQ_SA_L01_T02" 6
39 "GF_BQ_SA_L01_T02" 7
120 "GF_EW_WD_PM_T01" 0
121 "GF_EW_WD_PM_T01" 1
122 "GF_EW_WD_PM_T01" 2
123 "GF_EW_WD_PM_T01" 3
124 "GF_EW_WD_PM_T01" 4
125 "GF_EW_WD_PM_T01" 5
127 "GF_EW_WD_PM_T01" 7
128 "GF_EW_WD_AM_T01" 0
129 "GF_EW_WD_AM_T01" 1
130 "GF_EW_WD_AM_T01" 2
131 "GF_EW_WD_AM_T01" 3
132 "GF_EW_WD_AM_T01" 4
133 "GF_EW_WD_AM_T01" 5
134 "GF_EW_WD_AM_T01" 6
135 "GF_EW_WD_AM_T01" 7
136 "GF_NT_Sum7_02L_17a" 0
137 "GF_NT_Sum7_02L_17a" 1
138 "GF_NT_Sum7_02L_17a" 2
mixed_case_recommended_field WARNING 26

mixed_case_recommended_field

This field has customer-facing text and should use Mixed Case (should contain upper and lower case letters).

This field contains customer-facing text and should use Mixed Case (upper and lower case letters) to ensure good readability when displayed to riders. Avoid the use of abbreviations throughout the feed (e.g. St. for Street) unless a location is called by its abbreviated name (e.g. “JFK Airport”). Abbreviations may be problematic for accessibility by screen reader software and voice user interfaces.

Good examples:
Field Text Dataset
"Schwerin, Hauptbahnhof" Verkehrsverbund Berlin-Brandenburg
"Red Hook/Atlantic Basin" NYC Ferry
"Campo Grande Norte" Carris
Bad examples:
Field Text
"GALLERIA MALL"
"3427 GG 17"
"21 Clark Rd Est"

You can see more about this notice here.

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"stops.txt" "stop_name" "BROAD:STAPLE" 5
"stops.txt" "stop_name" "COUNTY COURT - HUDSON FALLS" 6
"stops.txt" "stop_name" "RIDGE:SANFORD" 8
"stops.txt" "stop_name" "GLEN: HILAND MEADOWS" 10
"stops.txt" "stop_name" "PRICE CHOPPER GLEN ST" 11
"stops.txt" "stop_name" "EARL TOWERS" 12
"stops.txt" "stop_name" "SOUTH:3RD" 13
"stops.txt" "stop_name" "HUDSON:SOUTH" 14
"stops.txt" "stop_name" "GLEN ST: SHERMAN AVE" 16
"stops.txt" "stop_name" "AVIATION MALL" 20
"stops.txt" "stop_name" "GLENS FALLS HANNAFORD" 28
"stops.txt" "stop_name" "GLEN:& GRANT" 30
"stops.txt" "stop_name" "GLENS FALLS HIGH SCHOOL" 31
"stops.txt" "stop_name" "LAKE GEORGE BEACH ROAD" 32
"stops.txt" "stop_name" "BLUEBIRD:GANSEVOORT" 40
"stops.txt" "stop_name" "HANNAFORD:QUAKER RD" 45
"stops.txt" "stop_name" "LAWRENCE:MCDONALD" 46
"stops.txt" "stop_name" "MCDONALDS MAIN STREET GLENS FALLS" 49
"stops.txt" "stop_name" "QUEENSBURY AVE:HICKS" 52
"stops.txt" "stop_name" "ROUTE 9: ROUTE 149" 56
"stops.txt" "stop_name" "SAGAMORE:JACKSON" 59
"stops.txt" "stop_name" "GLEN:& SANFORD" 61
"stops.txt" "stop_name" "LUZERN: VAN DUSEN" 62
"stops.txt" "stop_name" "RIDGE RD:QUAKER RD" 63
"stops.txt" "stop_name" "GLEN:& QUAKER" 64
"stops.txt" "stop_name" "GLEN:& QUAKER" 65
route_long_name_contains_short_name WARNING 2

route_long_name_contains_short_name

Long name should not contain short name for a single route.

In routes.txt, route_long_name should not contain the value for route_short_name, because when both are provided, they are often combined by transit applications. Note that only one of the two fields is required. If there is no short name used for a route, use route_long_name only.

Good examples:

route_short_name/route_long_name Dataset
"N"/"Judah" Muni San Fransisco
"6"/"ML King Jr Blvd" Trimet Portland Streetcar
"55"/"Boulevard Saint Laurent" STM Montreal
"1"/"Rangiora/Cashmere" Metro Christchurch

Bad examples:

route_short_name/route_long_name
"604"/"604"
"14"/"Route 14"
"2"/"Route 2: Bellows Falls In-Town"

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeShortName (?) The faulty record's `route_short_name`. routeLongName (?) The faulty record's `route_long_name`.
"jcpz" 6 "North Trolley" "North Trolley (Flag anywhere on Route)"
"ynu6" 7 "South Trolley" "South Trolley North Trolley (Flag anywhere on Route)"
route_short_name_too_long WARNING 2

route_short_name_too_long

Short name of a route is too long (more than 12 characters).

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeShortName (?) The faulty record's `route_short_name`.
"jcpz" 6 "North Trolley"
"ynu6" 7 "South Trolley"
stop_without_stop_time WARNING 10

stop_without_stop_time

A stop in stops.txt is not referenced by any stop_times.stop_id.

Such stops are not used by any trip and normally do not provide user value. This notice may indicate a typo in stop_times.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty stop. stopName (?) The name of the faulty stop.
4 "160037" "SGF High School"
6 "244554" "COUNTY COURT - HUDSON FALLS"
10 "364469" "GLEN: HILAND MEADOWS"
11 "364471" "PRICE CHOPPER GLEN ST"
16 "STOP_c4f93fe4-fe83-45df-bede-3ec62d0a3ad6" "GLEN ST: SHERMAN AVE"
26 "1dr4" "Bolton Landing"
33 "eyxf" "King Phillips Campground"
40 "160029" "BLUEBIRD:GANSEVOORT"
43 "opfb" "Fran-Cove"
58 "vn12" "Route 9 & Best Western/Travelodge"
trip_coverage_not_active_for_next7_days WARNING 1

trip_coverage_not_active_for_next7_days

Trips data should be valid for at least the next seven days.

This notice is triggered if the date range where a significant number of trips are running ends in less than 7 days.

You can see more about this notice here.

currentDate (?) Current date (YYYYMMDD format). serviceWindowStartDate (?) The start date of the majority service window. serviceWindowEndDate (?) The end date of the majority service window.
"20260123" "20230624" "20230904"
unknown_column INFO 3

unknown_column

A column name is unknown.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the unknown column. index (?) The index of the faulty column.
"agency.txt" "agency_branding_url" 7
"feed_info.txt" "feed_id" 2
"routes.txt" "route_branding_url" 8