Joy per Dollar

$2000
Filters
Quick budget
Climate
no temperature preference — pure weather score
OK up to%, bad from%
Where
45/100
Rhythm
OK up toh, bad fromh
Joy weights

Money versus joy

Hover (or tap) a dot for a quick card; click opens its dossier.

dot color = “Joy/$”: overpayingvalue over budget

How it works

Where to spend next month? 544 cities, 6 continents: the horizontal axis is the cost of a month of your basket (housing, restaurants, taxis, bars, beach — pick the mix with a preset or tune it yourself; “Signature” = a premium condo at the “Bangkok for $1800” level and restaurants almost daily), the vertical is joy: weather this month + scene (restaurants, bars, people); right of the budget line — out of reach. Data: Aug 2026. Dollars, not indices; weather month by month.

In short: prices come from open crowd databases, converted into dollars via the New York price list (±15%); weather — satellite data for recent years; scene — ratings by remote workers who lived in the city + venue density and variety; sea — distance to the coast and monthly water temperature. Joy = the month’s weather + scene + a sea bonus − penalties for time difference and humidity (both use your thresholds, toggled off with the “Include” toggle); the sum is clipped to 0–100. Details, every multiplier and source dates are below.

Money is a basket, not an index

The crowd price database only gives indexes against New York; I took the real New York price list (May 11, 2026, USD) and converted the indexes back into dollars line by line. All of this is a ±15% estimate, not a quote; a furnished short-term rental usually costs more than local rent.

  • Housing. What I count: a premium condo with a pool, or a villa — the benchmark is a premium condo in Bangkok at $1800 (the “Signature” basket). How I count: a regular one-bedroom in central Bangkok per the crowd-sourced price database = $787, you pay $1800 → multiplier ×2.29 — but a gap like that between the one-bedroom and premium exists only where the crowd price database’s “center” is packed with old cheap stock (Asia). In Europe, the Americas and Oceania the crowd database’s median “one-bedroom in the center” is already mid-market — premium there is ×1.65 (Valencia ≈ $1.7–2.2K vs a ~$1.3K one-bedroom per the crowd database, Lisbon ≈ $2.4–3.0K vs $1.6K); in the CIS, the Middle East and Africa part of the cheap tail remains — ×1.9 (Tbilisi: premium new-build $1.0–1.4K vs $666). Above Bangkok’s rent index the multiplier compresses further to the power of 0.35 (Chiang Mai, India ×2.29 · Phuket ×2.17 · Samui ×2.13 · Bali ×1.95 · Tbilisi ×1.9 · Valencia, Lisbon, Medellín ×1.65 · Dubai ×1.57 · Miami ×1.44). This is a ±20% estimate, not a price list; the multiplier and the underlying one-bedroom are shown in the dossier. One housing tier, no toggle. For reference the dossier also shows a regular one-bedroom per the crowd database (rent index × a New York one-bedroom, and where a 2025+ city price exists — cities have one): that’s where the multiplier comes from. Next to it the dossier shows a cross-check against community-reported rent from remote workers (city pages — Sep 1, 2026): “long-term” — a regular 1-bedroom in the center on a long lease, “short-stay furnished” — a typical month in a furnished apartment on the short-stay market (usually well above long-term rent), “hot desk” — a seat in a shared coworking space per month. It is a reference layer only: it never enters the basket or joy; the ⚠ mark appears when the model’s plain 1-bedroom diverges from the community long-term figure by more than 40%.
  • Restaurants. What I count: 14 dinners for two at a mid-range place, 6 dinners at a nice one, and 12 lunches. How I count: the average dinner price comes from the crowd-sourced price database’s city page (archived snapshots, 2025–2026) where one exists ( cities), otherwise from the restaurant index × 0.70 (across cities that have both, the city price averages about a third below the index one, median ratio 0.66 — I take it a bit more conservatively); a “good” dinner = ×2.2 of the mid-range — a proxy, the crowd price database doesn’t measure it (Bangkok ≈ $65 with a $29 mid-range dinner; a typical bill of 2,500–3,500 baht for two is $70–100, so the proxy if anything undershoots, and Bangkok’s basket sits at the low edge of an honest month; Lisbon ≈ $130); lunch always comes from the index (the snapshots hold no city lunch prices).
  • Alcohol. 16 cocktails (≈3 pint prices — a proxy), 6 bottles of mid-range wine, 10 pints; in high-excise countries (Thailand ×1.8, Indonesia ×2.2, Malaysia ×2, UAE/Qatar/Bahrain ×2, Singapore ×1.7, India ×1.5, Norway ×1.6) wine costs that multiplier above the index, cocktails half of it (the bar passes on only part of the excise): Bangkok ≈ $10. The multiplier applies only to index prices: where the pint or bottle comes from the crowd database’s city page, the excise is already baked in and isn’t counted twice (Penang, Singapore, Bergen, Bandung). In dry countries () alcohol isn’t sold — the line is zeroed and the scene cut by 25 (the bars and wine your month includes aren’t there); the dossier and table carry a “dry country” note.
  • Groceries. Regular basket = 11 staple groceries for a week (milk, bread, eggs, cheese, chicken, apples, bananas, tomatoes, potatoes, onions, rice) at New York prices — $55 — × the crowd grocery index; 4 such weeks per month. The premium basket (×1.6 the regular one; ×2 where cheese, wine and steak are imported — Thailand, Indonesia, Malaysia, Vietnam, the Philippines, Singapore, Hong Kong: Villa Market level) + 6 steak nights (680 g of beef: ×1.1 for a premium store and ×2.2 for a steak cut; ×3 in the same imported-beef countries; plus half a bottle of wine — skipped in dry countries) + 4 seafood nights (via the meat index — a proxy, the crowd price database doesn’t measure fish).
  • Taxi or scooter. What I count: 60 rides of 6 km each (two a day); in resort and island spots where you ride your own scooter () — a scooter rental at $130 a month + 10 taxi rides. How I count it: where a city fare from the crowd database exists ( cities) — from it; otherwise from the cost-of-living index ×0.75 across Asia, the CIS, Latin America, the Middle East, and Africa: the multiplier is calibrated on 20 Asian cities with a city fare (median ratio 0.77 — Grab/Bolt/Uber run cheaper than the index says); in North America (7 cities with a fare) the index lands on target (median 0.91), no multiplier needed; the Middle East — just 3 cities, median 0.58 (0.42–0.81), so ×0.75 likely overshoots there; for the CIS (0 cities), Latin America (one, ratio 2.5 — not a benchmark), and Africa (0) there’s no data, so ×0.75 is an assumption by analogy with Asia (in the dossier such taxi rates carry no “(crowd-sourced database, city)” tag). In Europe the same comparison set (8 cities with a city fare) shows the opposite: the index understates taxis roughly 1.6×, so European taxi prices from the index likely run low — I didn’t add a multiplier there (too few cities), just know this.
  • Utilities, mobile, gym. 80% of the utilities for 85 m² per the crowd price database + internet + 60% of a 10 GB plan + a gym membership — via the cost-of-living index, and where a 2025+ crowd database city page exists ( cities: cappuccino, beer, wine, gym, internet, mobile, utilities) — from it; in the dossier the “(crowd-sourced database, city)” tag marks city-level prices, the rest comes from the index (stated once above the list); utilities and mobile are shown as a separate line.
  • Beach club. 6 days a month at the minimum sunbed spend (a proxy, not a price list): $30 a day or 60 × the cost-of-living index, whichever is higher (Miami ~$50, Honolulu ~$65); at scooter resorts () the floor is $45: clubs of that level there charge a 2–3K baht minimum bill (Catch, Café del Mar on Phuket), 500K–1M rupiah (Finns, Potato Head on Bali); it enters the basket only in months when the water is ≥24° — regardless of the “Sea bonus” button (it changes joy only, not money).
