The principle in one sentence
This distinction matters. When you check the weather 5 days out, you get a real forecast from numerical atmospheric models. When you check a date 4 months away, you get a statistical estimate based on what happened at the same dates in previous years, adjusted by current seasonal model trends.
Our data sources
All our weather data comes from Open-Meteo, an open-source API that aggregates ERA5 reanalyses from the European Centre for Medium-Range Weather Forecasts (ECMWF), as well as operational models from Météo-France (ARPEGE/AROME), Germany's DWD and NOAA in the United States.
Why ERA5?
ERA5 is the world's reference reanalysis: it reconstructs the state of the atmosphere hour by hour since 1940, at a 31 km resolution, by assimilating all available observations (satellites, radiosondes, ground stations). It's the dataset used by climate researchers to establish norms.
Correction against weather stations. A reanalysis smooths terrain and counts too many light showers: raw ERA5 overestimated sunshine (up to 2.4 times in cloudy climates) and the number of rainy days (+12 points on average, +22 points in the tropics; Bali in July: 59% instead of the 11% measured at Denpasar). Both are therefore adjusted to official station normals (1991-2020): the station value when one exists within 120 km (318 destinations for rain, 427 for sunshine), a model fitted on those stations elsewhere. Average error on rainy days: 5.7 points instead of 12.8.
Open data. Monthly normals and scores for 730 destinations are published on data.gouv.fr, the French government open data platform, under a CC BY 4.0 licence (free reuse, attribution required).
Our analysis window covers the last 10 years. This is deliberate: including older data would introduce a growing cooling bias due to climate change, making estimates less representative of current conditions.
Three levels by time horizon
The reliability of a weather estimate decreases with time distance. We indicate this explicitly in the interface via a horizon badge. Here's what each level actually means.
How does the score work?
The score out of 10 summarises weather conditions based on your activity. It's not universal: good weather for a beach day isn't the same as for skiing. Four criteria are weighted differently depending on the selected profile.
Relative importance by profile
The four factors are weighted according to a calibration specific to each profile, reflecting the relative importance of each criterion for that activity. Here's an indicative overview of the priorities:
| Criterion | 🌤 General | 🏖️ Beach | ⛷️ Ski |
|---|---|---|---|
| Precipitation | ●●● | ●●● | ●● |
| Temperature | ●●●● | ●●●●● | ●●●● |
| Wind | ●● | ● | ● |
| Sunshine | ●● | ●● | ●●● |
● = low priority · ●●●●● = dominant priority. Exact weights come from internal calibration and are not disclosed.
Ideal temperature ranges
Each profile defines an optimal temperature range. Outside this range, the temperature sub-score decreases progressively.
Verdicts
The final score maps to one of three qualitative levels:
These classes are comparable across all destinations — a score of 7.5 in Lisbon and Bangkok represents the same absolute climate quality for a traveller.
Personal comfort profiles
On monthly ranking pages, four comfort profiles let you refine the ranking based on your personal temperature and humidity preferences. These profiles are independent of activity profiles (General/Beach/Ski).
The four profiles
Extreme dryness penalty
A specific adjustment applies to very dry climates: when calculated relative humidity is below 30% and maximum temperature exceeds 25°C (typical cases: Marrakech in summer, Las Vegas in July), a penalty is applied to the score. Extremely dry air at high temperatures can be uncomfortable for most travelers despite near-zero precipitation.
Annual reference score by destination
For destinations in the catalogue (climate guides), each month of the year has a reference score distinct from the app score. This score reflects the month's intrinsic climate attractiveness, independent of any activity profile.
Three season levels
Each month is first classified by its overall seasonal character: recommended, intermediate or to avoid. This classification considers local reality beyond the numbers alone — for example, a tropical destination during monsoon season is different from a Nordic destination in winter.
Local climate specifics
Some climate regimes require adapted treatment. Destinations with strong monsoon seasonality (Southeast Asia, East Africa) are subject to adjustment: the wet season, although statistically unfavourable, often remains suitable for travel thanks to short, intense rainfall. This context is built into the seasonal classification for these destinations.
Humidity & dew point
From March 2026, dew point temperature (ERA5 dew_point_2m) is factored into the annual reference score for all 746 destinations. When daily maximum temperature exceeds 26°C and the dew point exceeds 16°C, a progressive comfort penalty is applied — capturing the oppressive feel of humid heat that raw temperature alone does not convey.
Additionally, months where tmax ≥ 30°C and dew point ≥ 16°C are automatically downgraded from the recommended classification to intermediate, regardless of temperature alone. This corrects the historic under-scoring of hot-humid destinations such as Tokyo in summer or Singapore.
Rain type: tropical showers vs. blocking rain
Weather icons and qualitative labels now distinguish between two fundamentally different rain patterns, using a burstiness index (daily precipitation ÷ rain frequency):
- ⛈️ Heavy blocking — rain on ≥ 90% of days, high intensity (≥ 14 mm/day): genuinely disrupted travel
- 🌧️ Blocking rain — frequent rain with low sunshine: overcast, persistent conditions
- 🌦️ Tropical showers — frequent but short-lived, high burstiness, ample sunshine: the day remains largely exploitable
This distinction matters particularly for destinations like French Guiana, the Caribbean or Bali, where high rain frequency does not translate to a ruined trip.
Air Quality Penalty
An air quality penalty is subtracted from the final reference score when the monthly AQI average exceeds 60 (European AQI scale). The penalty is progressive, capped at −0.8 points: no penalty at AQI ≤ 60, linear increase to −0.8 pts at AQI ≥ 120. Data from Open-Meteo Air Quality API (2024, european_aqi). 131 destinations affected. Examples: Delhi January (8.0 → 7.2), Beijing December (5.2 → 4.4), Dubai June (3.9 → 3.5), Paris July (unchanged).
Thermal comfort badge
Each month in the climate table displays a comfort badge based on maximum temperature and dew point. Six levels:
| Level | Condition | Meaning |
|---|---|---|
| 🔵 Fresh | Dew < 16°C + Tmax < 20°C | Dry and cool, very comfortable |
| 🟢 Comfortable | Dew < 18°C + Tmax ≤ 32°C | Pleasant conditions for most activities |
| 🟠 Oppressive | Dew ≤ 22°C + Tmax ≤ 38°C | Noticeable heat or humidity |
| 🔴 Humid heat | Dew > 22°C | Hot and humid — typical of tropical zones (French Guiana, Singapore…) |
| 🔴 Very hot | Dew ≤ 22°C + Tmax > 38°C | Extreme dry heat (deserts, Middle East in summer) |
| 🟣 Cold | Tmax < 0°C | Sub-zero temperatures |
If ≥ 9/12 months share the same level, the badge appears once in the table header rather than on every row.
Contextual Indicators
In addition to the score, each monthly page displays contextual indicators that enrich weather interpretation without affecting the main score.
UV Index
The monthly average UV index comes from the Open-Meteo Historical Forecast API (uv_index). Displayed as an informational badge when UV ≥ 3. Four levels: Moderate (3–5), High (6–7), Very High (8–10), Extreme (≥ 11). UV is a health risk indicator — it does not affect the climate score.
Rain Type
Precipitation is characterised using ERA5 rain_pct (frequency) and precip_mm (intensity). A burst index (mm/day ÷ frequency) distinguishes: Short showers (high burst, good sunshine — typical tropical rains), Persistent rain (high frequency, little sun, moderate intensity), Heavy rain (very high frequency, little sun, high intensity).
Weather Stability
A badge indicates whether the month is Variable or Changeable based on the combination of rain frequency, sunshine hours and burst index. Dry or stable months show no badge.
Sea Conditions (coastal destinations)
For 322 coastal destinations, significant wave height (wave_height_max) and swell period (swell_wave_period_max) come from the Open-Meteo Marine API. Four levels: Calm sea (< 0.5m), Gentle sea (0.5–0.9m), Surf conditions (≥ 1.0m + period ≥ 8s), Rough sea (≥ 1.8m).
Air Quality Badge
Beyond the score penalty, a contextual badge appears on monthly pages when monthly average AQI exceeds 60: Moderate air (61–80), High pollution (81–100), Very poor air (> 100).
Practical information per destination
Safety
The safety level (1–4) comes from the Auswärtiges Amt (German Federal Foreign Office) official public API, fetched in real time and cached for 6 hours. Always verify your government's travel advice before departure (GOV.UK Travel, State.gov).
Budget
The budget index (1–5) is derived from the Numbeo Cost of Living Index 2026, calibrated on 14 benchmark destinations. Eight documented exceptions and 21 regional proxies cover the full 158-country catalogue. This index is indicative — it reflects local cost of living, not real-time tourist prices.
ECMWF seasonal correction
When the time horizon falls between D+8 and D+210, the historical climatology is adjusted by anomaly signals from the ECMWF seasonal model. This mechanism progressively merges historical data with projected trends, treating temperature, precipitation and wind differently according to their respective predictability at medium range.
The goal is to detect significant deviations from the norm — an abnormally wet season, a milder winter than average — without claiming the precision of a short-term forecast.
Indicative model accuracy
What our tool does not do
We prefer to be clear about limitations rather than downplay them.
- No microclimates. ERA5's spatial resolution is 31 km — local variations (valleys, coasts, altitude) are not captured. A seaside resort can differ by 5°C from the neighbouring town.
- No climate change modelling. Our 10-year window partially captures recent warming, but doesn't extrapolate future trends. Projections beyond 2030 are outside our scope.
- No ECMWF seasonal correction beyond 7 months. Beyond D+210, the ECMWF seasonal model no longer provides significant predictive value. We then display a pure historical climate profile based on 10 years of data — still useful for long-term planning, but without seasonal trend adjustment.
- Extreme events are not predictable. Cyclones, exceptional storms, historic heatwaves — these rare events are not represented in average statistics.
- No hourly data beyond D+7. For future dates, we display an indicative daily hourly profile, not hour-by-hour forecasts.
Frequently asked questions
Where does the sea temperature data come from?
Sea surface temperature comes from Open-Meteo's Marine API for nearby dates (D+0 to D+7) and from a historical climatological database by coastal city for more distant dates.
Why are sunrise and sunset times calculated rather than forecasted?
Sunrise and sunset are deterministic: they depend solely on latitude, longitude and date. They are computed by astronomical algorithm and don't vary from year to year (to within a few seconds).
What's the difference between the "pessimistic" and "optimistic" scenarios?
The scenarios are built from the P10 and P90 percentiles of the historical distribution. The pessimistic scenario corresponds to the 10% most unfavourable days observed over the period (maximum rain, extreme temperatures, high wind). The optimistic to the 10% most favourable days.
How can I compare two dates or two destinations?
Use the "12-month view" to compare scores month by month for a destination. To compare two cities, run two separate searches and compare the scores for the same period.
Is the data updated?
Historical data (climate baseline) is fixed — it corresponds to the last 10 years. Real-time forecasts (D+0 to D+7) are fetched live from Open-Meteo APIs on every consultation, with an update latency of 1 hour.