← All agencies

Feed status · checked 2026-09-13

Washington Metropolitan Area Transit Authority (WMATA) Bus

Based on a Mobility Database mirror copy of the feed source on file; publisher ownership is not verified

Service mode Bus

78.3 / 100

unchanged since 2026-09-12

Catalogued in District of Columbia.

Covers 195 daysAccessibility gapsRealtime access needed

Heads-up: The score rose 21 points in one step, from 58 on 2026-09-01 to 78 on 2026-09-12. A jump this size usually means the export changed rather than the service. Worth checking the run on this date. (checked 2026-09-12). This can be a brief vendor export glitch; watch the next update before acting.

A data-quality and completeness lens to help an agency improve its GTFS feed. Not an official compliance determination from any transit program. New to this? How to read your scorecard. Interactive view of this scorecard. Rubric v1.3, validator 8.0.1.

Checked for changes 33 hours ago; last fetch returned HTTP 401.

Measured 3 of 4 score categories from the Mobility Database's mirror copy of the feed.

How we measured this

Confidence in this measurement: provisional.

  • Realtime quality was not measured this run. It does not count against the grade.
  • The configured feed URL was unreachable, so the Mobility Database's hosted mirror copy was scored instead. Publisher ownership of the configured URL is not verified.

Confidence describes how much the pipeline could measure this run, not the feed itself. It never changes the grade.

Top things to fix

Fix 01

Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops.Likely your team

7540 of 7540 stops don't say whether a wheelchair user can board there. Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all.

⏱ A column in stops.txt; your scheduling software likely has it.worth about +25 points in its category

Fix 02

Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip.Likely your export tool

98429 of 98429 trips don't say whether the vehicle is wheelchair accessible. Even with accessible stops, riders need to know the bus itself can take them.

⏱ A default or per-trip field in your export.worth about +15 points in its category

Fix 03

Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead.

The feed contains no fare information. Riders see 'fare unknown' in trip planners and can't budget their trip; visitors are most affected.

⏱ A small file for most flat-fare systems.worth about +15 points in its category

Finding handoff

Move one finding to a recheck

Select one finding. Copy the request, make the change in the feed-producing tool, then compare the next complete run.

Feed evidence
7540 of 7540 stops don't say whether a wheelchair user can board there.
Next action
Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops.
Recheck
Publish the changed feed at the same URL. On the next complete, comparable scorecard run, confirm that this finding is no longer reported.
Copy handoff text
How to make and check these changes

Check the result on the published feed. Read the guide, make the change in your tool, and use the next comparable run to see whether the finding is still reported. Only an action or ticket record can attribute who made the change.

  1. Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops. · Read the fix guide for scorecard_wheelchair_boarding_unknown

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. See this feed's finding-clearance log.

  2. Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip. · Read the fix guide for scorecard_wheelchair_accessible_unknown

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. See this feed's finding-clearance log.

  3. Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead. · Read the fix guide for scorecard_no_fare_data

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. See this feed's finding-clearance log.

Rider view: what this feed publishes

A quick read of rider-facing information in this feed.

Schedule visibility
The feed's last published service date is in 195 days.
Published accessibility data
Accessibility information is stated for 0% of stops and 0% of trips. This measures published data, not whether stops or vehicles are physically usable.
Fare information
No fare information is published in the feed.
Realtime information
Realtime-feed availability and live-arrival coverage are not known from this scorecard.

Important: This does not rate service reliability. Riders should confirm current service alerts, fares, and accessibility accommodations with the transit operator before traveling.

Send your vendor a fix request

You may not control the GTFS export yourself. Copy this and send it to whoever runs your scheduling software export. It names each fix with the validator notice and a guide link.

Score by category

Correctness89.8 / 100

The MobilityData validator flagged 6 kinds of issue across 21 instances (0 error, 4 warning, 17 informational).

Freshness100.0 / 100

Service data covers the next 195 days.

Rider experience45.0 / 100

0% of stops state wheelchair accessibility (0% marked accessible, 0% marked not accessible). This measures what the feed publishes, not whether a stop is physically usable. Fare data is not published.

Accessibility0 / 100

0% of stops state accessibility (0% marked accessible). Reflects what the feed states, not verified physical usability.

