Why most swing analyser apps give you a number no matter what
A swing app that always produces a result is hiding something. Here's what goes wrong inside video-based analysis, and what an honest tool should do instead.
Point almost any swing analyser app at almost any video and it will produce a score. Bad light, golfer half out of frame, a clip where the phone wobbled at the top — it doesn’t matter. Out comes a tempo, a posture grade, a list of faults. The interface is designed to always have something to show you.
That design choice tells you something about what’s underneath.
What analysis actually does
Video swing analysis on a phone works, in broad strokes, like this:
- A body-tracking model looks at each frame and estimates where your joints are — head, shoulders, hips, knees, and so on — as points on the image. Each point comes with a confidence.
- Those points, frame after frame, become a track of how each joint moved.
- Something looks at the track and picks out events: where the swing started, where it changed direction, where impact was.
- Measurements are taken between those events — timing, distances, angles.
- The measurements are compared against something — a norm, a population, a target — and turned into words.
Every one of those steps can fail quietly.
Where it goes wrong
Joints the model can’t see. Baggy clothing, a leg behind the other leg, a hand that leaves the frame at the finish. The model still emits a point — that’s what it’s built to do — but with low confidence, and often in the wrong place. If the next stage ignores the confidence, the bad point gets measured like a good one.
Phases in the wrong frame. The transition from backswing to downswing takes a few frames at 30 fps. Put “the top” one frame early and the tempo ratio moves by more than 10%. A detector that always returns a frame will always return one, even when the track is too noisy to justify it.
The wrong camera angle for the question. Early extension needs a down-the-line view. Hip slide needs face-on. A tool that reports both from one clip is reporting one of them from geometry that can’t support it.
A comparison against nothing. “Your tempo is 2.4:1 — too fast!” Too fast compared to what? A number from a book? A tour average? Without a real population measured the same way, the verdict is an opinion with a decimal point.
At each step, there is a choice: propagate the uncertainty, or paper over it. Apps that always show a result have, at some point, chosen the second.
Why it’s tempting
Blank screens feel like failure. A user who films a swing and gets “we couldn’t measure that” might blame the app. A user who gets “Tempo 2.7:1, Posture B+” feels like they got something. From a product point of view, always showing a number is safer.
It’s also worse. A confident wrong number sends you off to fix a thing that wasn’t broken, or reassures you about a thing that was. It gets in the way of the feel-versus-real loop that video analysis is supposed to help with.
What honest looks like
An analysis tool that takes measurement seriously does a few unglamorous things:
- It gates on confidence. If the joints it needs weren’t tracked well enough through the phases it needs, it says so and stops.
- It shows its work. The skeleton it tracked, over your video, at the frame it called impact. If the skeleton is wrong, you can see that it’s wrong.
- It restricts by angle. Measurements that need a view it didn’t get are not shown — not shown with a warning, not shown.
- It compares against a real population. Thresholds come from swings measured the same way, and the words it uses describe where you fall among them, not whether you passed.
- It withholds rather than rounds. A number it isn’t sure of doesn’t get shown with an asterisk. It doesn’t get shown.
None of this makes for a flashier demo. It does make for a number you can bring to a coach without embarrassment.
The question to ask
Next time an app hands you a result, ask it: which frame did you call the top, and how sure are you? If it can show you, you’ve got a measurement. If it can’t, you’ve got a guess with a nice font.