Create the Event, Races, and Teams

    Go to the login page and login. If you do not have an account already, it will be created as you attempt to login. On the Meet Setup page:
  1. Click on the default event "My Event" and rename it (or create a new event with the + button). Set the date to the day of your event. Make a note of the event code. It will be used to log in from the phones.
  2. Make sure that an event is selected. Create the races by hiting the white + in the race table.
  3. Add the teams using the + button on the Teams table.
  4. On race day, 2 or 3 helpers must install the XCMeet app on their android or iPhone to collect the times and positions.

Assigning Barcodes to the Racers

Two ways to get the barcodes:
  1. If you have the XCMeet clips, the racers will use their smart phone's browser and go to Register Racer (above) to attach their name to the clip they have chosen. If you have the generic clips, it is best to import the roster either from your own spreadsheet or from so that the racers can choose their existing name. Any spelling differences will cause more work for you to adjudicate the differences when you go to upload the results. On, choose "Roster.csv - Download full rosters (not meet entries) for attending schools". (Download this file if you want a sample to practice with.). If you have the league clips, you only import the roster once. XCMeet will remember your roster forever.
  2. League clips or generic clips:
    • If you have league clips, the racers will use the code that is on the clip to register.
    • If you have the generic clips, the racers will use your code: .
  3. Or, if you are going to print the barcodes
    1. Upload your roster, then assign barcodes to the racers by hitting "Assign sequential barcodes". You should see the chip numbers fill in on the Roster below.
    2. Click on "Print Labels" in the Events table to print them all, with a separate page for each school. Optionally, you can filter the roster by school, age, and gender then print that selected roster to create separate prints/pages for each category. In the dialog you'll select the paper and the quantity of blank barcodes you want. These additional barcodes will not have a name assigned to them. The racers that were not in your uploaded roster will pick a barcode and use a phone/browser to go to Register Racer (above). They will need your code: .
    3. A new webpage will open momentarily and deliver a PDF file named the same as your event. Open that file and print it.

The XCMeet App

The XCMeet app is available in Apple App Store or Google Play for iPhones and androids. This app is used to collect the times and positions. You must do all the setup from the website.
  • Use the event code to log in. If you are attempting to log in before race day, set the event date to today.
  • The app will attempt to send all times and positions to the server as they are captured. The time or position will be shown in yellow until it has communicated with the server. When it has successfully sent the information to the server, it will turn green. If it turns red, the app gave up trying to contact the server. When you restore connection to the internet, you can hit "retry" or the refresh button resend the red results.
  • Do nothing at the end of the race to stop the clock or to save the results. If the scans and times are green, they are saved. Just select the next race and continue.

Collecting Times

  • XCMeet App (android is the preferred device to capture times)
    • At the bottom click on "timer"
    • Select your race at the top
    • On an android, the volume up button should be used to start the race. You can press the start/gun icon, but you won't have tactile feel. Apple does not allow the volume buttons to be used by an app, so on an iPhone you must use the on screen buttons. You can connect a small bluetooth keyboard and use the "s" and "f" keys for start and finishers (e.g. Amazon or newegg).
    • The volume down button should be used to mark each racer's time. On an iPhone, press the finish icon.
    • Have 2 phones recording the finish times. One will be declared the backup. The "Results Editor" page will show the differences and allow you to fix any mistakes either one makes (not pushing the button, or hitting it once too many).
  • The web page can be used to record the times, but you will want to use a device that has a keyboard that you can feel.
    • On the "Results Editor" page select the race.
    • Use the "x" key to start the race and record finishers. You can use the mouse to press the buttons, but it won't be easy to keep the mouse on the button.
    • You can use the button "reset" to kill the race and start over.

Collecting Racers Positions

  • The XCMeet App (either android or iPhone)
    • At the bottom choose "Scanner"
    • Position the barcode in the viewer. You'll hear a nice beep on success or a rude sound if the barcode was already read or is a bogus number.
    • If you don't hear anything, check above the image you'll see the last read code. It won't beep over and over for the last scanned number.
    • If you need to enter a name, type the name and hit the "Enter" button.
  • From the web page
    • On the "Results Editor" page put the racer's name or number into "Finishers:" and hit enter (or click on "Insert At End").
    • Or, you can use a barcode scanner to provide the text and hit enter for you.
    • The results will automatically update below.

Editing Results

