How we compare cities
Our comparison pages contain no opinion prose. Every verdict is a deterministic function of measured data, recomputed on every visit — which is why nothing on them can silently go stale. This page discloses every rule those computations follow.
Weather: the month-by-month duel
Each city-month is classified into a comfort band by the same model that powers our best-months research index (v1.1), from multi-year Open-Meteo climate normals. The bands, verbatim from the scorer:
- Ideal — average highs 18–29 °C, ≤13 rain days, ≤90 mm, and not muggy (≥27 °C with ≥75% humidity fails).
- Difficult — highs below 5 °C or above 37 °C, or ≥20 rain days, or ≥200 mm of rain.
- Good — highs 13–33 °C within the rain ceilings; mixed — everything else.
The month's winner is decided in a fixed order: better band first; then fewer rain days; then average highs closer to the 23.5 °C comfort midpoint; if nothing separates the cities, the month is declared even. Every verdict sentence on a comparison page names the rule that decided it.
Money: movement, levels, and estimates — three labeled layers
Currency movement is the latest daily reference rate against the rate one year earlier (nearest published rate on or before that date, up to 7 days back — reference series skip weekends). Sources, stamped per number: the European Central Bank reference-rate series for ECB-referenced currencies; central-bank reference rates via Frankfurter for the rest; the CC0 Exchange-API dataset only to fill gaps. Currencies pegged by central-bank policy (the UAE dirham, Qatari riyal, Aruban florin, and the Nepalese rupee's peg to the Indian rupee) get a peg note — never a fabricated percentage.
Price levels divide the World Bank's PPP conversion factor (households, PA.NUS.PRVT.PP; GDP-wide factor as fallback; CC BY 4.0) by the market exchange rate. The result is a country-wide indicator and is always labeled as such — it is not a city price survey. Where no factor is published (Taiwan), we show nothing rather than an estimate.
Daily-cost tiers are our own editorial estimates from the audited city guides, and are labeled editorial — the one layer on these pages that is not a third-party measurement.
Depth: the verified venue catalog
Venue counts come from our catalog, where every venue carries at least one external identity source (OpenStreetMap, Foursquare, or Wikidata). We count active venues by category and attraction subcategory. Catalog density partly reflects source coverage per city, so counts are always framed as "in our verified catalog," and differences under 15% are called even, not spun into a winner.
Events: real listings or an honest gap
Event counts and listings come from the ticketed-events feed we sync daily, covering a rolling ~120-day forward window. Where the feed has no coverage for a city we say exactly that — a coverage limit is never presented as a quiet city, and no event is ever fabricated.
Verdicts and materiality
"Choose X for…" bullets are emitted only when a gap clears a materiality floor: a weather lead of at least one month, a venue ratio of at least 1.25×, a price-level gap of at least 10 points, or an events ratio of at least 2×. Below those floors the page calls the axis even. A city can legitimately win nothing measurable — the page says that too.
Freshness
These pages are computed from the live database at request time. Exchange rates update daily, events daily, air-and-weather facts every six hours, PPP factors on the World Bank's annual cycle — and the page always reflects the newest data, because there is no cached copy to go stale.