Joy: weather + scene + sea − time − humidity

Weather. For cities — satellite weather reanalysis via the open weather API: daily data for 2023–2025 rolled up into monthly means; a day counts as rainy from 5 mm of precipitation (a 1 mm threshold treated tropical drizzle as rain and inflated rainy-day counts 1.5–2× versus weather stations: Bangkok in February 7, Samui in December 19; a 3 mm threshold still gave 20–30% more rainy days in monsoon season than the Thai weather service’s climatology — a known tropical bias of satellite reanalysis; with the 5 mm threshold Bangkok in September is 20 days, Samui in December is 7, and Lisbon and Athens shifted by 2–3 days). For the remaining cities the open weather API hit its request limit, so satellite climatology (2001–2020) is used instead, aligned to the reanalysis scale via cities covered by both sources: daytime high = the mean + half the diurnal range + 1.27 °C; satellite climatology only gives the monthly precipitation total, so the number of rainy days for these cities is a regression estimate , fitted across all cities with reanalysis data (for these cities the rainy-day count in the dossier is computed, no flag). Comfort = 100 minus penalties: for cold below your “Daytime °C” band (×3 per degree), for heat above it (×3.5 per degree, and past 5° over the band also half the squared excess: 43° in Dubai in July gives comfort ≈ 20, not 54 — the street is unlivable; Bangkok in April at 35° is barely touched), for rainy days (×1.7 per day) and for cloudiness (×0.8 for each percent of sun below 60% of clear sky — that’s how Lima in garúa season, Guayaquil and Hanoi in the “mưa phùn” drizzle season (February: 51% sun with 2 “rainy” days → −7) stop being “thermometer-perfect”; rain and cloudiness are two separate penalties, and in a monsoon month they stack: wet and grey is worse than just wet; the database’s greyest months (St Petersburg and Moscow in November, 44–45%) lose ≈12–13 points, sunny cities above 70% are untouched). Humidity, dew point, sun share and wind are satellite climatology 2001–2020; the “night” temperature comes from the same source = the mean minus half the diurnal range (a proxy for the night minimum, not a measured one).

