Upload match footage. Players, ball and referees are detected, tracked and split into two teams automatically. No lineups, no jersey numbers, no manual tagging.
Sample output
Produced by this pipeline from broadcast footage. Team colours were assigned with no labels, roster or jersey numbers supplied.
Team A (white shirts)Team B (dark shirts)RefereeBall
Upload any match clip. Phone, camcorder or broadcast footage all work.
Detect players, goalkeepers, referees and the ball with a YOLOv8 model trained on football footage.
Track every object across frames with ByteTrack, giving each player a persistent ID.
Separate teams by clustering shirt-appearance embeddings (SigLIP + UMAP + KMeans). Unsupervised, so no roster or jersey numbers are needed.
Export an annotated video plus a CSV with one row per tracked object per frame.
What you get
Automatic team separationClusters kit appearance directly from pixels. Works on footage with no labels and unreadable shirt numbers.
Referee isolationOfficials are detected as their own class and kept out of both teams.
Ball trackingThe ball is detected and marked separately each frame.
Per-frame coordinatesRaw CSV of every object's position and bounding box: the input for any downstream analytics.
Persistent player IDsEach tracked player keeps an ID across frames, so movement can be followed over time.
Fully automaticNo manual tagging and no human audit step. Turnaround is bounded by compute, not staffing.
Drop a video here or click to browseMP4, MOV, AVI or MKV · up to 200 MB
Running on a CPU-only server, so the first 30 seconds of the clip are analysed
at every 3rd frame. Expect roughly 5 minutes of processing. Jobs run one at a time.