2 accessibility depth signals

  • 51 route badge(s) pair a color and text color below the WCAG 4.5:1 contrast bar (A11, A12, A25, A27, A28, and more).

    Consider: Adjust route_color or route_text_color so each pair clears 4.5:1. Often switching the text between black and white is enough.

  • 7534 stop name(s) use abbreviations or symbols a screen reader may mispronounce, with no spoken form set ("Tantallon Dr+Asbury Dr", "Tantallon Dr+Buckmaster Ln", "Tantallon Dr+Asbury Dr", and more).

    Consider: Add tts_stop_name with the spoken form, e.g. 'Main Street and Second Avenue', for the affected stops.

Opportunities to strengthen the data, not deductions from the sub-score above. States what the second accessibility lens can check from the feed, not verified physical usability.

Realtime qualityNot yet measured

This agency publishes realtime, but the feed needs an access key we don't have yet. Nothing here counts against the grade.

Routes and stops

Each route is drawn once, using the longest shape its trips follow; stops are the dots.

This feed has 7540 stops.

Skip to route and stop data

The route and stop data is ready below. Load the map only when you want the geographic view. It uses additional data.

Basemap: OpenFreeMap, © OpenStreetMap contributors. Routes and stops: this agency's GTFS feed.

  • A11 (teal)
  • A12 (teal)
  • A1X (teal)
  • A25 (teal)
  • A27 (teal)
  • A28 (teal)
  • A29 (teal)
  • A40 (red)
  • A49 (teal)
  • A58 (teal)
  • A66 (teal)
  • A70 (teal)
  • A71 (purple)
  • A76 (purple)
  • A90 (teal)
  • C11 (teal)
  • C13 (red)
  • C15 (teal)
  • C17 (teal)
  • C21 (red)
  • C23 (teal)
  • C25 (teal)
  • C26 (teal)
  • C27 (teal)
  • C29 (teal)
  • C31 (red)
  • C33 (teal)
  • C35 (teal)
  • C37 (teal)
  • C41 (red)
  • C43 (purple)
  • C51 (teal)
  • C53 (red)
  • C55 (teal)
  • C57 (teal)
  • C61 (red)
  • C63 (teal)
  • C71 (teal)
  • C75 (teal)
  • C77 (teal)
  • C81 (teal)
  • C83 (teal)
  • C85 (teal)
  • C87 (teal)
  • C91 (teal)
  • D10 (teal)
  • D1X (teal)
  • D20 (red)
  • D24 (teal)
  • D2X (teal)
  • D30 (teal)
  • D32 (teal)
  • D34 (teal)
  • D36 (teal)
  • D40 (teal)
  • D44 (teal)
  • D4X (red)
  • D50 (teal)
  • D5X (red)
  • D60 (teal)
  • D6X (red)
  • D70 (teal)
  • D72 (red)
  • D74 (teal)
  • D80 (red)
  • D82 (teal)
  • D90 (teal)
  • D94 (teal)
  • D96 (teal)
  • F19 (teal)
  • F1X (teal)
  • F20 (red)
  • F23 (purple)
  • F24 (purple)
  • F26 (purple)
  • F28 (teal)
  • F29 (teal)
  • F44 (teal)
  • F50 (purple)
  • F60 (purple)
  • F61 (teal)
  • F62 (teal)
  • F81 (teal)
  • F83 (teal)
  • F85 (teal)
  • M12 (red)
  • M20 (red)
  • M22 (teal)
  • M42 (purple)
  • M44 (purple)
  • M52 (teal)
  • M54 (teal)
  • M60 (red)
  • M6X (teal)
  • M70 (red)
  • M82 (teal)
  • P10 (teal)
  • P12 (purple)
  • P14 (teal)
  • P15 (teal)
  • P16 (teal)
  • P1X (teal)
  • P20 (teal)
  • P21 (purple)
  • P24 (purple)
  • P30 (red)
  • P31 (teal)
  • P32 (purple)
  • P33 (teal)
  • P35 (purple)
  • P40 (red)
  • P41 (teal)
  • P42 (purple)
  • P60 (red)
  • P61 (teal)
  • P62 (purple)
  • P63 (purple)
  • P66 (teal)
  • P72 (purple)
  • P73 (purple)
  • P87 (purple)
  • P90 (teal)
  • P93 (teal)
  • P94 (teal)
  • P96 (teal)
  • P97 (purple)
