Type your name and vehicle number. If you've raced here before, tap your name when it appears.
Pick your classes
Tap every class you're running today. You'll draw one pill for each.
Lineups
Lowest pill starts up front. Set 2 runs inverted. Spots update live as drivers draw. 📺 TV display fills the screen with rotating lineups — plug this device into a TV with an HDMI cable, or cast it (Chrome menu → Cast, or your tablet's screen mirroring).
Results & lineups
Enter finishing positions by hand from both heat sets, or tap Import from timing to fill them from a scoring-system CSV. Standings, the B-main, and the feature lineup build themselves.
Points series
Season standings by class. Feature finishes earn the points set in Admin — today counts live once finishes are entered, and past race days count from history.
Admin
The name and logo show in the header and on printed lineups.
"Pills" is the highest pill number in that class's draw (pills run 1 up to this number). The order below is the running order — use ↑ / ↓ to set which class races first. It's used on the Lineups, Results, TV display, and printout.
Heat, feature, and B-main sizes are the track-wide defaults — set a different size for an individual class under Race classes (leave a class's box blank to follow these).
Alternate deals pills across the heats one at a time, so the fast pills are spread out — pills 1, 2, 3, 4 become the poles of heats 1, 2, 3, 4, then 5, 6, 7, 8 fill the next row, and so on through the whole field.
Block keeps the lowest pills together — heat 1 gets pills 1–8, heat 2 gets 9–16, etc.
Affects Lineups, Results, TV display, and the printout. With a single heat there's no difference.
When a class has more drivers than the feature holds, this decides how the rest race their way in. The "How many" box sets the number of mains (Parallel and Cascade only). "B-main transfers" above sets how many move up from each main.
Single: one B-main; the top finishers transfer to the feature and anyone past the B-main doesn't race. (Original behavior.)
Parallel: everyone left is split into equal B-mains (balanced by heat standings). The top finishers from each B-main go straight to the feature — so nobody is cut and everyone gets a run.
Cascade: the slowest qualifiers start in the lowest main; the top finishers climb up to the next main and race again, all the way up to the feature. Run the mains lowest-first.
Pick a known system or type your own — editing the list makes it "Custom". Feature finish decides points; make the list as long as your biggest feature. Anyone finishing past it, not making the feature, or scoring DNF/DNS/DQ gets the "everyone else" value (use it for show-up points, or 0). Classes count by default; untick "counts toward the points series" on the Results tab for non-points days.
Everyone from the last archived day, fresh pill draws.
Removing an entry pulls that driver from that class only — the pill goes back in the draw and their other classes are untouched.
This app stores everything in this browser only. Download a backup now and then — restoring it on any device brings back the driver book, classes, settings, history, and today's race day.
Admin PIN
License
Multi-device sync
These names appear in the Terms of Service, Intellectual Property, and Privacy Policy shown to participants. Set your business's legal entity so the documents name the right party.
IP capture makes one lookup to a public service when a driver accepts. Turn it off for fully offline/no-network operation.
Acceptance log
Audit log — overrides, locks & result changes
Add results from a previous race night so points standings are accurate from day one. Enter one night at a time.
A new race day archives today's entries and results to history, then clears the board — the driver book and classes are kept. Set up for a new track keeps the race data but clears the license and starts a fresh trial — for handing the app to a different track. Erase everything wipes the driver book, history, and track settings too.
How to use RaceDay
A quick walkthrough. The tabs along the top take you through a race day in order — left to right.
1
Pick your class
Use the Class menu at the top of the Lineups tab to find your class.
2
Choose what to see
Tap Qualifying, Heats, B-Mains, Feature, or Results to see that lineup. They fill in through the night as each round is scored — and when finishes are posted, a 🏁 Results updated pop-up lets you jump straight to them.
3
Reading the grid
Lowest spot starts up front. Find your kart number — that row is where you line up.
4
Tap for more
Tap a driver's name to see their kart number and classes. Tap ℹ About next to the class menu to learn what the class is — age group, karts, and more.
1
Sign up — drivers join
On the Sign up tab each driver types their name and vehicle number. If they've raced here before, their name pops up to tap — no retyping. They pick the classes they're running, then hit Draw my pills.
Each class draws one random pill. Lowest pill starts up front — that's the whole idea. Pills run 1 up to the class's max (200 by default), so late sign-ups still get a fair draw.
2
Lineups — see the grids
The Lineups tab shows every class lined up by pill, automatically split into heats. Switch between Double file and Single file to match how you grid the track.
⏱ Running qualifying? Tap ⏱ Qualifying times on any class to type each driver's best lap (like 18.34 or 1:02.5). As you type, the number badge shows where each driver would start. Save times just records them; Set grid from times lines the field up fastest-on-pole, slowest at the back. No transponders needed — and the times then show on the grid and the spectator view.
📺 TV display fills a screen with big, rotating lineups for the crowd — plug this device into a TV with an HDMI cable, or cast it (Chrome menu → Cast, or your tablet's screen mirroring). Big fields show the overflow next to the top 16 on the same screen, with row numbers. 🖨 Print / save PDF gives you a paper grid sheet.
3
Results — enter finishes
On the Results tab, pick each driver's finishing spot in both heat sets. Heat finishes add up into a total — low total wins, ties broken by the pill draw.
From there the B-main and feature lineups build themselves. Tags show exactly where each driver goes: → Feature for those locked in, or → B-main 1 for those who race their way in. Enter the B-main and feature finishes the same way.
⏱ Running a transponder / scoring system (MyLaps, MotoSponder, and the like)? Tap 📥 Import from timing on this page to load a results CSV instead of typing every finish — it previews who matched before you confirm. The same button on Lineups sets a starting grid straight from qualifying times.
4
Points — season standings
The Points tab keeps a running championship by class. Feature finishes earn points using the table you set in Admin. Today counts live as you enter finishes, and past race days count from history.
Drivers marked No points (in the Driver book or on a Today's entry) are excluded from the standings — they still race and appear in lineups and results, they just don't score.
New to the app mid-season? Use Admin → Import past race to enter previous nights so the standings start correctly.
5
Admin — set it up once
The Admin tab is the control room (you can lock it with a PIN):
Track identity — your name and logo on the lineups, printout, and TV. First time here? Hit Setup wizard to walk through name, classes, and PIN in one go.
Classes — add or remove classes, drag the running order, set each class's pill count. Main invert flips the top N starting spots of the feature or the B-mains once the heats are scored — heat totals still decide who makes each main, invert only changes where they start.
Race settings — heat size, feature size, max in a B-main, transfers, and the B-main format (single / parallel / cascade — tap the i buttons to learn each).
Today's entries — all drivers signed up today. Edit kart numbers and grid spots inline. Class column: move a driver to another class — you'll choose whether they keep their pill or draw a fresh one. Pts button: mark a driver non-points for today without changing their roster flag.
Driver book — the persistent driver roster. Points / No points toggle marks someone as a non-points member permanently — they race every night but never appear in standings.
Import past race — entering the app mid-season? Add previous nights one at a time (date, class, drivers, points) so standings are accurate from the start.
License — enter your access code to unlock past the free trial.
Backup — download a backup file, restore it on any device, or export CSVs. Restoring a backup never overwrites this device's license — each device keeps its own.
Start a new race day — archives today to history and clears the board for next time (your driver book and classes stay).
Set up for a new track — keeps all race data but clears the license and resets the trial. Use this when handing the app to a different track so they can activate their own code.
6
Multi-device sync — run several stations (optional)
Want a registration tablet, a scoring tower, and a TV screen all on the same race day at once? In Admin → Multi-device sync, tap Start sync and pick a short sync code. On each other device, open the matching Registration / Scoring / TV link it gives you (or tap Join and type the code) — every device then updates within about a second.
Each device is locked to its job so a station can't wander onto the wrong screen. To change a locked device's role, tap the small ⚙ Role button in the corner (it asks for your admin PIN). One thing to know: driver names appear on the TV, so they live in the cloud while sync is on — but your admin PIN, license, and race-day history never leave the device.
⭐ Best way to run it
By default RaceDay runs on one device and saves everything in that device's browser — simple, and it works with no internet. Want several devices sharing one live race day? Turn on Multi-device sync in Admin (step 6). Either way, a little planning keeps it smooth:
One device (the simple default). Pick the phone, tablet, or laptop that runs the night and stick with it — the driver book, points, and history all live there. Open the app on a different device and you'll see a blank app (unless sync is on); the data is still safe on the first one.
Several stations? Turn on Multi-device sync (Admin) so every device sees the same race day live, and lock each one to its job — registration, scoring, or TV. Step 6 walks through it.
Back up at the end of each night. Admin → Download full backup, then email the file to yourself. Starting a new race day will also offer to back up first. If a device is ever lost or replaced, Restore brings the whole season back. Note: restoring a backup never moves a license from one device to another — each device keeps its own.
Enter your access code once per device — it unlocks that device.
Good to know
• Without sync, everything is saved in this browser — no internet needed once the page is open; use Admin → Backup to move data between devices. With Multi-device sync on, your devices share the race day live (step 6).
• Single-device night? The device running sign-ups is the "source of truth" — if you cast to a TV, mirror that device. Running several stations? Use sync instead, and open a TV-role link right on the TV.
• Lowest pill = front of the grid. Lowest heat total = top of the standings. That one rule runs the whole night.
Business recommendations
Internal guidance for the platform owner. This page is not shown to the public — it is reachable only from the Admin panel. Informational only; it is not legal, tax, or insurance advice. Consult licensed professionals.
Why this matters: RaceDay is licensed to tracks, promoters, and sanctioning bodies as administrative software. The protections below keep the business, its data, and its customer relationships defensible as it grows.
Entity & insurance
Operate under an LLC (or comparable entity). Separating personal and business assets is the single biggest liability shield for a software business. Set the entity's legal name in Admin → Legal & business so it appears in the Terms, IP, and Privacy documents.
Carry Technology Errors & Omissions (Tech E&O) insurance, ideally bundled with Cyber liability. This is the coverage that responds to a scoring error, an outage, or a data incident claim — exactly the risks the Terms disclaim but that a customer may still pursue.
Have every customer sign a written service agreement (master subscription/lease agreement) that incorporates these Terms by reference, names the entity, and states the developer retains all ownership. A signed contract is far stronger than click-through acceptance alone.
Data & operations
Maintain regular data backups. Use Admin → Backup & export on a schedule, and keep copies off the primary device. With multi-device sync on, also export periodically — the cloud copy is convenience, not an archive.
Use secure hosting and SSL/HTTPS everywhere. Serve the app only over HTTPS (GitHub Pages and most hosts provide this automatically). Never distribute it over plain HTTP.
Keep the software updated. Ship fixes promptly, keep the Firebase SDK and any dependencies current, and review the database security rules periodically.
Restrict admin access with the Admin PIN on shared devices, and hand out role-locked links (register / scoring / TV) so stations can't change settings.
Data security: data currently lives in browser localStorage and, when sync is on, in Firebase keyed by a sync code (path-as-password — a deterrent, not strong auth). For anything sensitive, move to authenticated Firebase rules (per-track auth tokens) instead of open read/write paths. Avoid collecting more personal data than an event needs.
Customer account management: licenses are validated locally today. As the customer base grows, consider a lightweight licensing/account service so codes can be issued, audited, suspended, and revoked centrally (the Terms already reserve the right to suspend access).
Disaster recovery: document a recovery procedure — restore from the most recent backup JSON, re-issue role links, re-enable sync. Test a restore at least once a season so it is proven, not theoretical.
Backup strategy: aim for the 3-2-1 rule — at least 3 copies, on 2 media, 1 off-site. The exported JSON is portable and self-contained, which makes this easy.
Role-based permissions: the role system (admin / register / scoring / TV) is in place. As features grow, keep write access scoped to the minimum each station needs, and keep the audit log enabled so privileged actions are attributable.
Multi-track management: each track is independent today (its own device/sync code). To manage many tracks centrally, namespace data by track ID and add an operator-level view — but keep tracks isolated so one customer can never see another's data.
Sanctioning-body support: bodies that oversee multiple tracks will want roll-up standings and consistent points rules across venues. Plan for a read-only "series" layer that aggregates per-track history without giving the body write access to a track's live race day.
Future scalability: Firebase's free tier is generous but capped. Watch connection and storage limits, consider per-track sharding, and keep the data model JSON-per-field (as it is now) so individual stations never clobber each other.
Review this list with your attorney, accountant, and insurance broker before relying on it.
🔒 locked
📥 Import from timing
A new class is created when you import — suggested from the file name, edit if needed.
Pick your Downloads (or timing export) folder — any new CSV will load automatically.
RaceDay Setup
Step 1 of 5
Welcome to RaceDay — the fastest way to run pill draws, lineups, heats, and points at the track.
This quick setup takes about a minute. You'll set your track name, review your classes, and optionally lock admin controls with a PIN.
Use the tabs along the top during race night: Sign up → Lineups → Results → Points.
What's your track called?
Logo (optional)
Your race classes
Rename any class to match your track. Add or remove classes in Admin → Classes after setup.
Admin PIN (optional)
A PIN locks the Admin tab and certain controls so only you can change settings. Leave blank to skip — you can set it later in Admin.
Other devices
RaceDay can run on multiple devices at once with different roles:
Sign-up station — drivers use this tablet to enter
Scoring — for entering heat and feature results
Spectator/TV — shows the live lineup on a big screen
Go to Admin → Device Access to generate QR codes for each station. You're all set!
✕ Close
🏁 Results updated
✕
Enter each driver's best qualifying time — e.g. 18.34 or 1:02.5. The number badge shows where they'd start.