About TrueSwell
TrueSwell is an independent surf forecast covering 100 spots on every US coast β Atlantic, Gulf, Pacific, Alaska, Hawaii and Puerto Rico. It started as one surfer's pet peeve: forecasts that were confidently wrong and never said so. We build ours from free public data, run it through our own wave model, and grade the result against the buoys that were actually riding the waves. No resold ratings, no black box, no paywall.
Our model Β· graded against NOAA buoys
The surf forecast that keeps score on itself.
Every forecast we make is filed, then graded hours later against the nearest NOAA buoy. We use what we learn to correct the model spot by spot β and we show you the receipts.
How a wave gets from the open ocean to your beach
Physics first. Every swell, one train at a time.
Most forecasts hand you a single deep-water number and a vibe. We take each swell train separately β primary, secondary, wind swell β and run it through the same steps the ocean does.
Read the partitions
Up to three distinct swell trains per hour: height, period, direction. Duplicates the model blend republishes are collapsed, so nothing is counted twice.
Can it reach the beach?
Each spot has a swell window it faces. Energy from behind the point or around the cape is gated before it can inflate the number.
Bend it toward shore
Off-angle swell loses height as it refracts β 45Β° off costs about 15%, near-grazing loses most of it. Snell's law, not a guess.
Kr = β(cos Ξ±β / cos Ξ±_b)Break it
Deep-water height becomes breaking height with a validated breaker formula, tuned so a 1 m, 10-second swell breaks about head-high β the rule every surfer already knows.
H_b β (T Β· HβΒ²)^0.4Add the trains up
Trains combine by energy, so a secondary swell genuinely adds size instead of being decoration. The result is the face-height range you see.
H = β(Ξ£ H_bΒ²)The feedback loop
We grade our own homework. Hourly.
Every forecast hour is filed as a dated promise β "at 9am Thursday the offshore height at this buoy will be 3.2 ft." When Thursday 9am arrives, the buoy's real reading is matched against it. Millions of those pairs, sorted by how far ahead the promise was made, become our measured error.
- Error by lead time β a 6-hour forecast is graded separately from a 6-day one.
- Per spot β Wrightsville's accuracy is never averaged away inside Hawaii's.
- Published β spot by spot on the accuracy page. No forecast company does this.
What the first audit found
The tell: error barely grows with lead time. Chaos would grow fast. A flat line means the misses were systematic β the same offset every day β and systematic error is the kind you can remove.
0β48 h error, fleet-wide
Calibration
Then we fix what the buoys told us.
The audit showed 58 of 78 spots reading consistently low or high against their buoy β by the same amount at every lead time. A bathroom scale that's always 3 lbs heavy doesn't need a new scale; it needs a sticky note. Each spot now carries its own correction, derived from its own buoy, and the grading continues on the corrected model so the next round of corrections is earned, not assumed.
- Per spot, not global β one constant per break, from that break's own history.
- Bounded β a correction can never more than double a small day.
- Re-tuned by season β hurricane swell and summer windswell get their own say.
Conditions, not just size
Wind that knows how big the waves are.
Ten knots onshore turns knee-high into mush and barely textures head-high. Our wind score is relative to the surf it's blowing on β and offshore has a size-dependent sweet spot: light offshore grooms, too much blows you off the wave unless it's big.
| Same wind, different day | 1.5 ft surf | 5 ft surf |
|---|---|---|
| Glassy | 5.5 | 7.8 |
| 5 kn offshore | 5.8 | 8.3 |
| 12 kn onshore | 2.2 blown out | 5.1 bumpy, still worth it |
| 14 kn side-shore | 2.4 | 4.7 |
| 20 kn offshore | 4.0 too much | 8.3 holds up fine |
Scores 0β10. Green is Good (5.5+), blue is Fair (4β5.5), red is Poor. The same three colors mean the same thing on every gauge, chart and pill on the site.
Local knowledge
The model knows about the jetties.
Buoys can't tell you that a NE wind at Masonboro Island is clean β the inlet and both jetties block the chop, and NNEβNE days go hollow while the open beach next door is blown out. Surfers know that. So the model does too: each spot carries its own sheltered wind sectors, swell window and calibration, and the forecasts differ the way the breaks actually do.
14 kn NE wind Β· 3 ft @ 9 s Β· same swell, one inlet apart
| Break | Score | Read |
|---|---|---|
| Masonboro Island | 6.5 | Sheltered (groomed) |
| Wrightsville Beach | 3.5 | Cross-shore (choppy) |
What we won't do
Honesty is the feature.
No 16-day guesses
Wave models have skill to about 10 days. Where the data ends, our chart ends. A confident-looking day 14 is a coin flip in a nice font.
No hiding the fallback
If the upstream model feed is down, the page says so in amber. We never dress up placeholder data as a forecast.
No accounts, no ads, no selling data
One analytics tag to learn which pages help people. That's the whole tracking story, and it's in the privacy policy.
Data sources β all free and public
- Open-Meteo Marine β swell partitions (height, period, direction) and sea temperature, derived from NOAA WaveWatch III & ECMWF wave models.
- Open-Meteo Forecast β wind, air temperature, sky conditions, sunrise & sunset.
- NOAA CO-OPS β tide predictions for each spot's reference station.
- NOAA NDBC buoys β live observations used to grade our forecasts.
- Computed locally β moon phase and first/last light from solar geometry.
Questions, corrections or a spot we should add? Get in touch. Raw verification data for the curious: /api/skill.