Routes in Washington Metropolitan Area Transit Authority (WMATA) Bus's feed
RouteTypeLine color
A11 Pentagon-HuntingtonBusteal
A12 Ballston-Hunting PointBusteal
A1X Pentagon City-Braddock RdBusteal
A25 Pentagon-S Fairlington-LandmarkBusteal
A27 Pentagon-Shirlington-Van Dorn StBusteal
A28 Pentagon-Holmes Run-LandmarkBusteal
A29 Metro Ctr-Alexandria WBusteal
A40 Columbia Pike-National LandingBusred
A49 Columbia Pike-Metro CenterBusteal
A58 Wilson Blvd-Farragut SqBusteal
A66 Pentagon-Shirlington-CulmoreBusteal
A70 Glebe RdBusteal
A71 Ballston-King StBuspurple
A76 Carlin Springs RdBuspurple
A90 Pentagon-Mark CenterBusteal
C11 S Capitol StBusteal
C13 MLK Av-Washington HighlandsBusred
C15 MLK Av-Southern AvBusteal
C17 MLK Av-BellevueBusteal
C21 Alabama Av-Benning RdBusred
C23 Alabama Av-Division AvBusteal
C25 Pomeroy Rd-SkylandBusteal
C26 Stanton Rd-SkylandBusteal
C27 Naylor Rd-Shepherd PkwyBusteal
C29 Anacostia-Southern AvBusteal
C31 Minnesota AvBusred
C33 Sheriff RdBusteal
C35 Deanwood-Naylor RoadBusteal
C37 Lincoln Hts-Potomac AvBusteal
C41 Bladensburg RdBusred
C43 Maryland AvBuspurple
C51 U St-AnacostiaBusteal
C53 U St-Congress HtsBusred
C55 Union Station-L'Enfant PlazaBusteal
C57 U St-Capitol HtsBusteal
C61 Brookland-TenleytownBusred
C63 Deanwood-Georgia AvBusteal
C71 18 StBusteal
C75 Takoma-Georgia AvBusteal
C77 Takoma-Fort TottenBusteal
C81 Military RdBusteal
C83 Barnaby Woods-Friendship HtsBusteal
C85 Nebraska Av-Foggy BottomBusteal
C87 Silver Spring-TenleytownBusteal
C91 LeDroit Park-GeorgetownBusteal
D10 Pennsylvania AvBusteal
D1X Pennsylvania Av LimitedBusteal
D20 H StBusred
D24 E Capitol StBusteal
D2X H St LimitedBusteal
D30 N Capitol StBusteal
D32 Rhode Island Av-Fort LincolnBusteal
D34 W Hyattsville-Edgewood-Metro CtrBusteal
D36 K St-Ivy CityBusteal
D40 7 St-Georgia AvBusteal
D44 11 StBusteal
D4X 7 St-Georgia Av LimitedBusred
D50 14 StBusteal
D5X 14 St LimitedBusred
D60 16 StBusteal
D6X 16 St LimitedBusred
D70 Connecticut AvBusteal
D72 Connecticut Av-Mt PleasantBusred
D74 Rhode Island Av-Foggy BottomBusteal
D80 Wisconsin Av-Union StationBusred
D82 Wisconsin Av-Foggy BottomBusteal
D90 Massachusetts Av-TenleytownBusteal
D94 Gallery Place-Sibley HospitalBusteal
D96 Massachusetts Av-BethesdaBusteal
F19 Mt Vernon Estate ExpBusteal
F1X Richmond HwyBusteal
F20 Leesburg PikeBusred
F23 Little River Tpk-George MasonBuspurple
F24 Little River Tpk-ViennaBuspurple
F26 E Falls Church-AnnandaleBuspurple
F28 Kings Park W ExpBusteal
F29 Braddock RdBusteal
F44 Columbia Pike-PentagonBusteal
F50 Washington BlvdBuspurple
F60 Arlington Blvd-Fair OaksBuspurple
F61 Arlington Blvd-Jermantown RdBusteal
F62 Rosslyn-Arlington Blvd-Dunn LoriBusteal
F81 Burke Centre ExpBusteal
F83 Cardinal Forest ExpBusteal
F85 Little River Tpk-PentagonBusteal
M12 University BlvdBusred
M20 Wheaton-Silver SpringBusred
M22 Olney-BethesdaBusteal
M42 Randolph Rd-College ParkBuspurple
M44 Randolph Rd-Hyattsville CrossingBuspurple
M52 Colesville Rd-BurtonsvilleBusteal
M54 Colesville Rd-GreencastleBusteal
M60 New Hampshire AvBusred
M6X New Hampshire Av LimitedBusteal
M70 East West HwyBusred
M82 River Rd-Falls RdBusteal
P10 Baltimore AvBusteal
P12 Laurel-GreenbeltBuspurple
P14 Kenilworth AvBusteal
P15 Riggs Rd-AdelphiBusteal
P16 Riggs Rd-White OakBusteal
P1X Baltimore Av LimitedBusteal
P20 Greenbelt Rd-New CarrolltonBusteal
P21 Hanover Pkwy-New CarrolltonBuspurple
P24 Good Luck RdBuspurple
P30 New Carrollton-Silver SpringBusred
P31 New Carrollton-Takoma LangleyBusteal
P32 Greenbelt-Fort TottenBuspurple
P33 Queens Chapel RdBusteal
P35 New Carrollton-Fort TottenBuspurple
P40 Annapolis RdBusred
P41 Landover RdBusteal
P42 Chillum Rd-New CarrolltonBuspurple
P60 MLK Hwy-SuitlandBusred
P61 Glenarden-SuitlandBusteal
P62 Deanwood-Branch AvBuspurple
P63 Central Av-Naylor RdBuspurple
P66 Forestville-SuitlandBusteal
P72 Central Av-BowieBuspurple
P73 Central Av-Trade ZoneBuspurple
P87 Brinkley RdBuspurple
P90 St Barnabas RdBusteal
P93 Suitland-BirchwoodBusteal
P94 Suitland-National HarborBusteal
P96 Suitland-Oxon HillBusteal
P97 Southern Av-Ft WashingtonBuspurple
List every stop
  • New Hampshire Av+Quebec St
  • Riggs Rd+Ruatan St
  • Greenbelt Rd+63 Av
  • Greenbelt Rd+63 Av
  • Southway+#11 Ct
  • Riggs Rd+Ruatan St
  • Connecticut Av+Manor Rd
  • Southway+#10 Court
  • River Rd+Carderock Springs Dr
  • Hanover Pkwy+#7800
  • Fenton St+Roeder Rd
  • Georgia Av+Cameron St
  • University Bl+Seek Ln
  • University Bl+Seek Ln
  • Mandan Rd+Hanover Pkwy
  • Georgia Av+Cameron St
  • Southway+#7 Court
  • N Washington St+Princess St
  • Hanover Pkwy+Mandan Rd
  • Southway+Ridge Rd
  • Greenbelt Rd+Cherrywood Ln
  • Lakeside Dr+Lakecrest Dr
  • Baltimore Av+Metzerott Rd
  • Beltway Plz+Cunningham Dr
  • Lanham-Severn Rd+Driscoll Dr
  • Helmont Dr+Fenwood Av
  • Greenbelt Rd+Branchville Rd
  • Greenbelt Rd+48 Av
  • Greenbelt Rd+48 Av
  • Lakeside Dr+Westway
  • Riggs Rd+Saranac St
  • Rhode Island Av+University Bl
  • Colesville Rd+Spring St
  • Lakeside Dr+Westway
  • Ridge Rd+18 Ct
  • Rockville Pk+South Dr
  • Colesville Rd+Spring St
  • University Bl+Piney Branch Rd
  • Edmonston Rd+Breezewood Dr
  • Riggs Rd+Saranac St
  • Georgia Av+Spring St
  • River Rd+Fenway Dr
  • Ridge Rd+21 Ct
  • Yoakum Pkwy+Edsall Rd
  • Cherrywood Ln+Greenbelt Rd
  • New Hampshire Av+Ruatan St
  • Cherrywood Ln+#5510
  • Westway+Ridge Rd
  • New Hampshire Av+Ruatan St
  • S Reynolds St+#375 Brent Place Apt
  • Georgia Av+Spring St
  • Rhode Island Av+University Bl
  • MD 190+Congressional C C
  • Edmonston Rd+Edmonston Ct
  • Southway+Crescent Rd
  • Edmonston Rd+Edmonston Ct
  • Southway+Crescent Rd
  • University Bl+Piney Branch Rd
  • Ridge Rd+Gardenway
  • Birchwood Dr+Livingston Rd
  • Baltimore Av+University Bl
  • Rhode Island Av+Apache St
  • Connecticut Av+Parsons Rd
  • Birchwood Dr+Livingston Rd
  • Crescent Rd+Gardenway
  • Breezewood Dr+Cherrywood Terr
  • Edmonston Rd+Springhill Ct
  • Crescent Rd+Gardenway
  • Connecticut Av+Montrose Dr
  • Colesville Rd+N Noyes Dr
  • Colesville Rd+N Noyes Dr
  • University Bl+Langley Dr
  • Ridge Rd+Hamilton Pl
  • Ridge Rd+33 Ct
  • Cherrywood Ln+Breezewood Dr
  • Fisher Rd+St Moritz Dr
  • River Rd+Bradley Bl
  • Riggs Rd+Apache St
  • Georgia Av+Noyes Dr
  • Rhode Island Av+Cherokee St
  • University Bl+Patton Dr
  • Georgia Av+Noyes Dr
  • Riggs Rd+Apache St
  • Ridge Rd+35 Ct
  • Guinea Rd+Bronte Dr
  • Ridge Rd+38 Ct
  • Rhode Island Av+Cherokee St
  • Edmonston Rd+Springhill Dr
  • River Rd+Harrington Dr
  • Burke Lake Rd+Grantham St
  • Lanham-Severn Rd+Cowan Av
  • Metzerott Rd+Presidential Towers
  • Edmonston Rd+Springhill Dr
  • Baltimore Av+Cherokee St
  • Springhill Dr+Lakeside Dr
  • Baltimore Av+Cherokee St
  • Springhill Dr+Lakeside Dr
  • Southampton Dr+Ames Rd
  • Georgia Av+Highland Dr
  • Springhill Dr+Market Ln
  • Springhill Dr+Market Ln
  • Lanham-Severn Rd+Church La
  • Metzerott Rd+New Hampshire Av
  • Georgia Av+Highland Dr
  • Southampton Dr+#201
  • Riggs Rd+Adelphi Rd
  • Zion Dr+Sideburn Rd
  • Cherrywood Ln+Cherrywood Ct
  • Riggs Rd+Adelphi Rd
  • River Rd+Durham Dr
  • Colesville Rd+Dale Dr
  • Southampton Dr+Ames Rd
  • Colesville Rd+Dale Dr
  • Southampton Dr+Ames Rd
  • Burke Lake Rd+Grantham St
  • Rhode Island Av+Fox St
  • Southampton Dr+Beacon Rd
  • Southampton Dr+Beacon Rd
  • University Bl E+E Wayne Av
  • Old Georgetown Rd+Alta Vista Rd
  • Galloway Dr+Colony Rd
  • River Rd+Congressional Pkwy
  • River Rd+Congressional Pkwy
  • University Bl+Buckingham Dr
  • Rhode Island Av+Fox St
  • Old Georgetown Rd+Alta Vista Rd
  • Baltimore Av+Erie St
  • 11 St+Myrtle Av
  • 11 St+Myrtle Av
  • Baltimore Av+Erie St
  • Northampton Dr+Avenel Rd
  • Georgia Av+Luzerne Av
  • Georgia Av+Luzerne Av
  • Northampton Dr+Avnel Rd
  • Cherrywood Ln+Springhill Dr
  • Ridge Rd+Northway
  • Kenilworth Av+Crescent Rd
  • Rolling Rd+Fern Park Dr
  • Riggs Rd+Hughes Rd
  • Ridge Rd+Northway
  • Riggs Rd+Hughes Rd
  • River Rd+Belle Terre Wy
  • Northampton Dr+Beacon Rd
  • Northampton Dr+Colony Rd
  • Colesville Rd+Sligo Creek Pkwy
  • Connecticut Av+Beach Dr
  • Northampton Dr+Beacon Rd
  • Northampton Dr+Colony Rd
  • Colesville Rd+St Andrews Wy
  • N Washington St+Oronoco St
  • Ivy Ln+Crowne Plaza
  • Ivy Ln+#6404
  • Connecticut Av+Beach Dr
  • 9 St+Chapel Av
  • 9 St+Railroad Av
  • River Rd+Belle Terre Wy
  • Rhode Island Av+Kenesaw St
  • Baltimore Av+Indian Ln
  • Ivy Ln+Turner Pl
  • Ivy Ln+6303
  • Baltimore Av+Indian Ln
  • Guinea Rd+Bronte Dr
  • Riggs Rd+Buck Lodge Rd
  • Rhode Island Av+Kenesaw St
  • Ivy Ln+#6301
  • Georgia Av+Seminary Rd
  • Ridge Rd+Plateau Pl
  • Connecticut Av+Culver St X
  • Ridge Rd+Plateau Pl
  • Riggs Rd+Buck Lodge Rd
  • Georgia Av+Seminary Pl
  • Ft Washington Rd+Rexburg Av
  • Connecticut Av+Culver St
  • Old Georgetown Rd+Beech Av
  • University Bl E+E Melbourne Av
  • Old Georgetown Rd+Beech Av
  • Ridge Rd+58 Ct
  • Cherrywood Ln+Ivy Ln
  • Adelphi Rd+19 Av
  • University Bl E+E Melbourne Av
  • Cherrywood Ln+Ivy Ln
  • River Rd+Newbridge Dr
  • Ridge Rd+#57 Court
  • Colesville Rd+Leighton Av
  • Cherrywood Ln+US Court House
  • Rhode Island Av+Hollywood Rd
  • Connecticut Av+Grace Episcopal School
  • Rhode Island Av+Hollywood Rd
  • Colesville Rd+Leighton Av
  • New Hampshire Av+Adelphi Rd
  • Connecticut Av+Grace Episcopal School
  • Baltimore Av+Hollywood Rd
  • Helmont Dr+Ironton Dr
  • Baltimore Av+Hollywood Rd
  • New Hampshire Av+Dilston Rd
  • University Bl E+E Franklin Av
  • Colesville Rd+Indian Spring Dr
  • Riggs Rd+Heatherwood Ct
  • Colesville Rd+Indian Spring Dr
  • Riggs Rd+Heatherwood Ct
  • Old Georgetown Rd+Ryland Dr
  • Connecticut Av+Dunnel Ln
  • Connecticut Av+Dunnel Ln
  • Old Georgetown Rd+Ryland Dr
  • Southampton Dr+Lancashire Dr
  • Rhode Island Av+Muskogee St
  • River Rd+Persimmon Tree Rd
  • Baltimore Av+Cherry Hill Rd
  • Rhode Island Av+Muskogee St
  • Md-212+Buck Lodge Ter
  • Riggs Rd+Buck Lodge Ter
  • River Rd+Persimmon Tree Rd
  • Baltimore Av+Cherry Hill Rd
  • Southampton Dr+Thames St
  • New Hampshire Av+Oakview Dr
  • Connecticut Av+Saul Rd
  • Riggs Rd+Cruze Pl
  • New Hampshire Av+Oakview Dr
  • Connecticut Av+Saul Rd
  • Riggs Rd+Lackawanna St
  • Georgia Av+Forest Glen Rd
  • Edgewood Rd+49 Av
  • Seven Springs Vil+#9316
  • River Rd+Hall Rd
  • S Reynolds St+#260 The Summit Apt
  • Edgewood Rd+Rhode Island Av
  • Edgewood Rd+49 Av
  • River Rd+Hall Rd
  • Edgewood Rd+Rhode Island Av
  • Georgia Av+Forest Glen Rd
  • Cherry Hill Rd+47 Av
  • River Rd+Counselman Rd
  • Rolling Rd+Braddock Rd
  • River Rd+Counselman Rd
  • University Bl+Williamsburg Dr
  • Riggs Rd+Mistletoe Pl
  • Bowie State U+MLK Center
  • Riggs Rd+Mistletoe Pl
  • University Bl+Williamsburg Dr
  • Fisher Rd+Damian Dr
  • Old Georgetown Rd+Kingswood Rd
  • Connecticut Av+Franklin St
  • Old Georgetown Rd+Kingswood Rd
  • Colesville Rd+Lanark Wy
  • Ft Washington Rd+Rexburg Av
  • Falls Rd+River Rd
  • University Bl+Lexington Dr
  • Georgia Av+Belvedere Bl
  • Georgia Av+Belvedere Bl
  • University Bl+Lexington Dr
  • and 7290 more (see the full list on the map or in the GeoJSON)