Time-zone penalty. Not a filter but a joy deduction. The default base is Moscow (UTC+3; or London, Berlin, Dubai, New York, Singapore, or your own “UTC ±…” offset). A difference up to “OK” (default 4 h) — no penalty; from “OK” to “bad” (default 7 h) the penalty grows linearly up to −15 points; beyond that — flat −15. The “Include” toggle turns it off. The offset is taken on the 15th of the selected month from the IANA zoneinfo 2026 database — for both the city and the base (London +1 in summer, Berlin +2, New York −4; a custom “UTC ±…” offset is fixed), so daylight saving is reflected identically in the penalty and the dossier: Europe — from the last Sunday of March to the last Sunday of October (Mar 15 still winter time, Oct 15 still summer time), the US and Canada — from the second Sunday of March to the first Sunday of November (Mar 15 already summer time), Sydney and Santiago — the reverse (summer time from October/September to April); Cairo and Morocco follow their own dates. Shown as h:mm (Kathmandu +5:45).

Humidity penalty. A separate deduction, not part of weather comfort: the month’s mean relative humidity from satellite climatology (2001–2020); up to the “OK” threshold (default 75%) no penalty; from “OK” to “bad” (90%) the penalty grows linearly to −12 points, beyond that −12; the “Include” toggle turns it off. RH% alone can’t tell a damp cool winter (Warsaw in January: 94% at a −5° dew point) from tropical mugginess (Karachi in June: 25° dew point), so the penalty kicks in only above an 18 °C dew point and reaches full strength by 22 °C — right where the dossier starts saying “muggy” (Lisbon in January at 81% and a 10° dew point and Taipei in November at 85% and 17° aren’t penalized, Da Nang in February at 86% and 19° — by a quarter, Bali in January at 86% and 23° and Bangkok in November at 80% and 22° — in full). The dew point is shown alongside in the dossier.

