The web-based Rally Bonus Planner is / will be a replacement for my Rally Planning spreadsheet that I first started working on back in 2013. Hundreds of rally riders over the years have used my spreadsheet for many different rallies including the Iron Butt Rally. Many top ten riders of past Iron Butt Rallies have also used my spreadsheet. All of the functionality from the spreadsheet will be implemented in the new web-based Rally Planning app. With the new web-based app you will be able to build out and format the the bonus names and then export the bonus list to a GPX file or and Excel spreadsheet. You will start by entering a bonus name for a long-distance motorcycle rally: enter or import bonus locations for each leg, look up their address, timezone, sunrise/sunset and 10-day weather automatically, see them plotted on a map colored by point value, and availability by shape. Export the finished list as GPX file (for a GPS or mapping program) or XLSX (for a spreadsheet).
Benefits of my rally planning web app
I developed the spreadsheet to help me get to routing faster in my mapping programs (now Basecamp), and it has evolved over the past 12 years.
- Easy to import bonus data, including points files from a rally master, and automatically create a GPX file ready for Basecamp or a GPS.
- Easy bonus name creation with bonus code, points, and availability.
- Automatic calculation of time zone, sunrise, and sunset based on latitude and longitude — good information for daylight-only bonuses.
- Easy to tag a bonus's availability: anytime, daylight only, group photo, etc.
- Easy to tag a bonus as part of a combo bonus.
- Automatic bonus symbol selection based on points value and bonus availability.
- Easy to add comments to a bonus that carry through into Basecamp and then your GPS, so you can see them riding up to a bonus.
- A Google Maps link is created for each bonus location — Street View in many cases.
- Generates a formatted GPX file for Basecamp and/or a GPS that includes comments, sunrise, and sunset times.
- Fast entry into Basecamp with the generated GPX file, bonus symbols already set by point value and availability. You can also load the GPX file directly onto a GPS.
The page is organized by rally → leg → bonus. A rally is the overall event (e.g. "2027 Iron Butt Rally"). Each rally has one or more legs (the segments between checkpoints). Each leg has a list of bonuses — the individual bonus locations worth points that you build a route out of for the rally.
Creating an account
From the sign-in screen, click Need an account? Sign up. Enter your email, a password, and your name, then click Sign up. You'll be signed in immediately and dropped into the main app with an empty rally list.
New accounts sign up as a regular rider. If you need admin access (to manage other users, see below), ask an existing admin to promote your account from the admin portal.
Signing in
Enter your email and password on the sign-in screen and click Sign in. Forgot your password? Use the Forgot password? link to request a reset email.
How the app is organized
Everything lives under three levels, shown in the left-hand sidebar once you're signed in:
- Rallies — the top-level events you're planning for(eg.. 2027 Iron Butt Rally ). Click + New under "Rallies" to add one.
- Legs — appear once you select a rally. Each leg is a part of a rally which you would create a route with its own start/end time, used to calculate sunrise/sunset for bonuses on that leg.
- Bonuses — appear once you select a leg, in the grid on the right. This is where you'll spend most of your time: entering codes, coordinates, points, and availability.
Units & time format
Click ⚙ Settings in the header to choose Imperial (°F, mph, miles, gallons) or Metric (°C, km/h, kilometers, liters), and 12-hour or 24-hour time. This covers riders outside the US planning a rally in kilometers and Celsius.
Units affects the weather forecast popup's temperatures and the Hours & Miles worksheet's speed, distance, and fuel columns (Avg MPH/MPG, Miles, Gallons become Avg km/h, Avg km/L, Km, Liters). Time format affects every place sunrise/sunset is shown — the grid columns, a bonus's popup, and GPX/XLSX export previews.
Both are saved to your account, so they follow you to any device you sign in from. Changes apply immediately — no need to reload the page.
Using this app in another language
This app is only written in English, but riders outside the US can use their browser's built-in page translation to view it in Spanish, French, German, or any other language — the whole page, including the bonus grid, buttons, and popup messages, gets translated automatically.
In Microsoft Edge or Google Chrome, right-click anywhere on the page and choose Translate to [your language] from the menu. You can also click the translate icon that appears in the address bar on some pages, or open the browser's Settings and set a preferred language so pages translate automatically going forward.
Translation works well for the page itself, but a couple of things may not translate: text inside tooltips (like the column header tooltips), and any emails the app sends (like a password reset link) — those stay in English unless your email program offers its own translation.
Creating a rally
Click + New above the rally list, give it a name and (optionally) a year and notes, then Save.
To edit or delete a rally later, click the ✎ that appears next to its name in the sidebar — this opens the same dialog with a Delete button. Deleting a rally also deletes all of its legs and bonuses, so it asks for confirmation first.
Creating a leg
With a rally selected, click + New above the leg list. Give the leg a name and, ideally, a start and end date/time — these are used to compute accurate sunrise and sunset times for every bonus on that leg. Check Daylight saving in effect if applicable.
Click a leg's name (or the small pencil that appears next to it) to edit or delete it later.
The bonus grid
Selecting a leg loads its bonuses into a spreadsheet-style grid. Click any cell to edit it in place — changes save automatically (watch the small save indicator next to your name in the header). Use + Add bonus to insert a blank row.
The Formatted Bonus Code column, just before Code, is read-only and updates
automatically as you edit a row — it's the bonus's CODE-POINTS-AVAIL-TIMED name, the same
format used for the <name> in an exported GPX waypoint.
All column headers have tooltips — hover over any one to see an explanation of what it means and how it's used, like the Formatted Bonus Code column below.
Entering or changing bonus points
The Points column is a normal editable cell — click it, type the new value, and press Enter or click away to save. Use this to correct a bonus's points after import, or to fill in points for bonuses whose import didn't include them (some bonus listing files publish codes and coordinates first, with points released or corrected later).
Availability codes
The Avail column controls how a bonus is scored and how it's shaped on the map:
For timed bonuses, fill in the Timed column with the available window (e.g.
930a-6p).
Tagging combo bonuses
Some rally packs group individual bonuses into a named combo — collect all of a river's
bonuses and the combo pays extra, for example. Click Combo codes… in the
toolbar to define your rally's list of combo codes and names (e.g. MISS1 =
"Mississippi River"). This list is shared across every leg in the rally, since a combo can
span more than one leg. Add codes one at a time with + Add combo code, or
click Paste list… to paste in several at once — copy two columns (code,
name) straight from a spreadsheet, or paste a comma-separated list; a code that already
matches one in your list gets its name updated instead of creating a duplicate.
Once you've defined some codes, click a bonus's Combo cell in the grid to open a checklist of them — check every combo that bonus belongs to (a bonus can be part of more than one) and click Done. Hover the cell afterward to see the full combo names, not just the codes.
A bonus's combo tags are written to the exported
GPX file as <gpxx:Category> entries, so they show up as categories on your
GPS the same way they did from the spreadsheet's export.
Selecting & deleting rows
Check the boxes on the left of any rows you want to act on — the header checkbox selects all. With rows selected, Delete selected removes them, and Look up selected fetches address/timezone/weather for just those rows.
Looking up address & timezone
Once a bonus has coordinates, click Look up missing in the toolbar to fill in its timezone, reverse-geocoded address, and (if the leg has start/end times set) sunrise and sunset — automatically, for every bonus that's missing this data. This runs in the background with a small progress indicator, and results are cached, so re-running it doesn't re-charge lookups for bonuses already looked up.
Lookups are rate-limited per account to keep API costs down. If you hit the limit, wait a bit and try again.
Importing bonus files
Click Import file… and choose a .gpx, .kml,
.csv, .tsv, .txt, Excel (.xlsx/.xlsm/.xls),
or .pdf bonus listing file. The app parses it entirely in your browser and shows a preview
grid so you can review and fix anything before committing — nothing is written to your leg until you
click Append to leg or Replace leg's bonuses.
PDF import is built for Iron Butt Rally-style bonus listing packets — a code, point value, GPS coordinates, available hours, and description per destination bonus. Monitoring bonuses (call-in, rest, tracking) and checkpoint info don't have coordinates, so they're skipped automatically; only bonuses with a real lat/lon come through. A PDF laid out very differently may not parse cleanly — check the preview before committing, same as any other format.
Importing a points file
Some rally masters publish the bonus locations and the bonus point values as two separate files — a codes/lat/lon file, and a second file (usually CSV, sometimes plain text) with just the bonus code and its point value, sometimes released later than the location file. Click Import points… and choose that file to merge it into the current leg.
Unlike Import file…, this never adds or removes rows — it only matches each code in the file against a bonus already in the leg's grid and updates its Points column. A preview lists every code from the file, whether it found a match, and its current vs. new point value, so you can check for typos or mismatched codes before applying anything.
Matching ignores case and extra whitespace in the code, since the two files often come from different sources. Codes in the file with no matching bonus in the current leg are listed but skipped — nothing is created for them.
Exporting GPX & XLSX
The toolbar's right-hand buttons export the current leg (or the whole rally, for GPX):
- Export GPX — waypoints for the current leg, ready to load onto a GPS.
- Export GPX (whole rally) — every leg's bonuses in one file.
- Export XLSX — a spreadsheet copy of the current leg's grid.
Check ASCII-fold export (on by default) to strip accented characters from exported names — useful for older GPS units that don't handle non-ASCII text well.
Hours & Miles planning
Click Hours & Miles next to Grid and Map in the toolbar to open this rally's planning worksheet — how much riding time a leg actually has once rest, gas stops, bonus stops, and routing time are subtracted, and how many miles that riding time makes possible. It covers 1 to 3 legs, and use the Legs +/− control at the top to match however many legs your rally has. Everything here is saved per rally and shared across every leg, the same as combo codes.
Each leg is bounded by two checkpoints — its start and its end. Type an address for each checkpoint (city and state is usually enough) and click Look up to resolve it to coordinates and a time zone; that's the one place this page calls out to Google. A 2-leg rally shares its middle checkpoint (leg 1's end is leg 2's start), so you'll only ever look up legs + 1 checkpoints total, not two per leg.
For each leg, fill in its start and end date/time and your planning assumptions — routing hours, planned rest hours per day, gas and bonus stops per day and how long each takes, any misc hours, and your average riding speed, fuel economy, and fuel cost per gallon. Leg hours, riding hours available, and miles possible update automatically as you type, and the bold Rally totals row at the bottom of the Legs table adds them up across every leg in use — averaging the per-day assumptions over however many legs you actually have, rather than always dividing by three.
Like the bonus grid, changes save automatically — watch the small save indicator in the toolbar. Only your inputs are stored; every hours/miles/fuel figure is recalculated from them each time you open this page.
Bonus point planning
Click Points next to Hours & Miles in the toolbar to open this rally's bonus point plan — how many points each leg needs, and how your planned route and actual score compare to that target. Like Hours & Miles, it covers 1 to 3 legs (use the Legs +/− control at the top), and everything is saved per rally, shared across every leg.
For each leg, enter the Target points the rally master published for that leg, then your planned non-riding bonuses — rest bonus, both call-in bonuses, tracking bonus, and arrival bonus. The Gold target (+40%) column, each bonus's percent of target, the Non-riding total, and the red Points needed column (how many bonus points your route still needs to hit target once non-riding bonuses are counted) all update automatically as you type.
Fill in Planned route pts with the bonus total from your planned route in Basecamp or your mapping program, and the Diff vs target column shows whether that's enough — it turns pink when you're short. After the rally, fill in Actual scored to see your final +/− vs target for each leg. The bold Rally totals row adds every column up across all legs in use.
Changes save automatically — watch the small save indicator in the toolbar. Only your inputs are stored; every gold target, percentage, and points-needed figure is recalculated from them each time you open this page.
Map view
Click Map next to Grid in the toolbar to switch views. Each bonus is plotted as a marker whose shape encodes its availability (circle, square, flag, diamond, star, triangle — see the legend) and whose color encodes its point value. Combo bonuses (AC/DC/TC) get a bolder outline.
Click any marker to see its details in a popup, including a one-click link to its weather forecast.
Point color ranges
Click Point ranges… (top-right of the map) to customize the point thresholds and colors used on the map. A bonus is colored by the highest range it meets or exceeds. Add, remove, or reset ranges to defaults at any time — this only affects the map's coloring, not scoring.
Weather forecasts
From a marker's popup, click 10-day weather to open a forecast panel for that bonus's location — daily highs/lows, conditions, and precipitation chance.
Admin portal
Admin accounts see an Admin link in the header. The admin portal lists every rider with their status, role, when they were created, when they were last active, and how many live lookups they've used (broken out by timezone/geocode/weather, hits vs. misses — misses are what actually cost against the API quota).
Adding a user
Click + New user, fill in their email, display name, and a temporary password (minimum 8 characters), then Create user. Share the temporary password with them directly — there's no email invite flow, so they should sign in and can change it via Forgot password? if you'd rather not hand off your own choice.
Each row's Actions column lets you deactivate, promote/demote, or delete a rider. Deactivating blocks sign-in without deleting their data.
Lookup access
The Lookup access column controls whether a rider can use the lookup buttons at all — separately for address/timezone lookups and for weather forecasts. New riders start with both switched on; click Disable next to either one if you want to withhold it from a specific rider, or Enable to turn it back on. Admin accounts always have full access and show an "Admin: full access" badge here instead of the toggle buttons.