On the website, go to the "Results Editor" page. Your helpers can use the event code today (with any or no password) to login.
  • Times - You should compare your total times to your backup timer. If you both have the same number of finishers, your results should be good. If you have a different number you'll need to compare the two to find what happened. If you used 2 XCMeet timers, you will see the two time sequences on the "Results Editor" page. Difference larger than .4 seconds will be highlighted in yellow, over .75 seconds will be orange, over 1 second will be orange red, and over 2 seconds will be red. Use the backup offset field to reduce the differences between the two time sequences.
    • If you failed to hit the finish button for a racer, enter the time in the "Time:" field (e.g. 18:05.1) and hit "Insert Time". The results will automatically recalculate.
    • If you hit the finish button by mistake, select the time that was bogus and hit the "delete xxx" button. The results will automatically recalculate.
    • If you started the clock late (or early), you can add an offset on the "Results Editor" page to correct the times.
  • Positions -
    • If you missed scanning a finisher, select the position and enter their name or number in the "Finisher:" field and hit "Insert at X". The results will automatically recalculate.
    • If you scanned a bogus finisher, select the row that was bogus and hit the "delete xxx" button. The results will automatically recalculate.
  • If you sent the times to the wrong race, for example you sent the boys results to the girls race, log into the website and rename them and change their gender. If you scan the times to one race and the positions to another race, send email to support and we will swap them. (A feature for this is coming soon).
Notice that inserting or deleting only removes a time or a finisher depending on what button you push. For example, if you remove a finisher, the time that that finisher was assigned to remains. The subsequent finishers are all shifted down to the next time. Similarly, if you remove a time, then the finishers are all shifted up. You cannot remove both a time and a finisher in one operation.


  • Make sure your devices are fully charged. If the XCMeet app is in the foreground, it will prevent the device from going to sleep. Manually sleep your device while waiting for the finish.
  • Before you start the race practice hitting the start button, then the finishers button, then reset and you'll be ready for the start. One of the races was scored with an android that had a sticky volume button. It sprayed random times into the finish; not cool. Do some testing to ensure you are happy with it.
  • The 2 timers should not count out loud. We don't want them both making the same mistake. When group of runners cross in rapid succession, the timers should compare their total numbers. If they are different, then one either hit too many or missed. Make a note of when that happened (see the last bullet item in this section to fix it).
  • Practice with some spare clips before the racers show up so that you are fast at holding and presenting the barcodes for a quick beep.
  • Make sure you position your phone over a plain background that has no clips in sight except the one you are scanning. Otherwise you might scan a background clip out of order.
  • The goal at the finish chute is to ensure the racers are moving past without waiting for the scanner. In the middle of a large race, the clips will be arriving faster than you can scan them. You need to make a queue of clips for the scanner, so that the racers are not queuing up in the finishing chute waiting to hand off their clip. To make this clip queue, use 3 hand towels to create a makeshift conveyor belt on a table. Have a helper that will take the clips from the racers and place them in a row on the towel on the table. After the scanner scans the clip, drop the clip into a discard box. Move the towel towards you until you've emptied that towel of clips. Now place the towel at the start of the table.
  • Have some spare clips ready nearby for the few racers that show up without a clip. Scan one of those clips, and tell the racer their number. They can do "register racer" at anytime to change that number into their name.
  • Make your finishing chute with caution tape or equivalent so that the finishers cannot escape easily until they have passed the scan station.
  • Make your finishing chute long so that finishers can coast to a stop without running over previous finishers that are handing in their clip.
  • Make the chute narrow to a single lane so that kids cannot easily pass.
  • I have one helper parent or coach with the "Results Editor" page on their phone ready to make fixes if the timers or scanners make mistakes as the race is finishing.

Large Races over 150 runners

  • Break up races larger than 150. When you have over 200 runners, you will have large clumps of runners crossing the line at the same time and the timers will not be able to keep up. The finishing positions won't be accurate, because when a batch of 10 runners cross the line nobody will be able to make sense of who's chest was where. Additionally, the runners that have finished will not get out of the way of the finishing runners if you funnel them into a single chute. The ones that finished will walk, and thus stuff up the finish line.
    • If your course allows it, you can run overlapping races. Start the next set of runners a few minutes after the first and make sure that the next set has no kids that will pass the slowest from the first race. The timers and scanners must pay attention to where the breaks are and switch to the next race, or assign a different set of timers for each race.
    • Keep in mind that XCMeet provides XC team scoring live, so you can make these additional races proper XC scoring races without any additional work. Your 7-14, 15-21, runners might like the opportunity to run as a team and get a score. If you do this, then the finishing positions will matter. In other words, this makes it fun.
  • If you do run a large race, the times will be close enough, and the exact finishing position is rather irrelevant. I learned the following when I scored a race of 300 JV boys from 17 different schools. These were the boys that were 15th and up runners from their teams, which means that the lead runner is followed by a huge pack of boys. We had 155 runners cross the line in 3 minutes.
    • The runners that have finished will not get out of the way of the subsequent finishers, so the finish line has to be very wide.
    • more to follow...

Uploading to

From the "Meet Setup" page in the "Races" table the far right column has a "download" link that will create a file named "results.csv". Upload this file to