Overview
2Timer is a modern, web-based meet management application for timekeepers — built to run fully offline at any venue.
All meet data lives in your browser's database (IndexedDB). There is no required server
connection — you can time a race in the middle of a field with no Wi-Fi and everything will
work. You can import and export meets to a .2t file for backup, restore, or sharing
with other timers.
2Timer supports road racing and cross country (including team scoring), with track & field support planned.
Getting Started
Your first meet in a few steps: create a Meet, add Events, import or add Participants, assign Chips, configure Connectors for your timing hardware, run the meet, and publish results.
For the full sequence and details, see Typical Workflow below. Data lives
in your browser; you can export a .2t file anytime for backup or sharing.
Key Concepts
2Timer uses specific terminology that may differ from other meet management tools. These definitions will help you get oriented quickly.
Meet
A Meet is the top-level container for everything — participants, events, results, connectors, and configuration. It maps to a single race day or competition: a 5K road race, a cross country invitational, a regatta, etc.
Meet data lives in the browser's IndexedDB. You can have multiple meets on the same
device, each completely independent. Meets can be imported and exported to a .2t file for backup, restore, or sharing.
Genre
Genre is the sub-type of a running meet. Options include Road, Cross Country, Trail, OCR (obstacle course racing), and Other. Genre affects which features are available — for example, cross country enables team scoring.
Event
An Event is a single race within a meet — for example, "Open 5K" or "Varsity Boys 5K." A meet can have multiple events, and each participant is entered into one or more events.
Each event has a distance, a scheduled start time, an event number, and its own set of results.
Division
A Division is a named group of events within a meet. Use divisions to organize race programs such as "Morning Events," "Championship Races," or "Youth Series" without changing the event data itself.
Divisions help structure navigation, setup, and reporting by letting you work with a subset of events as one logical unit.
Participant
A Participant is a person registered in the meet. They have a bib number, name, age, gender, and optional team affiliation. Participants can be imported from CSV, HY-TEK, RunSignUp, or entered manually.
A participant's record contains their personal and demographic information. Their actual race result is tracked separately as an Entry.
Entry
An Entry links a Participant to a specific Event. It holds the timing data: gun time, chip time, finish time, place (overall, gender, and group), and status code.
Places are calculated automatically when timing data is processed. Each entry has one status that controls whether it is eligible for placing.
Group
A Group is an award category within an event. 2Timer supports two kinds of groups:
- Age Group — a range of ages (e.g., 40–49) within a gender. Any finisher whose age falls in the range competes for awards in that group.
- Band — a top-N bracket (e.g., top 3 Open finishers in each gender). Used for overall open awards and similar prize structures.
Every group has a gender, an award count (number of places that receive an award), and belongs to a specific event.
Wave
A Wave is a sub-group start within an event. Waves let you split large fields into separate start groups with different start times. Each wave has a time offset from the event's gun start. Gun times for participants in each wave are adjusted accordingly.
Team
A Team is an organization — a school, club, or running group —
identified by a short code (e.g., WHS for West High School). Teams are used primarily
for cross country scoring, where the top finishers from each team accumulate points.
Each participant can be assigned a team code, and the Teams section of the app shows current standings and scoring breakdowns.
League
A League (coming soon) is a group of teams. It will make it easier to organize multi-team competitions and apply shared league-level logic across meets.
Think of a league as a reusable container above teams, similar to how a division groups events.
Chip
A Chip is a timing chip that has been assigned to a specific bib number. The chip-to-bib mapping tells 2Timer which participant a timing detection belongs to.
Chips can be assigned manually or imported. 2Timer maintains a full audit trail of chip assignments.
Read
A Read is a single raw detection from a timing chip reader — one antenna picking up one chip at one moment. Every read has a chip ID, a bib number (resolved via the chip mapping), a timestamp, a reader/antenna ID, and a marker.
You can view all raw reads in the Reads section of the app, which is useful for troubleshooting missed or duplicate detections.
Marker
A Marker is a timing point on the course. The three marker types are:
- Start — the starting line
- Finish — the finish line
- Split — an intermediate timing point (e.g., 1-mile mark)
Each marker is linked to an event and defines a time window for valid reads — for example, a finish marker might accept reads between 10 minutes and 6 hours after the gun. Reads outside the window are flagged.
Connector
A Connector is a meet-level connection that defines how that specific meet exchanges data with hardware, files, and external services.
Connectors can be inbound (bringing data into 2Timer), outbound (publishing data out), or bidirectional. A connector can reference an Integration for persistent credentials and endpoint settings.
Integration
An Integration is configured outside any individual meet. It stores persistent connection details such as server addresses, API authentication, and publishing credentials.
Examples include FTP/SFTP server credentials, S3 configuration, or authentication to services like RunSignUp. Meets then leverage these saved integrations in their connectors.
Typical Workflow
Here's how a typical meet comes together in 2Timer, from setup to final results.
- Create a Meet — Give your meet a name, choose the sport and genre, set the date and venue, and save. The meet is stored in the app's IndexedDB.
- Add Events — Define the races in your meet (e.g., Open 5K, Masters 5K, Kids Fun Run). Set the distance and scheduled start time for each.
- Set Up Groups — Configure age groups and open award bands for each event. 2Timer uses these to calculate group places automatically.
- Add Participants — Import from CSV, HY-TEK, or RunSignUp, or enter athletes manually. Assign bib numbers and team codes as needed.
- Assign Chips — Map timing chips to bib numbers in the Chips section. You can import a chip file or assign chips one at a time.
- Configure Connectors — Set up connections to your timing hardware (e.g., FinishLynx, IPICO) so 2Timer can receive reads automatically. Optionally configure publishing connectors to push live results to local files. Connectors can reuse saved integrations (credentials and endpoint config) so each meet does not need to re-enter that information.
- Run the Meet — Start events, let your timing hardware send reads, and watch results populate in real time. Handle exceptions (DNF, DQ, missing chips) as they come up.
- Publish Results — Generate reports (overall, by group, by team), publish
them to local files, export HY-TEK results when needed, and optionally export a
.2tfile as a backup of the meet.
Import & Export
2Timer already supports several ways to bring data in and send data out, with many more formats and integrations planned.
CSV Import Wizard
2Timer's CSV import is designed to be flexible rather than tied to one rigid file layout. It can pull in participants, teams, events, entries, and result fields from a single delimited file.
- Flexible header mapping — recognizes a broad set of column aliases and lets you review or adjust the mapping before import
- Delimiter support — works with comma-, tab-, and semicolon-delimited files
- Derived fields — can split full names, normalize gender and dates, derive team codes from team names, and build preview columns before you commit the import
- Smart matching and dedupe — can match existing participants by bib, registration ID, name plus team, name plus date of birth, name plus age, or name plus city
- Event-aware import — can resolve events by number or name, and create missing events when needed
- Reusable templates — save column mappings and reuse them on future files with similar layouts
Other Import Paths
Beyond CSV, 2Timer can also bring in meet and timing data from several more specific workflows.
- .2t meet files — import a full 2Timer meet for restore, transfer, or backup recovery
- HY-TEK import — bring in participants, teams, events, and entries from HY-TEK semicolon-delimited files
- RunSignUp sync — pull registration data through a connected integration
- Timing inputs — ingest reads or timing files from supported systems such as FinishLynx, IPICO, and generic RFID readers
Export Capabilities
2Timer can export both full meet data and outward-facing files for other meet management and results workflows.
- .2t meet files — export an entire meet as a portable backup or handoff file
- HY-TEK results export — download HY-TEK semicolon-delimited results files for road racing and cross country workflows
- Report formats — generate result outputs as CSV, JSON, HTML, XML, or TXT
- FinishLynx outbound files — export PPL, SCH, EVT, and AFL files for Lynx/RaceTab-style workflows
- Current publishing target — publish generated report files to the local filesystem from within a meet
What’s Next
Import and export support is expanding. More source formats, registration systems, timing platforms, and publishing targets will be added over time.
The goal is to let 2Timer sit comfortably in the middle of a real timing workflow, whether data is arriving from registration platforms, meet files, CSVs, timing systems, or downstream export formats.
Connectors in Detail
Connectors are meet-specific. Integrations are account-level connection profiles that store reusable credentials and endpoints. A meet can attach one or more integrations to its connectors.
Timing Hardware
Inbound and bidirectional connectors that exchange data with timing equipment.
- FinishLynx — receives LIF/LFF timing data and exports PPL/SCH/EVT/AFL files
- IPICO RFID — multi-antenna chip timing system
- Generic RFID — configurable file-based reader for CSV/TSV-style RFID systems
Registration & Sync
Registration data can be brought in through dedicated import flows and integrations, rather than forcing everything through manual file cleanup.
- RunSignUp — supported as an integration for participant sync workflows
- CSV import wizard — maps and imports rich participant, team, event, and entry data
- HY-TEK import — imports semicolon-delimited participant and entry exports
Results Publishing
Outbound publishing in the current app is focused on practical meet outputs that are ready to use today.
- Local Filesystem — write CSV, JSON, HTML, XML, or TXT files to a local directory
- HY-TEK export — generate semicolon-delimited results files
- FinishLynx export — generate PPL, SCH, EVT, and AFL workflow files
Integrations
Persistent connection details live outside a meet so you can reuse them across multiple connectors and events.
- Credentials and auth — store reusable service logins and tokens once
- Server and endpoint config — keep connection details out of meet setup
- Future expansion — more publishing and sync targets can plug into this model over time
Roadmap & Plans
We're transparent about what we're building and what we're still exploring.
Immediate work
- Track & field and multis
- Integrating with more hardware
- Support for more import and export formats
- Rich report generation
- Pushing results to FTP, S3, live results sites, etc.
- Refinement of UI and features
Considering
- Cloud sync
- Scoreboard integration
- Age grading
- Records, PRs, season bests
- Other types of events
Ideas I'm exploring — not committed yet.