How every number on this site is produced
This page is generated from the same catalogue of methods that the computation code uses. If a method changes, this page changes with it — it cannot drift out of date, because there is nowhere for it to drift from.
Climate normals and season months
Monthly air and sea temperatures, rainfall and the months that actually count as season.
Computes: season_months
How it works
- Normals use the 1991–2020 window, the standard WMO thirty-year period. We do not use 'the last thirty years from today', because then published figures would change with the date the import happened to run.
- Daily series are collapsed into monthly means; a day counts as rainy from 1 mm of precipitation, as the WMO defines it.
- A month is in season when sea temperature is at least 22 °C and there are no more than 8 rainy days.
- For destinations with no marine normals the rule is air temperature between 15 and 30 °C with no more than 10 rainy days. The Marine API declines for points inland, and zero degrees there means 'not measured', not 'freezing'.
Thresholds
| beach season, sea | at least 22 °C |
| beach season, rain | at most 8 rainy days |
| inland season, air | 15–30 °C |
| inland season, rain | at most 10 rainy days |
| rainy day | from 1 mm |
Where this is weak
- Sun hours are derived from shortwave radiation rather than measured directly. It is an approximation and we say so.
Sources
Crowd density at peak season
Square metres of beach per person at the height of the season.
Computes: crowd_density
How it works
- Beach area is computed from the OpenStreetMap polygon, not read from a tag: tags are filled in by people and filled in differently, while the polygon is objective.
- Bed count is estimated from accommodation within 500 metres.
- The ratio is area over beds, so it answers a practical question: how much towel space there is if everyone nearby shows up.
Thresholds
| crowded | under 4 m² per person |
| comfortable | 4–10 m² |
| empty | over 10 m² |
Where this is weak
- Day visitors who do not stay overnight are not counted, so the figure is optimistic on beaches near a large city.
- Confidence is 0.68 and every value goes through human review.
Sources
- OpenStreetMap contributors — ODbL
District character
How noisy or family-friendly a district is, measured by what is actually in it.
Computes: district_noise</code>, <code>district_family
How it works
- Noise is the density of bars, clubs and pubs per square kilometre, plus proximity to major roads.
- Family suitability is the density of playgrounds, pharmacies and supermarkets.
- Both are computed over the same radius so that districts can be compared with each other rather than with an absolute scale.
Where this is weak
- A venue mapped in OpenStreetMap and a venue that is actually open are not the same thing. Seasonal closures are invisible to us.
Sources
- OpenStreetMap contributors — ODbL
Real travel times
How long it actually takes to get somewhere, routed on the road and footpath network rather than measured in a straight line.
Computes: airport_drive_minutes</code>, <code>terminal_to_center_walk</code>, <code>terminal_walkable
How it works
- Driving times use the car profile at free-flow speed; walking times use the foot profile.
- Minutes are rounded up. A reader who plans by our number and arrives early is fine; one who arrives late is not.
- Cruise terminal walkability combines routed time with the presence of footpaths and the elevation change along the way.
Where this is weak
- Free-flow speed ignores traffic. In peak season a transfer can take noticeably longer than the figure we publish.
- Footpath coverage in OpenStreetMap varies by country.
Sources
- OSRM routing engine — BSD
- OpenStreetMap contributors — ODbL
- Copernicus DEM GLO-30 — free with attribution
Shade at solar noon
Whether a beach has natural or built shade when the sun is at its highest in July.
Computes: shade_noon
How it works
- Solar position is computed with the NOAA algorithm, including the equation of time and atmospheric refraction.
- We use solar noon rather than a local clock time: local time depends on how a country handles time zones and daylight saving, while solar noon is an astronomical fact.
- Terrain elevation comes from Copernicus DEM, building heights and levels from OpenStreetMap tags.
- Shadows are projected from terrain and buildings onto the beach polygon and the covered fraction is measured.
Thresholds
| none | under 15 % of the beach in shade |
| partial | 15–50 % |
| full | over 50 % |
Where this is weak
- Tree cover is coarse: a single mapped tree row and a dense pine stand look the same to us.
- Buildings without a height or level tag are assumed to be low, which under-reports shade rather than over-reports it.
Sources
- Copernicus DEM GLO-30 — free with attribution
- OpenStreetMap contributors — ODbL
- NOAA solar position algorithm — public domain
Water entry gradient
How steeply the seabed drops away from the shoreline, expressed as a percentage.
Computes: water_gradient</code>, <code>depth_at_10m
How it works
- We take the beach polygon from OpenStreetMap and compute the normal to the shoreline at its centre.
- Depth is sampled along that normal at 10, 25 and 50 metres from the water line.
- Both normals are tried; the one along which depth increases is the seaward one. A profile that rises is rejected outright — it means the normal points inland.
- The gradient is a least-squares fit through the three samples, not the difference between the endpoints: one anomalous sample should not decide the verdict.
Thresholds
| gentle | under 5 % |
| moderate | 5–12 % |
| steep | over 12 % |
Where this is weak
- The EMODnet grid is roughly 115 metres, and we ask about the first 10 metres of water. The figure is an interpolation, and we publish it with a confidence of 0.72 for that reason.
- An almost flat result usually means all three samples fell into the same grid cell. Those are flagged for human review.
Sources
- EMODnet Bathymetry — free with attribution
- OpenStreetMap contributors — ODbL