How we calculate it
Every place in Denmark receives an A–G grade. It measures public transport quality and how freely people can move, with and without a car.
Edition 0.4.0 · 22 August 2026
From analysis to grade
We divided Denmark into about 75,000 points across all 98 municipalities, representing every neighbourhood in the country. For each point, we calculate how many everyday destinations can be reached within a reasonable travel time, once by public transport and once by car. Together, those two values produce the final grade.
Everyday destinations fall into five categories: workplaces, groceries, schools, health and social. Workplaces have been mapped via CVR registrations. The rest come from OpenStreetMap. Everyday destinations are scored on a saturating curve, where destinations closer to the origin score higher than those further away.
The Danish public transport network has 36,274 stops and 1,598 lines run by 21 operators. On a typical weekday, there are approximately 61,000 possible transfers across around 37,000 departures. For this analysis, we calculated more than 20 billion journeys.
Here is a high-level description of the process. If you want to know more, get in touch.
Two measured reaches
Using Rejseplanen timetables and the OpenStreetMap road network, we calculate how much people can reach by public transport and by car. Short trips count more than long ones, and trips over 90 minutes do not count.
Destinations
We count five kinds of everyday destination: workplaces, groceries, schools, health and social. The first destinations within reach count most towards the score.
Public transport quality and transport choice
That gives two numbers. Public transport quality is how much of everyday life you can reach without a car. Transport choice is how much further the car gets you.
Grading
Their average is mobility freedom and determines the final grade from A to G.
Example · Roskilde
| Public transport quality | 70.7 |
| Transport choice | 66.3 |
| Overall, the average of the two | 68.5 · B |
The A–G scale
Mobility freedom is the score behind the grade. High mobility freedom means public transport is good enough that people have a real choice about owning a car. Low mobility freedom means public transport is weak, the car has a large advantage, or destinations are difficult to reach by either mode.
70–100 · 22 municipalities · 27 % of the population
Walking and public transport cover practically as much of everyday life as the car.
55–70 · 9 municipalities · 16 % of the population
Walking and public transport cover most of everyday life, close to what the car does.
45–55 · 4 municipalities · 6 % of the population
Walking and public transport cover a large part of everyday life, helped by short distances.
30–45 · 34 municipalities · 31 % of the population
Walking and public transport cover part of everyday life, but far from what the car reaches.
22–30 · 17 municipalities · 11 % of the population
Walking and public transport cover only a smaller part of everyday life; the car reaches clearly further.
15–22 · 9 municipalities · 6 % of the population
Walking and public transport cover few of everyday journeys; the car is in practice necessary.
0–15 · 3 municipalities · 2 % of the population
Walking and public transport cover almost none of everyday life; the car is the only real option.
What improves the grade
There are several ways to improve the grade: shorter travel times to everyday destinations, fewer or faster interchanges, a new public transport service somewhere that had none, new stops closer to housing, and urban development that puts housing closer to destinations that are already there. New workplaces, grocery shops, schools, health centres and cultural venues also count, because they shorten the distance for all areas around them.
What the atlas does not capture (yet)
Congestion. Car times are computed on the road network without queues. The car's advantage is therefore overstated exactly where congestion is worst, and the densest municipalities score slightly lower than they should.
Flextrafik, including Flextur and Plustur, is not included because it is not currently available in Rejseplanen's GTFS feed. In sparsely populated municipalities, Flextrafik can be a real part of the public transport service, and those areas get no credit for it here.
The bicycle. Walking is included as access to the public transport network, but cycling does not count as a mode in its own right. In a Danish context, that is the most noticeable omission, and it bites hardest in the mid-sized towns, where the bicycle could cover a large share of exactly the trips we measure.
The quality of the journey. Whether there is a seat, whether the interchange feels safe at night, whether the platform works with a walking frame or a pram. We measure travel time and reach, not how the journey feels.
The timetable, not reality. Travel times are computed on the planned timetable from Rejseplanen. Delays, cancellations and missed connections are not included, so public transport reach is what the timetable promises, not what you get.
Finally, the atlas measures supply, not behaviour. It says what can be reached, not what people actually do. Two municipalities with the same grade can have very different travel habits.
Data sources
All classifications follow Statistics Denmark definitions, so they can be checked against DST's own documentation. These are the sources we use:
- Rejseplanen GTFS (hele Danmark). Public transport supply: routes, stops and departures, used to calculate public transport quality.
- OpenStreetMap: vejnet og interessepunkter (POI). Walking and road networks for travel-time calculations, plus POIs for groceries, schools, health and social destinations.
- Danmarks Statistik: Statistikbanken API. Population, age groups, income, household types and commuting.
- DST PEND: pendlingsstrømme. Definition of DST commuting regions (core and catchment) above the PEND threshold.
- DST BEF5: befolkning og alder. Population and age groups carried on a 100 m grid.
- DST INDKP107: indkomst. Income thresholds for the low-income grouping, using DST-defined groups.
- DST FAM55N: familietyper. Household and family types following DST definitions.
- DST FRKM126: befolkningsfremskrivning. Projected population by municipality and age, the basis for our own calculations of growth in the share aged 65 and over.
- DST 100 m kvadratnet (statistisk grid). Attribute floor: DST attributes are carried on 100 m cells, with fallback for sparse cells.
- CVR: produktionsenheder (Datafordeleren). Workplaces in the destination basket: each active production unit at its registered premises. A fixed snapshot, not a live lookup.
- Danmarks Adressers Web API (DAWA). Resolves the CVR address id to a coordinate and current municipality code, so a workplace is placed precisely and in the right municipality.
- DAGI / Dataforsyningen: kommunegrænser. Official municipality boundaries used as analysis and map layers.
- Plandata.dk: kommunale planer. Municipal transport and mobility plans.