raceScore is a free, easy to use, "Google Sheets Extension" that scores a series of sailboat races using the High Point Average or Cox-Sprague Scoring Methods.  Averaging a boat's finishes over a series allows competitors to miss races without being penalized.  High Point and Cox-Sprague average scoring systems reward top finishes in larger fleets over top finishes in smaller fleets. 

To try raceScore, open a blank Google Spreadsheet, get the raceScore Extension from the Google Marketplace, enter finish data into Sheet1, and run raceScore.   A few seconds later, a “Results” sheet will be added to your spreadsheet containing all the scoring detail.   More information including sample input data are provided below.

What's NEW

Low Point Scoring BETA - Low point scoring has been added!  Using the same simple interface you can now score races using US Sailing low point scoring.   Specify "scoring method: low point" on the Google Sheet1 spreadsheet before the finishes are entered.    

Race Number no longer required - this update applies to anyone using raceScore before August 2022 race number (e.g. the 1, 2, 3 etc. in Column B) can easily be deduced, so we decided to remove the requirement to enter it.  Actually it's now invalid to include race number among the finishes on Sheet1.   If you see race numbers being listed as competitors in the results then delete column B (containing race numbers) and re-run raceScore.  raceScore will intuitively assume the first set of finish data for any date is the first race of the day and sequentially increase the race number for subsequent races entered on the same date  (8/2/2022)

Boat numbers no longer have to be numeric - if your fleet uses text characters - e.g. country codes, boat names, skipper names for example, to identify a boat's finish in a race, then this improvement will be appreciated.  In our local fleet, where members borrow different club boats, we use the skippers name instead of the boat number, for example.   (7/14/2022)

Participation Credits - if your fleet wants to give competitors that serve on Race Committee,  or maybe if they attend a travel event, credit for qualification purposes, use Participation Credits.  Each credit increases a competitor's "races sailed" by 1.  So, if a competitor has sailed in 10 races, for example, and receives 2 participation credits, it will appear that the competitor sailed in 12 races for qualification purposes and for throwout calculations.  Since participation credits are identified using a scoring adjustment, you can provide as many or as few credits as desired.  But, credits can only be awarded on a particular day if a race was run and scored on that day.  (7/11/2022)

Getting Started

Installing raceScore

To install the raceScore Google extension open a blank Google Spreadsheet and click on the Extensions menu item.  From there click on "Add-ons" and then "Get add-ons".  Search for "raceScore" and complete the installation steps.   You will be asked to Authorize raceScore's use of Google services on your behalf.   raceScore does not keep any data that you enter and never requires any personal information.

Entering Finishes

In raceScore, race finishes are input horizontally across Sheet1 of your spreadsheet.  raceScore recognizes that a row contains race finishes when there is a date (any valid spreadsheet date between January 2020 and December 2039) in Column A.  When raceScore receives a valid date in Column A, it assumes successive columns are boat identifiers (bow number, sail number, boat name, etc.), in finish order.  

In the example shown, in the first race recorded for June 4th,  boat number 626 won, followed by 724 and 602… 566 finished in 6th.  

In the 2nd race of the day, 626 won again followed by 547602 didn’t finish so is scored DNF.  

Scoring adjustments of DNF, OCS, and DSQ, unless thrown out, result in zero being averaged into the overall score.  Other scoring adjustments (e.g. DNS) are ignored for scoring purposes.

When the value in Column A for a row is left blank, raceScore assumes the previously entered date is carried over.   So, for example, the implied entry on spreadsheet line 7 is:

Jun-11 644 602 789 547 626

Even though Jun-11 isn't specified on line 7, its carried over from line 6. 

Lines that don’t have a date in Column A (between 1/1/2020 and 1/1/2040) are skipped.   So, don’t hesitate to insert blank lines or add comments to document the day's racing.   Line 1, in the example, is a comment and was added to help show what values go into each column.   Since the value on line 1 in column A ("Race Date") isn't a valid date, the entire line is ignored by raceScore.  

Overriding Default Parameters

The following default parameter values are used for scoring calculations.   To override defaults enter values starting on line1 of the Google sheet: Sheet1 (the sheet containing finishes).  

Defaults can be overridden by specifying any or all of these parameters on the finishes sheet (Sheet1) starting on line 1, as follows:


