Forecasts and Spots
The previous chapter toured the application’s pages; this one explains what they are telling you — how to read a spot’s forecast, what each forecast field means, how to choose between forecast sources, and how to tell whether the forecast data is current.
Anatomy of a spot page
A spot page gathers everything Burningswell knows about one surf break: what it is doing at this hour, how the next days and the next sixteen look, what the break itself wants, and where nearby is better. You come here to decide whether to go, and when.
Reaching a spot page
A spot page lives at /spots/slug, where slug is the
break’s name in lower case with hyphens between the words, spelled as
its place pages spell it (see Browsing by place): Mundaka is
/spots/mundaka, Playa Laida is /spots/playa-laida.
You reach it from every place that names a break: a row on the home page, a row in ‘Spots’ or a search result (see Browsing and searching spots), a region’s list of breaks, a spot on the forecast map (see The forecast map), a row of another spot page’s ‘Better right now nearby’ card, and a share link someone sent you (see Sharing a spot).
The page needs no account. Two of its controls do: ‘Favourite’ and the session form’s ‘Log session’ button. Signed out, both are links to sign in instead.
What a spot page shows
The page is titled with the break’s name, ‘Mundaka — Burning Swell’. Under the command bar it runs in two columns, the main column and the card column beside it; on a phone the two merge into one (see A spot page at three widths). Top to bottom, the main column holds the hero, ‘Next 16 days’ and ‘Hourly detail’. The card column holds the tide chart, the swell-window card (the map and the break’s own facts), the model agreement, the better breaks nearby, ‘Log a surf here’ and, on some pages, a travel card. The sessions logged here follow: on a tablet across the full width under both columns, on a desktop under ‘Hourly detail’. The page ends on the site footer, which credits the data the page drew, the tide provider among it.
Every time the page prints for the break — in the hero, ‘Next 16 days’, the day panels and the tide chart — is the local time at the break, whatever your own time zone, and the page names that zone once, under the break’s name: ‘Times in CEST’. A spot whose time zone is not on file says ‘Times in UTC — this spot's time zone is not on file’ and prints UTC throughout. A model run’s time is the same for every break, so it stays in UTC and says so: the hero’s foot reads ‘updated hh:mm UTC’, and the error state names the last good run with a ‘Z’ (‘06Z’).
The command bar
A bar across the top carries the trail back up through the places the break belongs to, as links: ‘Europe / Spain / Bizkaia / Mundaka’. A break with no region has no region in its trail. On a desktop the bar also carries the three things you do repeatedly at a spot: ‘☆ Favourite’, ‘Share’ and ‘Log a surf’ (see What you can do on a spot page). On a phone and a tablet the bar is the trail alone.
The hero: one card, one verdict
The hero is the dark card at the top of the main column, and it always describes the present. It gives the country’s flag and the break’s name, then one line of what the break is: its break type, on a desktop the way it faces (‘faces 315° NW’), its region and country, and from a tablet up its catalogued coordinates. The zone note sits under that line.
On the right the hero carries the verdict: a condition word (‘Poor’, ‘Fair’, ‘Good’ or ‘Epic’) and a row of five stars, and on a desktop the best window of the day after the word (‘· best window hh:mm–hh:mm’), the longest run of hours rated like the day’s best. The card is tinted by that word, so the answer is legible before you read a number. The verdict is the same score the rest of the site ranks with (see Stars and the four condition labels).
Under the name the hero gives the forecast hour nearest the present: the significant wave height in large type, the peak period (‘15 s’) and the swell direction as an arrow, a compass point and degrees (‘NW 310°’). A line under them says how clean the sea is — ‘Clean groundswell’ or ‘Crossed swells’ — and how far the swell lies inside or outside the break’s swell window (‘n° inside the swell window’). On a desktop, when the swell was read from a model point off the coast rather than at the break, the line adds how far: ‘sampled n km offshore’.
A row of tiles follows:
- ‘Wind’
The wind speed, and under it the direction and the wind state (‘SSW · offshore’; on a desktop with degrees, ‘SSW 205° · offshore’). The wind state is ‘offshore’, ‘cross’, ‘onshore’ or ‘glassy’, judged against the way the shoreline faces.
- ‘Tide’
The predicted tide height now, whether the water is ‘rising’ or ‘falling’, and the next turn (‘falling · L 10:38’; on a desktop ‘falling · low 10:38 (0.8 m)’); after the day’s last turn, the next is tomorrow’s. A break for which no tide station resolves has no tide tile at all.
- ‘Energy’
From a tablet up: the wave energy in kJ, and the day’s condition word under it.
- ‘Sky’
The sky as a picture and the air temperature, and under them the sky in a word and what the air feels like (‘clear · feels 20°’). Under 1 km of visibility the word gives the visibility instead (‘fog · 0.4 km’); when a thunderstorm is forecast later that day, its hour (‘thunder · 15:00’). On a desktop the tile says since when the sky has been what it is (‘clear since 08:00’) and adds the sea temperature and its date (‘· water 19° · OISST 24 Sep’; see Sea temperature). When the weather model has no forecast for the present hour the tile reads ‘— · not forecast yet’.
- ‘Buoy’
On a desktop, when the nearest buoy within 25 km that measures waves reported a wave height in the last three hours: ‘Buoy station’, the height it measured, and under it the wave period, the time of the measurement in the break’s local time, and how far the buoy sits from the model in view at that hour (‘13 s · 13:20 · −0.1 vs model’). With no such buoy, or no measurement that recent, there is no Buoy tile.
The hero’s foot names the forecast source and its run (‘GFS-Wave · 06Z’) and what the models say together now. When two or more models report for the present hour it counts them against the models switched on and says when the source last updated (‘n of m models reporting · updated hh:mm UTC’); when one reports it says only that (‘NOAA GFS-Wave only — agreement not measured’). When the ensemble in view blends only one wave model, it is that model’s forecast, and the foot says so: it names the model (‘NOAA GFS-Wave · 06Z’) and gives its one-model sentence instead of the count. On a tablet the buoy’s reading takes that place when the buoy has one: ‘Buoy 46268 · 0.8 m · 13 s — 0.2 m over model’.
A break whose swell window Burningswell has not surveyed cannot be scored. Its hero shows ‘—’ where the verdict would be and ‘tide & weather only’ beside it; hovering the dash tells you what survey is missing. The height, the wind, the tide and the sky still fill in, because they are measurements and only the judgement drawn from them is withheld. See When a figure is missing.
The next 16 days
‘Next 16 days’ draws the sixteen local days from today as one chart. Its heights are stacked as one continuous band per partition — each swell train, and the wind sea the local wind raises — each tinted by its period over the sixteen days — under 10 s, 10 to 14 s, and 15 s and more — so you see which swell makes the sea as well as how big it is, and a train whose period lengthens through the fortnight keeps its one colour. The wind sea is short, so it is nearly always the palest band, and the share it takes of the height is the share of the sea that is wind chop rather than swell. A partition that arrives mostly from outside the break’s swell window is hatched. The axis is in metres, marked every half metre while the sea stays under 3 m and every metre above. The ‘Wave height’ and ‘Energy’ tabs switch the chart between the height and the wave energy in kJ, each train’s share stacked on the next.
Under the chart runs the wind, one mark every six hours, coloured by its wind state. An hour with no wind forecast has no mark; the chart never draws a missing wind as calm. Past day seven the forecast is an outlook: the line is dashed and the swell trains fade. Where two or more models report for a day, a grey band gives the spread between them, and the day’s column names the confidence their widest disagreement earns to a screen reader (‘confidence high’); where one model reports there is no band and no confidence word, because a band drawn across a single value would have a width nobody measured. A legend under the chart names the period tints, the hatch, the wind states and the band it draws.
Each day has a column under the chart. From a tablet up it gives the day’s peak height (or its energy, on the ‘Energy’ tab) and period, and on a desktop, through day nine, the sky and the air temperature. On a phone the columns are replaced by a row of day chips, each giving the day, its height and, through day nine, its sky, over a bar tinted by the day’s condition word.
A day is the break’s own calendar day, from local midnight to local midnight: day 0 is today at the break, and a day across a clock change lasts 23 or 25 hours.
Picking a day
‘Hourly detail’ holds one day panel for each of the sixteen days, headed by its day (‘Today’, ‘Sat 26 Sep’), and shows one at a time. Before today it also holds a panel for each earlier day the forecast store still has figures for, up to a week back; the chips and the chart’s columns start at today, so a past day is reached only by stepping back from it. To choose the day it shows:
- click a day’s column in ‘Next 16 days’, or on a phone tap its chip;
- press ‘‹’ or ‘›’ beside the chart’s tabs, which stop at the earliest past day (today, when there is none) and the last day;
- press ← or → (the keys do nothing while you type in a field or scrub the tide chart);
- swipe the day panels sideways, or move the mouse across the chart: the day under the pointer opens as the pointer moves;
- open an address ending in
#day-n, where n runs from 0 (today) to 15:/spots/mundaka#day-3opens the page on the day three days from today, and/spots/mundaka#day--2on the day before yesterday when that day is held.
With scripting turned off every day panel shows, one after another in day order, and the chips are links to them.
Hourly detail
‘Hourly detail’ holds the day panels described under Picking a day, and on its title line the model menu, which names the forecast source the panels read. It lists only the sources that reported at this break, ‘Ensemble’ first: on a phone and a tablet it is a button naming the source in view that opens the list, on a desktop a row of tabs. A break with one source shows its name (‘NOAA GFS-Wave’) and no control. Picking a source redraws the hero, ‘Next 16 days’ and the panels together from that source, so the headline and the hours never come from two models, and keeps the day you were reading; on a past day the new source’s history does not reach, it opens that source’s earliest day instead (today, when it has no history). Your browser remembers the source you picked, and the next spot page where it reported opens on it; the choice is not saved to your account, and another reader is not affected.
Each panel opens with its day line: the day (‘Today 26 September’, ‘Sunday 27 September’; on a phone the month is left off, ‘Sunday 27’), its stars and verdict word, the day’s best window and its light (‘best 07:00–10:00 · light 07:58–20:07’), and through day nine the sky, the air and the sea temperature at the right. Under it come the day’s hours, three hours apart on the break’s clock, with one hour block each; the panels look the same at every width. On a day the source publishes a step every hour the blocks are 00, 03, 06 and so on to 21, each holding the step nearest its hour, up to an hour and a half either side. On a day it publishes a step every three hours every step is shown at its own local time, so a break two hours ahead of UTC reads 02, 05 and so on to 23, eight blocks. An hour with no step that close has no block. Today’s panel starts at 00:00, the hours already past included, and the block of the present reads ‘now’. A past day is drawn by the same rules from the figures the earlier runs gave for it, and its day line gives what those figures support: the stars, the verdict, the best window and the light, but no sky, air or sea temperature. A block contains these figures:
- The hour
‘06’; in a zone whose offset is not a whole number of hours, the minutes too (‘05:30’). The block of the present hour reads ‘now’ (‘agora’, ‘ahora’, ‘maintenant’) and is tinted; a word longer than ‘now’ is printed small, beside the stars from a tablet up and on a line of its own on a phone. The hours between last light and first light are shaded.
- The rating
The stars and the verdict word, or ‘not rated’ for a break whose shoreline has not been surveyed (hovering it says why) and for an hour no model gives a wind for.
- The sea
The height, the period and the swell direction; under them the swell trains the model resolves, largest first (‘1.4 + 0.5 m’); and the tide with an arrow for rising or falling.
- The wind
Its state against the shoreline and its speed, the gust, and the sky with the air temperature, and the rain when it reaches 0.2 mm/h.
- The power
Along the foot of the block, a bar and the wave power in kJ per metre of crest; the bar is full at 2000.
Every figure explains itself: point at it, or move to it with TAB, and a short note says what it is — ‘Hour — local time at the break, like every time on this page.’ ESC closes the note.
Days seven to fifteen are drawn the same way, from the same source. The sea, the wind, the tide, the rating and the power run to day sixteen; the sky, the air, the rain and the gust come from the atmospheric model, which stops ten days after its run, so past that point they are drawn faint with a long dash, which means not forecast this far out. A short dash, ‘–’, is a figure missing inside that range. No figure is ever interpolated: an hour with no published step near it has no block. Every width shows the same blocks, and from 1280 pixels the day after the one you picked stands beside it.
When the page has no forecast to show, it names the spot as the hero would — its flag and name, then ‘Reef · faces 175° S · Victoria, Australia’ — and says why in place of the hero: ‘No wave model covers this spot yet’, with a link to the nearby breaks that have one; ‘Forecast not in yet’ before the first run; or, when the latest run failed, ‘Forecast is temporarily unavailable’ naming the last good run and its age — ‘The last good run was 06Z, 4 h ago.’ — with a ‘Retry’ link. While a source is being fetched, a grey outline of the hero stands in its place.
A page left open keeps itself current: when a new model run is ready, it fetches the source you are reading again and redraws the hero, the chart and the panels, on the day you were reading. It never polls.
When a figure was read from a model point off the coast, lines under the panels say so and how far, the wind first: ‘Wind read from the nearest model point, n km direction --- that is not the wind at the beach.’, then the swell: ‘Swell read from the nearest model point, n km direction. Swell travels, so it still holds here.’
Two more lines can follow them, at the swell line’s quiet volume, when the source you are reading was rated with something other than its own full reading (see What the stars are rated with). Every source is rated with the GFS wind at the break; one whose own wind is not GFS’s — any model but NOAA GFS-Wave and the ensemble — says so: ‘Wind from GFS: this model's stars are rated with the GFS wind at the spot, not a wind of its own.’ A source that does not split the sea into separate swells says: ‘Rated on the total sea: this model does not split the sea into swells, so its stars read the combined sea.’
The tide chart
Where a tide station resolves for the break, the ‘Tide’ card draws the spot’s local day of tide, 00:00 to 24:00 in the spot’s own time, with dashed marks at 06, 12 and 18, a line at the present, and the curve’s area filled under it. The day is the spot’s calendar day, so on the day the clocks go back it holds 25 hours and on the day they go forward 23.
The card’s header says what the curve is:
- ‘EOT20 prediction’
A prediction from the EOT20 open-ocean tide model, the tide everywhere a harbour station does not reach. Heights are measured from mean sea level: the card says ‘Heights vs mean sea level’.
- ‘NOAA prediction’
A prediction from a NOAA harbour station, near a US break. Heights are measured from the station’s mean lower low water: the card says ‘Heights vs MLLW’.
- ‘NOAA gauge, observed’
A NOAA harbour station that also measures the water. The measured level is drawn over the prediction, with a key reading ‘Predicted’ and ‘Observed’ and the difference between the two at the latest reading as ‘Surge’.
Chips under the chart give the water now, ‘now 1.3 m ↓’ (the arrow says whether it is rising or falling), then each low and high water of the day with its local time and its height: ‘L 10:38 · 0.8’, ‘H 16:52 · 3.8’. The last line is the break’s optimal tide, ‘Optimal: low.’, the same range the break’s facts give under ‘Optimal tide’.
To read the height at any hour, scrub the chart: move the pointer across it, drag a finger along it, or focus it with TAB and step with LEFT and RIGHT (ESC lets go). While you scrub, the header reads the hour, the height and whether the water is rising or falling, ‘14:00 · 2.4 m ↑’, and a marker follows the curve. While the chart has the focus, LEFT and RIGHT move through the hours and leave the day you are looking at alone. On a phone a sideways drag scrubs and an upward or downward one still scrolls the page. Heights follow your units setting.
Sessions logged here
‘Sessions logged here’ shows the last three sessions surfers have logged at the break and chosen to share. Each gives when it was, on the break’s own clock (‘Today 07:20’, ‘19 Aug 08:05’), the surfer’s own rating as stars (four lit for a 4/5), its title and its notes in quotation marks, and a line comparing the height the surfer saw with the height forecast for that hour (‘you: chest (1.5 m) · we: 1.8 m’). It names nobody and links nowhere. A session logged for an hour no forecast covers shows the surfer’s half alone; the page never borrows the forecast of a different hour to fill the gap.
Sessions are private unless the surfer shares them, so most breaks show none, and the empty card says why: ‘No public sessions have been logged here. Sessions are private unless the surfer chooses to share them, so a quiet list is not a quiet break.’
The session form
‘Log a surf here’, in the card column, opens the log page at this break (see Logging a surf). With scripting off in the browser the form ‘I surfed here’ under it logs a session here instead (see What you can do on a spot page).
The map on a spot page
The ‘Swell window’ card opens on a map of about forty kilometres around the break, north up, drawn as the forecast map draws its ground (see The forecast map): warm land and water, the forecast over the sea up to the coast, a white coastline and the wind drawn as moving streaks. Over the map it draws the break’s swell window, the arc of directions a swell must come from to reach the break, as a white sector with its two edges in degrees and a dotted line along the direction the break faces. The break sits off the middle of the map, away from the sea its window faces, so the window opens across the map; it is marked by a pin with its name. Today’s two largest swells are arrows pointing from where each comes from: a heavy one for the primary swell and a light, dashed one for the secondary. A line in the map’s lower left credits the map data and the model run.
The badge in the card’s header says where the primary swell arrives, in one phrase that reads the same at every width: ‘In the window’, ‘Just off the window’ or ‘Outside the window’. Under the map’s tools one line per swell, drawn with the arrow it names, gives its figures (‘1.7 m · 13 s · WNW 295°’) with the same phrase for the primary and ‘secondary’ for the other, and a sentence says whether the two swells run together or cross, how many degrees apart they are, and the window’s extent: ‘Clean --- 25° between the two swells. Window WNW–NNW, 285°–345°.’
A break whose window is not on file says ‘Not on file’ in the badge. The arrows still show where today’s swell comes from, no sector is drawn and no swell is said to be in or out of the window.
Under the map are its tools. The first line names the layer on the map beside its colours, and the hour shown, in the break’s own time (‘Sun 4 · 17:00’). The map opens on ‘Wave height’ with the wind moving over it; the layer’s name opens a menu of the layers the forecast map offers — ‘Wave height’, ‘Peak period’ and ‘Wind’ — each with its range and colours, and a ‘Wind flow’ switch that turns the moving wind on or off. A layer picked there changes this card only. The play button plays the forecast as a film, the field flowing from one forecast hour into the next and the wind moving over it; pressed again it pauses. Behind the slider the break’s own forecast for the layer is drawn as a line coloured like the map, so the next swell shows before you press play, and a dot under the slider marks now. The key under it gives the layer’s colours with their numbers, and pointing at the map shows the value under the pointer. ‘Open the full map’ opens the forecast map on the card’s layer and hour, centred on the break. The map itself does not pan or zoom; the full map is the place to explore.
The map needs WebGL. Where the browser cannot draw it, the swell window, the arrows and the pin are still drawn on a plain ground, and a sentence with a link explaining how to enable WebGL takes the tools’ place; everything else on the page keeps working. The map and its film load only when the card comes near the screen, so they never slow the rest of the page down.
The break’s own facts
Under the swells, the card lists what the catalogue records about the break itself, as against what the models say it is doing. A fact the catalogue does not hold reads ‘—’.
- ‘Type’
How the wave breaks: ‘Beach’, ‘Reef’, ‘Point’, ‘Rivermouth’, ‘Slab’ or ‘Jetty’.
- ‘Faces’
The direction the break faces, in degrees and as a compass point: ‘315° NW’.
- ‘Optimal period’
The shortest peak period that works at the break: ‘≥ 12 s’.
- ‘Optimal tide’
The tide the break wants, described below.
- ‘Level’
Who the break suits: ‘Beginner’, ‘Intermediate’, ‘Advanced’ or ‘Expert’. It follows from the sizes the break works in and what it breaks over, a reef or rock bottom and bigger waves asking more of a surfer, unless the catalogue records the level for that break outright.
- ‘Coordinates’
The break’s own position as the catalogue stores it, latitude first: ‘43.407, −2.698’.
The tide line is a range and, where it matters, a movement. The range runs over three bands — low, mid and high — and reads as the band or the span of bands the break works in: ‘low’, ‘mid to high’. A break that works through the whole range says ‘any’. The movement is whether the break wants the water coming in or going out, and it follows the range when it is part of the finding: ‘low to mid, rising’. A break that works on either movement adds nothing.
Note
‘any’ and ‘any, rising’ are not the same answer. A break can work at every tide and still work only on the push, and where that is what was found, that is what the row says.
Most spots have no tide survey, and their row also reads ‘any’: the page does not tell a break that works through the range from one nobody has surveyed. Where the catalogue does carry guidance, the row says what was recorded.
Model agreement
The ‘Model agreement’ card says what each forecast model gives for the present hour and how far it can be trusted here.
Each model that reports has a row: its name, its height with the unit, and a bar. Every bar of the card, the buoy’s included, is drawn on one scale that runs from zero to the next half metre above the card’s highest height (the next even number of feet when you read feet), so equal heights draw equal bars and a longer bar is always a bigger sea. The colour, never the length, says how far a model sits from the models’ middle value: green when it is within a fifth of it, amber within 45 per cent, and a warmer brown beyond. The nearest wave buoy’s measurement, when it reported in the last three hours, is a row of its own in the sea’s colour (‘Buoy station’): a measurement, never counted into the agreement.
Where two or more models report, a badge in the card’s head says how well they agree: ‘High’, ‘Medium’ or ‘Low’. Where one reports there is no badge and no colour, and the card says so: ‘NOAA GFS-Wave only — agreement not measured’. Where none has, ‘No model has reported for this break yet.’
The card’s last line is how the model in view has performed at this break over the last 30 days, and the buoy it was measured against: ‘30-day skill at this spot: bias −0.1 m, RMSE 0.24 m. Measured against buoy 46268 over 30 days.’ For ‘Ensemble’ the figures are its models’ pooled, each weighted by how many observations it was measured on. The scores are computed once a night, each model’s forecast for an hour set against the reading closest to that hour, within half an hour either side, of the nearest buoy that measures waves: one with a wave height in the last 30 days. A coastal station that reports only wind and water temperature is passed over, by the scoring and by the card alike, so the buoy the line names is the one whose measurement the card and the Buoy tile draw. A score computed before Burningswell recorded which buoy it came from names none until the next night’s scoring: ‘Measured against a buoy within 25 km over 30 days.’ Most breaks have no buoy close enough, and then the line says so: ‘No buoy within 25 km, so agreement can’t be scored here.’ Where a buoy is in range but no model has been scored against it yet, ‘Buoy 46268 is within 25 km, but no skill has been scored against it yet.’ The card never prints a bias of zero it did not measure.
The buoy measurements are the NOAA National Data Buoy Center’s, in the public domain. Burningswell reads every buoy within 25 km of a break once an hour and keeps each measurement for 45 days.
Better right now nearby
‘Better right now nearby’ lists up to three rated breaks within 30 km, best first on their conditions now, each as the row every list of spots draws: the flag and the name, the stars and the condition word (the narrow card leaves the break type and the level to the spot’s own page), the region and country with the distance from this break (‘Bizkaia, Spain · 9.2 km away’), the air and sea temperatures, the height, period and direction, and the wind with its speed. Each row links to its own spot page. The break you are looking at is never in its own list, and a break that cannot be scored is left out rather than placed last. The card’s head names the radius it looked in (‘within 30 km’). When no neighbour could be scored, it says ‘No neighbouring break inside the radius could be scored right now.’
Plan your trip
Some spot pages end the card column with a small ‘Plan your trip’ card. It is a secondary part of the page, never set beside the forecast. Its head names the nearest airport and how far it is from the break — ‘nearest airport code (n km away)’ — and it offers two links under a ‘Flights’ and a ‘Hotels’ tab: ‘Find flights to airport (code)’, and ‘Find places to stay in break, region, country’. The tabs switch between the two without a request to the site.
The links are affiliate links: Burningswell earns a commission on a booking made through them, and the card says so under the links. A link opens a flight search or a hotel search on the booking site in a new tab. The page runs no script of the booking site and carries no advertisement; Burningswell counts the click, and the link tells the booking site only which spot it came from.
The card appears only when the nearest airport lies at least 150 km from the break and within 1,000 km of it: a break with an airport closer than that is one people reach without planning a trip, and a break with no airport in range has none to name. Most spot pages have no card, and its absence says nothing about the break.
When there is no forecast
A break with no forecast keeps its command bar, its map and its facts, and replaces the hero and everything forecast-driven under it with the break’s name, its break type and bearing (‘reef · 280.0° bearing’) and a panel saying which of three things is true, because only two of them are fixed by coming back later:
- ‘Forecast not in yet’
No model run has finished. Conditions appear as soon as the first one lands.
- ‘Latest model run failed’
The most recent run did not complete; the next scheduled one fills the gap.
- ‘This spot is outside the model grid’
The run completed and covered other spots but produced nothing for this location, which falls outside the sea grid the wave model samples. Waiting will not change that.
Where the page cannot tell which, it says ‘No forecast available’.
The last case is rare. A wave model computes on a grid of sea points and treats land as blank, and a surf break sits on the coastline, so the grid point closest to the break is often inland of it. Rather than call such a spot ungridded, Burningswell reads the forecast from the nearest sea point instead (see Where the numbers come from). ‘Outside the model grid’ means there was no usable sea point near the break at all.
What you can do on a spot page
- ‘☆ Favourite’
Signed in, adds the break to the spots you follow and turns into ‘★ Following’; pressing it again lets the break go. The choice belongs to your account, so every device you sign in on shows it, and the breaks you follow lead the home page (see The home page). Signed out, it is a link to sign in.
- ‘Share’
Opens
/sharefor this break, where you copy a single-use link (see Sharing a spot). It needs an account.- ‘Log a surf’ and ‘Log a surf here’
Open the log page at this break,
/sessions/new?spot=<slug>(see Logging a surf): ‘Log a surf’ in the command bar on a desktop, ‘Log a surf here’ in the card column. With scripting off in the browser the session form under the button, ‘I surfed here’, shows instead. The form takes a ‘Rating 1–5’, the height you saw — one tap on ‘Waist’, ‘Stomach’, ‘Chest’, ‘Head’, ‘Overhead’ or ‘2×OH’, or a number in the field beside ‘or’ — and ‘Notes’. Above the buttons it reminds you what was forecast: ‘How big was it really? We forecast 3.0 m right now’. Signed in, ‘Log session’ saves it among your sessions (see Your sessions and Surf Life); signed out, the button reads ‘Sign in to log a session’.- Day columns, day chips, ‘‹’ and ‘›’
Show that day’s panel in ‘Hourly detail’; so do ← and →, a swipe, and an address ending in
#day-n(Picking a day, above). The column or chip of the day shown is highlighted.- ‘Wave height’ and ‘Energy’
Switch ‘Next 16 days’ between the wave height and the wave energy.
- The model menu
Switch the hero, the chart and the day panels together to that forecast source, so the headline and the hours never come from two different models, and keep the day shown. Your browser remembers the source you last switched to, and every spot page where that source reported opens on it; the choice is not saved to your account, so another browser or device starts from the default. An address ending in
?source=sourceopens the page on that source whatever your browser remembers, which is also how to pick one with scripting turned off.- Map chips, play and slider
Switch the map to another field, play the forecast hours as an animation, or step through them. Hover the map to read the value under the pointer.
- ‘Flights’ and ‘Hotels’
Switch the travel card between its two links.
The page is rendered on the server and is complete when it arrives. With scripting turned off, every day panel shows in day order and the chips are links to them, the session form is open, and ‘Favourite’ and ‘Log session’ still work: they post as ordinary forms, and the page comes back showing the new state. What needs scripting is absent without it: showing one day at a time, the ‘Energy’ view of the chart, the one-tap height buttons on the session form (the numeric field carries the same information), and the map.
Settings that change a spot page
- Units
‘Metric’, ‘Imperial’ or ‘UK’ sets the heights (metres or feet), the wind (km/h or mph), the temperatures and the distances (km or miles) on the page, the model agreement’s bias and error included. The tide chart’s heights stay in metres, and the wave power stays in kJ per metre of crest, whatever you choose. Set it with the units toggle in the header or under ‘Preferences’ (see Your account).
- Language
The page reads in English, Español, Français or Português. Break names, model names, compass points and units stay as they are. Choose it in the footer, the ‘More’ menu or ‘Preferences’ (see Your account).
- Theme
‘System’, ‘Light’ or ‘Dark’ changes the page’s colours and nothing else (see Your account).
- Location
A spot page never asks where you are and never uses your position: it is about the break, and ‘Better right now nearby’ ranks around the break, not around you. Your ‘Location’ choice does not change it (see Your account).
A spot page at three widths
- Phone (390)
One column, in this order: the hero, ‘Next 16 days’ with its day chips, ‘Hourly detail’, the tide chart, the swell-window card, ‘Model agreement’, ‘Better right now nearby’, ‘Sessions logged here’, ‘Log a surf here’ and, where there is one, the travel card. The command bar is the trail alone, and the page ends on the tab bar.
- Tablet (834)
From 720 pixels the card column, 300 pixels wide, moves beside the main column, and ‘Sessions logged here’ runs across the full width under both columns, three sessions side by side. The chart’s day columns replace the chips and give each day’s height and period. The hero adds the coordinates, the period’s word and the Energy tile. The day panel holds the same three-hourly blocks as on a phone, and nothing on the page scrolls sideways.
- Desktop (1440)
From 1280 pixels the card column is 348 pixels wide, ‘Sessions logged here’ moves back under ‘Hourly detail’ in the main column, and the command bar carries its three actions. The hero’s place line gives the way the break faces in place of the coordinates, and the hero adds the best window, the wind’s degrees, the next tide turn in full, and the sky’s run and the sea temperature, and each day column adds the day’s sky and air through day nine. ‘Hourly detail’ stands the picked day and the next side by side, and the model menu becomes a row of tabs.
A worked example: Mundaka
Mundaka is a left-hand rivermouth in Bizkaia, in the Basque Country of
Spain. Open /spots/mundaka on a desktop and the command bar
reads:
Europe / Spain / Bizkaia / Mundaka
☆ Favourite Share Log a surf
The facts in the swell-window card come from the catalogue and read the same every day:
Type Rivermouth
Faces 315° NW
Optimal period ≥ 10 s
Optimal tide low
Level Expert
Coordinates 43.408, −2.701
Mundaka wants a north-westerly swell of ten seconds or longer, on the low tide. For an hour forecast at 3.0 m and 15 s from 310°, with a 9 km/h wind blowing offshore, the hero names Mundaka over ‘rivermouth · Bizkaia · Spain’ and ‘Times in CEST’, gives ‘Epic’ and its stars, ‘3.0 m’ over ‘15 s · NW 310°’, and a ‘Wind’ tile of ‘9 km/h’ with ‘offshore’ under it.
The swell sits inside the window, so the ‘Swell window’ card’s badge reads ‘In the window’, and its line gives the primary swell train alone, ‘2.8 m · 15 s · NW 310°’, where the hero’s 3.0 m is the height of the whole sea. With one model switched on, ‘Next 16 days’ draws no spread band and continues past day seven as a dashed line, and ‘Model agreement’ and the hero’s foot say ‘NOAA GFS-Wave only — agreement not measured’. No buoy lies within 25 km of Mundaka, so the card ends on ‘No buoy within 25 km, so agreement can’t be scored here.’ Bilbao’s airport is close to Mundaka, so its page carries no ‘Plan your trip’ card.
See also
See Browsing by place, and The forecast map, for the pages that lead here, Sharing a spot, for the share link, and Your sessions and Surf Life, for the sessions you log. See Reading a forecast, Stars and the four condition labels, and When a figure is missing, for how to read what the page shows, and Choosing a forecast source, for the model menu. The developer guide describes how the page is built (see The Web UI for developers in Burningswell Developer Guide) and how its map draws a field (see The spot locator overlay for developers in Burningswell Developer Guide).
Reading a forecast
A surf forecast answers two questions: how big and clean is the swell, and what is the wind doing to it?
The headline figure is the significant wave height — a measure of the typical larger waves in the sea state, rather than the single biggest set — paired with the wave period, the seconds between crests. Longer periods carry more energy and tend to make better-organised surf than short-period chop of the same height. A direction says where the swell comes from, which governs whether it reaches a given break at all.
A note on where the numbers come from. The models compute on a grid, typically a quarter of a degree across — roughly 25 km — and the forecast for a break is read from the grid point nearest to it. When the break’s own grid square is land, the reading comes from the closest sea square instead. A surf break sits on the coastline by definition, so this is the ordinary case and not the exception: about half the spots in the catalogue are read from a neighbouring square, at distances reaching just over 40 km in the worst case.
The page tells you when that has happened, and it treats the two kinds of figure differently, because the same offset means two different things. Under the day panels a quiet footnote gives the swell’s origin — ‘Swell read from the nearest model point, 17 km NNW’ — and says it still holds: height, period and direction are set out in deep water and change little over that distance. The wind gets a louder note of its own under the day panels, before the swell’s, because wind a few tens of kilometres offshore is genuinely not the wind on the beach, and local effects such as a morning land breeze or a headland shadow will not appear in it. That note appears only when the wind came from a wave model’s square: the GFS wind the page normally shows and rates with is read at the break and needs none. A blended source has no single direction to report and gives a radius instead — ‘up to 22 km’. Both distances follow your chosen units, so they read in miles under the imperial and UK presets.
When the reading did come from the break’s own grid square, the page says nothing at all. Silence there is the claim, not an omission.
A wave model is read on the side of the break the waves come from. Where a break’s shoreline has been surveyed, the sea square chosen is one in front of the break, no more than 90° either side of the way it faces, even when a square behind it is nearer: on a small island or round a headland the nearest sea can be the water on the far side, with a different swell. Only when no sea square in front lies close enough is the forecast read from one behind. For a break the grid describes badly, an operator can give the spot a forecast point, a position in open water that the wave models are read at instead (see The forecast point for developers in Burningswell Developer Guide); the distance the page reports is still measured from the break. The atmospheric model’s wind, sky and air are read at the break itself.
Wind is reported as a speed and a direction and summarised in one word on every spot row. An offshore wind, blowing from the land out to sea, grooms the wave face and is the one you want; an onshore wind flattens and disorders it; cross-shore sits in between; and glassy means next to no wind at all — clean, still conditions.
On a region page each spot card carries a seven-day energy strip: taller bars mean more swell energy that day, so you can pick out the good days at a glance before opening the full forecast.
Stars and the four condition labels
Wherever Burningswell judges a break — a spot card, a spot page, the coloured dots on a region’s map, the ‘Best right now’ card on a place page — it says so twice, as stars and as a word.
The stars are a rating from zero to five, in half stars, drawn in the colour of the word; the figure itself is not printed beside them, and a screen reader reads it out (‘4 of 5’). The word after them is one of four: ‘poor’, ‘fair’, ‘good’, ‘epic’, printed with a capital (‘Epic’). The word is not a second opinion. It names which stretch of the same scale the stars fall in, and nothing else:
| Word | Stars |
|---|---|
| ‘poor’ | below 2 |
| ‘fair’ | 2 up to 3 |
| ‘good’ | 3 up to 4 |
| ‘epic’ | 4 and above |
A score sitting exactly on a boundary takes the better word: 3 stars reads ‘good’, not ‘fair’. And the number is always rounded down to the half star below rather than to the nearest one, so the stars you see and the word beside them can never disagree — a break shown with four stars is never labelled ‘good’.
There is no fifth word for a break we cannot judge. An unrated spot has no stars and no label at all: it shows an em dash, ‘not rated’ or ‘listed, never scored’, never zero stars, and it is still listed (see When a figure is missing). ‘poor’ is a verdict, and we do not pass one on a break we have not surveyed.
These four words mean the same thing on every surface, because there is only one set of boundaries behind them. A spot cannot read ‘good’ on its own page and ‘fair’ on the region page you reached it from.
What the stars are rated with
The stars for an hour weigh the swell reaching the break against its swell window, the wind against the way the shore faces, and the tide.
The wind is the wind at the break: the GFS atmospheric model’s wind at the break, from its forecast hour nearest the one rated and no more than 90 minutes from it. Up to day ten every wave model is rated with that same wind, so two models that disagree about the stars disagree about the sea, not the wind. Where GFS gives no wind — past day ten, where the atmospheric model stops — the hour is rated with the wave model’s own wind, or with NOAA GFS-Wave’s for a model that has none. The wind an hour block shows is always the wind it was rated with. An hour with no wind from any of them is ‘not rated’: a missing wind is not a calm one, and a calm is the best wind a break can have.
Some models give only the total sea: the wind sea and every swell train in one height, never split into separate swells. Rated as it stands, that height would count as one clean swell, so the stars count only part of it — about 40% of its energy, which is about two thirds of the height — and a model like that is rated more conservatively than one that splits the sea. The height it shows is not reduced.
When the source you are reading was rated with the GFS wind rather than a wind of its own, or on the total sea, the spot page says so in a line under its day panels (see Anatomy of a spot page).
Sea temperature
Beside a spot’s air temperature, after a small wave mark, is the temperature of the sea: ‘18°’, in your units. It is not a forecast. It is a measurement: NOAA’s daily sea-surface temperature analysis (OISST v2.1), built from satellites, ships and buoys, for the patch of open sea nearest the break. Hover it, or let a screen reader read it, and it names the day it describes: ‘OISST 24 Sep’. The sea changes slowly, so the same figure stands beside every day up to the tenth; beside a later day it still names the day it was measured, never the day it stands beside.
NOAA publishes each day’s analysis twice: a preliminary one about a day later, and a final one about two weeks later that replaces it. A figure from a preliminary analysis says so: ‘OISST 25 Sep, preliminary’.
A dash in its place means we have no recent measurement for that break: none at all, or none from the last five days. We would rather show nothing than a week-old temperature. We never show the air temperature in its place.
The patch of sea is a square about 25km across, and a break whose own square is land takes the nearest one that is sea, up to about 55km away. A break inside an estuary or a bay, such as Mundaka, therefore reads the open sea outside it, which can be a degree or two from the water in the bay itself. Pages that show a sea temperature credit NOAA OISST in their footer.
When a figure is missing
Not every figure can be given for every break at every hour, and the page distinguishes the reasons rather than printing the same shrug everywhere.
A short dash, ‘–’, in an hour block is a figure the source did not give for that hour. An hour block lists only the swell trains that exist, so a missing second or third train is not a gap but a reading. ‘n/a’ marks a hero figure we do not hold.
When a figure is absent for a reason that holds at every hour, pointing at the empty figure says why. There are two common cases:
- Tide
Tides are predicted worldwide from a global harmonic model, with United States breaks upgraded to their nearest NOAA harbour station where one is close enough. Where no station resolves for a particular break the page has no Tide card and no tide tile, and an hour block’s empty tide figure says why when you point at it; the page draws no tide curve rather than a plausible-looking one.
- Rating and Wind state
Both need to know which way the shore faces, and most breaks in the catalogue have not been surveyed for that yet. Where the orientation is unknown the hero shows ‘—’ and ‘tide & weather only’, each hour block reads ‘not rated’, and the wind is reported as a speed and direction without being called onshore or offshore. This is deliberate: a rating computed against a guessed orientation would look exactly like a real one. Note that ‘not rated’ and a zero-star rating are different claims — the first says we are not judging the break, the second would say we judged it and found it poor.
An hour for which no model gives a wind reads ‘not rated’ too, at a surveyed break as much as at any other: the stars need a wind, and we do not stand a calm in for a missing one (see What the stars are rated with).
Each day panel is headed by its day and holds only the steps the source published, sixteen days ahead for the global wave model. Today’s panel can therefore begin part-way through the day: a run issued at 06:00 UTC is read from its first step, and the earlier hours belonged to the previous run and have been superseded by this one. They are not backfilled from another source, which would mix a stale forecast into a current one.
Forecast fields
Beneath the summaries, each forecast is built from seventeen fields. The
field catalogue at /weather/variables lists them, each with its
unit and a sentence saying what it measures, and each with a page of its
own (see The field catalogue). They fall into four groups:
- Wave
The overall sea state: the significant wave height, the peak period (the period carrying the most energy), and the mean wave direction.
- Swell partitions
The sea state split into as many as three separate swell trains, each with its own height, period, and direction. Partitioning separates, for instance, a long-period groundswell from a distant storm from a shorter local wind-swell riding on top of it — often the difference between a session worth the drive and a wasted trip.
A step may show fewer than three trains, or none beyond the primary, and that is a real answer rather than missing data: the model reports a second or third train only where one exists, and every train shown for a spot is read from the same model grid point as that spot’s overall sea state. A train the current model run no longer sees is dropped rather than carried over from the previous run.
- Wind sea
The part of the sea the local wind is raising now, with its own height, period and direction, apart from the swell trains. It is short-period chop, and it is part of the overall sea state: the swell trains and the wind sea together make the significant wave height. Of the sources only NOAA GFS-Wave and Med-WAV carry it.
- Wind
Wind speed and wind direction — the figures behind the offshore/onshore read described above. A wave model’s wind is read at its sea square; the wind a spot’s hours are rated with is the GFS atmospheric model’s at the break (see What the stars are rated with).
Not every source carries every field. The catalogue’s matrix, ‘Who carries what’, shows which source carries which, and choosing a source under ‘carried by’ fades the fields it does not carry (see The field catalogue).
The reference page is /weather/variables, headed
‘Variables’. It is open to everyone, signed in or not. It draws
one card per field — the field’s short name, its GRIB code, what it
measures and its unit, its group, and how many of the sources carry it
— and under the cards the ‘Coverage matrix’, with a row per
field and a column per source, marking which source carries which
field. Unlike the rest of the forecast, the page is a fixed catalogue:
it reads no forecast run, so it looks the same whether or not a run has
arrived.
Each card opens that field’s own page, /weather/variables/name,
where name is the short name on the card, such as hs for
the significant wave height: /weather/variables/hs. The page
shows the field on a map drawn from a real run, with the run pick and
the slider under it, the field’s facts, and, under ‘Where it comes
from’, a row per model that carries it (see The field page). An
address naming no field says so plainly — ‘No field is stored as
“name”’ — and links back to the catalogue.
Both pages sit inside the weather console’s Operations header, with its ‘Status’, ‘Models’, ‘Variables’ and ‘Accounts’ entries. Of those, ‘Variables’ is open to everyone; ‘Status’, ‘Models’ and ‘Accounts’ are open to platform admins only, and a reader who is not an admin sees them, and the brand, as plain words rather than links (see The weather console).
Choosing a forecast source
A break can be covered by more than one forecast source — different weather models, with different strengths and regional coverage. Each spot page lets you switch between the sources available for it, so you can compare what they predict: the model menu on ‘Hourly detail’ lists every source that reported at the break (see Anatomy of a spot page). When two sources disagree, the disagreement is itself information: closely-agreeing sources make a more confident forecast than ones that diverge.
How current is the forecast?
A forecast is only as good as the data behind it, and weather models run on a schedule. The weather console’s status page summarises the state of that data: an overall verdict on whether the latest run is current and trustworthy, and how recently each enabled model was refreshed. If the data is stale or a model has gone quiet, the status page says so plainly rather than dressing up old numbers as fresh ones — so you can judge how much weight today’s forecast deserves. The status page is open to platform admins only; the field catalogue is open to everyone (see The weather console).
Leave the status page open and it keeps itself current: the server sends it a fresh reading the moment ingestion actually changes, so what you are looking at is what is true now, with no reload and no refresh button. If the connection drops, the page reconnects on its own and re-reads the current state as it comes back, rather than quietly showing you a snapshot from before the interruption. While the connection is away the status page says so: its clock, which shows when the page last received data, turns amber, and a band reading ‘Reconnecting…’ states how old the figures below it are (see The weather console).
Finding the spots you surf
Most surfers return to the same handful of breaks. Browse or search the
index to find yours (see The Web Application), follow the
ones you surf — from the welcome flow (/welcome), and from
the spot list at any time afterwards — and log a session each time you
paddle out. The breaks you follow lead the home page every morning, in
the order the conditions deserve; you can change them whenever you like.
Those logged sessions become your own history and statistics over time,
and any secret spot shared with you sits among the public ones, so the
breaks you care about are never more than a click away.