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.

Example route · a 4.8 mi evening loop Drag the slider to move the sun
A looping route through a neighbourhood, its stretches coloured by how much shade falls on them at the selected time of day. E W

6:00 pm

Sun 35° above the west

55%
of this route is in shade at that moment
Sun on the ground
Shadows reach about 28 m from a mature tree — enough to cross the road.
5 am9 am1 pm5 pm9 pm

Shadiest sensible start: 5:30 pm — 56% shade

~1 m
Canopy height resolution, read straight from the source raster
30 m
Tree cover grid in the continental US — 10 m worldwide, finer still where a local survey exists
700k+
Surveyed sidewalk segments merged in, from cities’ own inventories
0
Ads, feeds, kudos, or anything else that isn’t your route

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.

Signalised Marked or unmarked 16,117 in Washington DC 1,473 in Raleigh
Signal — cross here

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.

Sidewalk present Confirmed absent Foot path Greenway / bikeway
Sidewalks confirmed both sides Surveyed — no sidewalk either side Foot path — traffic-free River to Sea Bikeway — shared-use

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.

GPX export GPX import Labelled markers Saved route library
Water fountain 4.8 mi

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.

01 · INPUT

Tree cover

How much of each 30 m square sits under canopy at all — the “is this street tree-lined” answer.

NLCD, 2021 vintage
02 · INPUT

Tree height

How tall that canopy stands, at roughly a metre. Height is what sets how far a shadow can reach.

Meta / WRI global canopy
03 · COMPUTE

Sun position

Altitude and compass bearing for your date, hour and latitude — solved, not looked up in a table.

Solar geometry, to the minute
04 · OUTPUT

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.

Recomputed every time you open a route

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.