Compare. The “Compare” block adds no new data: joy, its parts (weather, scene, sea, time and humidity penalties) and the line-by-line basket are the same numbers as in the table and dossier, for the selected month; the beach club, as in the basket, counts only when the water is ≥24°. “Joy per $1,000 of basket” = joy ÷ month price × 1000 — how many joy points each thousand buys. Bold marks every row leader (higher for joy, lower for prices; on a tie — all of them, dashes sit out). The line under the table compares the top-joy city with the cheapest one added.

Scene. Two independent parts, price excluded from both; this still isn’t “how the food tastes” — no openly available source covers that worldwide.

  • Remote-worker community — ratings by remote workers who lived in the city, only the scene-related ones: nightlife 25%, community 25%, leisure (what to do besides bars) 30%, friendliness to newcomers 10% (weights rescaled to 100); the exact 0–100 scale from their page is used, not just the stars. Their “happiness” is not used: on the remote-worker platform it is a per-country constant (Bangkok, Phuket and Chiang Mai share one number), not a signal about the city’s scene. Their composite “quality of life” is not used at all — it is a blend of safety, hospitals, wi-fi and friendliness to women/LGBT (Kaohsiung 85 with nightlife at 60) — nor are the overall score, family, or healthcare. Nightlife is the remote-worker community’s stars, which bar density from the open venue database can only trim, never lift; the same rule for leisure: a five for “what to do” must be backed by cuisine variety in the open venue database square (Kathmandu, Antalya, Cancun, Montevideo — fives with 41–50 cuisines against 63–75 in Canggu and Lisbon — are cut to ≈70–80, while Canggu and Lisbon themselves are barely touched; again only down, never up) (a five with no bars behind it doesn’t hold — Casablanca: 248 reviews, 129 bars against 962 in Lisbon; and Pattaya’s 1,400 beer bars add nothing beyond its four; if the square has fewer than 200 restaurants per 6×6 km, the check is skipped). A city’s weight grows linearly with its review count up to 150 (Chiang Mai — thousands, Patna — five; no review count — I assume 60). Cities under a “don’t go” advisory (war, sanctions, hurricanes — Tel Aviv, Moscow, Puerto Vallarta; in total ): the remote-workers platform force-sets their overall score to 1 (or drops “quality of life” below 30 while nightlife/leisure sit at 60+ — the same advisory footprint); the scene here is unaffected, because neither the overall score nor “quality of life” enters the formula; the dossier carries a note.
  • Open venue database: how many restaurants, distinct cuisines, coffee shops, bars and gyms in a 6×6 km square around the center, by log and rank among cities (percentile — the share of cities with fewer); cuisine diversity weighs more than the raw count. If the square holds fewer than 200 restaurants (eateries; the threshold counts restaurants, not all venues; for a 10×10 km square — fewer than 555, for island 20×20 km squares — fewer than 1,100: half of such a square is sea) — the city-center coordinates missed the real center, or the map is thin in that city (Lagos: 453 restaurants per 100 km², though Victoria Island alone has thousands; — total cities), and the layer isn’t used. Sprawling cities are counted with a 10×10 km square (Tbilisi from Rustaveli, Bangkok from Sukhumvit, Dubai from Downtown, Cape Town, Canggu, Cebu, Lagos from Victoria Island); the islands of Phuket and Samui — 20×20 km, because there the scene is the whole island, not a point (the dossier shows the square size). Bar density feeds both this layer (15% of it) and the nightlife check above — but there it only trims stars and never adds, so the double touch is ≤ 3% of the scene.
  • International restaurant guide — the third layer, “premium cuisine”: how many of the city’s restaurants and bars are in the international restaurant guide ( cities), on a log scale and by percentile (the share of cities below) — only among cities with at least 1,000 restaurants in the open venues database square (the guide covers real restaurant markets; in a small city a zero means nothing, in a big one it does: Pattaya, Santa Cruz — 0, Antalya 1, Phuket 4, Bangkok 86, Dubai 102) — or where the guide itself counts at least 8 venues (double the median across these markets): a thin open-venues-database square (Toronto 547 restaurants, Mumbai 963, Nairobi 833 — an off-center square or thin map coverage, not the restaurant market) shouldn’t throw away real guide data; that’s how the layer picked up . Countries with no guide entries at all (Russia delisted in 2022, Belarus, Uzbekistan, Pakistan…) get no layer — that’s guide coverage, not quality. Guide matching is by country + city pair (London in Canada and San José in California inherit no one else’s venues); where the guide names the city differently or by district, a mapping table steps in (Penang = George Town, Washington = Washington DC, Palma, Querétaro; Giza → Cairo, Barra da Tijuca → Rio, Barranco → Lima, Shatti al-Qurum → Muscat).
  • Mix 65/20/15 (remote-worker ratings / venue density / restaurant guide; where a layer is missing, weights are redistributed): venue density rewards dense cheap cities (Kathmandu), so it stays secondary; premium cuisine pulls down Pattaya (79 → 68) and Santa Cruz and lifts Dubai, Cape Town, Kuala Lumpur. Tails are clipped 2% at both ends (2nd and 98th percentile).
  • Pulled toward the country median (the median is the midpoint of the spread across the country’s cities; marked with a tilde; if the country has a single city, the region median is used — otherwise the city would pull toward itself: Lagos, Dushanbe, Singapore): remote-worker ratings only, no venue database ( cities) — by the review-shortfall share, at least 30% (five reviews don’t make Lethbridge a Valencia; with fewer than 50 reviews a city can’t sit more than 5 above its country median, with fewer than 25 — above it at all); only the venues database with no remote-worker ratings ( cities) — by 60%; both sources — by 30% × the review shortfall. Where neither exists ( cities) — the country median (or the overall one, if lower) minus 5: a small beach town shouldn’t score like a capital.
  • Dry countries (): scene −25 — bars and wine are banned there by law.

