TrueSwell

US surf, every coast · our own verified model · live cams

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.

STEP 1

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.

STEP 2

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.

STEP 3

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)
STEP 4

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.4
STEP 5

Add 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

0.51.01.5 ft 0.901.03 day 1day 2day 3days 4–5days 6–10 Mean error vs. buoy, by how far ahead the forecast was made

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

Before calibration 1.23 ft After per-spot calibration 0.86 ft βˆ’31%

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 day1.5 ft surf5 ft surf
Glassy5.57.8
5 kn offshore5.88.3
12 kn onshore2.2 blown out5.1 bumpy, still worth it
14 kn side-shore2.44.7
20 kn offshore4.0 too much8.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

BreakScoreRead
Masonboro Island6.5Sheltered (groomed)
Wrightsville Beach3.5Cross-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.