Built for the friend who drives two hours to a reef pass and hates being disappointed
Read the water before you paddle out.
Swellread turns today's real swell and wind from Open-Meteo, and today's verified tide predictions from NOAA CO-OPS, into one explainable verdict per break: which hours will actually peel, and whether the drive is worth it. Every number that moves the verdict is shown, and every plan you keep is sealed so you can prove later what the water was.
Everything is open source and MIT licensed — engine, data join, integrity chain and the WebGL lab.
Right now at Pago Pago, Tutuila · 07:00 local
61
Worth the drive
Swell
1.44 m
Period
7 s
Wind
9.8 m/s
Tide
0.07 m
above MLLW
Break height
0.86 m
Peel speed
15.2 km/h
Worth the drive61%
Worth the drive. At Pago Pago on this hour the read is 61%. What earns it: peel speed at 15.2 km/h. What costs it: wind quality at 9.5 m/s straight onshore.
Today at Pago Pago, local timelive data
score tide (dashed, MLLW) swell height now
24 hours worth driving for, best at 23:00 local.
Click any hour to open that hour at the break. The selection lives in the URL, so you can send someone the exact slice you are looking at.
What the engine actually does
Six weighted factors, three hard gates, no black box
One deterministic function, called by the page, the REST API and the MCP tools alike. Nothing is re-derived in a component.
Peel speed is tide
Peel speed is shallow-water celerity, c = √(g·d). Drag the tide on any break page and the cross-section re-cuts, the peel re-solves and the shared engine re-runs on the server. That one relationship is the reason a "1.2 m" swell can be perfect at one hour and useless at the next.
Standing up, not just size
Wave power is P = ⅟₁₆ρgHs²Tp, and the height at the take-off comes from Green's law on the reef face, capped by the water you actually have. Size alone never sets the score.
Wind decides it
Wind quality multiplies the angle between where the wind is from and where the swell is from by a speed envelope. Ten degrees of offshore is worth more than any forecast icon.
Plan it, remember how it felt, hand someone else the brief
Job one
Know the hours before you drive
Rank a day, then commit a session with the real conditions frozen into it. Pick a break.
Job two
Log what it felt like and find it again
Write one line about the water. A sentence-embedding model bundled in this repository runs entirely in your browser and retrieves your own past sessions that felt the same. Ride and log.
Job three
Export a brief someone can act on
A shareable page with the exact window, every factor, the conditions table, full attribution and the chain seal. Export a brief.
Where the numbers come from
Two keyless public feeds, attributed honestly, with an offline fallback that says so
liveOpen-Meteo Marine APICC BY 4.0, non-commercial attribution requiredfetched 2026-10-04 18:22 UTC168 hourly rows, swell and wind wave.
liveOpen-Meteo Forecast APICC BY 4.0, non-commercial attribution requiredfetched 2026-10-04 18:22 UTC168 hourly rows, wind and air.
liveNOAA CO-OPS tide predictionsU.S. Government public domainfetched 2026-10-04 18:22 UTC144 hourly predictions, MLLW datum, station 1770000 (Pago Pago, American Samoa).
When every upstream is unreachable the app shows a sealed, dated synthetic profile and labels the snapshot fallback. It never presents sample data as current, and it never substitutes it for anything you created. Where no NOAA tide station is in range for a break, the tide factor is dropped and the remaining weights are renormalised rather than guessing.
Swellread describes the surface of the ocean. It does not know what is happening underneath it, and it cannot see your ability, your fitness or the state of the reef. Use it to decide when, then use your judgement out there. Engine swellread-engine/2026.10.1.