Sea. Distance to the coast comes from the open coastline map; monthly water temperature — satellite sea data (2024–2025): the daytime maximum water temperature, averaged over the month. “Swimmable” = coast ≤ 35 km and water ≥ 24° in the selected month; this adds a joy bonus of +6 at 24°, +12 at 28–31°, and back to +6 at 33° and hotter (soup-warm Gulf water in July–August) — the “Sea bonus” toggle, can be turned off. For cities with a scene below 60 the bonus shrinks by the square of the scene’s share of 60 (Muscat, scene 45: +12 → +7; Sharjah, scene 34: +12 → +4; Heraklion 45: +12 → +7; Bali, Phuket, Samui, Cancun — unchanged): a warm sea with a thin scene isn’t a beach-club month, and otherwise +12 for water would outweigh 24 points of scene at equal weights; in such months a beach club joins the basket — always, toggle or not. Water at 22–23.9° is labeled “cool, but people swim” in the dossier and the table (Las Palmas from July through November, Sydney from January through April: water 22–23.9°, people swim, but no bonus — not the same thing for anyone used to Thai water), below that — “cold”. The total “weather + scene + sea − penalties” is clamped to 0–100 (penalties are subtracted before clamping): in June–August one or two cities (Canggu) hit the ceiling. Bangkok doesn’t count as seaside — 19 km to the gulf, but the water there isn’t for swimming; likewise manually unset: Mumbai, Chennai, Manila, Istanbul, Panama, Guayaquil, Kochi, Bursa, Abidjan, Rostov, Treviso, and a dozen more cities on dirty water, an estuary, or a lagoon (the dossier says “nowhere to swim”); Pattaya (the bay itself is dirty; people swim at Jomtien and Ko Lan), Accra, Caracas, Kaohsiung, Lagos, Shenzhen, Kingston, Maputo, Rome (Ostia, 25 km), Baku, Santo Domingo (the Malecón is rocks and an estuary, Boca Chica 30 km), San Salvador (black sand and the currents of La Libertad), Recife (sharks off Boa Viagem), Penang (murky water at Batu Ferringhi), Colombo, Alexandria (the clubs are on the North Coast, 100 km away), Tirana, Kuching, and Montevideo (the brown water of the La Plata estuary) get half the bonus (there’s a coast, but the beach is so-so or far); the same rule applies to any city more than 20 km from the shore (a day trip, not a beach club; exceptions — Jacksonville and Los Angeles, where the beach is in town). Brisbane (muddy Moreton Bay, beaches 60–90 km out), Arlington and Padua (the tidal Potomac and the Venetian Lagoon count as coastline) — “nowhere to swim”. For Baku the water temperature is a fixed Caspian table (July–August ≈26–27°), because satellite sea data doesn’t cover the Caspian; other cities on inland waters get no temperature, and the dossier says so. Santo Domingo, Canggu, and Samui were geocoded inland — coordinates fixed by hand to a center by the shore; Querétaro, Gurgaon, St. Louis, Arlington, Greenville, and Padua landed in namesake villages (Chiapas, Maharashtra, Michigan, Texas, North Carolina, near Bologna) — coordinates, time zone, weather, and distance to the sea recalculated for the real cities.