Over time

Overall score across the last 6 checks — unchanged since 2026-09-12.

2026-08-06: 68.42026-08-07: 68.02026-08-10: 66.82026-09-01: 57.62026-09-12: 78.32026-09-13: 78.3
Show the numbers
Overall score by check, with the change from the previous check
CheckScoreChange
2026-08-0668.4 first check
2026-08-0768.0 down 0.4
2026-08-1066.8 down 1.2
2026-09-0157.6 down 9.2
2026-09-1278.3 up 20.7
2026-09-1378.3 no change

What changed since your last check

  • Correctness no change
  • Freshness no change
  • Rider experience no change

What changed over time

On 2026-08-06 this feed started at grade D. On 2026-09-01 the grade moved from D to F. On 2026-09-12 the grade moved from F to C. On 2026-09-13 the check no longer reported: some service calendars in the feed have already ended. As of 2026-09-13 it holds grade C.

A plain-language history of this feed, newest first.

  • 2026-09-12 Grade went F to C, freshness rose 82 points.
  • 2026-09-01 Grade went D to F, freshness fell 37 points.

Everything we checked

9 findings, ordered by severity.

Show every finding
  • Warning98429 instances

    98429 of 98429 trips don't say whether the vehicle is wheelchair accessible.

    Even with accessible stops, riders need to know the bus itself can take them.

    Fix: Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip. (A default or per-trip field in your export.)

    Finding code: scorecard_wheelchair_accessible_unknown · Read the fix guide for scorecard_wheelchair_accessible_unknown · See GTFS Schedule reference (opens the GTFS Schedule reference on an external site)

  • Warning7540 instances

    7540 of 7540 stops don't say whether a wheelchair user can board there.

    Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all.

    Fix: Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops. (A column in stops.txt; your scheduling software likely has it.)

    Finding code: scorecard_wheelchair_boarding_unknown · Read the fix guide for scorecard_wheelchair_boarding_unknown · See GTFS Schedule reference (opens the GTFS Schedule reference on an external site)

  • Warning3 instances

    Some service calendars have no days of the week switched on.

    Trips tied to these calendars never run; they are dead data that can mask real schedule problems.

    Fix: Delete the empty calendars or set their service days. (A few minutes in your scheduling software.)

    Finding code: service_has_no_active_day_of_the_week · Read the fix guide for service_has_no_active_day_of_the_week · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Warning1 instance

    Many of the feed's trips don't run at all in the next 7 days.

    It usually means old service periods are still in the export, making the feed bigger and harder to check.

    Fix: Trim past service periods the next time you export. (One setting in most export tools.)

    Finding code: trip_coverage_not_active_for_next7_days · Read the fix guide for trip_coverage_not_active_for_next7_days · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Warning1 instance

    The feed contains no fare information.

    Riders see 'fare unknown' in trip planners and can't budget their trip; visitors are most affected.

    Fix: Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead. (A small file for most flat-fare systems.)

    Finding code: scorecard_no_fare_data · Read the fix guide for scorecard_no_fare_data · See GTFS Best Practices (opens GTFS Best Practices on an external site)

  • Info13 instances

    The feed has a stretch of two weeks or more with no service running.

    A long gap can mean dates were left out of the calendar. Apps then show no trips on those days.

    Fix: Check whether the gap is real, like a seasonal break; if not, add the missing dates to the calendar. (A review of your calendar dates.)

    Finding code: big_gap_in_service · Read the fix guide for big_gap_in_service · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info2 instances

    The feed includes a file that is not part of the GTFS spec.

    Apps ignore files they don't know, and a stray file can hide a misspelled standard file name.

    Fix: Check the flagged file name for a typo of a standard GTFS file. Remove it if it is a vendor extra. (A quick look at the flagged file.)

    Finding code: unknown_file · Read the fix guide for unknown_file · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info1 instance

    Future calendar (flagged by the MobilityData validator).

    See the linked rule for what this affects.

    Fix: Review the rule documentation for 'future_calendar' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. (Varies.)

    Finding code: future_calendar · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info1 instance

    Future feed (flagged by the MobilityData validator).

    See the linked rule for what this affects.

    Fix: Review the rule documentation for 'future_feed' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. (Varies.)

    Finding code: future_feed · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

