PitLane: Turn Your GoPro Trackday Footage Into a Real Race Broadcast
Every trackday video looks the same
You strap the action cam to the roll cage, do your sessions, get home buzzing, and download the footage. And then… it’s just a video. A good one, maybe — nice sound, a few close calls — but it doesn’t tell you how fast you were going into that hairpin, or how hard you were braking, or which of today’s five laps was actually your best.
The broadcast teams have had this solved for decades: a speed readout in the corner, a little track map showing where the car is, a trace of lateral and longitudinal g-force. It looks brilliant, and it turns “here’s my lap” into something you can actually study — or just show off.
PitLane brings that to your own footage, for free, on your own hardware. Drag in a clip from a GoPro (or any action cam), point it at your GPS track, and it hands back the same video with a proper race HUD burned in — automatically split into laps, no video editing skills needed.
How it works, in three steps
- Upload your footage — GoPro clips carry their own GPS/accelerometer data embedded in the file, so that’s all PitLane needs. Riding something else, or want to pair a phone/Garmin GPS track instead? Drop in a
.gpxfile alongside the video and it’ll sync the two automatically. - Trim and pick your widgets — scrub to the section you actually want (nobody needs the ten minutes of pit-lane trundling before the session starts), and toggle which HUD elements you want drawn.
- Download — PitLane composites the HUD directly onto your real footage and hands back one finished MP4.
| Widget | What it shows |
|---|---|
| 🏎️ Speedometer | Live speed, styled like a real gauge cluster, plus your current and last-completed lap time |
| 📍 G-G diagram | Lateral vs longitudinal g-force — how hard you’re braking, accelerating, and cornering, all at once |
| 🗺️ Minimap | Your position on the track, live, with a trail of where you’ve just been |
It knows where your laps start and end — automatically
This is the bit that makes PitLane feel less like a video filter and more like a real timing system: you never tell it where each lap ends. You mark the start/finish line once — by clicking a point on the map, or even by pointing at a moment in the video — and PitLane works out every lap boundary itself from the GPS track alone.
Under the hood it’s watching for the vehicle to pass through a small zone around that point, then works out the exact instant it crossed an imaginary finish line through it — not just “which GPS sample happened to be closest,” which on a real circuit can be a few hundred milliseconds off depending on how the track approaches the line. That’s the difference between a lap split that’s roughly right and one that’s frame-accurate enough to actually compare lap to lap.
Once it has those crossings, every lap gets its own row in the app — duration, average speed, top speed — so you can see at a glance which lap of the session was your quickest, before you even render anything.
Built for go-karting, trackdays, and anything with a GPS
PitLane doesn’t care what you’re driving. Kart, hot hatch, trackday special, even a bicycle on a closed circuit — if it produces a GPS trace, PitLane can turn it into a HUD.
- GoPro owners get the easy path: the camera already records GPS and accelerometer data alongside the video, so there’s nothing extra to carry. (Worth knowing: PitLane reads that speed data carefully rather than blindly re-scaling it — an earlier bug class in overlay tools like this is silently multiplying an already-converted speed value by the wrong factor, which quietly inflates every reading by roughly 3.6×. Not fun to discover mid-way through bragging about your top speed.)
- Everyone else — DJI, Insta360, an older GoPro, or a phone/Garmin/Polar strapped to the dash — just needs a
.gpxtrack from the same session. Give PitLane the video’s real-world start time and it lines the two up for you. - Chaptered recordings — if your camera splits a long session into multiple files once it hits a size limit (a common GoPro habit), PitLane can join them back into one clip before extracting anything, GoPro chapter numbering auto-sorted, with the GPS track carried over intact.
Rendering doesn’t take forever
Drawing a HUD frame-by-frame onto a whole video used to be the slow part of tools like this — think double-digit minutes for a single short clip. PitLane fixes that two ways: each frame only redraws the handful of things that actually moved (the needle, the dot, the trail) instead of repainting the whole HUD from scratch every time, and the rendering work itself is split across every CPU core available. The result is a render that finishes in a sensible amount of time even on a modest homelab box or a Raspberry Pi, not just a beefy desktop.
And if even that’s not enough — say the homelab is busy, or you just want it done faster — PitLane will happily hand the job to a second machine. While your render is queued, the app shows you a ready-to-paste command with a one-time code baked in. Run it on your gaming PC (or any spare machine with Docker) and that machine renders your clip; nobody configures anything, and the code is useless for anything beyond that one job.
Your footage doesn’t stick around
This isn’t a video-hosting service, and it isn’t trying to be. Whatever you upload — and whatever PitLane renders — is temporary by design: kept just long enough to download (an hour, by default), then deleted automatically by a background sweeper. Nothing sits around on the server afterwards. It’s built to run on your own hardware, quietly, for you and whoever you trust with the address.
Under the hood
| Layer | Technology |
|---|---|
| Backend | FastAPI (Python) |
| Frontend | React + TypeScript + Vite |
| Telemetry parsing | GoPro GPMF (via exiftool/ffmpeg) + gpxpy for external GPX |
| HUD rendering | matplotlib, parallelised across CPU cores |
| Video processing | ffmpeg — trimming, lossless clip joining, HUD compositing |
| Distributed rendering | Any second machine, via a one-time code or an opt-in shared worker token |
| Deployment | Docker, multi-arch (works on a Raspberry Pi as well as a full server) |
Try it
PitLane is self-hosted — it runs on your own machine or homelab, not as a public web service — but it’s completely open source. Grab it and have it running in a couple of minutes:
docker compose up --build
Then open http://localhost:7000, drag in your first clip, and see what your driving actually looked like.
The full source, including the CI pipeline that publishes ready-to-run images for both x86 and ARM, is on GitHub.
You already know how fast you went. Now you can prove it.
Last modified: 23 Aug 2026