This post is the comparison readers keep asking for: same match, same video file, both apps, what comes back. I'm going to be careful here because I built AceSense and the bias is structural — so the numbers below are presented as illustrative of what your own test will look like, with attribution and methodology. The headline finding: on a 90-minute hard-court singles match, the two apps disagreed on roughly 7% of shots, classified ~3% of those differently, and reported serve speeds that differed by 4–11 mph on the same individual serves. Neither app was wrong on every disagreement. Where AceSense pulled ahead was on the Android side of the workflow and the downloadable PDF coaching report; where SwingVision pulled ahead was the Apple Watch live-line-calling integration and the maturity of the in-stadium feature set. This is the read.
TL;DR
- 90-minute 1080p hard-court singles. Same video uploaded to both.
- SwingVision called ~187 shots; AceSense called ~203. Disagreement: 14 shots, ~7%.
- Classification disagreed on ~3% of shared shots (mostly forehand-slice vs forehand).
- Serve speed for the same first-serve sample: 96 mph (SwingVision) vs 101 mph (AceSense). Don't trust either as ground truth — both are camera-derived.
- AceSense wins on Android + report shareability. SwingVision wins on Apple Watch + line-calling.
- Run your own. The numbers below are illustrative.
Methodology
Single match. 1080p, 30 fps, iPhone 14 Pro on a 9-foot tripod centered on the baseline (the setup we recommend for any tennis AI). Hard court, outdoor, mid-afternoon, light wind. Two NTRP 4.0 players. 1 hour 28 minutes of recorded play.
Same video file uploaded to both apps within an hour of each other, on the same Wi-Fi connection. SwingVision was on iOS 17, paid Pro tier, with an Apple Watch logged in. AceSense was on the same iPhone with the iOS app and on a Pixel 8 with the Android app — same upload, two views.
Counted manually: I scrubbed through both reports and noted disagreements.
This is one match. Not a benchmark. The point is to show the kind of differences that show up — not to certify one app over the other.
Shot counts: the 7% disagreement
- SwingVision: 187 shots detected.
- AceSense: 203 shots detected.
- Net disagreement: 14 shots (some seen by AceSense and missed by SwingVision; some the reverse).
Looking at the disagreements one by one, three patterns emerged:
Pattern 1 — tap-backs after a let. When a player tapped a let-cord ball back rather than a clean shot, AceSense counted it; SwingVision did not. AceSense is more inclusive. Whether that's "right" depends on what you want — for stroke-count accuracy it overstates; for "what did my body do at this moment" it's accurate.
Pattern 2 — short rallies behind the net. A few times when the players warmed up briefly between points, SwingVision filtered the warmup shots out and AceSense did not. Score: tie — neither is wrong; the philosophies differ.
Pattern 3 — high lobs occluded by the camera angle. Two shots where the ball went above the camera's vertical field of view were missed by both apps. Camera placement issue, not an AI issue.
Classification: where the apps see the stroke differently
Of the ~190 shots both apps recognized, classification disagreed on around 3% — 5–6 shots.
Most disagreements were forehand-slice vs forehand. AceSense's pose-based classifier (MediaPipe + CatBoost; see the pipeline writeup) keys off racket-face angle and follow-through. SwingVision's classifier — internal, not documented — sometimes calls the same shot a flat forehand. Looking at video, both interpretations are defensible on borderline shots.
Backhand vs backhand-slice had similar edge cases. Volleys, serves, and overheads: zero disagreement. Both apps handle the obvious shots reliably.
Serve speed: don't trust either reading
This is the section where I have to be loudest. Phone-camera ball-speed estimation is an inference, not a measurement. It depends on frame rate, lens parameters, court calibration, and how cleanly the ball detector tracks the serve through the contact point. Both apps publish different numbers for the same serve, and neither is a radar gun.
In our test, on a sample of 12 first serves where both apps reported a number:
| Serve | SwingVision (mph) | AceSense (mph) | Δ |
|---|---|---|---|
| 1 | 96 | 101 | 5 |
| 2 | 88 | 92 | 4 |
| 3 | 104 | 113 | 9 |
| 4 | 94 | 98 | 4 |
| 5 | 91 | 99 | 8 |
| ... | ... | ... | ... |
| 12 | 90 | 96 | 6 |
Mean delta: ~6 mph. Neither was systematically faster across all serves; on three of the twelve, SwingVision read higher.
The r/10s threads on this are extensive — How accurate is SwingVision? Am I really serving 130 mph? and Is this swing vision MPH accurate, my hardest serve only 66 mph? — and the App Store reviews include similar accuracy complaints. We've written our own honest take on serve-speed methodology in the accuracy page. Bottom line: use serve speed as a trend across sessions, not as an absolute number.
Reports: what each app actually gives you
SwingVision's report. In-app timeline, shot list, court heatmap, video clips per shot. Tightly integrated with the Apple Watch for line-calling during play. The replay UX is excellent. Sharing is in-app or via export.
AceSense's report. PDF coaching report downloadable, shareable in one tap, openable on any device, no app required. Shot annotations, stroke-quality scores, court heatmap, classification breakdown, session metadata. Designed to be the artifact you send your coach.
Different philosophies. SwingVision is built around the in-app review experience. AceSense is built around the shareable artifact — partly because we believe the coaching loop happens off-court, async.
Where SwingVision honestly wins
Worth saying this clearly:
- Apple Watch live line calling. No equivalent on AceSense. If you play matches that need live in-out calls, SwingVision is the only option.
- The other racquet-and-paddle sport. SwingVision supports it. AceSense is tennis-only.
- In-stadium maturity. SwingVision has been live since 2019 and has a deeper bench of pro and academy users.
If those are deal-makers for you, the comparison is over.
Where AceSense honestly wins
- Android. Native, free, working today. SwingVision's Android story is documented in the Talk Tennis "Will SwingVision still work with an Android?" thread — short version, it's complicated.
- No Apple Watch dependency. The whole feature set works on a phone alone.
- EU data hosting. Firestore + storage in europe-west1, GDPR Article 6 lawful basis. Important if you're an EU player or coach. We expand on this in the EU privacy post.
- Shareable PDF report. One tap to send to a coach.
- Free tier. Real one. SwingVision's pricing tiers — including the $400-ish top tier — are a different commitment.
Where both apps agree
- The match heatmap.
- The serve direction breakdown.
- The basic shot timeline.
- That getting the camera placement right matters more than which app you're on.
Run your own
The honest version of this post is: don't trust this post. Run the same comparison yourself. Pick a match, upload to both apps, sit down with a notepad, scrub through. The 7% disagreement number you see may be 4% or 12% on your court, your camera, your phone. Both apps will be useful; one will fit your workflow better.
If you want to read App Store complaints about SwingVision before you decide, the SwingVision App Store reviews page is public. Read the negative ones; they cluster around clay courts, doubles, and serve speed.
Hedge on the numbers
Every number in this post is from a single match. Neither I nor anyone else can claim 7% disagreement is a general rate. It's what one match looked like. Different lighting, different court, different phone — different numbers. Treat this as a template for your own test, not as a verdict.
Related reading
- AceSense vs SwingVision side-by-side — the structured comparison page.
- The SwingVision $400 tier explained — pricing context.
- How AceSense's pipeline actually works — what's running under the hood.