San Antonio Trail Accessibility Map
All 402.4 miles of city trail across 571 named trails, classified by whether the surface is firm enough to roll a wheelchair, a walker or a stroller across. Plus the sidewalks that get you there, or do not. Built from the City of San Antonio’s own open GIS, and clear about the one thing most accessibility guides skip: this certifies nothing, because the City’s record does not contain what a certification would need.
Why nothing here is certified. The City's trail layer records a surface material and a length. It contains no tread width, no running grade, no cross slope and no obstruction survey, and ADA compliance cannot be established without them. So this tool says what the record settles, which surfaces are firm, and it refuses to say more. On 25.64 miles it cannot even settle firmness, and it says that too.
Every mapped trail, by surface
"Firm surface throughout" means every recorded segment of that trail is concrete, asphalt, pavers or rubberized. It is a fact about the surface field and still not an ADA determination: width, grade and cross slope are absent from the record for every trail here.
- Firm and stable 276.34 mi. Concrete, asphalt, pavers or rubberized. Meets the surface expectation.
- Not firm 96.92 mi. Natural or mulch. Not a firm and stable surface.
- Cannot be judged 25.64 mi. Aggregate or wood. Firmness depends on binder, compaction, joint gaps and maintenance, none of which the City records.
- Surface not recorded 3.50 mi. The surface field is blank or "Unknown".
Street names, contours and terrain, so you can find a specific trail and see what is around it. It loads only when you press the button, because it fetches map tiles from the U.S. Geological Survey and the Leaflet library from a public CDN. Nothing above this line contacts anyone but this site.
What the surface field actually says
| Surface | Verdict | Segments | Miles | Share |
|---|---|---|---|---|
| Concrete | Firm and stable | 3,082 | 213.51 | 53.1% |
| Natural | Not firm | 785 | 95.86 | 23.8% |
| Asphalt | Firm and stable | 699 | 61.97 | 15.4% |
| Aggregate | Cannot be judged | 295 | 24.77 | 6.2% |
| Unknown | Surface not recorded | 45 | 3.04 | 0.8% |
| Mulch | Not firm | 3 | 1.06 | 0.3% |
| Wood | Cannot be judged | 15 | 0.86 | 0.2% |
| Pavers | Firm and stable | 37 | 0.52 | 0.1% |
| (blank) | Surface not recorded | 1 | 0.46 | 0.1% |
| Rubberized | Firm and stable | 14 | 0.35 | 0.1% |
Surface material as published by the City, classified against the ADA and ABA Accessibility Guidelines for Outdoor Developed Areas. "Cannot be judged" is a real verdict, not a missing one: whether crushed aggregate is firm and stable depends on its binder, its compaction and its maintenance, and whether a boardwalk is depends on joint gaps and running slope. None of that is in the record.
All 571 named trails
| Trail | Miles | Firm | Not firm | Cannot judge | Firm share |
|---|---|---|---|---|---|
| Salado Creek Greenway North | 21.87 | 21.83 | 0.04 | 0.00 | 99.8% |
| S River Walk | 16.95 | 15.48 | 1.37 | 0.11 | 91.3% |
| Leon Creek Greenway North Park Trail | 16.10 | 14.83 | 1.27 | 0.00 | 92.1% |
| McAllister Park Trail | 12.00 | 2.41 | 9.59 | 0.00 | 20.1% |
| Medina River Greenway Park Trail | 11.27 | 11.27 | 0.00 | 0.00 | 100.0% |
| Salado Creek Greenway South | 8.54 | 8.54 | 0.00 | 0.00 | 100.0% |
| McAllister Blue Loop | 6.28 | 0.00 | 6.28 | 0.00 | 0.0% |
| Olmos Basin Golf Course Park Sidewalk | 5.90 | 5.90 | 0.00 | 0.00 | 100.0% |
| OP Schnabel Park Trail | 5.35 | 0.23 | 4.89 | 0.24 | 4.3% |
| Riverside Golf Course Park Trail | 5.33 | 5.33 | 0.00 | 0.00 | 100.0% |
| Black Hill Loop | 4.85 | 0.00 | 4.85 | 0.00 | 0.0% |
| Lytles Loop | 4.67 | 0.00 | 4.67 | 0.00 | 0.0% |
| Medina River Greenway Espada Connection | 4.50 | 4.50 | 0.00 | 0.00 | 100.0% |
| N River Walk | 4.44 | 4.44 | 0.00 | 0.00 | 100.0% |
| Sendero Balcones | 4.42 | 0.00 | 4.42 | 0.00 | 0.0% |
| Stone Oak South Trail | 4.37 | 2.76 | 1.61 | 0.00 | 63.1% |
| Mission Trail | 4.17 | 4.17 | 0.00 | 0.00 | 100.0% |
| San Jose Burial Park Trail | 4.00 | 3.93 | 0.07 | 0.00 | 98.2% |
| McAllister Park Road | 3.99 | 3.99 | 0.00 | 0.00 | 100.0% |
| Joe Johnston Route | 3.99 | 0.00 | 3.99 | 0.00 | 0.0% |
| Salado Creek Greenway | 3.87 | 3.87 | 0.00 | 0.00 | 100.0% |
| Government Canyon Park Road | 3.82 | 3.82 | 0.00 | 0.00 | 100.0% |
| Apache Creek Loop | 3.69 | 3.69 | 0.00 | 0.00 | 100.0% |
| Leon Creek Greenway South Park Trail | 3.55 | 3.55 | 0.00 | 0.00 | 100.0% |
| Alazan Creek Greenway | 3.51 | 3.51 | 0.00 | 0.00 | 100.0% |
| Apache Creek Greenway | 3.11 | 3.11 | 0.00 | 0.00 | 100.0% |
| Far Reaches Trail | 2.99 | 0.00 | 2.99 | 0.00 | 0.0% |
| Restoration Way | 2.94 | 0.00 | 2.94 | 0.00 | 0.0% |
| San Antonio Medical Foundation Trail | 2.84 | 0.95 | 1.90 | 0.00 | 33.2% |
| OP Schnabel Park Sidewalk | 2.79 | 0.96 | 0.00 | 0.00 | 34.2% |
| Twin Oaks | 2.61 | 0.00 | 2.61 | 0.00 | 0.0% |
| Woodlawn Lake Park Trail | 2.60 | 2.60 | 0.00 | 0.00 | 100.0% |
| Panther Springs Park Trail | 2.58 | 2.58 | 0.00 | 0.00 | 100.0% |
| Hillview Natural Trail | 2.54 | 0.00 | 0.00 | 2.54 | 0.0% |
| Carolines Loop | 2.47 | 0.00 | 2.47 | 0.00 | 0.0% |
| Leon Creek Greenway North | 2.35 | 2.35 | 0.00 | 0.00 | 100.0% |
| Medina River Greenway Trail | 2.28 | 2.28 | 0.00 | 0.00 | 100.0% |
| Leon Creek Greenway | 2.09 | 2.09 | 0.00 | 0.00 | 100.0% |
| Comanche Lookout Park Trail | 2.03 | 0.15 | 1.71 | 0.17 | 7.4% |
| Lakewood Acres Park Trail | 2.03 | 2.03 | 0.00 | 0.00 | 100.0% |
| Savannah Loop | 1.99 | 0.00 | 1.99 | 0.00 | 0.0% |
| McAllister Red Trail | 1.92 | 0.00 | 1.92 | 0.00 | 0.0% |
| Culebra Helotes Creek Greenway | 1.90 | 1.90 | 0.00 | 0.00 | 100.0% |
| Pvt St at 17500 Donop Rd | 1.87 | 1.87 | 0.00 | 0.00 | 100.0% |
| Culebra Creek Tribuitary Greenway | 1.82 | 1.82 | 0.00 | 0.00 | 100.0% |
| French Creek Greenway | 1.80 | 1.80 | 0.00 | 0.00 | 100.0% |
| Botanical Garden Park Trail | 1.80 | 1.28 | 0.47 | 0.05 | 71.0% |
| Red Oak Trail | 1.79 | 0.00 | 0.00 | 1.79 | 0.0% |
| Bluff Spurs | 1.78 | 0.00 | 1.78 | 0.00 | 0.0% |
| Scenic Canyon Park Trail | 1.78 | 0.00 | 1.78 | 0.00 | 0.0% |
| San Pedro Creek Greenway Trail | 1.75 | 1.75 | 0.00 | 0.00 | 100.0% |
| Zarzamora Creek Greenway | 1.72 | 1.72 | 0.00 | 0.00 | 100.0% |
| Cave Creek | 1.70 | 0.00 | 1.70 | 0.00 | 0.0% |
| Main Loop | 1.68 | 0.00 | 0.43 | 1.25 | 0.0% |
| Lakewood Acres Park Sidewalk | 1.67 | 0.00 | 1.67 | 0.00 | 0.0% |
| Historic City Cemeteries Park Trail | 1.65 | 0.00 | 1.65 | 0.00 | 0.0% |
| Wildcat Canyon | 1.62 | 0.00 | 1.62 | 0.00 | 0.0% |
| River Walk | 1.62 | 1.62 | 0.00 | 0.00 | 100.0% |
| Collins Gardens Park Sidewalk | 1.62 | 1.62 | 0.00 | 0.00 | 100.0% |
| McAllister Baseball Field Trail | 1.61 | 1.61 | 0.00 | 0.00 | 100.0% |
Select any trail to light it up on the map above. The 60 longest are listed here; the full 571 are searchable above with JavaScript on, and all of them are in the CSV and the API. "Firm share" is the share of a trail's length on a firm, stable surface. It is not an accessibility score and no trail is certified.
Getting there: the sidewalk network
A trail you cannot reach on foot or on wheels is not accessible, whatever its surface. The City inventories its sidewalks separately, and that inventory records 1,432.3 miles where a sidewalk is planned or expected and does not exist.
- less missing
- more missing
| Council district | Sidewalk (mi) | Recorded missing (mi) | Share missing | Recorded under 36in (mi) | Width never recorded |
|---|---|---|---|---|---|
| Outside the ten districts | 550.2 | 19.0 | 3.3% | 9.7 | 12.8% |
| District 1 | 637.6 | 214.9 | 25.2% | 100.2 | 11.1% |
| District 2 | 655.7 | 167.2 | 20.3% | 208.6 | 10.6% |
| District 3 | 603.5 | 263.5 | 30.4% | 184.5 | 12.2% |
| District 4 | 620.9 | 130.9 | 17.4% | 43.5 | 8.0% |
| District 5 | 705.4 | 93.0 | 11.6% | 115.3 | 11.0% |
| District 6 | 583.3 | 50.8 | 8.0% | 108.7 | 15.7% |
| District 7 | 522.2 | 220.5 | 29.7% | 49.6 | 18.1% |
| District 8 | 415.8 | 62.8 | 13.1% | 0.4 | 41.0% |
| District 9 | 444.3 | 86.6 | 16.3% | 1.3 | 14.7% |
| District 10 | 609.7 | 123.1 | 16.8% | 3.4 | 16.4% |
Read the last two columns together, always. A district can show almost no sub-36-inch sidewalk because its sidewalks are wide, or because its widths were never measured, and those two look identical in this data. District 8 records 0.4 miles under 36 inches while 41.0% of its widths are blank. Districts 9 and 10 also record very little, but their widths largely were captured, which is a different and more believable finding. "Outside the ten districts" is the City's District 0, which is not a council district: it is unassigned or extra-territorial, and 97.6% of it is unscored. It has no shape on the map above, deliberately.
Three fields that will mislead you
Three fields in the City sidewalk inventory will mislead anyone who reads them at face value. None of this is hidden; all of it is simply unstated, and every one of these traps is easy to walk into.
SidewalkScore
sentinel value used for missing data
12,049
12,049 of 75,934 Existing segments carry -999, which is a "no data" marker rather than a score. Averaging without excluding it returns a large negative number.
Width
zero used for missing data
10,871
10,871 Existing segments (924 miles) record a width of 0, which means the width was never captured, not that the sidewalk has no width.
Width
physically implausible values
11
11 Existing segments record a width above 20 feet. A sidewalk is not that wide; these are data-entry errors and are excluded from the width comparison.
A district can show almost no sub-36-inch sidewalk because its sidewalks are wide, or because its widths were never measured. Those two look identical in this data. Read every width figure beside its blank rate. The mean of the 63,885 segments that do carry a real score is 25.77. Average the field without excluding the sentinel and District 0 scores about negative 975.
Source. City of San Antonio open GIS: Park Trails, Sidewalks, Park Boundaries, Redistricted Council Districts 2022, via data.sanantonio.gov. Republished as fetched. No field was corrected, filled or smoothed. Licence: City of San Antonio open data.
Scope. 4,976 trail segments across 571 named trails, and 99,147 sidewalk segments. Sidewalk figures are computed by the City's own GIS service across every segment, not sampled.
Built. 24 August 2026 from the layers as published that day. The City republishes on its own schedule, so cite the API rather than copying a number if you need it to stay current.
Take the data. Trails as CSV · Public API · Developer portal. Cite as: BrandShyp, San Antonio Trail and Sidewalk Access, derived from City of San Antonio open GIS, 2026.
Share it with someone who has to plan the route.
Read this before you read the map
An accessibility guide that does not explain its own limits is worse than no guide, because someone will plan a trip on it.
What this is
Every trail segment the City of San Antonio publishes in its Park Trails layer: 4,976 of them, 402.4 miles, grouped into 571 named trails and sorted by the one accessibility fact the record actually contains, which is what the surface is made of.
What it is not
It is not a compliance determination, a route planner, or a promise that a trail is passable today. A surface can be concrete and still be blocked by a fallen limb, a construction barrier or a flooded low-water crossing. Nothing here has been walked.
Where the numbers come from
Directly from the City’s ArcGIS services, refetched monthly, republished exactly as fetched. No field was corrected, filled or smoothed. Where the City’s record is blank, this page shows a blank and says how large it is.
Who it is for
Anyone looking for accessible trails in San Antonio, or planning a route with a wheelchair, a walker, a cane or a stroller. Also anyone who has to answer for this network: the sidewalk figures here are the raw material of an ADA Title II self evaluation.
Why this map certifies nothing
The Americans with Disabilities Act does not care what a trail is made of in isolation. For an outdoor recreation access route it asks four things: is the surface firm and stable, is the clear tread width at least 36 inches, is the running slope within limits, and is the cross slope under five percent.
The City’s trail layer answers exactly one of those four. It records a surface material and a length. There is no width field, no grade field, no cross slope field and no obstruction survey anywhere in it. So the honest output is a surface verdict and an explicit refusal to go further, and that is what this page publishes.
It gets one step more careful than that. On 25.64 miles the record cannot even settle the surface question. Crushed aggregate is firm and stable when it is properly bound, compacted and maintained, and is loose gravel when it is not, and the City does not publish which. Boardwalk depends on joint gaps and running slope. Those miles are reported as undecidable rather than quietly counted as passing or failing, because a wrong answer here sends somebody down a trail they cannot get back up.
A further 3.50 miles carry no surface value at all. That is also shown, rather than dropped, because a trail missing from a table reads as a trail that does not exist.
The trap sitting inside every accessibility statistic
This is the part that took the longest to find, and it is the reason the tables above look the way they do.
The City’s sidewalk inventory records a width for each segment, so it is tempting to count how many fall below the 36 inch minimum and publish the total. That number is 825.2 miles across 9,671 segments, and on its own it is close to meaningless.
Here is why. District 8 records almost no sub-36-inch sidewalk at all. Read alone, that district looks like the most accessible in the city. But 41.0% of District 8‘s sidewalk widths were never recorded in the first place. Its clean sheet is very largely an absence of measurement, not an absence of narrow sidewalks.
“Few narrow sidewalks” and “few measured sidewalks” produce identical-looking statistics. Every width figure on this page is therefore printed beside the share of that district’s widths that are blank. If you take one thing from this tool, take that.
Not every low number is an artefact, and it would be just as wrong to assume they all are. Districts 9 and 10 also record very little sub-minimum sidewalk, but their widths largely were captured, which makes theirs a much more believable result. Those are newer parts of the city, built under modern standards. The point is not that the data lies. The point is that you cannot tell these two cases apart without publishing the coverage rate, and almost nobody publishes the coverage rate.
Three fields that will quietly ruin your analysis
None of this is hidden. All of it is simply unstated, which is worse.
SidewalkScore uses negative 999 to mean “no data”. 12,049 segments carry it. Load the layer, average the column, and District 0 comes back with a sidewalk score of about negative 975. The mean across the 63,885 segments that carry a real score is 25.77. Any dashboard that skipped that filter has been publishing nonsense.
Width uses 0 to mean “no data” too. 10,871 segments, 923.8 miles, record a width of zero. A zero-foot sidewalk is not a very narrow sidewalk. Averaging that column drags the mean down by a seventh, and counting those segments as failing the 36 inch minimum would overstate the problem by roughly the same amount as ignoring it understates it.
Eleven segments record a width above 20 feet, the widest at 287.5 feet. That is a plaza, a parking lot or a typing error, and it is not a sidewalk. They are excluded from the width comparison and reported separately.
Catching these is not clever. It is just the work: look at the distribution before you look at the average, and treat every suspiciously round or suspiciously extreme value as a sentinel until proven otherwise.
How this was built
A monthly job on our own server queries the City’s ArcGIS endpoints directly. The 99,147 sidewalk segments are never downloaded: every sidewalk figure on this page is computed by the City’s own GIS service through grouped aggregate queries, which means the totals cover every segment rather than a sample, and the whole job moves a few hundred kilobytes instead of a few gigabytes.
Before anything is written, the build reconciles. The width buckets must partition the set of existing sidewalks exactly, and the per-district totals must equal the citywide totals. If either check fails the job aborts and leaves the previous dataset in place, so this page can go stale but it cannot go wrong. Every figure is stamped with its build date, and the same numbers are available as CSV and through a documented public API, so nothing you read here is a number we typed by hand.
The maps are drawn as plain SVG paths projected once on the server, with no map library, no tiles and no tracking. The page works with JavaScript switched off: search and highlighting are enhancements, not the content.
Why an IT contractor built a trail map
Because an ADA Title II self evaluation is a data problem before it is a civil engineering problem, and this is what that work actually looks like. A public entity has to know the condition of its pedestrian network, and the honest first finding is almost always that the inventory is incomplete in ways the inventory does not announce.
We build data systems for government and commercial clients: ingestion that reconciles instead of assuming, provenance that survives an audit, and public interfaces that state their own limits. This page is that claim made checkable. You can call the API, pull the CSV, and compare either against the City’s original layers yourself. That is the entire point of publishing it.
If you have a dataset that has to be right, and defensibly right, start a conversation.
Send me the methodology and how this would apply to our data
We'll send a copy and, if you want, help you take the next step. No spam.
Related free tools
San Antonio Crime Map
Reported offences by ZIP code with the trend behind each one, and a straight account of which changes are real.
Accessibility Checker
Scan a page against WCAG 2.1 AA and Section 508 and get the specific failures, not a score.
Developer Portal
Every dataset behind these tools as a documented, key-free public API with an OpenAPI 3.1 spec.
Schedule Your Technical Briefing
Skip the email queue. Book a direct 30-minute discovery session on our technical calendar.
Pick a date
Available times
All times shown in Central (Chicago)You're booked.
A confirmation email is on its way from [email protected].
If you need to reschedule, reply to the confirmation email and we’ll handle it.