Videos The loop Looks Outputs Hosted GitHub Install
Splits from the footage you already have

The timer knows your stage time.
Your camera knows every shot.

Splitsmith finds the start beep and every shot in your head cam's audio. Check them, break the stage down, see where the time went, and line up your squad.

Open source MIT · any camera with a microphone · runs on your machine, nothing is uploaded · hosted by invitation

Splitsmith's match overview: twelve stages, each with footage, beep, shots, audit state, draw, average split and stage time
Beep
tone start
Placed on the start of your timer's tone. You confirm it.
Shot detection
stage at once
Each candidate is scored, then the stage's shots are picked together.
Per shot
split · class
Draw, fire, transition, movement, reload, activation.
Licence
MIT
Runs on your machine. Hosted at my.splitsmith.app by invitation.
See it in motion

One stage, start to finish.

From head cam to finished video.

Feature tour

Every shot, every split

The whole loop on one run.

Upright, as a Short
Trailer

Head cam in. Splits out.

The fast cut. The styles it flashes are in the gallery below.

Upright, as a Short
The loop

Prepare. Review. Analyse. Deliver.

One match, the whole squad's footage. Every stage shows what it needs next.

Prepare · Footage

A pile of videos, sorted

Point it at a folder from any number of cameras, in any order. Each video is matched to its shooter and stage by the scorecard times, head cam first. A camera with a wrong clock asks once: name one clip and the rest follow. Desktop app.

The sort review: a head cam with an unknown clock waiting for one named clip, and Anna Jonsson's runs, each on two cameras with the glasses as primary
Review · Audit

Every shot, on the waveform

Confirm the beep, and the shots appear on the stage audio. Reject an echo, add a missed shot, jump to the next flag. A second camera plays as an inset on the same beep; C swaps the two.

The head cam with a second camera inset in the top right, both on the same clock
Audit's timeline: thirty shot markers on the stage audio, two flagged, with play, zoom and the shot filter above
Analyse · Splits

The shot table

Time, split and class for every shot. Play the stage and the table follows.

Shot table: shot number, time, split and interval class chips
Analyse · Breakdown

Draw, movement and reloads, as regions

Breakdown proposes your draw, movement and reloads. Keep them, drag an edge to the frame, or draw your own. Exposed reload time is the part of a reload spent standing still. Review proposals on your phone too.

Breakdown's timeline with Audio, Shots, Draw, Movement, Reload and Activation lanes and dashed proposals
Analyse · Coach

Where the seconds went

Your time per stage, split by type and set against your own match, with the outliers named. Leave notes and flags on shots and stages.

The time budget: draw 1.97 s, movement 18.92 s, transitions 9.66 s, fire 1.54 s, each with its share, count and delta against the match
Analyse · Compare

Your squad, aligned to the beep

Every shooter's run on one clock, with the gap at each last shot.

Leaderboard: Anna Jonsson 28.27 s, Mathias Axell 32.12 s, +3.85 s
Two shooters' shot lanes on one time axis, 32.12 s and 28.27 s
Deliver · Export

Pick a Look, see it on your footage

Pick a Look, then the cards, summaries, overlay and transitions, each previewed on your own footage before you render. Save it as a preset. The MP4 can go straight to YouTube.

The export page: the Look group with Splitsmith, Broadcast and Clean, the title page and stage card choices, and the rail previewing the Broadcast title page
Looks

Every card, every style. At your pace.

Every card, overlay and transition each Look draws.

Look
Slot

Shown over a stand-in scene with sample figures. Make your own Look to change colours, fonts and logo, or, on the desktop app, the templates.

Outputs

Keep it in the app, or take it out.

In the app

Coach and compare

Video, timeline and table in sync, notes on every shot, the whole squad side by side.

  • On your own machine, or hosted at my.splitsmith.app by invitation
  • The desktop app keeps a synced match in step with your hosted account
  • On a phone: confirm beeps, audit shots and review Breakdown proposals
  • Share a read-only link to a match or a stage
