Same route at 1 pm.
Same route at 6 pm.
Trees only shade the road when the sun is in the right place. RunMapApp works out where the shadows actually fall at the hour you set off — so you can pick the run, and the time, that isn’t baking.
6:00 pm
Sun 35° above the west
Everything a route planner should do, and nothing it shouldn’t.
No feed, no kudos, no training plan. Just the map, the ground truth, and what you know about your own streets.
Clicks that follow real ground
Drop a point and the line snaps to the actual roads, sidewalks and paths between them. Drag any point to reshape the route; it re-follows the network as you go.
Climb, distance and a shade strip
The elevation profile builds as you draw, with a green band underneath on the same distance axis — so you can see which climbs at least come with tree cover.
Your own hazard notes
Shade gets measured. Hazard gets rated — by you, because how sketchy a road feels isn’t in any dataset. Mark it once and it’s on the map every time after.
The stuff runners actually check
Crossings, sidewalks and paths — not just the road line.
Anyone can draw a line down a street. The questions when you’re planning are whether you can get across it, and whether there’s anywhere to run that isn’t the road — a sidewalk, a foot path, a greenway. Both are map layers you can switch on while you draw.
Where you can actually cross
Crossings show up as icons at street level — and the ones with a traffic signal are drawn green, so the safer place to get over a four-lane road is visible without clicking anything. Hover any of them for the specific type: marked, unmarked, signalised, or with a pedestrian island.
OpenStreetMap is the baseline everywhere. In a growing list of places across four countries, that city’s own crosswalk inventory takes over as ground truth: field-verified, with a real signal attribute rather than an inferred tag. The coverage map shows where.
Somewhere to run that isn’t the road
One switch, four answers, because the question behind all of them is the same. A teal line is a confirmed sidewalk. A red-orange one means confirmed absent — the more useful half, since it’s the difference between a street nobody has mapped and a street somebody checked and found nothing on.
Violet and magenta are the good stuff: traffic-free foot paths, and shared-use greenways and bikeways. Named ones say their name when you hover, because “River to Sea Bikeway” tells a local far more than “shared-use path” does. Painted crosswalks and private drives are filtered out, so what’s left is genuinely runnable.
Absence is only claimed where a source can back it. Raleigh’s inventory is a real street-by-street survey, so it can say “missing” with confidence. Wilmington’s regional layer only records sidewalks it can see, so it never draws red — silence there isn’t evidence.
Then take it with you
Export the finished route as GPX and it loads onto a Garmin, Coros or Suunto like any other course. Import one the same way to see what the shade and the climbs look like on a route you already run.
Drop labelled markers as you go, too — the water fountain, the bad kerb, the dog that always gets out. They save with the route and they’re there the next time you open it.
Method
The shade number isn’t a vibe.
Every colour on that line traces back to a published dataset and a solved sun position. A shade estimate you can’t check is just a colour, so here is the whole chain.
Tree cover
How much of each 30 m square sits under canopy at all — the “is this street tree-lined” answer.
Tree height
How tall that canopy stands, at roughly a metre. Height is what sets how far a shadow can reach.
Sun position
Altitude and compass bearing for your date, hour and latitude — solved, not looked up in a table.
Shade on the road
Shadow reach and direction laid across the road you’re on, read out per stretch and as a whole-route share.
Coverage & limits
What it doesn’t know.
A shade estimate that hides its own edges isn’t trustworthy — it’s just confident. We’d rather tell you where the model runs out than have you find out at mile three.
This is the same list that sits in our own engineering notes. More in the FAQ →
- Building shade covers only where we’ve imported footprints.A much shorter list than the crossing and sidewalk one below — turn on “Building shade” to see it, and the coverage map for where. Everywhere else, buildings still cast no shadow in the model at all, which is the biggest source of error in any other downtown.
- Tree cover is coarsest where nobody has surveyed it.With no local survey the global layer calls each 10 m cell tree or not-tree, rather than a percentage per cell like the US dataset — a real figure anywhere, just blunter about partial cover. Where a survey does exist it is sharper than either, and not only in the US: England is now mapped tree by tree.
- It answers by neighbourhood, not by branch.Good for “is this stretch tree-lined”. Not for whether one particular tree shades one particular kerb.
- Local crossing and sidewalk data is patchy by definition.It exists where a city has published an inventory and nowhere else, so the answer changes as you cross a city line. The coverage map has the current list. Everywhere without one runs on OpenStreetMap alone, which is thinner, especially for sidewalks.
- Hazard is never measured.How dangerous a road feels isn’t in any dataset, so you rate it yourself and we don’t pretend otherwise.
Find the shady way round.
Draw tomorrow’s route in about a minute, and see the sun on it before you’re standing in it. Free while we’re in beta.