What that changes. With safety, healthcare and environment out of the formula, cheap warm cities of South Asia and Egypt climb higher than you’d expect; the scene is what holds them down. Air pollution is shown in the dossier for reference (satellite air data by month), but isn’t counted anywhere — neither in joy nor as a filter.

On food, and why there is no “restaurant quality”

No openly available restaurant-quality rating with global coverage exists — I checked every known guide and rating — some lose coverage beyond fifty-odd countries (Tbilisi and Medellín are missing entirely), others rate only whole countries, forbid exports, or are noisy and full of holes; open maps measure density, not quality. So “food” here means money and availability: the price of dinner and coffee, how many dinners fit into the leftover, and the “restaurant/cooking” ratio — plus one quality layer: the international restaurant guide (the city’s restaurant market in the eyes of its jury) as “premium cuisine” in the scene, at 15%, and only where there is something to compare against (an open venue database square of ≥ 1,000 venues). This is not “how the food tastes” and not a rating of your dinner, but a crude signal: does the city have a restaurant league above street level.

Filters and penalties: safety, time zone, what got cut

Safety filter. Not in the formula — a filter. Turn it on, move the threshold — cities with a crowd safety index below it disappear. The index only exists for cities out of ; where it’s missing, the country median is used, shown with a tilde (~); for cities the index exists for neither the city nor the country — the filter leaves them alone, and the column shows “—”. The default threshold is 45: Medellín (46) still passes; Mexico City (34), Lima (30), and Sao Paulo (30) no longer do; Tbilisi (74) and Chiang Mai (78) sit far above the line. The “safe pick” tile up top is the top-joy city among those fitting the budget whose crowd-sourced safety index is ≥ 60 (city-level, or the country median where missing); the 60 threshold is fixed and doesn’t follow the filter slider; if no such city fits the budget — the tile says so.

Time zone. Not a filter but a joy penalty — the rule and DST handling are described in the “Joy” section above; the base (Moscow by default; London, Berlin, Dubai, New York, Singapore) is picked in the “Time difference from” row.

What was cut entirely. The war-torn East — Iraq, Syria, Iran, Afghanistan, Lebanon, Ukraine, Yemen, Libya, Palestine. Sub-Saharan Africa stays (its own region button; Egypt, Morocco, Tunisia and Algeria live under “Middle East, N. Africa, Turkey”): the scene and the safety filter sort it out like everyone else; switch it off with the region button or “hide country” in the dossier.

What’s not here. Healthcare and ecology are deliberately not in the formula: this is a map of joy, not a “best cities to live in” ranking. Neither are purchasing power and the housing-price-to-income ratio — they are about local salaries and say nothing about income from outside. Connection speeds are shown for reference (measured connection speeds; averages over the latest quarter) and are not part of the joy formula. Visa rules are shown for reference (open visa data; pick a passport in the top bar) and are not part of the joy formula.

Sources and dates

    Calibration of satellite climatology to the reanalysis scale (daytime max +1.27 °C; rainy days = from the monthly precipitation total) was fitted on cities that have both sources — that is the first step of the build. Cities without their own city price page (Samui) get proxy prices from a neighbor, flagged in the dossier.