How we calculate the sea score
The score in short
The QualeSpiaggia score is a number from 0 to 100 that sums up how good the sea will be for swimming in front of a specific beach, in a specific time slot. It combines four forecasts (wave height, wind, rain probability and air temperature) and assesses the wind against the beach's orientation, i.e. the direction it faces out to sea. We calculate it for 2,676 coastal beaches in 15 Italian regions, twice a day, with forecasts up to 7 days ahead.
A high score means a calm sea: it's designed for people who want to swim, not for those looking for waves.
- 80–100 · perfect conditions
- 65–79 · good conditions
- 50–64 · choppy sea
- 0–49 · best avoided
How it's calculated
Each component gets a mark from 10 to 100 based on fixed thresholds. The final score is the weighted average of the four marks, rounded to the nearest whole number.
| Component | Weight | Thresholds |
|---|---|---|
| Waves | 40% | up to 0.3 m → 100 · up to 0.8 m → 70 · up to 1.5 m → 40 · above → 10 |
| Wind | 30% | angle between wind and beach orientation: over 135° (offshore) → 100 · over 90° (cross-shore) → 70 · over 45° (nearly onshore) → 40 · up to 45° (onshore) → 100 − 5 × speed in km/h, minimum 10. With wind above 20 km/h capped at 50, above 30 km/h capped at 30 |
| Rain | 20% | probability up to 10% → 100 · up to 30% → 70 · up to 60% → 40 · above → 10 |
| Temperature | 10% | air 25–30 °C → 100 · 22–25 or 30–33 °C → 70 · 18–22 or 33–36 °C → 40 · otherwise → 10 |
Example: 0.5 m waves (70), offshore wind at 12 km/h (100), 5% chance of rain (100), 27 °C (100). The result is 0.4 × 70 + 0.3 × 100 + 0.2 × 100 + 0.1 × 100 = 88: perfect conditions.
Why orientation matters
The same wind can leave one beach flat and make another unswimmable. That's why every beach has an orientation: the azimuth, in degrees, it faces out to sea (0° north, 90° east, 180° south, 270° west).
Example: a south-facing beach (180°) with a wind from the north. The angle difference is 180°: the wind blows from land out to sea, the beach is sheltered and the wind component scores 100. If the same wind came from the south, the difference would be 0°: an onshore wind pushing waves towards the shore, and at 15 km/h the component would drop to 25. Very strong wind is uncomfortable whichever way it blows, which is why above 20 km/h the component never exceeds 50.
Orientation is calculated automatically from the direction of the coastline, comparing OpenStreetMap with the Global Coastal Characteristics dataset: if the two estimates differ by more than 15° we use the latter and flag the beach for review. The 102 beaches of Salento, where the project started, have hand-checked orientations.
Time slots and forecasts
Each day gets two scores: morning, based on the average of the hourly forecasts from 8 to 11, and afternoon, from 13 to 16 (Italian time). Forecasts cover 7 days: beyond that horizon, models are not reliable enough at a local scale, so we don't show them.
Data sources
- Open-Meteo — Forecast API (10 m wind and direction, rain probability, 2 m temperature, UV index) and Marine API (wave height and direction). Licence CC BY 4.0.
- OpenStreetMap — beaches (
natural=beach) and coastline. © OpenStreetMap contributors, ODbL licence. - ISTAT — 2026 municipal boundaries, used to assign municipality, province and region. Licence CC BY 3.0 IT.
- European Environment Agency (EEA) — Bathing Water Directive, 2025 season: quality class (excellent, good, sufficient, poor).
- Global Coastal Characteristics (Athanasiou et al., 2024) — coastline direction and beach orientation. Licence CC BY 4.0.
- EMODnet Geology — coastal and seabed type. Licence CC BY-SA 4.0.
- Marine Regions — IHO Sea Areas, to name the sea at each beach.
- Regional open-data orthophotos — aerial views; provider, year and licence are shown under each image.
- Mapbox Satellite — satellite view where no photos are available. © Mapbox, © Maxar, © OpenStreetMap.
- Wikimedia Commons and Flickr — openly licensed photos; author and licence on the Photo credits page.
Updates
The pipeline runs twice a day, at 6:10 and 14:10 (Italian time): it downloads the new forecasts, recalculates the scores of every beach for the next 7 days and rebuilds the pages. Geographic data (beaches, boundaries, orientation) and the water quality class only change when we update the underlying sources.
Limits
- These are gridded model forecasts, not on-site measurements: in an enclosed bay or behind a headland the actual sea can differ.
- We don't account for currents, jellyfish, seaweed, crowds, temporary swimming bans or local ordinances.
- The EEA class is a seasonal assessment, not a same-day water analysis.
- In bays and on headlands the calculated orientation may be approximate.
- When OpenStreetMap has no official name, the name “Spiaggia di <place>” is descriptive.
The score does not replace lifeguard flags and instructions or local ordinances: on the beach, those come first.
Affiliate links
Some pages (tourist areas, regions and the guides to the main beaches) show a “Things to do” box with links to GetYourGuide. These are affiliate links: if you book an experience, we earn a commission at no extra cost to you. The links do not affect the score or the order of the beaches, are marked as sponsored and do not load any third-party cookies or scripts on our site.
Open data and licence
Scores can be downloaded as JSON. /data/v2/index.json lists every beach with today's score; /data/v2/beach/<slug>.json holds the full beach record with the 7-day forecast (example: torre-dellorso.json).
The data is released under a CC BY 4.0 licence: you can reuse it, including commercially, as long as you credit QualeSpiaggia and the data sources.
How to cite us
Credit “QualeSpiaggia (qualespiaggia.com)” and the data sources. For example:
Sea score: QualeSpiaggia (qualespiaggia.com), CC BY 4.0. Forecasts: Open-Meteo (CC BY 4.0). Beaches: © OpenStreetMap contributors (ODbL).
Questions about the data or found a mistake? Write to hello@qualespiaggia.com.