NTD GTFS readiness Ready

Published at a public URL, valid, current, and identified with agency_id: the four feed checks for RY2026 all hold here. Only your own D-10 and P-50 filings make that official; this is a heads-up, not a determination.

Published Ready
Published at a public URL.
Valid Ready
Passes validation with no errors.
Current Ready
Service data covers the next 195 days.
agency_id provided Ready
agency.txt provides agency_id. For RY2026, keep one stable value for each NTD reporter represented in the feed and crosswalk each value on the P-50 form.
agency_id equals your NTD ID (optional) Different (allowed)
Your feed's agency_id is 1; your National Transit Database ID is 30030. A feed that serves several agencies (a shared regional feed) can legitimately carry more than one agency_id. The values do not need to equal the five-digit NTD ID, so this difference is allowed and carries no score. Confirm that P-50 crosswalks agency_id 1 to NTD ID 30030, and keep the feed value stable. Do not change it solely to make the two values equal.
shapes.txt covers your trips Ready
All 98429 trips have a shape in shapes.txt.

In plain words: if you report to the federal transit database, you have to publish a working, up-to-date feed, provide a stable agency_id for each represented reporter, and confirm the feed and P-50 crosswalk each year. This box is a heads-up; your filings are the official check.

A readiness signal mapping this feed to the FTA National Transit Database GTFS requirement (Report Year 2023 onward: a public, valid, current feed, certified annually on the D-10). For RY2026, each represented reporter needs a stable agency_id, unique within the feed and crosswalked to its five-digit NTD ID on P-50; the values do not need to be equal. FTA also requires shapes.txt in the published GTFS: Full Reporters from Report Year 2025, and Reduced, Rural, and Tribal Reporters from Report Year 2026. Not an official determination; your certification is the official check.

