A transparent surf forecast tells you the number and the reasoning behind it: the formula that produced the score, the direction each beach faces, and how far off the forecast tends to be. On Peel Watch that means one 0–5 score per spot, per skill level, eight days out, built from a multiplicative formula: 10 × swell quality × wind factor × tide factor × skill fit × daylight, halved and printed to one decimal. Because it multiplies, one dealbreaker sinks the hour. A howling onshore wind or a tide that drains the bank pulls the score toward zero, no matter how good the swell looks. You should also expect to see the forecast's own error published. Our accuracy panel puts average swell-height error at about ±0.1 m (roughly 4 inches), growing to ±0.2 m at five days out, and wind error at ±1–3 knots. What you should not expect is certainty, or a star rating that never explains itself.
What does "showing the working" actually mean?
It means every input to the score is named, and you can see which one moved it.
Most surf apps give you stars. Three stars for Ericeira on Saturday. Why three? Was it the wind, the tide, the size? The rating doesn't say, so you can't argue with it, and you can't learn from it either.
Our score has five factors and a constant. Each factor runs from 0 to 1. Multiply them, scale by 10, halve, and you have a number between 0.0 and 5.0. The bands are fixed:
- 0–1 Not so great
- 1–2 Marginal
- 2–3 Decent
- 3–4 Great
- 4–5 Fantastic
Why multiply instead of add?
Because the water multiplies. If you added factors, perfect swell plus a dead-wrong tide would average out to a respectable middle score. In practice, a reef that needs mid tide and gets low tide is closed, however clean the ondulação (the groundswell). Multiplication lets one zero win the argument, which is what happens when you paddle out.
Why does the same day score differently for different surfers?
Because a 1.5 m day is a different event depending on who is in the water. We score five skill levels separately, each with an ideal breaking-height band and a hard cap. Above the cap, skill fit drops and the score goes with it.
| Level | Ideal breaking height | Hard cap |
|---|---|---|
| L1 Novice | 0.3–0.9 m (about 1–3 ft) | 1.3 m (about 4 ft) |
| L2 | 0.5–1.2 m (about 1.5–4 ft) | 1.8 m (about 6 ft) |
| L3 | 0.8–1.8 m (about 2.5–6 ft) | 2.6 m (about 8.5 ft) |
| L4 | 1–2.6 m (about 3–8.5 ft) | 3.8 m (about 12.5 ft) |
| L5 Expert | 1.3 m+ (about 4 ft+) | No cap |
So the same hour can be a 4 for an intermediate and a 0 for a beginner. That isn't the forecast contradicting itself. It's the forecast refusing to pretend a beginner and an expert want the same thing.
The bands are a modeling choice, not a law of physics. They're our judgment about where each level tends to have a good session, written down so you can disagree with it.
How does a forecast know which way a beach faces?
In our case, we measure it. Each spot's coastline facing comes from OpenStreetMap geometry. On top of that sits a hand-authored swell window: the range of directions the spot can actually receive, with a shadow factor for headlands and islands that block part of it.
Wind gets the same treatment. Each spot has a wind tolerance and, where the geography allows, sheltered wind sectors. That's how we model the nortada, the strong summer north wind on the west coast: a beach tucked behind a headland can stay workable while the next one along is ruffled into chop.
Why neighboring spots get different scores
Neighboring spots share one offshore forecast. What separates them is orientation, seabed and tide preference. Two beaches 2 miles apart can read the same swell and land on very different scores, and the spot page tells you which factor did it.
The coast itself moves
Facings and sandbanks are not permanent. The Agência Portuguesa do Ambiente's COSMO monitoring finds about 50% of mainland Portugal's low sandy coastline, roughly 425 km of 987 km, shows a long-term erosive trend from 1958 to 2023 (APA, Linha de costa em situação de erosão). A beach profile is a snapshot. It needs rechecking.
How accurate is a surf forecast, and how would you know?
You'd know because someone checks it against what happened and publishes the result. We do that on the honesty panel at /en/features. Roughly every 72 hours, a forecast is locked in and compared with the day-of call.
The current figures: average swell-height error about ±0.1 m, ±0.2 m at five days out; average wind error ±1–3 knots depending on lead time.
The practical reading: treat a 0.2 difference in the 0–5 score between two spots as noise. If Spot A shows 3.1 and Spot B shows 2.9 four days out, the model is telling you they're roughly equal, not ranking them.
The buoys are the independent reference
Our forecast is modeled from Open-Meteo data. It is not a buoy reading. Portugal's measured wave data comes from the Navy's Instituto Hidrográfico, whose MONIZEE system runs directional wave buoys, multiparametric buoys, tide gauges and coastal HF radar along the mainland coast, according to its 2023 report. During storm Hermínia in January 2025, those buoys logged the following:
| Buoy (storm Hermínia, January 2025) | Max wave height | Significant height | Source |
|---|---|---|---|
| Leixões oceanic | 15 m | 9.5 m | Instituto Hidrográfico via Região Sul |
| Leixões coastal | 16.2 m | 9 m | Instituto Hidrográfico via Região Sul |
| Nazaré oceanic | 15.6 m | 9.4 m | Instituto Hidrográfico via Região Sul |
Note the gap between maximum and significant height. Any forecast that prints a single "wave height" should tell you which one it means.
Official sources often show more detail than apps do
IPMA's beach page for Costa da Caparica separates total sea height, swell height, wave period and peak period into distinct fields (IPMA, Informação para a praia: Costa da Caparica). That's more granular than many apps, and worth reading alongside any score, including ours.
Measurement method matters too. When the Guinness World Record of 26.21 m at Praia do Norte, Nazaré, was ratified for the October 29, 2020 ride, the WSL measured it from video frames geometrically corrected for camera position and angle (SurferToday). The method was published alongside the number. That's the standard we'd like surf forecasting to meet.
What does a "provisional" spot mean?
It means the model has a profile for the spot but a person hasn't checked it yet. New spots carry a provisional badge on the dashboard. Their size and skill-fit factors are capped as a safety measure, and they are excluded from email alerts until a human reviews the facing, swell window and tide preference.
We'd rather show you an unchecked spot with a warning label than hide it, or show it with false confidence. It's the same logic as the accuracy panel: say what you don't know, in the place people will see it.
A score is not a safety call
No number on our site says a beach is safe. The surf score reads swell, wind, tide and daylight. It does not read rip currents, flags or lifeguard presence.
The swim board works the same way. It ranks beaches 0–10 for calmness, a separate scale from the 0–5 surf score, because a swimmer wants roughly the opposite of a surfer: small, short-period water and little wind. The site states plainly that rips, flags and lifeguards are not in that data. Someone fishing or diving reads it a third way again, mostly for tide state and the calm hour.
For hazards, IPMA is the authority. Its maritime warnings are issued by district. In one red-warning episode, ten mainland districts from Viana do Castelo to Faro were placed under red, with northwest waves of 4 to 5 m forecast on the west coast, building to 7 to 8 m (IPMA via SAPO). Check the current warnings before you go. Then look at the flags when you arrive.
Where can you check all this yourself?
Pick a spot you know well and open its page. You'll see its type, best swell, best wind, best tide, hazard notes, a wetsuit suggestion from modeled water temperature, and a live MEO beachcam link where one exists. Compare our score for tomorrow with what you'd have guessed, then look at the cam in the morning.
If the score and the cam disagree, the accuracy panel at /en/features is where we keep score on ourselves. It's a slightly uncomfortable page to maintain. That's rather the point.