FinishLine is in active development. Features and availability may change before general release.

How the photo finish camera works

One camera images a single line at the finish, thousands of times a second. Stacking those slivers over time freezes the action across the line.

Technical5 min readUpdated August 18, 2026

A photo finish does not take a photograph of the finish. That is the first thing to unlearn, and everything else follows from it.

What a line-scan image actually is

An ordinary camera captures a two-dimensional picture at one instant. A line-scan camera captures a one-dimensional slice, a single thin line of pixels, over and over, as fast as it can, and stacks those slices side by side.

The result is a strip image with unusual axes:

  • The vertical axis is position along the finish line.
  • The horizontal axis is time.

The camera is aimed at the finish line and never moves. Anything that is not moving, the track, the lane stripes, the far fence, is the same in every slice, so it smears into flat horizontal bands. Only things that cross the line appear as shapes.

A runner shows up as a distorted figure whose horizontal position tells you when they crossed and whose vertical position tells you where across the line they did it. Reading the column under a runner's torso gives their finish instant, to the precision of one frame interval, with no human reaction time in the number at all.

This is why photo-finish images look strange, with runners stretched or compressed and the background reduced to stripes. It is not a distorted photograph. It is a graph of the finish line against time, and it is meant to be read, not admired.

Precision comes from frame rate, not a thinner slit

The intuition that a narrower sliver gives a sharper time is wrong, and it is worth being explicit about why.

Each output column is one camera frame. The time resolution of the strip is therefore one frame interval, full stop. Halving the width of the sampled line does not subdivide time; it only sacrifices light.

So the pipeline chases frame rate instead. It scans the device's available camera formats, keeps those at 1080p or below to bound the per-frame extraction work, and selects the one with the highest sustainable frame rate, up to 240 fps.

The accuracy shown in the interface reflects this honestly:

±(½ frame interval + clock-domain uncertainty)

Half a frame interval is the quantization: the true crossing happened somewhere inside the frame you marked. The second term is the clock sync uncertainty of the shared time base, present in a connected meet and absent when timing standalone. Both are shown, rather than quoting a precision the capture cannot support.

Landing every frame in the shared timing domain

A time is only useful if it is comparable to the gun. Camera frames arrive with presentation timestamps on the device's own hardware clock, so those are mapped into the same server-time domain that the gun and every other device's crossings live in.

Once that mapping exists, adjudication is a subtraction:

elapsed = markTime - gunTime

No correction factors, no offsets applied after the fact, and no special case for the photo-finish device relative to any other capture source.

Not overflowing the device

A camera running at 240 fps, storing a column per frame, will exhaust memory on a long heat. Two mechanisms keep that bounded.

Columns are tiled to disk. Pixels are written into fixed-size tiles laid out image-ready, so each incoming column is copied straight into its final position. When a tile fills, it is written out atomically, and a small cache of recently used tiles bounds what is resident. Review renders only the tiles actually on screen instead of composing the entire strip.

Per-column timestamps stay in memory throughout: they are tiny, and exact time mapping needs them. Only pixels go to disk.

A motion gate skips dead air. While nothing is moving through the line, columns are not stored at all. A heat with a long gap between the leaders and the last finisher does not fill storage with identical empty time.

The design evolved to this from a simpler in-memory ring buffer, which had a failure mode worth naming: on a long heat it could drop the earliest finishers to make room. Losing the winner's crossing to a buffer wrap is precisely the wrong tradeoff.

Reading the strip and marking crossings

After the heat, the operator scrubs the strip and places a mark on each crossing. What a mark attaches to depends on the heat style:

  • In a lane heat, the operator tags each mark with its lane. It becomes a lane result.
  • In a pack heat, marks are ordered crossings, and bibs are attached afterward by the recorder, exactly as they would be for tapped crossings.

Each mark becomes a timing record that is indistinguishable downstream from a tapped one. The record keeper, the public results page, and every export format treat them the same. Only the recorded source and the accuracy differ, since a photo-finish mark carries its own uncertainty and is flagged as camera-captured.

The strip is shared with the record keeper, who can review it and adjust marks after the heat. A contested or close result gets adjudicated properly without holding up the rest of the meet.

One device for the whole line

This is a structural difference from tap timing worth calling out. The per-lane model needs one device and one volunteer per lane. A photo-finish device is a single stationary station that images the entire line and adjudicates every crossing in the heat, in either heat style.

For a short-staffed meet, that trades six or eight finish volunteers for one operator plus a bib collector, and it improves accuracy at the same time.

What it does not solve

  • Alignment matters. The camera images the line it is aimed at. If it is aimed slightly off the finish, every time in the heat is consistently wrong, and the strip gives you no hint of it.
  • It cannot see through a runner. Two athletes finishing side by side in adjacent lanes can occlude each other, exactly as with a traditional system.
  • Light is finite. High frame rates mean short exposures. A dim, overcast evening produces a noisier strip than midday sun.

Alignment is the one setup step worth taking slowly, and the one worth double-checking before the first heat rather than after it.

Did this answer your question? If something here is wrong, missing, or out of date, tell us at support@finishlinetimer.com and we’ll fix it.

Search the knowledge base