Finish positions can be adjusted.  Use common acronyms: DNF, DNS, OCS, DSQ, DNC.  Just follow the boat number by a "-" and the scoring adjustment.  Then re-run the script to generate new results reflecting the adjustment.

Other finish adjustments, e.g. -DNS or -DNC, are ignored in scoring for High Point and Cox-Sprague scoring methods.  For example, boats that weren’t in the starting area, don’t count for qualifying and it is not used in determining the number of participants in a race.  

When using Low Point scoring, boats are scored in all races.  If a finish position is not recorded for a boat in a race, that boat is automatically scored as DNS.

When using Cox-Sprague or High Point scoring methods, if your fleet awards participation credits for races missed, simply follow the boat number with a "-PAR" for the races in which credits are awarded.  Participation credits are often used when a boat misses a race, for example, because the crew is running the races or participating in an outside event.  Participation credits increase the number of races that a boat participates in for qualification purposes and for calculation of throw outs.   (for High Point and Cox-Sprague scoring methods)

While any valid date can be entered, simply typing a month abbreviation (e.g. Jul, Aug, Sep, etc.) and day (e.g. Aug-4) will suffice (year defaults to the current year).  


When the raceScore Extension runs a "Results" sheet is added (or replaced) in your spreadsheet.

Overall finish position in the series is followed by scoring details including qualifying specifics, the scoring method used, how ties (if present) are resolved, throwout calculations, and individual race finish positions.  

Tips and Help

Technically speaking... 

raceScore is implemented through a Google Sheets extension that calls a web service.  It is the web service that scores sailboat races using either the High Point Average or Cox-Sprague scoring systems.  When the raceScore extension is run, finish data entered into Sheet1 is used as input to compute the scores, rank competitors, and return a .csv file containing results.  

So, raceScore is actually composed of two technologies that work together.  First, is the Google Sheets extension which is accessed through a menu item under Extensions on the main menu.  Second, is the raceScore web service that runs in the Google Cloud.  It's called a web service because the functionality built into raceScore is accessed using the https protocol.  The service itself is written in python.   As a true SaaS implementation, the raceScore service could be called by any application connected to the internet.  Send it a .csv file of race finishes and it will return a .csv file containing results based on those finishes.  If you would like to access raceScore functionality directly (e.g. not through the Google Extension) send a request to lm06820@gmail and I’ll provide the service address and details about required query parameters.  

Interestingly, as a web service raceScore is physically run on a server in the Google Cloud.  Since the computations are relatively simple and Cloud computers are relatively powerful, the cost to run raceScore in the Google Cloud is just a few pennies, absorbed fully by yours truly.  

Using a Google Sheets extension to access the service makes generating results as easy as entering finish data into a spreadsheet and clicking the raceScore link.  The raceScore extension is available through the Google marketplace.   Once installed you will see the raceScore link under the Extensions menu.  There are thousands of Google extensions.  Some are used by other sports with complex scoring systems, see the Cross Country Scorer, for example.   Importantly, although raceScore can be accessed through a Google spreadsheet, it does not use macros or cell functions coded in the spreadsheet that could be inadvertently deleted or modified.    

We've been using raceScore in our local fleets for 2 years now.  I created it because there wasn’t any other scoring program that was available to any computer that has access to the internet and a web browser.  raceScore does not retain any data after the results are computed and does not collect any information.  raceScore uses simple .csv files for both the input and returns a .csv file with the results.  

Terms of Service

raceScore is free to use.  Although we strive for perfection, the use of raceScore is offered without any warranties implied or otherwise. Please report problems to help@racescore.org

Privacy Policy

raceScore uses the dates, race numbers, and boat or sail numbers that you enter onto Sheet1 of the Google spreadsheet that you installed raceScore on.  This data is used to compute the overall positions of participants in the series being scored.  raceScore will not change the finish data you enter.  The Results sheet inserted into your spreadsheet is generated by raceScore based on the finish data that you entered.  No user data is stored or shared by this app.   

raceScore results are computed in the Google CloudraceScore's use and transfer of race finish data that was received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.


Send inquires to help@racescore.org

Developer: Lee Morrison, lm06820@gmail.com

Noroton RC Laser 2023

RC Laser 2023