European Cycling Risk Ranking · 2026
We scored 67 million road segments across 219 European cities with a risk model validated against 1,169 serious cycling injuries — then ranked every city, 1st to last. No votes. No policy points. Just the streets as they are built.
All 219 cities in rank order. Bar height is the index (0–100, higher = lower assessed risk); colour is the tier, and the shade deepens as assessed risk rises within it. Hover any bar.
Every dot is a ranked city, coloured by tier. Click a dot — or search — for its rank, score and what drives it. Ctrl/⌘-scroll to zoom.
The number beside each city is its index; the interval is where it lands in 90% of 2,000 re-runs of the method with perturbed assumptions.
Underneath the city ranking is a score for every public road in 31 countries — 67 million of them. A street is scored on how it is actually built and used: its speed limit (including the legal default where none is signed), how much car traffic our model estimates it carries, how many lanes it has, whether heavy trucks are allowed, whether there is a protected bike track or just paint, how it is lit and surfaced, and what it forces a rider to do at junctions and crossings. All of it is read from open map data and our own data layers — no surveys, no opinions.
Scores at the safe end — the kind of street a network should be made of.
The middle of the scale — rideable, but it depends on the rider being careful.
The risky end — where the serious injuries concentrate.
Does the score mean anything? We checked it against reality: 4 billion measured bicycle passages and 1,169 serious injuries across 13 European regions. On streets our model puts at the risky extreme, riders are seriously hurt roughly twice as often per ride as on the streets it calls safe. It is also not an academic exercise — the same score plans safer routes in the Defensive Pedal app every day.
The exact weights are proprietary — they are the product. The ingredients and their directions are not: slower is safer, separation is safer, traffic and trucks are not. And a city cannot lobby its way up the table — the score only moves when the street does.
A city's rank comes from asking the same three questions of all 219 cities — weighted 40/30/30 — of the streets themselves.
Every kilometre of street, averaged — plus a separate check on how much of the network sits in the highest-risk band, so a city cannot bury a few terrible arterials inside a pleasant average.
We simulate 210 everyday trips per city — from where people actually live to shops, schools and work — planned by the same router that guides real riders, then score the streets those routes touch. Only what the router can find counts; reputation cannot help a city here.
For every populated square kilometre: what share of residents can reach daily destinations on a connected low-stress network? Calm islands that connect to nothing count for little — a network counts when it joins up.
Each question is answered identically in every city, from one snapshot of the model. The three answers are then combined, the scale is set by the 219 themselves, and the whole method is re-run 2,000 times with perturbed assumptions — the wobble from those re-runs is the interval printed beside every rank.
The Copenhagenize Index 2025 scores infrastructure plus usage plus policy. We score risk only. The two agree far more than they disagree (rank correlation 0.47 across their European top 30; 19 of their 27 European cities are in our top 50) — and where they don't, see argument #4.
Each dot is one of the 27 European cities in the Copenhagenize 2025 top 30. On the dashed line, the two rankings agree. Below it, we rank the city higher; above it, lower. Orange: the two disagreements where independent injury data exists — it supports the risk model in both.
Defensive Pedal plans bike routes that minimize risk, using the exact same score behind this page. Free on iOS and Android.
* = straddles a tier boundary under re-specification. Index 0–100, higher = lower assessed risk. Interval = 90% rank range over 2,000 re-runs.
| # | City | Index | Interval |
|---|---|---|---|
| Tier 1 — lower assessed risk | |||
| 1 | 🇸🇪 Stockholm | 98 | 1–7 |
| 2 | 🇫🇮 Helsinki | 97 | 1–9 |
| 3 | 🇧🇪 Antwerp | 96 | 2–13 |
| 4 | 🇳🇱 Haarlem | 96 | 1–11 |
| 5 | 🇳🇱 Leiden | 96 | 3–13 |
| 6 | 🇫🇮 Vantaa | 96 | 2–10 |
| 7 | 🇳🇱 The Hague | 95 | 4–18 |
| 8 | 🇫🇮 Espoo | 95 | 3–14 |
| 9 | 🇳🇱 Amsterdam | 94 | 5–17 |
| 10 | 🇪🇸 Barcelona | 93 | 6–19 |
| 11 | 🇫🇷 Paris | 93 | 5–16 |
| 12 | 🇫🇮 Tampere | 92 | 4–17 |
| 13 | 🇳🇱 Eindhoven | 92 | 9–23 |
| 14 | 🇳🇱 Utrecht | 92 | 11–22 |
| 15 | 🇧🇪 Brussels | 91 | 3–23 |
| 16 | 🇳🇱 Rotterdam | 91 | 14–24 |
| 17 | 🇩🇰 Copenhagen | 89 | 8–28 |
| 18 | 🇪🇸 San Sebastián | 89 | 17–29 |
| 19 | 🇫🇮 Turku | 88 | 6–24 |
| 20 | 🇩🇪 Hanover | 88 | 18–28 |
| 21 | 🇩🇪 Munich | 87 | 20–33 |
| 22 | 🇩🇪 Bremen | 86 | 18–36 |
| 23 | 🇧🇪 Ghent | 86 | 21–37 |
| 24 | 🇩🇪 Braunschweig | 84 | 23–36 |
| 25 | 🇪🇸 Bilbao | 84 | 13–44 |
| 26 | 🇳🇱 Almere | 84 | 11–36 |
| 27 | 🇫🇷 Lyon | 84 | 13–38 |
| 28 | 🇩🇪 Lübeck | 83 | 24–40 |
| 29 | 🇳🇱 Groningen | 83 | 26–37 |
| 30 | 🇫🇷 Montpellier | 82 | 25–42 |
| 31 | 🇫🇷 Toulouse | 82 | 27–44 |
| 32 | 🇫🇷 Grenoble | 80 | 27–48 |
| 33 | 🇳🇱 Tilburg | 80 | 31–46 |
| 34 | 🇫🇷 Strasbourg | 79 | 22–55 |
| 35 | 🇫🇷 Nantes | 79 | 27–52 |
| 36 | 🇪🇸 Málaga | 79 | 30–50 |
| 37 | 🇩🇪 Münster | 78 | 34–49 |
| 38 | 🇸🇪 Malmö | 78 | 12–57 |
| 39 | 🇪🇸 Seville | 78 | 24–55 |
| 40 | 🇮🇹 Bologna | 78 | 18–49 |
| 41 | 🇪🇸 Valencia | 78 | 15–67 |
| 42 | 🇫🇷 Tours | 77 | 32–65 |
| 43 | 🇪🇸 Valladolid | 76 | 37–60 |
| 44 | 🇩🇪 Freiburg | 76 | 37–58 |
| 45 | 🇪🇸 Vitoria-Gasteiz | 76 | 39–56 |
| 46 | 🇪🇸 Sabadell | 76 | 24–69 |
| 47 | 🇪🇸 Zaragoza | 75 | 44–56 |
| 48 | 🇩🇪 Duisburg | 75 | 38–62 |
| 49 | 🇦🇹 Vienna | 74 | 36–77 |
| 50 | 🇪🇸 Palma | 74 | 48–59 |
| 51 | 🇩🇪 Berlin | 74 | 37–63 |
| 52 | 🇩🇪 Mannheim | 74 | 40–73 |
| 53 | 🇪🇸 Pamplona | 73 | 45–72 |
| 54 | 🇫🇮 Oulu | 72 | 10–81 |
| 55 | 🇪🇸 Córdoba | 72 | 44–70 |
| 56 | 🇫🇷 Lille | 71 | 51–79 |
| 57 | 🇩🇪 Bonn | 70 | 43–87 |
| 58 | 🇩🇪 Düsseldorf | 70 | 55–73 |
| 59 | 🇩🇪 Magdeburg | 70 | 55–77 |
| 60 | 🇸🇮 Maribor | 70 | 47–73 |
| 61 | 🇳🇴 Trondheim | 70 | 46–73 |
| 62 | 🇳🇴 Oslo | 70 | 40–81 |
| 63 | 🇦🇹 Graz | 70 | 53–80 |
| 64 | 🇩🇪 Augsburg | 69 | 54–74 |
| 65 | 🇫🇷 Nancy | 69 | 38–108 |
| 66 | 🇩🇰 Odense | 69 | 23–89 |
| 67 | 🇩🇪 Kiel | 68 | 62–82 |
| 68 | 🇭🇺 Szeged | 68 | 63–75 |
| 69 | 🇪🇸 Elche | 68 | 65–76 |
| 70 | 🇪🇸 Gijón | 68 | 48–84 |
| 71 | 🇩🇪 Cologne* | 67 | 61–91 |
| 72 | 🇩🇰 Aarhus* | 67 | 43–90 |
| 73 | 🇪🇸 Murcia* | 67 | 61–85 |
| Tier 2 — middle | |||
| 74 | 🇩🇪 Oberhausen* | 66 | 52–103 |
| 75 | 🇫🇷 Rennes* | 66 | 61–100 |
| 76 | 🇪🇸 A Coruña | 66 | 61–101 |
| 77 | 🇵🇱 Białystok* | 65 | 61–102 |
| 78 | 🇩🇪 Halle (Saale)* | 65 | 70–94 |
| 79 | 🇪🇸 Alicante | 65 | 76–89 |
| 80 | 🇵🇱 Wrocław* | 65 | 66–99 |
| 81 | 🇱🇺 Luxembourg | 64 | 73–99 |
| 82 | 🇸🇮 Ljubljana | 64 | 76–96 |
| 83 | 🇩🇪 Karlsruhe | 64 | 76–106 |
| 84 | 🇩🇪 Hamburg | 63 | 68–112 |
| 85 | 🇸🇪 Uppsala* | 62 | 18–131 |
| 86 | 🇳🇴 Bergen | 62 | 70–113 |
| 87 | 🇵🇱 Gdańsk | 61 | 88–103 |
| 88 | 🇳🇴 Stavanger | 61 | 75–117 |
| 89 | 🇩🇪 Krefeld | 61 | 81–118 |
| 90 | 🇪🇸 Vigo | 61 | 76–127 |
| 91 | 🇪🇸 Almería | 61 | 91–108 |
| 92 | 🇭🇺 Debrecen | 60 | 71–119 |
| 93 | 🇵🇱 Łódź | 60 | 88–113 |
| 94 | 🇩🇪 Leipzig | 60 | 81–123 |
| 95 | 🇩🇪 Rostock | 60 | 80–123 |
| 96 | 🇵🇱 Toruń | 60 | 85–127 |
| 97 | 🇫🇷 Angers | 60 | 73–133 |
| 98 | 🇩🇪 Mainz | 60 | 88–127 |
| 99 | 🇩🇪 Nuremberg | 60 | 95–116 |
| 100 | 🇩🇪 Gelsenkirchen | 60 | 93–121 |
| 101 | 🇪🇸 Terrassa | 60 | 85–126 |
| 102 | 🇪🇸 Jerez de la Frontera | 59 | 97–117 |
| 103 | 🇪🇪 Tallinn | 59 | 53–130 |
| 104 | 🇭🇺 Budapest | 59 | 78–124 |
| 105 | 🇮🇸 Reykjavik | 59 | 89–129 |
| 106 | 🇫🇷 Orléans | 59 | 98–124 |
| 107 | 🇳🇱 Alkmaar | 59 | 80–140 |
| 108 | 🇨🇭 Bern | 59 | 67–144 |
| 109 | 🇪🇸 Madrid | 59 | 82–127 |
| 110 | 🇫🇷 Clermont-Ferrand | 59 | 93–128 |
| 111 | 🇵🇱 Warsaw | 58 | 67–137 |
| 112 | 🇨🇭 Geneva | 58 | 93–126 |
| 113 | 🇦🇹 Linz | 58 | 84–141 |
| 114 | 🇲🇹 Valletta | 58 | 65–151 |
| 115 | 🇪🇸 Granada | 58 | 90–140 |
| 116 | 🇫🇷 Bordeaux | 58 | 100–132 |
| 117 | 🇮🇹 Venice | 57 | 62–142 |
| 118 | 🇩🇪 Aachen | 57 | 89–145 |
| 119 | 🇵🇱 Gdynia | 56 | 114–130 |
| 120 | 🇮🇹 Florence | 56 | 88–137 |
| 121 | 🇵🇱 Poznań | 56 | 106–141 |
| 122 | 🇩🇪 Frankfurt | 56 | 114–135 |
| 123 | 🇧🇪 Liège | 56 | 91–147 |
| 124 | 🇪🇸 Oviedo | 56 | 66–157 |
| 125 | 🇩🇪 Mönchengladbach | 56 | 106–142 |
| 126 | 🇵🇱 Lublin | 55 | 95–141 |
| 127 | 🇩🇪 Dortmund | 55 | 103–138 |
| 128 | 🇸🇪 Gothenburg | 55 | 96–150 |
| 129 | 🇵🇱 Kraków | 55 | 114–136 |
| 130 | 🇫🇷 Rouen | 54 | 90–159 |
| 131 | 🇮🇪 Dublin | 54 | 107–143 |
| 132 | 🇩🇪 Bielefeld | 54 | 112–145 |
| 133 | 🇩🇪 Stuttgart | 54 | 113–152 |
| 134 | 🇸🇰 Bratislava | 53 | 119–143 |
| 135 | 🇨🇭 Zurich | 52 | 120–153 |
| 136 | 🇩🇪 Kassel | 52 | 109–168 |
| 137 | 🇮🇹 Turin* | 51 | 24–167 |
| 138 | 🇵🇱 Rzeszów | 51 | 135–150 |
| 139 | 🇫🇷 Toulon* | 51 | 118–155 |
| 140 | 🇱🇻 Riga | 51 | 120–150 |
| 141 | 🇮🇹 Parma* | 51 | 67–166 |
| 142 | 🇵🇱 Bydgoszcz* | 51 | 120–155 |
| 143 | 🇮🇹 Bergamo* | 51 | 111–153 |
| 144 | 🇩🇪 Dresden* | 51 | 113–160 |
| 145 | 🇫🇷 Reims* | 50 | 133–160 |
| 146 | 🇩🇪 Essen* | 50 | 133–157 |
| Tier 3 — higher assessed risk | |||
| 147 | 🇨🇭 Basel* | 50 | 125–164 |
| 148 | 🇵🇱 Szczecin* | 49 | 137–159 |
| 149 | 🇩🇪 Bochum* | 48 | 121–168 |
| 150 | 🇪🇸 Cartagena* | 48 | 135–165 |
| 151 | 🇭🇷 Zagreb* | 48 | 136–164 |
| 152 | 🇫🇷 Le Havre* | 48 | 144–159 |
| 153 | 🇨🇿 Prague* | 48 | 143–158 |
| 154 | 🇨🇭 Lausanne* | 47 | 112–175 |
| 155 | 🇮🇹 Pescara* | 47 | 128–162 |
| 156 | 🇱🇹 Vilnius | 47 | 149–162 |
| 157 | 🇮🇹 Verona* | 46 | 124–166 |
| 158 | 🇪🇸 Alcalá de Henares | 46 | 139–173 |
| 159 | 🇫🇷 Nice | 45 | 145–165 |
| 160 | 🇮🇹 Brescia* | 45 | 103–176 |
| 161 | 🇩🇪 Wuppertal | 44 | 147–177 |
| 162 | 🇩🇪 Erfurt | 44 | 158–169 |
| 163 | 🇵🇱 Częstochowa | 43 | 135–182 |
| 164 | 🇵🇱 Katowice | 43 | 159–169 |
| 165 | 🇫🇷 Marseille | 42 | 159–171 |
| 166 | 🇵🇱 Radom | 42 | 150–175 |
| 167 | 🇩🇪 Chemnitz | 42 | 157–176 |
| 168 | 🇮🇹 Prato | 41 | 125–185 |
| 169 | 🇨🇿 Brno | 40 | 168–175 |
| 170 | 🇬🇷 Thessaloniki | 40 | 134–187 |
| 171 | 🇱🇹 Kaunas | 40 | 165–176 |
| 172 | 🇧🇬 Plovdiv | 40 | 110–187 |
| 173 | 🇨🇿 Ostrava | 39 | 145–181 |
| 174 | 🇸🇰 Košice | 39 | 166–176 |
| 175 | 🇮🇹 Genoa | 38 | 157–191 |
| 176 | 🇩🇪 Wiesbaden | 37 | 165–188 |
| 177 | 🇮🇹 Milan | 37 | 162–184 |
| 178 | 🇧🇬 Varna | 36 | 169–183 |
| 179 | 🇷🇴 Cluj-Napoca | 36 | 171–183 |
| 180 | 🇮🇹 Padua | 35 | 176–187 |
| 181 | 🇵🇹 Lisbon | 34 | 147–193 |
| 182 | 🇮🇪 Cork | 33 | 179–189 |
| 183 | 🇵🇹 Porto | 32 | 169–196 |
| 184 | 🇧🇬 Sofia | 32 | 182–189 |
| 185 | 🇮🇹 Rome | 32 | 176–193 |
| 186 | 🇫🇷 Dijon | 31 | 174–196 |
| 187 | 🇧🇪 Charleroi | 31 | 178–192 |
| 188 | 🇮🇹 Naples | 29 | 173–200 |
| 189 | 🇮🇹 Trieste | 29 | 188–194 |
| 190 | 🇮🇹 Palermo | 29 | 186–196 |
| 191 | 🇵🇹 Sintra | 28 | 181–198 |
| 192 | 🇮🇹 Cagliari | 28 | 184–196 |
| 193 | 🇷🇴 Arad | 27 | 187–197 |
| 194 | 🇷🇴 Satu Mare | 27 | 170–208 |
| 195 | 🇷🇴 Oradea | 26 | 172–205 |
| 196 | 🇨🇾 Nicosia | 26 | 193–198 |
| 197 | 🇷🇴 Targu Mures | 24 | 189–201 |
| 198 | 🇮🇹 Messina | 24 | 169–209 |
| 199 | 🇷🇴 Brasov | 23 | 191–201 |
| 200 | 🇧🇬 Burgas | 22 | 189–209 |
| 201 | 🇷🇴 Sibiu | 22 | 198–201 |
| 202 | 🇷🇴 Timisoara | 20 | 200–204 |
| 203 | 🇷🇴 Constanta | 18 | 202–207 |
| 204 | 🇬🇷 Athens | 17 | 203–208 |
| 205 | 🇵🇹 Braga | 17 | 200–210 |
| 206 | 🇮🇹 Bari | 17 | 203–210 |
| 207 | 🇷🇴 Bucharest | 16 | 201–209 |
| 208 | 🇷🇴 Baia Mare | 16 | 201–210 |
| 209 | 🇮🇹 Catania | 15 | 193–214 |
| 210 | 🇷🇴 Bacau | 13 | 203–212 |
| 211 | 🇭🇷 Split | 12 | 203–214 |
| 212 | 🇷🇴 Pitesti | 11 | 207–213 |
| 213 | 🇷🇴 Craiova | 9 | 211–214 |
| 214 | 🇷🇴 Galati | 7 | 212–215 |
| 215 | 🇷🇴 Iasi | 3 | 215–218 |
| 216 | 🇷🇴 Botosani | 2 | 214–219 |
| 217 | 🇷🇴 Buzau | 2 | 215–219 |
| 218 | 🇷🇴 Ploiesti | 2 | 215–219 |
| 219 | 🇷🇴 Braila | 0 | 218–219 |
Every city here can get what this page only summarizes: a street-by-street diagnosis of where its cycling risk lives and what drives it — the same decomposition behind this ranking. We work with municipalities on three things: street-level diagnosis (which streets, which factor, what to fix first), an interactive risk map of your city (see the live Bucharest sample), and before/after measurement of what you build — because a gap you can measure is a gap you can close, and re-measure.
Work for a city? Street-level cycling intelligence for your municipality — get in touch.
Method in one line: every scored road segment of the production Defensive Pedal risk model (the one that plans real routes today) is aggregated per city across three pillars — street network risk, the risk of 210 simulated journeys, and low-stress accessibility — normalised on the 219-city sample and stress-tested 2,000 times. Roads above 80 km/h and carriageways with a mandatory parallel path don't count against a city's streets; cities are official municipal boundaries.
Full technical report, criterion analysis and every caveat: The European Cycling Risk Study (open access, DOI 10.5281/zenodo.22771452) · Defensive Pedal Research, 2026. Study archived at DOI 10.5281/zenodo.22771452 (CC-BY-4.0). External reference: Copenhagenize Index 2025 — EIT Urban Mobility Edition.
Ride on routes that minimize risk with Defensive Pedal — the app that uses this same safety algorithm.