Find your city — 303 cities, twelve metrics

avgrebenkin.com/research/cities/

← Research

Find your city

Twelve things people actually move for, 303 cities. Decide what matters to you — the vertical axis is whatever you say it is. Cost stays on the horizontal. Every move you make goes into the address bar, so the link always carries your settings.

Data: Numbeo · OpenStreetMap · OurAirports · Wikipedia 2026 mid-year

The whole set: all 303 cities

The overview. Every city in the study is here, each dot sized and brightened by its overall score — so the bright clusters are the places that do well on the weights currently set. Turn the globe, zoom in until names appear, click a dot for its full scorecard — or type a name in the search box and the globe turns to it (press / from anywhere on the page). Everything below narrows this down to what you ask for.

1.0×
drag to turn · + and − to zoom · click a cityswipe to turn · pinch to zoom · tap a city

Scorecard

Search for a city above, click a dot on the globe, or tap any row in the list below — the scorecard shows how it earns its score.

Say what matters to you

twelve sliders, six presets

How much each of the twelve metrics is worth to you. The globe above and everything below redraw from here. Regions and the cost basket sit next to the chart itself.

Start from someone

Six ready sets of weights, each one a different person. Pick the nearest and then move the sliders — the moment you do, the preset stops being highlighted.

Twelve sliders, 0 to 3. Anything left at 0 is switched off and does not count towards the score. All five groups start open — fold the ones you do not care about.

Your selection: score against cost

Every city you kept, placed by what it costs (across) and what it scores on your weights (up). Names are printed wherever they fit without covering each other — hover or tap any dot for the rest, and the list below has all of them in order.

Cost

Click a region to drop it from the chart, the list and the table — click again to bring it back. With rent puts apartment rent into the cost basket; without rent prices only groceries, restaurants, transport and utilities.

BEST VALUEtop left — scores above median, costs below
PREMIUMtop right — expensive, and worth it
BUDGETbottom left — cheap, and it shows
OVERPRICEDbottom right — expensive with little to show

Every city in order

The same chart read as a list. Score is the vertical axis — the weighted average of the metrics you switched on, as a percentile out of these 303 cities. Cost is the horizontal one, the cost-of-living percentile, where 100 is the most expensive. Sort by either; hover or tap a row for the breakdown — tapping also fills the scorecard next to the globe.

# City

How this works

Every metric becomes a percentile first. Museums are counted in hundreds, safety runs 0–100, flights in the hundreds — averaging those raw numbers would let the biggest counter drown out everything else. So each is converted to its rank within these 303 cities, and the score is the weighted average of the percentiles you switched on. Metrics where less is better — commute, pollution, price-to-income — are flipped, so on this chart higher always means better.

The default is the five basics at equal weight. Numbeo's own index weights them differently. We do not claim to know the right weights — that is what the sliders are for.

Counts come from a 10 km circle around the city centre. The circle is the same size everywhere, 314 km², so a raw count is already a density and no population figure is needed. It also means a satellite town and a capital are measured on the same footprint.

Where OpenStreetMap can be trusted, and where it cannot. Bus stops and parks are mapped at nearly the same density in Europe, North America and Asia — within 10 %. That control is what makes the rest readable: rail transit and pedestrian streets differ by three to four times, and since the map itself is not thinner, the difference is real. Two metrics failed that test and were dropped: kindergartens (Europe counts 13× North America, because the tag is barely used in the US) and universities from Wikidata (Tallinn came out as zero). Universities here are counted from OpenStreetMap instead, and measure campus footprint rather than institutions — an American campus is one polygon, a European university is scattered buildings, so read that one within a region rather than across.

Purchasing power is the weakest number here, and it is worth knowing why. Numbeo builds it from salaries visitors type in themselves, and who bothers is not a random sample of the city — expats and urban professionals are heavily overrepresented, and in places where the site collects few answers a handful of them set the figure. It shows: Hyderabad comes out at 164.7, second of all 303 cities behind Bern and ahead of Zurich, while Mumbai sits at 63.1 and Delhi at 66.6. A fourfold gap inside one country is a sample artefact, not an economy. Cities that are cheap because local wages are low can therefore surface twice — once for the low cost, once for a salary figure that belongs to a narrow slice of the workforce. Give this slider a 3 and you are trusting that slice. The other prices — the cost basket and price-to-income — come from the same crowd but from thousands of individual price entries rather than a salary field, which is why they hold up better.

Flights count unique nonstop destinations from every airport within 60 km, merged. Kyiv, Kharkiv, Dnipro, Lviv, Odesa and Rostov-on-Don show zero: those airports have been shut to civilian traffic since 24 February 2022 and were still shut when this was collected in August 2026. That is the one thing on this chart that a crowdsourced safety score does not capture — and the one number here with a visible expiry date, since Ukraine began preparing a phased reopening of Lviv and the two Kyiv airports in early 2026.

Where every number comes from

Numbeo — nine of the twelve metrics. All of them are the 2026 mid-year release, a fixed snapshot rather than the rolling “current” figures, so the chart does not shift under you. Six of the nine are survey answers from site visitors, scored from −2 to +2 and rescaled to 0–100. Climate and the prices are computed, not opinions.