Final Cut Pro

A marker per shot

An FCPXML timeline, stages back to back, a marker on every shot. Step through with M / Shift+M.

  • Per stage or the whole match
  • Transitions, slates and lower thirds
  • Markers for the reloads and movement you kept
  • Other cameras synced on the beep, one as a corner inset
  • FCP 7 XML for Premiere and Resolve
Rendered MP4

Ready to post

A finished video with the overlay burned in, or the whole squad in one grid.

  • Seven overlay styles: Classic, Plate, Pips, Ticker, Timeline, Minimal and Broadcast
  • Sixteen transitions, plus stings in your Look's colours
  • A summary after each stage and a match summary at the end
  • Upright for Shorts and Reels, clear of their captions and buttons
  • Your brand and the shooter's logo where you choose; an end-screen closing card
  • Upload to YouTube with chapters, captions and a thumbnail
An upright export with the Minimal overlay: the split, large, and the clock above the bottom safe areaThe stage summary on an upright canvas: splits first, static and moving, then draw, reloads and the scorecard
Install

Two minutes to your first stage.

01

Install and launchDownload the desktop app for macOS, Windows or Linux, or install with uv and open it in your browser. The first start downloads the detection models.

02

Add your footageAny camera with a microphone, one or several. Each clip is matched to its shooter and stage by the scorecard times.

03

Confirm the beeps, audit the shotsConfirm each beep it found. Detection runs, you check the shots, and the splits are yours.

Desktop app# macOS 13+ on Apple silicon, 64-bit Windows 10 or 11, or x86_64 Linux (Debian 12+, Ubuntu 22.04+, Arch); nothing else to install
Download from the releases page, then:
# macOS: open the .dmg and drag Splitsmith to Applications
# Windows: run Splitsmith-Setup-*-x64.exe (no admin needed), or unzip the -win-x64.zip; the installer is not signed yet, so Windows asks first: More info, then Run anyway
# Debian, Ubuntu: the .deb also installs the splitsmith command
$ sudo apt install ./splitsmith-desktop_*_amd64.deb
# Other distributions: the AppImage (on Ubuntu 24.04+, use the .deb)
$ chmod +x Splitsmith-*-x86_64.AppImage && ./Splitsmith-*-x86_64.AppImage
Local install# Python 3.11+ and uv; the UI fetches ~440 MB of detection models on first boot
$ uv tool install splitsmith
$ splitsmith ui
One clip, no models# The envelope-only single-clip path: shots, report and FCPXML
$ splitsmith single --video stage3.mp4 --time 32.12 \
  --stage-name "B6 Rear" --stage-number 3 --output ./b6-rear
Containers# Server, worker and agent roles from one image
$ docker pull ghcr.io/mandakan/splitsmith:latest
$ docker compose -f docker-compose.yml -f docker-compose.ghcr.yml up -d
Hosted

my.splitsmith.app, by invitation.

The same app in your browser: upload from any device, sync from the desktop, share links, and let a coach or squadmate comment. Leave your email for an invite.

One email when there is an invite for you, nothing else.

Detection

Trained on audited stages, not on a demo reel.

The shot detector is trained on real match audio with every shot time checked by hand, from many cameras and mounts. Today that is the maintainer's stages and a few squadmates'.

The beep

Placed on the start of your timer's tone, shown on a spectrogram, so Snap finds it even under a shot.

The beep step: candidates, the timer tone in a spectrogram, and the audio, with the beep on the tone's start Interval classes
DrawFireTransitionMovementReloadActivation

A gap under 1.0 s is fire, under 2.0 s a transition, longer is movement. Change any of them in Breakdown.

Regions

Draw, movement, reload and activation are also regions on the timeline, so a movement can span several shots. They give you moving and standing splits and reload times.

Reads
MP4MOVMKV.360any ffmpeg input