Help
A quick guide to scoring a series with Sail Scoring.
What is Sail Scoring?
Sail Scoring is a web-based alternative to tools like Sailwave and HalSail — built for scorers who know the job but want software that works in a browser, on any device, without a Windows laptop and a steep learning curve.
You sign in with your email; series, competitors, races, and results are saved to your account as you work. Scoring panels at clubs share a single workspace so the whole team sees the same series in real time.
Sail Scoring supports position-based (scratch) scoring, static handicap scoring (IRC, PY), and progressive handicap scoring (NHC1, ECHO) for one or more fleets across multiple races.
Signing in and workspaces
Sail Scoring uses passwordless email sign-in. From the home screen, click Sign in, enter your email, and click the link the app sends you. The link expires after five minutes; request a fresh one any time.
The first time you sign in we ask for your name. It’s optional — you can skip it — but it’s what co-scorers see on the activity log and member lists in a shared workspace, so it’s worth filling in. You can set or change it any time on your Account page.
When you first sign in you land in your personal workspace — labelled My Workspace in the workspace switcher to the right of the page logo. Anything you create here is private to your account and only visible to you.
Club scoring panels share an org workspace: every panel member can see and edit the same series, FTP credentials, and workspace settings. To get one, request a shared workspace from your Account page — give it a name and we’ll set it up and make you its owner, ready to invite the rest of your panel (see Working with co-scorers). Once you belong to a shared workspace, the switcher in the header shows both your personal workspace and the shared one; pick the shared one and the rest of the app reorients onto the panel’s data.
To move a series from your personal workspace into a shared one, open the ⋯ menu in the series header and choose Copy to workspace…. The original stays in your personal workspace; the copy lands in the target workspace with a fresh history. FTP credentials and publishing state are not carried over.
Concurrent edits between scorers in a shared workspace are detected per row. If two scorers edit the same finish at the same moment, the second writer sees a clean conflict dialog naming the first scorer rather than silently overwriting their work.
Account info (your email, the active workspace, sign-out) is in the user menu on the right of the page header — click your email address. Workspace-scoped settings (FTP servers, the workspace name) are in the workspace switcher next to the Sail Scoring logo — click the workspace name and choose Workspace settings.
Creating a series
A series is the top-level container for a set of races and the competitors sailing in them. It corresponds to a trophy, a league, or a championship — whatever collection of races you are scoring together.
From the home screen, click New series and give it a name. Venue and date are optional but useful for keeping things organised if you manage several series on the same device. Names must be unique; the app prevents you from creating two series with the same name. You can rename a series later from the Basic card on its Settings tab.
After saving, you land on the Competitors tab, ready for the next step.
Organising the series list: categories and archive
As a club builds up seasons of results, the home list grows. Two tools keep it tidy: categories for grouping, and archive for putting finished events away.
Categories are your own labels — e.g. Club racing, Open events. Create and reorder them from Series categories in Workspace settings, then assign a series with Move to category on its ⋯ menu. Once you have categories, you can also pick one up front — in the new-series wizard, or when importing a .sailscoring or Sailwave file. A series with no category sits under Uncategorized. Deleting a category simply moves its series back to Uncategorized — nothing is lost.
Within a category (or the flat list, if you don’t use categories) you can put series in whatever order you like: drag the grip handle on the left of each row, or reorder by keyboard (focus the handle, press Space, use the arrow keys, press Space to drop). New series are added to the bottom. Archived series are grouped by year and aren’t reordered manually.
Archiving a series (from its ⋯ menu, on the home list or in the series header) moves it into a collapsed Archived section at the foot of the list, grouped by year, and makes it read-only: a safeguard against a stray edit to a finished record months later. To change an archived series, either Unarchive it or copy it to another workspace. You can still publish or re-publish an archived series’ results.
Deleting a series requires archiving it first — a deliberate two-step so a finished season can’t be thrown away by accident. Deleting is a soft delete: the series moves to a collapsed Trash section at the foot of the list, where it stays recoverable for 30 days before it is removed for good. Recover brings it back (archived, exactly as it was, with its history); a trashed series can’t be opened until you recover it. To remove one immediately you can delete it forever from the Trash — guarded by typing the series name to confirm. If the series had a published results page, that page stays online but disconnected; recovering won’t reconnect it, so unpublish first if you don’t want it to remain public.
Adding competitors
On the Competitors tab, add every boat that may start a race in the series — even those you expect to DNS every race. This ensures result codes are available for them.
Each competitor requires a sail number and a helm name. Sail numbers must be unique within the series. Other fields — boat name, class, crew name, club, gender, age — are optional, and which of them appear in the form and tables is controlled by the Competitor fields card on the Settings tab. Enable Class for PY fleets with mixed classes (Laser, Firefly, Mirror) to show the boat class alongside each entry. Enable Crew name for two-person dinghy classes (420, Fireball, GP14); the helm and crew are then shown as Helm / Crew in exported results.
Enable Nationality to record each entry’s 3-letter country code (RRS Appendix G / IOC, e.g. IRL, GBR, FRA). The input suggests codes as you type; common Sailwave spellings (BVI, CKI) resolve to their canonical form on blur. Exported HTML results show the code alongside a small country flag.
Enable Division to record prize-giving subdivisions within a fleet — skill tiers like Gold/Silver/Bronze, or age categories such as Apprentice Master/Grand Master. A subdivision does not affect scoring: everyone in a fleet is still ranked together, and it only decides which sub-trophy an entry is eligible for. You can add more than one independent axis — a Division (Gold/Silver) and an Age category (Youth/Master), say — and rename each in the Competitor fields card. Each axis shows as its own column in the competitors table, the standings, and exported results.
Competitors are sorted by sail number. You can edit or delete a competitor at any time, though deleting one after races have been entered will also remove their finishes.
Fleets
A fleet is a group of competitors scored independently. Each fleet produces its own standings — the penalty point base N is the number of competitors in that fleet, not the series total. A DNC in a fleet of 5 scores 6 points; a DNC in a fleet of 3 scores 4 points.
Fleets are created automatically from your competitors. On the Competitors tab, type a fleet name (e.g. Junior or Senior) in the Fleet field when adding or editing a competitor. Leaving the field blank assigns the competitor to the Default fleet. A fleet exists as long as at least one competitor belongs to it — removing the last competitor from a fleet removes the fleet.
When only one fleet exists, the fleet concept is invisible: no fleet column appears in the competitors table, no fleet headings appear in the standings, and the results page is a single file exactly as before.
For multi-fleet events, Preview shows one fleet at a time, with a selector to switch between them. Each fleet downloads as its own file (e.g. my-series-junior.html, my-series-senior.html), containing that fleet’s standings and individual race results.
To rename fleets or change their display order, open the Settings tab and click Edit ▸ on the Fleets card. You can reorder fleets by dragging the grip handle at the start of each row (which determines the order they appear in standings and exports), and rename any fleet with the Rename button.
Start sequences
For handicap series with multiple fleets starting at staggered times, the Default start sequence editor (in Settings ▸ Fleets, visible only in handicap mode) lets you describe how fleets are grouped at the start line and how long the gap is between consecutive starts. Once configured, creating a new race asks only for the first start time and generates the rest automatically.
Each row is one starting signal. Add a row with + Add start group, drop one or more fleets into it from the dropdown, and — for every row after the first — set the interval, in minutes, between this start and the previous one. So a row labelled +5 min after Start 2 means this fleet starts five minutes after Start 2, regardless of where Start 2 itself sits.
A typical Saturday-afternoon club setup with three classes at 5-minute intervals looks like this:
- Start 1: Class A
- Start 2: Class B, +5 min after Start 1
- Start 3: Class C, +5 min after Start 2
With a first start of 14:05, that resolves to 14:05 / 14:10 / 14:15. The new-race dialog shows the resolved times as a preview before you confirm.
Which fleets are in a race
Not every fleet sails every race — a big series can carry several sub-series, each made up of a different handful of boats. When you open a race for result entry, Sail Scoring scopes the boat list (the finish autocomplete, the start check-in, and the automatic DNC entries) to the boats actually in that race, so you are not wading through the whole entry list or clearing phantom DNCs for fleets that never started.
The signal is the race’s starts. A boat is in the race when one of its fleets has a start there. If a race has no starts recorded, every fleet is implied — the full series sails, exactly as before — so nothing changes for a simple single-fleet series.
For scratch racing you usually have no gun time to record. In the Race starts card (press s or click Add start), pick the fleets and leave the gun time blank. That fleets-only start declares which fleets are racing without affecting scoring — a race with no gun time is still scored on finishing order. Add a gun time later if the race turns out to need one.
Importing competitors from CSV
If your entry list is already in a spreadsheet, you can import it directly rather than typing each competitor by hand. On the Competitors tab, click Import CSV (or press i) and select a CSV file.
The importer shows each column in the file alongside a sample of its values. Use the dropdown next to each column to map it to a competitor field — sail number, helm name, boat name, class, crew name, club, gender, age, division, or fleet. Columns you do not need can be left as (ignore). Sail number is the only required mapping; all other fields are optional. A column named Fleet is detected as the fleet; Division or Category map to the subdivision field; Class maps to boat class, and Crew to the crew name.
A competitor can be assigned to more than one fleet by separating fleet names with a pipe character in the fleet column — for example, PY|M15 enters a Melges 15 in both the PY handicap fleet and the M15 scratch fleet. This matches the convention used by Sailwave exports.
In handicap mode, the importer infers each fleet’s scoring system from the rating columns it finds. If every boat in a CSV fleet carries one rating system (say IRC), one fleet is created and configured for IRC. If the fleet has a mix — IRC for some boats, ECHO for others — the importer splits it into CR 0 (IRC) and CR 0 (ECHO); each boat joins the fleet(s) matching their populated ratings. The mapping dialog lists the planned fleets before you confirm, with a per-fleet checkbox to also score the group on scratch alongside (for line-honours awards).
When the CSV has no Class column and no existing competitor in the series has a class set, the importer falls back to writing the original fleet name into Class. This preserves the practical “Cruisers 2” grouping when the fleet column is being used as a class label and boats end up split across rating fleets.
Clicking Import adds any new competitors and updates existing ones matched by sail number. When an existing competitor’s fields are unchanged by the import, they are counted as unchanged rather than updated. Any rows missing a sail number are skipped and listed in the summary.
Updating handicaps from another series
For NHC, ECHO, IRC, and PY fleets, the Update handicaps button on the Competitors tab carries each boat’s handicap forward from a prior series in this workspace. For progressive systems (NHC, ECHO) the new starting handicap is the boat’s TCF after the source series’ last scored race; for static systems (IRC, PY) it is whatever value the source series currently has on that competitor.
The dialog previews every change as current → new before anything is written. Untick individual rows to keep specific boats unchanged. A boat that doesn’t appear in the source series, or that has no value to copy, is left at its current handicap.
When a change affects an IRC or PY rating and the boat has already-scored races, the dialog offers Keep already-scored races on the old rating (on by default). Leave it on for a mid-series rating change — a new certificate — so races already sailed keep their old rating and only later races use the new value; the boat’s record still carries the new rating forward. Turn it off to correct a wrong rating, which re-scores every race on the new value.
Adding races
On the Races tab, create a race for each race sailed. A race number is assigned automatically; a date is optional. You can create all races upfront or add them one at a time as the series progresses.
Each race card shows how many finishes have been recorded. Click a race card to open the result entry screen for that race. The race date is shown beneath the heading there — click it to change it (handy after an import that guessed the date, or if a race is re-sailed on another day).
A race can also carry a name alongside its number — “New Year’s Day Race”, “Round the Island”, “Race 3 (re-sail)”. Open the race and click Add name beneath the heading; the name appears on the Races tab and in the published results (the column stays R1, R2… so tables stay compact). Clear the field to drop the name.
Races can be reordered by dragging the grip handle at the start of each row, or by focusing a row and pressing Alt+↑ / Alt+↓ to move it one place earlier or later. To slot a race in mid-series — a postponed race re-sailed between two others, or a make-up race — use a row’s ⇅ menu ▸ Insert race above / below. Races renumber automatically to stay in order; existing redress (RDG) pools follow their races, so reordering or inserting never disturbs a previously scored redress.
Entering results
The result entry screen is a digital transcription of the handwritten finish sheet. Each row is a crossing of the finish line; row order is crossing order. Search for a competitor by sail number using the input at the top and they are added to the next slot in the list. For boats in a fleet with a recorded start, the app prompts for a finish time before adding the row.
If a sail number is not yet registered in the series, the app will offer to Record as unknown. The row is kept in crossing order; click Resolve next to the entry to link it to a registered competitor once you know who it was. Unresolved unknown finishes are excluded from standings until resolved.
Rows for fleets without a start time (scratch scoring) show a grip handle you can drag to reorder a boat in the list (or, with the keyboard, focus the handle, press Space, use the arrow keys, and press Space to drop). Rows for timed fleets have no handle — their position is determined automatically by the finish time. If you edit a time and it no longer matches the crossing order, the row slides to its correct slot.
When two scratch-fleet boats cross together, tick tie on the second row to mark them as tied with the previous row. Tied boats share averaged ranks per RRS A8.1.
For competitors who did not finish normally, use the result code dropdown next to their name. Codes are grouped by how they arise:
Operational codes (assigned during or after the race)
- DNS — Did Not Start (came to start area but did not start)
- DNF — Did Not Finish
- OCS — On Course Side at start (premature starter)
- NSC — Did Not Sail the Course (finished but missed a mark)
- RET — Retired after starting
- DNC — Did Not Compete (did not come to the start area)
Protest committee codes (entered after a hearing or RC decision)
- DSQ — Disqualified
- DNE — Disqualification Not Excludable (cannot be discarded)
- UFD — U Flag Disqualification, rule 30.3 (discardable)
- BFD — Black Flag Disqualification, rule 30.4 (discardable)
By default (RRS A5.2), all penalty codes score series entries + 1 points. If you enable A5.3 starting-area scoring in Settings, most codes instead score starting-area entries + 1 for that race — a smaller penalty when turnout is low. DNC still scores series entries + 1 regardless. A third option, starting area including DNC (RRS A5.3 as changed by DBSC Sailing Instruction A13.2), scores DNC from the boats that came to the start + 1 as well.
DNE cannot be discarded. In the standings table it is shown in red. Even if a DNE is a competitor’s worst score, the discard falls on their next-worst result instead. A plain BFD, by contrast, is an ordinary disqualification and can be discarded like any other score.
Additive penalty codes (applied to finishers)
A boat that finishes but is penalised by the protest committee may be assigned an additive penalty code from the row actions menu (the ⋯ button on its row in the finisher list). Open the menu and choose Set scoring penalty.
- ZFP — Z Flag Penalty (rule 30.2): automatically applied (no hearing) to a boat in the triangle zone during the last minute before the start. Adds 20% of the DNF score, rounded to the nearest whole number (formula per rule 44.3(c)).
- SCP — Scoring Penalty (PC-imposed): adds a specified percentage of the DNF score (default 20%; enter a different value to override).
- DPI — Discretionary Points Increase: adds a stated number of points (enter the amount in the penalty editor).
Per RRS A6.2, additive penalties do not change other competitors’ scores — two boats may legitimately share the same score. The penalised score is capped at the DNF score for that race. Penalty codes are shown in amber in the standings table, e.g. 4 (ZFP).
Redress (RDG)
When the protest committee grants a competitor redress under RRS Rule 62, their score for a race is replaced by an average calculated from their other scores. Assign redress from a competitor’s controls in the race entry screen — the exact control depends on whether they finished (see below).
There are two entry paths depending on whether the competitor finished:
- Finisher granted redress — the boat completed the course and recorded a position, but later received redress to improve their score. Open the row actions menu (the ⋯ button) on its row in the finishing order list and choose Set redress (RDG). The finish position is preserved in the record but replaced by the redress score for standings.
- Non-finisher granted redress — the boat did not finish (e.g. retired, RET). Select RDG (redress) from the code dropdown in the non-finisher list. A dialog will open to configure the redress details.
Redress methods (RRS A9)
- A9(a) — all races: average of the competitor’s scores in all other races in the series.
- A9(b) — races before: average of scores in races sailed before the race in which redress is granted.
- A9(c) — stated points: the PC assigns a specific points value directly.
Pool restriction
For A9(a) and A9(b) you can optionally restrict which races contribute to the average:
- Exclude specific races — remove named races from the default pool (e.g. exclude a race the competitor did not start).
- Include specific races — use only the listed races. Check Include all later races to also include every race after the highest-numbered race in the list.
The average is rounded to the nearest tenth (0.05 rounds up, per RRS A9). Redress scores are shown in amber with a superscript r in the standings table.
Per-fleet stated points (multi-fleet boats)
When a boat is scored in more than one fleet (e.g. the same start scored under IRC and ECHO), the redress dialog defaults to one stated value applied to every fleet. If the committee wants a different value per fleet — because the boat’s standing at the time of the incident differs by handicap system — click Set points per fleet and enter each fleet’s value. The averaged methods (A9(a)/(b)) already average each fleet’s own scores, so they need no per-fleet entry.
If you later add the boat to a new fleet, that fleet has no stated value yet: it is scored as the A9(a) average for that fleet, and an amber notice on the standings names the boat so you can enter a value. (A per-fleet DPI penalty works the same way, except a fleet with no value simply has no penalty applied until you set one.)
Start check-in
The Start check-in tab on the race entry screen lets you record which competitors came to the starting area before the race. This is the data source for A5.3 scoring — if you skip check-in, the app infers starting-area attendance from the finish records instead.
Open a race, switch to the Start check-in tab (or press c), then tap each boat that appears at the start. A running count shows how many are marked present.
For fast keyboard entry, type a sail number into the search box and press Enter or Tab to toggle the first matching boat — the input clears so you can keep typing the next sail number.
Check-in saves immediately — you do not need to click Save. Once boats start finishing, switch back to Finish entry (press c again) and enter the finishing order as normal. Boats that were checked in but have no finish recorded will appear in the non-finisher list as DNF rather than DNC.
Reading the standings
The Standings tab shows the series results at any point. Each row is a competitor; the columns show their points for each race and their series totals.
Sail Scoring uses Low Point scoring: 1st place scores 1 point, 2nd scores 2, and so on. Lower totals are better. The standings are ordered by net points; ties are broken per RRS A8 — first by each boat’s race scores listed best-to-worst excluding discards (A8.1), then, if still tied, by the score in the last race, the next-to-last, and so on (A8.2).
Result codes are shown in parentheses in the race columns, e.g. 7 (DNF).
The Rank column gives the top three overall a gold, silver, or bronze badge. The same badges appear in the race columns on each race’s top three finishers, so you can spot the podium of every race at a glance. Coded, penalised, redress, and discarded scores keep their usual styling and are never badged.
When discard rules are configured, a Nett column appears showing each competitor’s series total after their worst score(s) are dropped. Discarded scores are shown struck through. The standings are ordered by nett total.
To share results, click Preview (or press x) to see the rendered results page in-app — exactly what publishing produces. From there you can Download a self-contained file to email or host on your club website, or Publish it. The Download menu offers HTML or PDF; the published page has a Save as PDF link in its footer. Either opens your browser’s print dialog with a print-tuned layout — handy for a PDF to attach to an email or pin to the noticeboard.
You can brand the exported page from the Settings tab. The venue and event logo URLs place logos in the page header; the matching website URLs make those logos clickable and add venue and event links to the page footer. All four are optional.
Rating systems
Sail Scoring supports several scoring systems. Pick the right one per fleet on the Settings tab.
- Scratch — position-based scoring with no time correction. The first boat across the line wins. Used for one-design fleets and any fleet where boats race on equal terms.
- IRC — static handicap. Each boat carries a published TCC; corrected time is elapsed time × TCC. Ratings do not change race to race within a series.
- PY (Portsmouth Yardstick) — static handicap for mixed dinghy fleets. Each class carries a published PY number; corrected time is elapsed time × 1000 / PY.
- NHC — the RYA National Handicap for Cruisers. A progressive handicap: each boat starts from a published TCF and the rating is adjusted after every race based on how the boat performed against the fleet average. Sail Scoring runs the SWNHC2015 parameters (which match Sailwave NHC1) by default.
For NHC and ECHO, every per-race table includes a New TCF (or New H) column showing the rating to apply in the next race — that’s usually the most-asked-about output of progressive scoring, so it’s always visible. Above the table, a Show NHC/ECHO rating calculations checkbox reveals the per-race intermediate values (CT ratio, Fair TCF, Adjustment for NHC; 1/T_E, PI, Adjustment for ECHO) along with a brief explainer of the formula. Sailors and rating officers can use those columns to verify the rating updates with a calculator. The toggle is off by default — readers who only want the standings and next ratings see a clean page; those who want the math tick the box.
Whether to publish the rating calculations is a per-series setting on the Settings tab — under Publishing, uncheck Publish progressive rating calculations alongside results to omit the toggle and its columns from the published page. The setting is on by default and shows up whenever the series has at least one NHC or ECHO fleet.
The summary table on NHC and ECHO fleets includes a seed-rating column (the competitor’s starting TCF or H) and prints the applied rating in small text beneath each score from race 2 onwards — race 1’s rating is the seed, so it’s shown in the dedicated column rather than repeated under each R1 cell. This is independent of the rating-calculations toggle and can be switched off via Show per-race ratings in summary table in the same Publishing card.
Discard rules
A discard lets a competitor drop their worst race score from the series total — a bad day doesn’t ruin a whole season. Only the resulting nett score counts for ranking; the full series total is still displayed for reference.
Discards are configured per series on the Settings tab, in the Scoring card. Each rule specifies a minimum number of races sailed and how many discards apply from that point on. For example:
- From (races): 5, Total discards: 1 — one discard applies once 5 or more races have been sailed; no discards before that.
- You can add a second rule, e.g. From: 9, Total discards: 2, to increase the total number of discards as the series grows. Each rule sets the total, so a second rule of 2 means two discards (not one on top of one).
To add a rule, click Add rule, fill in the thresholds, then click Save. To remove a rule, click the × button on that row. A series with no rules has no discards.
The worst race(s) are dropped per competitor — each competitor discards their own worst score. When two races have the same score, the earlier race is discarded.
A5.3 starting-area scoring
Under the default RRS A5.2 rule, every penalty code (DNF, OCS, DNC, etc.) scores N + 1 where N is the total number of competitors entered in the series. This is the same in every race, regardless of how many boats actually showed up.
RRS A5.3 is an alternative used by many clubs with variable race-day attendance. Under A5.3, DNF and OCS score starting-area entries + 1 — that is, the number of boats that came to the start in that race, plus one. DNC (did not compete) still scores series entries + 1, because those boats were not present at all.
To enable A5.3 for a series, open the Settings tab, tick Score DNF/OCS on starting-area entries (RRS A5.3), and click Save.
Use the Start check-in tab on each race entry screen to record which boats came to the start. If check-in is not done, the app counts all non-DNC finish records as a proxy for starting-area attendance.
Saving and sharing a series
All changes are saved automatically to your account as you score — there is no Save button. The series is reachable from any device you sign in on, and panel members in a shared org workspace see edits in close to real time.
To back up a series or share it with someone outside your workspace, open the ⋯ menu in the series header and click Save to File. This downloads a .sailscoring file containing the complete series — all competitors, races, and results. You can save the file to Google Drive, Dropbox, or email it to a co-scorer.
To open a series from a file, click Import Series on the home screen and choose Sail Scoring file. Select the .sailscoring file. If the series is already in your workspace, you will be asked whether to update the existing copy or open it as a separate one.
To bring a series someone else is scoring into your workspace, open the ⋯ menu on the existing series and click Update from File…. The app checks whether the incoming file is a clean continuation of the workspace copy and warns you if both copies have diverged.
If you used Sail Scoring before sign-in was required and have series saved in this browser, the home page shows a banner offering to Move to my account. The migration runs one series at a time and is safe to re-run — the banner only counts series that haven’t already been moved.
Working with co-scorers
When a club scoring panel shares a workspace, several scorers work on the same series at once — typically split by fleet. Sail Scoring doesn’t lock anything; instead it keeps a clear record of what changed, when, and by whom — see the History tab (below).
The series list mirrors the most recent change under each series, so you can see at a glance which events your co-scorers have touched. And the competitor edit dialog shows who last edited that competitor. If two scorers happen to change the same result at the same moment, the second one sees a conflict prompt naming the other scorer rather than silently overwriting their work.
To add a co-scorer, open Workspace settings (from the workspace menu in the header) and use the Members card to invite them by email. They get a link to accept; once they do, they appear in the members list and share the workspace. Owners and admins can change a member’s role or remove them there too.
What someone can do is set by their role. Owners and admins have full access: every series, its settings, and the workspace configuration. A plain member is a viewer — they see every series, its standings, and its history, but can change nothing. That makes member the right role for committee members and class captains who want visibility without the risk of an accidental edit, and it’s the default for new invitations: promote people once they’re scoring.
Don’t have a shared workspace yet? Request one from your Account page — give it a name and we’ll set it up and make you the owner, ready to invite the rest of your panel.
Version history
Every series keeps a versioned History tab (or press g then h). As you edit, Sail Scoring saves point-in-time versions automatically: a continuous editing session by one scorer is captured as a single version, so the list stays readable rather than one entry per keystroke.
The list is newest-first, each version naming the scorer and how long ago it was. Expand a version to see the individual changes it covers — results entered, races added, competitors imported, settings changed — each grouped under the session that made them. It’s the record behind a scoring inquiry and the audit trail for a protest committee.
To roll back a mistake, press Restore on any earlier version: the series is replaced with its state at that point. Nothing is lost — your current version stays in the history, and the restore itself is recorded as a new version, so you can always undo it by restoring again. (Restore is unavailable on an archived, read-only series.)
To mark a moment deliberately — before a protest hearing, say, or after publishing — press Name this version and give it a name. A named checkpoint is pinned in the history and never folded into an automatic session, so it stays an obvious point to return to.
Key moments are marked for you, too: publishing results pins a Published version (the exact state that went public — a clean point to restore to), and Save to File pins a Saved version. Both also close off the current editing session, so later edits start a fresh version rather than blurring into the one before the milestone.
Saving the series to a file (Save to File) includes this version history, so a saved .sailscoring file is a complete backup — reopen it as a new series elsewhere and its history comes with it.
To keep things tidy, older automatic versions are gradually thinned out — recent ones are all kept, then roughly one per day, then only the timeline entry remains (so the record of who changed what stays, even though that exact state is no longer restorable). Versions you marked deliberately — named checkpoints, published, and saved versions — are always kept restorable.
Publishing results
Publish results to a public URL from the Standings tab.
Publish: click Publish (or press p). Sail Scoring renders the current standings and hosts them under your workspace at a public URL like app.sailscoring.ie/p/hyc/autumn-league-2026/standings. The dialog suggests a slug from the series name which you can edit before the first publish; once published it’s fixed, so the URL is stable forever and re-publishing updates the page in place. Publishing is an explicit, point-in-time action: editing the series afterwards does not change the published page, and the dialog tells you how many edits have landed since the last publish so you know when to re-publish. A series scored as multiple fleets produces one page per fleet (e.g. …/autumn-league-2026/irc-1). Published pages are read-only and need no sign-in to view.
Choosing fleets and URLs: the dialog lists every fleet with a checkbox — only the ticked fleets are published or updated when you click Publish. Untick a fleet you’re still working on to leave it out this round; if it was already published, its current page stays live and simply isn’t updated until you tick it again (to take a page down entirely, use Unpublish). Each fleet also shows the last segment of its URL, which you can edit before it’s published — handy when you want a clean fleet name like Puppeteers HPH to live at a disambiguated URL such as tuesday-puppeteers-hph. Once a fleet is published its URL is fixed, like the slug; to change it, unpublish and publish again.
Each series also gets a listing page at its base URL (e.g. …/autumn-league-2026) linking to every fleet, and your workspace has a public index at app.sailscoring.ie/p/hyc listing all the series you’ve published. Both update automatically as you publish. Each fleet page links back up to its series listing, and that listing links up to the workspace index, so a visitor can climb from one fleet’s results to everything you’ve published.
Co-publishing several series to one URL: a slug is a shared namespace, so more than one series can publish under the same one — handy when an event is scored as separate series, e.g. publishing both Lambay Races Cruisers and Lambay Races One Designs to …/2026-lambay-races. Type the existing slug when you publish the second series; Sail Scoring asks you to confirm joining the existing event, then the listing page lists every series under it, each with its own fleets. Each series keeps publishing and unpublishing independently — unpublishing one removes only its fleets and leaves the others live. Every fleet URL must be distinct across the series sharing a slug; if two clash, edit one fleet’s URL segment in the publish dialog.
Managing published pages: open the workspace switcher in the page header, choose Workspace settings, and look under Published results for every page your workspace has published, with its public URL, when it was last published, and how many edits have landed since, and whether it shares its URL with another series. Unpublish takes a page down: the public URL stops working and the slug frees up for reuse (or, if the URL is shared, only that series’ fleets are removed and the page stays live for the rest). You can also unpublish from the Publish dialog on the Standings tab. If you delete a series whose results were published, the page stays live as an orphaned snapshot — the Published results page is where you remove it.
JSON data export and Open in Sail Scoring
Every HTML results page — whether downloaded from Preview or pushed via FTP or Publish — includes an Open in Sail Scoring link in the footer. Anyone viewing the results page can click it to open the series directly in the app — competitors, races, finishes, and standings are all imported automatically as a new series. If you already have a series with that name in your workspace, the import gets a (2) suffix so the two are easy to tell apart.
If you’re signed in and belong to more than one workspace — for example a personal workspace and a shared panel — the confirmation dialog includes a Workspace picker so you can choose where the series lands. It defaults to the workspace you’re currently in.
The footer also embeds a JSON snapshot of the results in the page source, available to clubs or third parties who want to consume the data programmatically. The snapshot contains only the public results; scorer-private information (file history, FTP credentials, and publishing tokens) is never included.
To disable the embedded export for a series, open the Settings tab and uncheck Include data export in published results in the Publishing card. The footer will revert to a plain link with no Open in Sail Scoring option.
Sending feedback
Found a bug, have a question, or want to suggest an improvement? Open the user menu in the top-right of the header (your email address) and click Send feedback. Type your message and hit Send.
The form automatically attaches the page you were on, your signed-in email address, and the browser you’re using — they’re shown in the dialog before you submit. To keep abuse in check, each account can send up to five messages per hour.
Keyboard shortcuts
Press ? anywhere in the app (outside a text input) to open the keyboard shortcuts reference. Press Shift+D to toggle dark mode.