Safety
Fifteen survey questions — walking alone by day and by night, worry about mugging, car theft, assault, insults, property crime, corruption and bribery. Averaged, then rescaled. It is the exact inverse of Numbeo's Crime Index.
Health care
Survey of seven aspects: doctors' competence, speed of service, modern equipment, accuracy of diagnosis, staff courtesy, waiting time and cost. Cost carries double weight.
Short commute
Not an opinion — visitors report their own one-way commute in minutes and which transport they use. Higher on this chart means the reported trip is shorter.
Clean air
Numbeo's pollution survey: air and water, rubbish and cleanliness, noise and light, green space. Air dominates it, carrying a weight of 7 out of 14.5.
Climate
The one input built from measurements rather than opinions — temperature, dew point and humidex, with penalties for heat above 31 °C, cold below 8 °C and uncomfortable humidity.
Purchasing power
Average net salary in the city divided by what local prices cost, indexed to New York at 100. A score of 120 means a local salary buys 20 % more there than the same job's salary buys in New York. The salaries are self-reported by site visitors, so in cities where the respondents skew towards expats and tech workers the index reads high — Hyderabad at 164.7 against Mumbai at 63.1 is the clearest case. Treat it as the loosest of the nine.
Affordable to buy
Median apartment price divided by median household income — the number of full annual incomes one flat costs. Flipped on this chart, so higher means more affordable.
Cost (the horizontal axis)
A basket of groceries, restaurants, transport and utilities priced by visitors, New York fixed at 100: 41 means 41 % of New York prices. The with rent version adds apartment rents to the basket.

OpenStreetMap — three metrics, counted inside the same 10 km disk. Everything is an Overpass out count over nodes, ways and relations, taken in August 2026. The exact tags, so the count can be reproduced or argued with:

Culture & nightlife
tourism=museum, tourism=gallery, amenity=theatre, amenity=arts_centre, amenity=cinema for culture, plus amenity=bar, amenity=pub, amenity=nightclub for nightlife. The two are added together, so a city can arrive here through either.
Car-free living
railway=station, railway=halt, railway=tram_stop for rail access, plus ways tagged highway=pedestrian for streets closed to cars. Metro entrances are excluded on purpose — each staircase is its own point, so counting them would hand a city with a subway a few hundred free stops. Bus stops are collected too, but only as a control: almost every city has them, so they separate nothing. This is the one metric whose definition changed when the data was rebuilt, so its numbers differ from the first version of this chart by more than map drift — Kuala Lumpur went from 10 stops to 118.
Kid infrastructure
leisure=playground, leisure=park, amenity=school, amenity=library. Playgrounds are mapped far more densely in Russia and Europe than in Asia or Latin America, and we cannot fully separate real difference from mapping habit — read this one within a region rather than across.
University presence
amenity=university plus amenity=college. Two warnings. It measures campus footprint, not institutions: an American campus is one polygon, a European university is scattered buildings. And college means different things in different countries — in France it is the collège, a school for 11-to-15-year-olds, which is why Paris shows 407 of them against 149 universities. French cities are overstated on this metric.

Nonstop destinations — OurAirports and Wikipedia. Every airport with scheduled service within 60 km of the centre is taken from OurAirports, and its destination table is read off Wikipedia; the destinations are merged and counted once each. The 60 km limit stops a satellite town from claiming the capital's hub. Six cities show zero — Kyiv, Kharkiv, Dnipro, Lviv, Odesa and Rostov-on-Don. All six have been closed to civilian traffic since 24 February 2022: Ukrainian airspace is shut, and Russia's Platov at Rostov-on-Don has not reopened either. Ukraine started preparing a phased reopening of Lviv and the two Kyiv airports in early 2026, but no civilian flight had operated by the time this snapshot was taken.

Every number here was rebuilt from source on 26 August 2026. All 2 727 Numbeo values — nine metrics across 303 cities — were compared line by line against the published mid-year tables: every one matched. As a second, independent test, Numbeo's own quality-of-life index was recomputed from our eight fields and landed within 0.14 points of the published figure for all 303 cities, which also proves no city got attached to another city's row.

The OpenStreetMap layer was not spot-checked but collected again from scratch, all 303 cities, with the tags listed above. Universities and colleges came back identical for 298 cities, nightlife for 242, pedestrian streets for 285; parks, playgrounds, schools and libraries moved by around 1 % — the drift of a map people keep editing. Two cities came back almost empty and gave away a real bug: the geocoder had returned the centroid of an administrative region rather than the city centre for Cebu and Gdańsk, putting the 10 km circle in the wrong place. Both were fixed by hand and re-collected.

Flights were re-collected for all 303 cities too, and that pass found three faults of its own: airport pages whose titles carry diacritics were failing silently, one airport in the OurAirports database links to a LinkedIn profile instead of Wikipedia, and an empty result was being cached before the fallback could run. Prague, Atlanta, Kraków, Minneapolis, Dhaka and Caracas had all been reading zero because of those. The corrected pass moves the typical city by 4 %, but fixes outright errors: Charlotte was listed with 15 nonstop destinations and actually has 200. Six cities still read zero — Kyiv, Kharkiv, Dnipro, Lviv, Odesa and Rostov-on-Don — and that one is not a bug: those airports have been closed to civilian traffic since February 2022.

Table: every city, every number