How calibrated sunshine, temperature, rainfall, outdoor hours, tax, cost of living, air quality, and safety data are sourced, calibrated, and delivered. Transparent enough to cite.
Sunshine hours
In depth: what SARAH-3 is and how the Heliosat method works · how ERA5 reanalysis works and where it falls short · why published sunshine-hour figures disagree with each other.
ERA5 is ECMWF's flagship reanalysis dataset — the most comprehensive global atmospheric record available. However, ERA5's raw sunshine duration values overestimate actual sunshine hours by a systematic margin that varies by cloudiness regime:
This means raw ERA5 makes Bergen, Glasgow, and Reykjavik appear substantially sunnier than they are in practice. Without correction, rankings of "cloudy" cities are meaningless.
GeoRank applies a linear correction derived from comparing ERA5 values against WMO ground-station observations at 56 reference locations worldwide:
R² = 0.82 · n = 56 stations · Residual RMSE ≈ 180 hr/yr
The formula reduces ERA5's systematic overestimation in cloudy regions while preserving relative differences between sunny and cloudy climates. Applied across the grid, this produces calibrated values that track observed sunshine hours within ±8% for most locations.
After applying the correction formula globally, residual errors at non-station locations are reduced using Inverse Distance Weighting (IDW) — a spatial interpolation technique that weights nearby station corrections more heavily than distant ones. The IDW radius is tuned to 500 km, balancing spatial resolution against over-correction in data-sparse regions.
The sunshine layer rendered on the live map is built on SARAH-3 (Surface Solar Radiation Data Set — Heliosat, EUMETSAT CM SAF): satellite-observed sunshine duration at native 0.05° (~5 km) resolution, accumulated to a 1991–2020 monthly climatology. SARAH-3 covers the Meteosat full disk (roughly ±65° latitude/longitude centred on Europe–Africa); outside that disk — the poles, the Americas, and Asia-Pacific — the grid falls back to bilinearly-upsampled ERA5, and a per-pixel quality band records which source fed each cell.
The merged grid is then bias-corrected with the same 56-station IDW pass described above. The linear ERA5 correction formula remains the method behind the published per-city dataset (sunshine-hours.csv) and the ERA5-filled regions of the map; satellite-observed cells need no cloud-model correction, which is precisely why SARAH-3 replaced modelled ERA5 as the primary source within the disk.
Reference stations
The full GeoRank reference set is 182 WMO, KNMI, ECA&D, and national-met-service stations spanning all climate regimes. The linear correction formula above was fit on a globally-distributed subset of 56 high-quality stations (R² = 0.82, RMSE ≈ 180 hr/yr); the remaining 126 serve as cross-validation. All 182 are listed below — observed sunshine hours per year are the multi-decade mean for each station.
| Station | Lat | Lon | Elev (m) | Obs hr/yr |
|---|---|---|---|---|
| Reykjavik | 64.1 | -21.9 | 18 | 1268 |
| Oslo | 59.9 | 10.8 | 23 | 1668 |
| Stockholm | 59.3 | 18.1 | 28 | 1821 |
| Helsinki | 60.2 | 25.0 | 26 | 1859 |
| Copenhagen | 55.7 | 12.6 | 15 | 1779 |
| Bergen | 60.4 | 5.3 | 42 | 1413 |
| Stavanger | 58.88 | 5.64 | 8 | 1996 |
| Edinburgh | 55.9 | -3.2 | 52 | 1430 |
| Dublin | 53.3 | -6.3 | 21 | 1420 |
| Valentia | 51.9 | -10.3 | 9 | 1560 |
| Aberdeen | 57.1 | -2.1 | 65 | 1451 |
| London | 51.5 | -0.1 | 11 | 1481 |
| Amsterdam | 52.4 | 4.9 | 2 | 1662 |
| Brussels | 50.9 | 4.4 | 56 | 1546 |
| Paris | 48.9 | 2.3 | 35 | 1630 |
| Berlin | 52.5 | 13.4 | 34 | 1625 |
| Hamburg | 53.6 | 10.0 | 14 | 1630 |
| Warsaw | 52.2 | 21.0 | 107 | 1600 |
| Prague | 50.1 | 14.4 | 202 | 1668 |
| Vienna | 48.2 | 16.4 | 171 | 1884 |
| Munich | 48.1 | 11.6 | 519 | 1738 |
| Zurich | 47.4 | 8.5 | 408 | 1693 |
| Geneva | 46.2 | 6.1 | 375 | 1887 |
| Zermatt | 46.02 | 7.75 | 1620 | 2101 |
| Interlaken | 46.69 | 7.87 | 572 | 1975 |
| Budapest | 47.5 | 19.0 | 103 | 1948 |
| Bratislava | 48.1 | 17.1 | 133 | 1938 |
| Zagreb | 45.8 | 16.0 | 158 | 1903 |
| Ljubljana | 46.1 | 14.5 | 293 | 1730 |
| Belgrade | 44.8 | 20.5 | 99 | 2112 |
| Bucharest | 44.4 | 26.1 | 82 | 2098 |
| Sofia | 42.7 | 23.3 | 595 | 2162 |
| Podgorica | 42.4 | 19.3 | 49 | 2498 |
| Sarajevo | 43.8 | 18.4 | 630 | 1893 |
| Moscow | 55.8 | 37.6 | 156 | 1731 |
| St. Petersburg | 59.9 | 30.3 | 4 | 1515 |
| Kyiv | 50.4 | 30.5 | 179 | 1843 |
| Bordeaux | 44.8 | -0.6 | 16 | 2050 |
| Lyon | 45.7 | 4.8 | 162 | 2029 |
| Nice | 43.7 | 7.3 | 5 | 2724 |
| Marseille | 43.3 | 5.4 | 3 | 2724 |
| Rome | 41.9 | 12.5 | 37 | 2510 |
| Milan | 45.5 | 9.2 | 122 | 2300 |
| Palermo | 38.1 | 13.4 | 14 | 2529 |
| Athens | 37.9 | 23.7 | 94 | 2864 |
| Thessaloniki | 40.6 | 23.0 | 5 | 2420 |
| Heraklion | 35.3 | 25.1 | 39 | 3084 |
| Lisbon | 38.7 | -9.1 | 77 | 2806 |
| Madrid | 40.4 | -3.7 | 582 | 2769 |
| Barcelona | 41.4 | 2.2 | 12 | 2524 |
| Valencia | 39.5 | -0.4 | 16 | 2855 |
| Seville | 37.4 | -6.0 | 9 | 2990 |
| Malaga | 36.7 | -4.4 | 5 | 2950 |
| Palma | 39.6 | 2.6 | 11 | 2769 |
| Las Palmas | 28.1 | -15.4 | 25 | 2940 |
| Tenerife | 28.5 | -16.3 | 30 | 3067 |
| Nicosia | 35.2 | 33.4 | 162 | 3279 |
| Algiers | 36.7 | 3.0 | 25 | 2713 |
| Tunis | 36.8 | 10.2 | 4 | 3058 |
| Tripoli | 32.9 | 13.2 | 81 | 3171 |
| Casablanca | 33.6 | -7.6 | 56 | 3000 |
| Rabat | 34.0 | -6.8 | 75 | 3000 |
| Marrakesh | 31.6 | -8.0 | 466 | 3208 |
| Cairo | 30.1 | 31.2 | 23 | 3571 |
| Aswan | 24.1 | 32.9 | 113 | 4000 |
| Wadi Halfa | 21.8 | 31.3 | 226 | 4063 |
| Al-Kufra | 24.2 | 23.3 | 435 | 3825 |
| Khartoum | 15.6 | 32.5 | 382 | 3777 |
| Tel Aviv | 32.1 | 34.8 | 5 | 3302 |
| Jerusalem | 31.8 | 35.2 | 754 | 3309 |
| Tehran | 35.7 | 51.4 | 1191 | 2832 |
| Kabul | 34.5 | 69.2 | 1791 | 3276 |
| Riyadh | 24.7 | 46.7 | 612 | 3600 |
| Kuwait City | 29.4 | 48.0 | 5 | 3645 |
| Doha | 25.3 | 51.5 | 10 | 3522 |
| Dubai | 25.2 | 55.3 | 5 | 3509 |
| Muscat | 23.6 | 58.6 | 5 | 3448 |
| Tashkent | 41.3 | 69.3 | 478 | 3000 |
| Almaty | 43.3 | 76.9 | 847 | 2782 |
| Ulaanbaatar | 47.9 | 106.9 | 1350 | 2700 |
| Novosibirsk | 55.0 | 82.9 | 150 | 2038 |
| Karachi | 24.9 | 67.1 | 22 | 2953 |
| Mumbai | 19.1 | 72.9 | 11 | 2831 |
| Delhi | 28.6 | 77.2 | 233 | 2743 |
| Kathmandu | 27.7 | 85.3 | 1355 | 2007 |
| Dhaka | 23.7 | 90.4 | 4 | 2149 |
| Lhasa | 29.7 | 91.1 | 3656 | 3021 |
| Chengdu | 30.7 | 104.1 | 506 | 1239 |
| Beijing | 39.9 | 116.4 | 55 | 2661 |
| Shanghai | 31.2 | 121.5 | 4 | 1964 |
| Hong Kong | 22.3 | 114.2 | 33 | 1840 |
| Taipei | 25.0 | 121.5 | 9 | 1765 |
| Seoul | 37.6 | 127.0 | 38 | 2066 |
| Tokyo | 35.7 | 139.7 | 40 | 1876 |
| Bangkok | 13.8 | 100.5 | 5 | 2796 |
| Colombo | 6.9 | 79.9 | 7 | 2378 |
| Kuala Lumpur | 3.1 | 101.7 | 66 | 2404 |
| Singapore | 1.3 | 103.8 | 15 | 1878 |
| Dakar | 14.7 | -17.4 | 24 | 3043 |
| Bamako | 12.6 | -8.0 | 381 | 3063 |
| Niamey | 13.5 | 2.1 | 218 | 3226 |
| Lagos | 6.5 | 3.4 | 41 | 1900 |
| Abidjan | 5.4 | -4.0 | 22 | 1896 |
| Accra | 5.6 | -0.2 | 61 | 2002 |
| Nairobi | -1.3 | 36.8 | 1795 | 2860 |
| Addis Ababa | 9.0 | 38.7 | 2355 | 3027 |
| Dar es Salaam | -6.8 | 39.3 | 55 | 2853 |
| Lusaka | -15.4 | 28.3 | 1154 | 2756 |
| Harare | -17.8 | 31.0 | 1483 | 2809 |
| Johannesburg | -26.2 | 28.0 | 1753 | 3021 |
| Windhoek | -22.6 | 17.1 | 1661 | 3700 |
| Maputo | -25.9 | 32.6 | 47 | 2768 |
| Antananarivo | -18.9 | 47.5 | 1276 | 2557 |
| Cape Town | -33.9 | 18.4 | 42 | 3094 |
| Darwin | -12.5 | 130.8 | 30 | 3281 |
| Alice Springs | -23.7 | 133.9 | 546 | 3500 |
| Brisbane | -27.5 | 153.0 | 27 | 2873 |
| Adelaide | -34.9 | 138.6 | 48 | 2784 |
| Canberra | -35.3 | 149.1 | 578 | 2729 |
| Sydney | -33.9 | 151.2 | 39 | 2628 |
| Melbourne | -37.8 | 145.0 | 31 | 2208 |
| Perth | -31.9 | 115.9 | 20 | 3200 |
| Auckland | -36.9 | 174.8 | 26 | 2003 |
| Christchurch | -43.5 | 172.6 | 32 | 2101 |
| Suva | -18.1 | 178.4 | 18 | 2517 |
| Honolulu | 21.3 | -157.8 | 5 | 3000 |
| Anchorage | 61.2 | -150.0 | 40 | 2061 |
| Fairbanks | 64.8 | -147.7 | 136 | 1906 |
| PrinceRupert | 54.3 | -130.3 | 52 | 1229 |
| Vancouver | 49.2 | -123.1 | 70 | 1919 |
| Seattle | 47.6 | -122.3 | 122 | 2170 |
| Portland | 45.5 | -122.7 | 15 | 2341 |
| Calgary | 51.1 | -114.1 | 1045 | 2396 |
| Edmonton | 53.5 | -113.5 | 668 | 2299 |
| Winnipeg | 49.9 | -97.1 | 232 | 2337 |
| Toronto | 43.7 | -79.4 | 173 | 2066 |
| Montreal | 45.5 | -73.6 | 57 | 2051 |
| San Francisco | 37.8 | -122.4 | 16 | 3066 |
| Los Angeles | 34.1 | -118.2 | 71 | 3254 |
| Las Vegas | 36.2 | -115.2 | 620 | 3825 |
| Phoenix | 33.4 | -112.1 | 331 | 4015 |
| Yuma | 32.7 | -114.6 | 43 | 4174 |
| Death Valley | 36.5 | -116.9 | 0 | 4093 |
| Albuquerque | 35.1 | -106.7 | 1510 | 3415 |
| Salt Lake City | 40.8 | -111.9 | 1288 | 3222 |
| Denver | 39.7 | -104.9 | 1609 | 3110 |
| Dallas | 32.8 | -96.8 | 145 | 2850 |
| Houston | 29.8 | -95.4 | 15 | 2552 |
| Atlanta | 33.6 | -84.4 | 315 | 2601 |
| Miami | 25.8 | -80.2 | 2 | 3154 |
| Chicago | 41.8 | -87.7 | 182 | 2507 |
| New York | 40.7 | -74.0 | 10 | 2535 |
| Mexico City | 19.4 | -99.1 | 2240 | 2552 |
| Havana | 23.1 | -82.4 | 59 | 3300 |
| Guatemala City | 14.6 | -90.5 | 1502 | 2352 |
| Panama City | 9.0 | -79.5 | 5 | 1912 |
| Bogota | 4.7 | -74.1 | 2547 | 1328 |
| Quito | -0.2 | -78.5 | 2850 | 1979 |
| Caracas | 10.5 | -66.9 | 900 | 2700 |
| Lima | -12.1 | -77.0 | 154 | 1230 |
| Antofagasta | -23.7 | -70.4 | 94 | 3478 |
| La Paz | -16.5 | -68.1 | 3640 | 2952 |
| Cusco | -13.5 | -71.9 | 3399 | 2700 |
| Manaus | -3.1 | -60.0 | 59 | 2015 |
| Fortaleza | -3.7 | -38.5 | 21 | 2900 |
| Recife | -8.0 | -34.9 | 4 | 2713 |
| Brasilia | -15.8 | -47.9 | 1172 | 2511 |
| Sao Paulo | -23.5 | -46.6 | 760 | 2221 |
| Rio de Janeiro | -22.9 | -43.2 | 10 | 2130 |
| Buenos Aires | -34.6 | -58.4 | 25 | 2528 |
| Montevideo | -34.9 | -56.2 | 43 | 2430 |
| Santiago | -33.5 | -70.7 | 520 | 2873 |
| Mendoza | -32.9 | -68.8 | 750 | 3086 |
| Ullensvang | 60.318 | 6.654 | 12 | 933 |
| Bjørkehaug | 61.659 | 7.276 | 305 | 1064 |
| Fiskabygd | 62.103 | 5.582 | 41 | 1020 |
| Hierro | 27.819 | -17.889 | 32 | 2491 |
| La Gomera | 28.032 | -17.211 | 219 | 3169 |
| Tenerife Sur | 28.047 | -16.561 | 64 | 2872 |
| La Palma | 28.633 | -17.755 | 33 | 2153 |
| Fuerteventura | 28.444 | -13.863 | 25 | 2898 |
| Lanzarote | 28.952 | -13.600 | 14 | 3014 |
182 reference stations · sourced from WMO normals, ECA&D, KNMI, and national met-service archives. Scroll the table to browse the full set.
Resolution architecture
| Tier | Resolution | Cell size | Base data | Formula | Loads at map zoom |
|---|---|---|---|---|---|
| Global | 2.0° | ~220 km | NASA POWER (ALLSKY_SFC_SW_DWN) | Ångström–Prescott | 0–4 |
| Regional | 1.0° | ~110 km | NASA POWER interpolated | Ångström–Prescott + ERA5 blend | 5–7 |
| Local | 0.05° | ~5 km | SARAH-3 satellite (CM SAF) + ERA5 merge | IDW calibration against 56 WMO stations | 8+ |
Sunshine hours are derived from solar irradiance data using the Ångström–Prescott formula, which estimates bright sunshine duration from diffuse and direct radiation ratios:
Where S = actual sunshine hours, S₀ = maximum possible sunshine hours (astronomical daylength), n/N = cloudiness fraction, a and b are empirical constants calibrated per climate zone.
Tax data
Tax rates are sourced from official government publications and cross-referenced against OECD tax database and PwC Worldwide Tax Summaries. Rates reflect top marginal rates for each tax category as of the date shown below.
| Tax type | Primary source | Last updated | Known gaps |
|---|---|---|---|
| Income tax (top marginal) | OECD Tax Database; national revenue authority sites | Jan 2026 | Subnational rates not included |
| Capital gains tax | PwC Worldwide Tax Summaries; KPMG CGT guides | Jan 2026 | Asset-type variation simplified to single rate |
| Crypto capital gains | National tax authority guidance; Coincub database | Q1 2026 | Regulatory changes may not be reflected immediately |
| Tax burden (% of GDP) | OECD Revenue Statistics; IMF Fiscal Monitor | 2024 data | 2-year lag typical for GDP-based metrics |
Tax methodology
Tax rates on GeoRank represent marginal income tax at €50,000 equivalent annual income for a single individual, and headline statutory capital gains rates. These are not effective rates — what most people actually pay is lower once thresholds, allowances, and credits apply.
| Source | Used for | Review cadence |
|---|---|---|
| OECD Tax Database | Income tax, social contributions, tax burden | Annual (Q1) |
| PwC Worldwide Tax Summaries | Income tax, capital gains, special regimes | Quarterly review |
| KPMG Individual Income Tax Rates | Cross-reference and gap-fill | Annual |
| Government publications | Non-OECD countries; crypto treatment | As published; flagged within 30 days of major change |
Cost of living methodology
The monthly cost estimate represents a single-person baseline: 1-bedroom apartment in a city-centre or near-centre neighbourhood, standard utilities, weekly groceries, local public transport, and dining out approximately three times per week. It is not a minimum-cost figure and not a luxury figure.
| Source | Weight | Notes |
|---|---|---|
| Numbeo crowd-sourced data | Primary | Pulled quarterly; cities with <50 respondents flagged as low-confidence |
| ECA International hardship data | Secondary | Used where Numbeo sample size is thin (<30 respondents) |
| GeoRank spot-checks | Supplement | Manual verification for cities with known Numbeo bias |
Accuracy & caveats
GeoRank provides calibrated estimates of annual sunshine hours derived from reanalysis datasets and ground-station correction. Accuracy characteristics:
Cost of living estimates are illustrative only. They represent a reasonable ballpark for a single person renting a one-bedroom apartment in a mid-tier neighbourhood, eating out 3–4 times per week, and maintaining a moderate lifestyle. Actual costs depend heavily on lifestyle, neighbourhood, and individual spending.
Tax rates are top marginal rates. Effective rates (what most people actually pay) are typically lower. Tax treaties, special regimes, and tax-free thresholds are not included in the headline figures unless explicitly noted.
Layer · Temperature
Monthly mean near-surface air temperature is derived from CHELSA v2.1 climatological normals (variable tas), a high-resolution downscaling at ~1 km native resolution, processed to a 0.05° grid for the global map. Values are 30-year climatological normals (1981–2010).
SourceCHELSA v2.1 · tas
Climatology1981–2010 · monthly means
Layer · Rainfall
Total precipitation comes from CHELSA v2.1 monthly precipitation climatologies (1981–2010), bias-corrected against roughly 25,000 GHCN-M v4 station normals. Annual rainy days are estimated from the daily-mean precipitation rate via a Gamma-distributed wet-day model:
SourceCHELSA v2.1 + GHCN-M calibration
Resolution~1 km native · 0.05° grid
Layer · Outdoor Hours
The Outdoor Hours Index (OHI v1) counts the hours per year — and per month — when it's comfortable to sit outside: not too hot, too cold, too wet, or too windy. It's a "UTCI-lite" model: apparent temperature is computed for every half-hour of daylight, checked against a comfort band, then discounted for rain and wind.
CHELSA 1981–2010 provides daily maximum and minimum temperature as a climatology at ~1 km resolution, but not the hour-by-hour curve. OHI reconstructs a diurnal cycle from those two values using a sinusoidal day curve peaking at 14:30 solar time, then evaluates apparent temperature at every half-hour of daylight — sunrise to sunset, computed from latitude and time of year.
Each half-hourly reading is converted to an apparent temperature: on the warm side, the Steadman apparent temperature formula, which adds humidity (from ERA5 dewpoint) and subtracts wind; on the cold side, the NWS wind chill formula. The comfort band is 10–29°C apparent, treated probabilistically rather than as a hard cutoff — day-to-day variability of σ = 3.5°C means a reading right at the edge of the band counts as partially comfortable rather than flipping from fully counted to not counted at all.
Hours lost to rain are estimated by converting monthly rainfall totals to wet-hours at a rate of 1.5 mm/h, capped at 60% of hours in any given month. Hours lost to sustained wind use the Rayleigh probability distribution of hourly wind speed exceeding 30 km/h, derived from ERA5 monthly mean wind. Both discounts are applied on top of the daylight, comfort-band hours computed above.
Temperature comes from CHELSA at ~1 km native resolution. Humidity and wind come from ERA5 reanalysis at ~25 km — so those two inputs act as regional modifiers on top of a hyper-local temperature base, rather than hyper-local inputs in their own right. The Outdoor Hours Index is therefore not uniformly hyper-local: nearby locations with different microclimates can end up sharing the same humidity and wind discount even where their temperature differs. We show this breakdown rather than hide it.
OHI builds on a line of published thermal-comfort work: the Tourism Climate Index (Mieczkowski, 1985), the Universal Thermal Climate Index (UTCI) — the WMO-endorsed thermal comfort standard this index takes its "UTCI-lite" name from — and Kelly Norton's Pleasant Days map (2014), which popularized the "count the pleasant hours" framing. These are cited as inspiration and pedigree; GeoRank does not run the reference TCI or UTCI models directly. OHI is a simplified, half-hourly implementation built for the GeoRank map.
Outdoor Hours is a personal comfort tool, not an authoritative livability verdict. Every input is shown, and the annual number decomposes into hours lost to heat, cold, rain, and wind, so the figure is never a black box.
Computed from the 1981–2010 climatology:
| City | Outdoor hours/yr |
|---|---|
| Sydney | ~3,550 |
| Lisbon | ~3,500 |
| Vancouver | ~2,400 |
| Manchester | ~2,200 |
| Dubai | ~1,835 |
| Reykjavik | ~915 |
| Singapore | ~450 |
Dubai fails the comfort band on heat; Singapore fails on heat combined with humidity; Reykjavik fails on cold.
SourceCHELSA (temperature) + ERA5 (humidity, wind)
Climatology1981–2010
Layer · Air quality
Annual-mean surface PM2.5 concentration (µg/m³) for the country and city rankings on /air-quality is sourced from the WHO Global Ambient Air Quality Database 2024, published by the World Health Organization. Tier colors map to WHO air-quality guideline thresholds:
The WHO database compiles ground-station monitoring data submitted by national and municipal authorities — it is not a continuous grid model. Station density varies by country, and a single national or city figure can mask large intra-city variance between monitored and unmonitored neighbourhoods. Expect higher real-world values near busy roads, industrial sites, or seasonal biomass-burning events than the reported average suggests.
SourceWHO Global Ambient Air Quality Database 2024
Threshold referenceWHO 2021 AQ guidelines
Layer · Geopolitical safety
GeoRank publishes two distinct safety artifacts, built from different data and answering different questions.
The published safety rankings use the Global Peace Index 2024, published by the Institute for Economics & Peace. The index covers 163 countries and scores each across 23 indicators grouped into three domains:
The composite GPI score is normalised to a 1.0 (most peaceful) to 5.0 (least peaceful) scale, published annually. It is an assessment of current-year state, not a predictive model — countries can shift quickly in response to political events, and short-term incidents may not yet be reflected.
SourceGlobal Peace Index 2024 · IEP
Coverage163 countries · 23 indicators
The Risk layer on the live map is a separate, GeoRank-built composite model — it is not the Global Peace Index. It combines conflict event and fatality data from the UCDP Georeferenced Event Dataset (GED, 2021–2023 cutoff), the World Bank Political Stability index, and manual overrides for current events not yet reflected in either upstream source. Deaths are weighted by country area (deaths per 100,000 km²) and log-scaled to a 0–10 score, then dampened for countries with very few total events so that a handful of deaths in a small country cannot outscore an active large-scale conflict.
Like the GPI, this is an index of recent and current state, not a forecast — it will lag conflicts that break out after the data cutoff until a manual override is added.
SourceUCDP GED + World Bank Political Stability + manual overrides
Data windowConflict events 2021–2023
Layer · Visas & Residency
The Visas & Residency layer covers 10 passports (United States, United Kingdom, Germany, France, Netherlands, Ireland, Canada, Australia, New Zealand, India) against 47 destination countries. For each passport/destination pair, GeoRank computes three fields:
| Field | What it means |
|---|---|
| Max legal stay | The longest stay realistically achievable, bucketed (e.g. 90 days, 1 yr+, unlimited). Takes the best of tourist entry and any attainable long-stay program; points-tested, invitation-only, or lottery-based routes are excluded from this figure so a country isn't shown as open via a route an ordinary applicant can't simply apply for. |
| Best route | How that stay is achieved: freedom of movement (EU/EEA/Switzerland, the UK–Ireland Common Travel Area, or the Australia–New Zealand Trans-Tasman arrangement), a specific residency or visa program (digital-nomad visa, retirement/passive-income visa, golden visa, self-employment route, etc.), or plain tourist entry. |
| Tourist-entry terms | Visa-free, visa-on-arrival, e-visa, eTA, or visa-required, plus the day allowance for that entry type. |
Long-stay residency and visa programs are hand-researched per destination country from official government, embassy, and national immigration-authority pages (a country's foreign-ministry visa portal or immigration-service site, in most cases) — each program record carries its own source URL and a source-quality tag of official or secondary (used where no single authoritative page fully documents a route, e.g. golden-visa aggregator sites for investment thresholds). Tourist-entry terms — visa-free, visa-on-arrival, e-visa, eTA, or visa-required, and the associated day allowance — are filtered from the passport-index-dataset project down to the 10 supported passports.
All long-stay program terms were last verified 2026-07-13. Programs are re-verified quarterly — income and savings thresholds for the highest-traffic destinations (Spain, Portugal, Thailand) move most often and are checked first. The tourist-entry matrix is re-pulled roughly annually, since visa-free/e-visa/eTA status changes far less often than program thresholds.
All figures are computed client-side from a single published dataset, visa-data.json — the compare table's Visas section on the map, the /where-can-i-move checker, and its 10 per-passport pages all read from the same file, so the map, the checker, and the pSEO pages never disagree.
This is informational, not legal advice. Visa and residency rules change, income/savings thresholds shift with local minimum-wage and inflation adjustments, and individual eligibility depends on circumstances not captured here (criminal record, prior overstays, dependents, dual nationality). Always confirm current requirements with the destination country's embassy or immigration authority before making a move.
Coverage10 passports × 47 countries
Verified2026-07-13 · quarterly re-verification
Layer · Free Speech Gap
The Free Speech Gap layer measures 66 countries on two independently published axes, and never blends them into a single "freedom score":
| Axis | What it measures | How |
|---|---|---|
| Protection (de jure, 0–100) | What the statute book permits | 8 weighted components coded from primary law: constitutional guarantee (×1.5), insult/official-dignity offences (×2.0), criminal defamation (×1.5), blasphemy (×1.5), incitement/hate-speech breadth (×1.5), political/security speech offences (×1.5), procedure & defences (×1.0), platform/takedown mandates (×1.0). Every scored component cites the legal text; an unverifiable component is recorded as null, never estimated. |
| Enforcement (de facto, 0–100) | What authorities actually do | The larger of two evidence channels: (1) per-capita convictions and police-contact events from national justice/police statistics, log-scaled against a fixed reference and capped at 85 — so a well-documented country can never score worse than an opaque severe regime purely for publishing its numbers; (2) a severity floor from the citation-required scenario bands — a country with cited multi-year sentences for speech scores high however small its counted caseload. |
Gap = Protection + Enforcement − 100. A positive Gap means the law promises more than enforcement practice shows — this is arithmetic on the two published axes, not a separate editorial judgement. The composite tier shown on the map is 0.45 × (100 − Protection) + 0.55 × Enforcement, bucketed into five tiers (Open <20 · Broadly free · Constrained · Restricted · Repressive 80+).
Opacity is never rewarded. Every country carries a data-confidence grade: A official machine-readable statistics · B official but siloed · C FOI/NGO-compiled counts only · D no enforcement statistics available to this dataset (either the state publishes none, or the series has not yet been ingested — the per-country known-gaps note says which). For grade-D countries, enforcement is imputed as max(observed, 100 − Protection) — absent evidence of restraint, enforcement is assumed at the level the statute book permits — and those countries render hatched on the map and hollow on the chart.
| Source | Used for | Cadence | Known gaps |
|---|---|---|---|
| National statutes & official translations (official legal portals, WIPO Lex) | All Protection components + scenario bands | Semi-annual review + legislative triggers | Sub-national variation (e.g. US state criminal-libel statutes) noted but not scored in v1 |
| National justice & police statistics (Destatis, BKA PKS, UK MoJ/HoL Library, Ministère de la Justice, et al.) | Enforcement volume signals | Annual | Units differ by country (convictions vs cases vs arrests) — each figure is labelled; Germany's §188 counts and UK arrest totals are not centrally published (FOI-reconstructed where used, flagged as such) |
| EU DSA Transparency Database (CC BY 4.0) | Content-restriction signal (EU/EEA) | Monthly | EU-only instrument; feed pending |
| Access Now #KeepItOn (CC BY 4.0) | Internet shutdown incidents | Annual | Weeks-to-months reporting lag; feed pending |
| Academic Freedom Index — V-Dem/FAU (CC BY 4.0) | Academic-freedom signal | Annual | Expert-survey basis, not incident counts; feed pending |
Deliberately not ingested: RSF, Freedom House, World Justice Project, Article 19, CPJ, OONI, and the V-Dem core dataset — their licences do not permit commercial reuse (or are ambiguous), and expert-perception scores would dilute the statute-and-statistics basis that makes this layer checkable. They may be cited as context; they never feed a score. Advocacy case-logs (any side) never feed a score either — they are self-selected intakes.
Citation-or-null: a scored cell without a legal citation is demoted to null at build time and can never ship. No qualitative judgement: the data records what a law permits and what enforcement records show — never whether a restriction is justified. Symmetric scrutiny: the same 8 components, same rubric, every country. Scenario exposure bands ("criminal, enforced") require a cited case or statistic from the last 10 years. A country with fewer than 5 of 8 components verified is excluded entirely rather than scored on thin data. Where two credible figures conflict, both are shown rather than silently picking one.
All figures are computed from a single published dataset, speech-data.json (CC BY 4.0) — the map layer, the compare table's Free Speech section, and the Free Speech Gap page all read the same file. Dispute an entry: data@georank.place with the statute or statistic — corrections are published in a changelog on this page.
This is informational, not legal advice. Speech law is fast-moving (Online Safety Act, DSA, new criminal codes) and prosecution practice varies within countries. The dataset codes national law at the date shown; it cannot capture individual circumstances, prosecutorial discretion, or sub-national variation.
Coverage66 countries × 8 components × 10 scenarios
Verified2026-07-22 · semi-annual re-verification
Citation
To reference GeoRank data in academic, professional, or editorial contexts:
This citation covers the downloadable per-city CSV (sunshine-hours.csv), which remains the ERA5-based, IDW-corrected export described above. The sunshine layer rendered on the live map is instead SARAH-3-based within the Meteosat disk since July 2026 — see SARAH-3 satellite base above for the map-layer methodology.
Primary upstream data sources:
License & attribution
GeoRank methodology and the calibrated sunshine, temperature, and rainfall datasets are licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0). You may use, share, and adapt with attribution — see Cite this data for the recommended citation format. The calibrated sunshine dataset and the ranking engine are also published as free packages on npm, PyPI, and GitHub — see Open Source.
Tax, cost-of-living, air-quality, safety, and visa/residency data are derived from third-party sources (OECD, PwC, KPMG, Numbeo, World Health Organization, Institute for Economics & Peace, UCDP, World Bank, official government and embassy sources, passport-index-dataset) and are subject to their respective licenses. Consult each source for redistribution rights.