Conformance mark Not yet

One requirement remains for this feed to earn the conformance mark. States wheelchair access on 0% of stops and 0% of trips; the mark needs 90% of each.

Valid Met
Passes validation with no errors.
Current Met
Service data covers the next 195 days.
Accessible Not yet
States wheelchair access on 0% of stops and 0% of trips; the mark needs 90% of each.

In plain words: earn this mark when your feed passes validation, has not expired, and says whether nearly every stop and trip is wheelchair accessible.

A pass credential for a feed that is valid, current, and states wheelchair access on nearly every stop and trip. Accessibility here measures what the feed publishes, not whether a stop is physically usable. How the conformance mark works.

Clears the Google and Apple Maps four-week coverage bar. This feed has 193 days of service ahead, clearing the four-week (28-day) window Maps asks for. No validator errors either, so riders keep seeing this agency in their trip planners; warnings lower the grade here but do not remove a feed from Maps.

How this agency maps to the standards

The scorecard is a data-quality lens, not a compliance determination. Its universal references describe good GTFS and useful rider information. Useful references here are GTFS Schedule Best Practices, GTFS-Realtime Best Practices, MobilityData grading scheme, Google Transit publication guidance, FTA National Transit Database GTFS requirement. Read the full standards crosswalk.

Correctness 90 / 100
GTFS Schedule best practices, checked by the MobilityData validator. MobilityData grading covers stop locations, route names, and colors. Google Transit requires a feed to pass validation for publication. FTA NTD readiness also checks that the published feed is valid.
Freshness 100 / 100
GTFS Schedule best practices call for a dataset that stays current. An expired calendar can remove service from Google Transit and other rider trip planners. FTA NTD readiness also checks that the published feed is current.
Rider experience 45 / 100
GTFS Best Practices for rider-facing fields. MobilityData grading covers stop names and headsigns.
Realtime quality Access needed to measure
GTFS-Realtime best practices: a stable URL, high uptime, and frequent updates.

Part of the District of Columbia portfolio: the same scorecards for every feed we track in that group, on one free page.

Show your grade

Put a badge on your agency site or feed README. It updates after each completed scoring check and links back to this scorecard.

Washington Metropolitan Area Transit Authority (WMATA) Bus GTFS data quality grade: C

Prefer a shields.io style? Point a dynamic endpoint badge at the published badge.json.

Cite this record

This page updates on every check. The record below does not: it is the dated file this grade came from, published at https://gtfsscorecard.org/data/artifacts/washington-metropolitan-area-transit-authority-wmata/2026-09-13.json and never overwritten, pinning the grade, category scores, rubric version, validator version, reader archive profile, and the scored feed's sha256 as they stood on 2026-09-13. Use it in a board packet, a regulatory filing, or a research citation instead of linking the live page, whose content will differ on your next visit.

Citing the tool itself rather than one agency's record? Use the repo's CITATION.cff.