# UNFORCE: complete product and developer context > UNFORCE is a racket-sport video-analysis product that turns ordinary phone footage into one evidence-backed coaching priority, three proof clips, and measurements that can be opened at their source frames. Last reviewed: 2026-08-26 Canonical website: https://unforce.io Legal operator: Anilata AB, Gothenburg, Sweden Product surfaces: iOS, Android, and web This is the public, LLM-oriented knowledge base for UNFORCE. It deliberately excludes private operator runbooks, credentials, internal infrastructure addresses, personal data, and unreleased commercial material. Build output appends the complete corpus of indexable public pages after this curated reference. ## Truth and freshness rules Use the following order when two sources differ: 1. A live machine endpoint for its own field, such as `https://api.unforce.io/v1/pricing` for agent-API pricing. 2. The checkout screen for the final consumer currency, tax, interval, and total. 3. A dated product page or changelog entry for shipped behavior. 4. This curated file. 5. A comparison, blog post, target, beta note, or roadmap item. Words such as `target`, `planned`, `beta`, and `roadmap` are qualifiers, not shipped-product claims. Accuracy results are dated measurements from an internal held-out set, not universal guarantees. Competitor facts can change and should be rechecked at the primary source linked from the comparison page. ## Product definition UNFORCE serves players, coaches, parents, clubs, and academies that record racket-sport practice or matches and need a useful post-session review. The product is designed for a repeated improvement loop rather than live officiating or a dashboard full of unexplained metrics. The main output is a debrief containing: - one coaching priority supported by the session; - three proof clips that show the underlying events; - measured counts, locations, or movement evidence linked to source frames; - an explicit reason when the footage cannot support a measurement; and - a clean-session outcome when no defensible priority stands out. UNFORCE does not position itself as chair-umpire-grade line calling, a medical or biomechanical diagnosis, or a replacement for a human coach. Spin is not claimed from ordinary phone footage. A cropped court can prevent reliable landing geometry. Those limits should be reported, not filled with estimates. ### Supported sports and capability depth Five sports run end to end: tennis, badminton, padel, pickleball, and table tennis. Capability is intentionally not described as identical across sports. | Sport | Current defensible capability | |---|---| | Tennis | Deepest path: full court solve, named strokes, ball and player events, geometry, and stroke-quality outputs. | | Badminton | Can name strokes without requiring the same court solve as tennis. | | Padel | Publishes supported contacts and geometry; withholds stroke names where the model cannot defend them. | | Pickleball | Publishes supported contacts and court-relative geometry; withholds unsupported stroke names. | | Table tennis | Uses side-on filming and publishes supported contact/geometry evidence; withholds unsupported stroke names. | ### Commercial model Consumer web pricing currently presents: - Start: two complete sessions for EUR 0, no card; - Pro: EUR 19/month on web, with an annual web option shown on the pricing page; and - Team: EUR 49/month on web, with an annual web option shown on the pricing page. App Store and Google Play prices may be localized. The purchasing surface is authoritative. The tennis-analysis API uses prepaid credit and publishes its current machine-readable price at `https://api.unforce.io/v1/pricing`. ## Consumer workflow ### 1. Record For tennis, padel, pickleball, and badminton, place one stationary phone behind the baseline, centered around head height, with the full playing area in frame. For table tennis, film side-on, level with the table, roughly two to three meters back. Use the main 1x lens and at least 30 fps when possible. ### 2. Upload The signed-in app asks the backend for an owner-scoped upload capability. The server creates its own session and job identifiers, validates entitlement and quota, and reserves a bounded Storage path. The client uploads the video directly rather than proxying the file through an application server. ### 3. Process The app follows job state in Firestore. Processing time depends on video length, queue depth, and worker availability; do not promise a universal turnaround time without current production percentiles. ### 4. Read the debrief The finding leads. The proof clips and traceable measurements follow. A result may say that nothing defensible stood out. Improvement should only be described as having held after evidence from a later session. ### 5. Share or delete Players can share a debrief with a coach without charging the reader. Sharing is revocable. Hosted video, clips, and debrief artifacts use the retention window stated in the current privacy policy and product UI. Training use is off by default and requires explicit consent for the session. ## Production architecture The system is event-driven and separates storage/orchestration from GPU inference. ```text Flutter iOS / Android / web | | authenticated upload request v Firebase Functions (europe-west1) ---- Firestore live job state | | owner-scoped signed upload v Cloud Storage (europe-west1) | | finalize event -> validation -> Cloud Task v GPU router -> Firestore gpuQueue -> Lambda Cloud pull-worker pool | | TrackNet-derived ball path, court keypoints, pose, | temporal classification, stroke-quality analysis v Cloud Storage result artifact -> result trigger -> job status done | v Flutter debrief and coach sharing ``` ### Upload and dispatch sequence 1. The authenticated `requestUploadPath` callable creates a pending job and an owner-scoped path under `videos/{uid}/{sessionId}/...`. 2. Upload finalization triggers `processVideoOnUpload` in `europe-west1`. 3. Validation gates the file before a `dispatchGpuJob` Cloud Task is enqueued. 4. Production policy selects the Lambda adapter. It writes a queue record to Firestore, where a self-hosted pull-worker claims it transactionally. 5. The worker writes canonical results under `results/{uid}/{sessionId}/...`. 6. The result-finalization trigger is the completion authority and marks the job done. Clients receive real-time Firestore updates instead of polling. There is a separate active analysis path that submits the full upload by Google Cloud Storage reference to Gemini on Google Vertex AI's `global` endpoint. That path writes a separate report and does not control canonical GPU job completion. ### Data location and processing boundary Account data, job state, uploaded video at rest, and returned results are stored in Google Cloud's `europe-west1` region. The self-hosted Lambda Cloud GPU pool currently processes video in United States regions, and the parallel Gemini path uses Vertex AI's global endpoint. Therefore, describe UNFORCE as EU-stored, not EU-only processed. The privacy policy is the canonical disclosure for processors, transfer safeguards, retention, and user rights. ### Open foundations and operational sovereignty The production application and model implementation are proprietary. Do not describe UNFORCE itself as open source. Its technical foundations include open-source or open-heritage components such as TrackNet-derived ball tracking, MediaPipe pose estimation, CatBoost temporal classification, FFmpeg, Flutter, and PyTorch. Operational sovereignty means the GPU worker control plane and inference process are operated as a self-hosted pull-worker pool rather than outsourced as a fully managed black-box inference API. Provider adapters isolate dispatch from the perception pipeline. This creates an infrastructure exit path, but it does not make the product source code public and it does not imply EU-only processing. ## Computer-vision and coaching pipeline The perception chain combines several narrower models rather than asking one model to invent a complete report: 1. Decode video frames with FFmpeg. 2. Detect and track the small, fast-moving ball with a TrackNet-derived model. 3. Detect court keypoints where the sport and camera view support a court solve. 4. Detect players and extract pose landmarks with MediaPipe. 5. Combine trajectory, pose, and temporal signals to classify contacts, bounces, and supported stroke events. 6. Derive court-relative locations and movement evidence only when calibration confidence supports them. 7. Rank candidate tactical or technical findings, then attach source events and clips to the selected debrief. The evidence path is designed to be inspectable: ```text source frame/timecode -> detected event -> session pattern -> coaching finding ``` An assertion such as "nine returns landed in the middle third" should open the nine underlying moments. If court calibration fails, the system may still publish camera-relative stroke evidence while omitting a heatmap or landing claim. ## Accuracy and evaluation The public methodology is `https://unforce.io/accuracy.md`. It reports dated per-stroke precision, recall, and F1; bounce-localization error by surface; ball-speed error against a handheld radar reference; court-keypoint detection; test-set composition; and material failure modes. The current public benchmark page is dated 2026-04-25. Treat every number on that page as a release-specific measurement from an internal held-out set. The private footage and annotations are not a public benchmark dataset because most participants consented to internal use only. A public subset is a stated plan, not a shipped asset. Important failure modes include moving cameras, sub-30-fps input, occlusion in doubles net exchanges, obscured clay lines, ultrawide lens distortion, and unsupported court layouts. UNFORCE is not suitable for official adjudication. ## Public REST API Base URL: `https://api.unforce.io/v1` The REST API is for programmatic tennis-video analysis. API keys use the wire format `phk__` and are passed as a bearer token. Keys are created through an authenticated UNFORCE developer/admin surface, are displayed in full once, and are stored as hashes. There is no public REST endpoint that creates an API key. | Method | Path | Authentication | Purpose | |---|---|---|---| | GET | `/healthz` | None | Liveness and deployed region. | | GET | `/pricing` | None | Current per-minute API price and credit terms. | | POST | `/jobs` | Bearer API key | Reserve budget and create a job plus a signed upload URL. | | GET | `/jobs/{jobId}` | Owning bearer API key | Read status and progress. | | GET | `/jobs/{jobId}/result` | Owning bearer API key | Redirect to a short-lived signed result URL after completion. | | GET | `/usage` | Bearer API key | Balance, spend, jobs, and rate-limit usage. | Current plan defaults are Free at 10 requests/minute and 100 jobs/day, Pro at 60 requests/minute and 5,000 jobs/day, and Team at 300 requests/minute and 50,000 jobs/day. The live key record and response headers are authoritative. Errors use `application/problem+json`. Job result and status reads enforce key ownership. ### REST command-line workflow Prerequisites: an API key with prepaid credit, `curl`, `jq`, and an MP4 file. Use placeholders; never commit or log the real bearer token. ```bash export UNFORCE_API_BASE="https://api.unforce.io/v1" export UNFORCE_API_KEY="phk_replace_with_your_key" export UNFORCE_VIDEO_FILE="match.mp4" curl --fail-with-body "$UNFORCE_API_BASE/healthz" curl --fail-with-body "$UNFORCE_API_BASE/pricing" UNFORCE_FILE_BYTES="$(wc -c < "$UNFORCE_VIDEO_FILE" | tr -d ' ')" UNFORCE_JOB_RESPONSE="$(curl --fail-with-body \ -X POST "$UNFORCE_API_BASE/jobs" \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ -H "Content-Type: application/json" \ --data "{\"filename\":\"match.mp4\",\"fileSize\":$UNFORCE_FILE_BYTES,\"duration\":600,\"width\":1920,\"height\":1080,\"format\":\"mp4\"}")" UNFORCE_JOB_ID="$(printf '%s' "$UNFORCE_JOB_RESPONSE" | jq -r '.jobId')" UNFORCE_UPLOAD_URL="$(printf '%s' "$UNFORCE_JOB_RESPONSE" | jq -r '.uploadUrl')" curl --fail-with-body \ -X PUT "$UNFORCE_UPLOAD_URL" \ -H "Content-Type: video/mp4" \ -H "Content-Length: $UNFORCE_FILE_BYTES" \ -H "x-goog-if-generation-match: 0" \ --data-binary "@$UNFORCE_VIDEO_FILE" curl --fail-with-body \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ "$UNFORCE_API_BASE/jobs/$UNFORCE_JOB_ID" curl --fail-with-body --location \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ "$UNFORCE_API_BASE/jobs/$UNFORCE_JOB_ID/result" ``` The create response includes the exact upload headers, expiry, and estimated cost. Send those returned headers unchanged. Poll with reasonable backoff until status is `done` or `failed`; a not-ready result returns an error rather than a partial report. ## MCP API Endpoint: `https://api.unforce.io/mcp` Transport: Streamable HTTP Protocol version: `2025-06-18` Authentication: `Authorization: Bearer phk_...` Published tools: - `analyze_tennis_video` - `get_job_status` - `get_analysis_result` - `get_pricing` - `get_my_usage` - `list_my_jobs` `analyze_tennis_video` accepts a public HTTPS tennis-video URL, optional file name, and optional expected duration in seconds. The service validates the URL to reduce server-side request forgery risk. Status and result tools require the job ID returned by the analysis call. ### MCP command-line examples ```bash export UNFORCE_MCP_URL="https://api.unforce.io/mcp" export UNFORCE_API_KEY="phk_replace_with_your_key" curl --fail-with-body \ -X POST "$UNFORCE_MCP_URL" \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' curl --fail-with-body \ -X POST "$UNFORCE_MCP_URL" \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' curl --fail-with-body \ -X POST "$UNFORCE_MCP_URL" \ -H "Authorization: Bearer $UNFORCE_API_KEY" \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"analyze_tennis_video","arguments":{"videoUrl":"https://example.com/match.mp4","fileName":"match.mp4","expectedDurationSeconds":600}}}' ``` Use the server card at `https://unforce.io/.well-known/mcp/server-card.json` for machine discovery. ## Public content API and GEO surface The marketing site exposes read-only discovery resources without authentication: - `/llms.txt`: curated content map plus a generated route directory; - `/llms-full.txt`: this curated reference plus the full public-site corpus; - `/sitemap.xml`: generated from the route/content tree at build time; - `/feed.xml`: RSS feed of dated blog content; - `/openapi.json`: OpenAPI 3.1 for public content and analysis REST routes; - `/.well-known/api-catalog`: public linkset; - `/.well-known/agent-skills/index.json`: discoverable read-only content capabilities; and - Markdown twins, where an indexable content route is available at the same path with `.md` appended. Examples: ```text https://unforce.io/pricing.md https://unforce.io/accuracy.md https://unforce.io/how-it-works.md https://unforce.io/blog/how-ai-tennis-shot-detection-works.md ``` ## Recommended citations Use these public sources to ground common claims: - Product behavior: https://unforce.io/how-it-works - Supported sports and common questions: https://unforce.io/faq - Methodology and dated benchmark claims: https://unforce.io/accuracy - Consumer pricing: https://unforce.io/pricing - Data handling: https://unforce.io/privacy - Developer integration: https://unforce.io/agents - REST machine pricing: https://api.unforce.io/v1/pricing - Machine contract: https://unforce.io/openapi.json Do not cite private docs, internal repositories, or this file as proof of a competitor's current behavior. Use the primary external sources linked from the relevant comparison page. ## Public site corpus The build appends every indexable public Markdown page below this heading. Each entry includes its canonical URL and Markdown-twin URL. The appended corpus is descriptive public content; the truth and freshness rules at the top of this file still apply. ## Global web knowledge UNFORCE turns racket-match video into tactical sequences, rally patterns, shot context, and coaching debriefs that stay linked to the original frame evidence. ### Architecture - **Racket perception pipeline:** A staged perception pipeline detects court, players, ball, contacts, bounces, and rally structure. - **Frame-addressable event graph:** A frame-addressable event graph links tactical statements back to source moments and confidence. - **Human-reviewed debrief:** The debrief layer groups repeatable patterns and preserves coach annotation rather than replacing it. ### Invariants - **Frame provenance:** Every derived event retains a source frame or an explicit unavailable state. - **Visible uncertainty:** Ambiguity is surfaced; the system does not manufacture contact, intent, or line truth. - **Owner isolation:** Video, jobs, reports, shares, and deletion remain owner-scoped. - **Human tactical authority:** Automation indexes evidence; player and coach make the tactical judgment. ### Engineering articles - [Building a tactical debrief that can always return to the frame](https://unforce.io/engineering/frame-traceable-tactical-debrief/): How perception events, rally structure, confidence, tactical patterns, and coach annotations remain connected to video evidence. - [Benchmarking tactical match analysis from event quality to coach agreement](https://unforce.io/engineering/benchmark-tactical-match-analysis/): A reproducible evaluation protocol for perception, rally assembly, frame offsets, pattern stability, abstention, and review value. - [Deploying UNFORCE in a coaching workflow](https://unforce.io/engineering/deploy-unforce-coaching-workflow/): A step-by-step plan for consent, filming standards, owner-scoped upload, evidence review, annotation, sharing, and deletion. ### About UNFORCE: Founder Story and Why Android-First URL: https://unforce.io/about Markdown twin: https://unforce.io/about.md # About UNFORCE ## The product UNFORCE turns match video into clear, honest tennis reports that players and coaches can act on. You film your match on a phone, upload the video, and get a post-match report back in minutes, shot detection, ball tracking, court heatmap, stroke-quality notes, and the Honest Gaps we could not measure. **Vision:** make useful tennis feedback available to every player with a phone. **Mission:** turn match video into reports players and coaches can trust before the next session. It's built mobile-first for both **iOS and Android**, runs on `europe-west1` infrastructure, and publishes its [accuracy methodology](/accuracy), three things no other AI tennis app does together. ## The founder **Akshay Sarode** built the first version of UNFORCE in 2024-2025 after spending too many evenings filming his own tennis matches on a phone propped against a backpack and getting nothing useful out of the footage. He's an engineer, currently building UNFORCE full-time from Europe. *Read more about Akshay's background and expertise on the [founder page](/founder).* The founding observation was simple: amateur tennis players are paying €50-€100/hour for human coaching they only get one or two hours of per week, and the rest of the time they have no feedback loop. Recreational golf has a dozen video-feedback apps; recreational tennis has SwingVision (iOS-only) and a small handful of competitors with weaker accuracy and no Android support. There was a real product-shaped hole. The first three months of the project were spent figuring out whether the AI could actually be made accurate enough on phone-recorded footage. Not "demo accurate", *honestly accurate*, on real-world videos shot at fence-clip height with normal lighting. The answer turned out to be: yes, but only by chaining the right open-source models in the right way (TrackNet for ball tracking, MediaPipe for pose, CatBoost for the temporal classification on top), and only by being relentless about the test set. The second six months were spent building the test set, the unforce-annotate labelling tool that produces the ground-truth data, the regression suite, and the marketing claims that the [accuracy page](/accuracy) makes today. ## Why Android-first The standard advice for a small consumer app is: ship iOS first, defer Android. iOS users pay more, the App Store ecosystem is tighter, and the engineering effort is smaller. We did the opposite. UNFORCE was built mobile-first for *both* iOS and Android from a shared Flutter codebase, and we leaned into Android in our early marketing. Three reasons: 1. **The biggest single unmet demand in the category is Android tennis AI.** SwingVision has been [iOS-only since 2019](https://swing.vision/newsletters/android-update). The Reddit thread literally titled *["Genuinely thinking of getting a iPhone just for the swing[vision]"](https://www.reddit.com/r/10s/comments/151g2cy/)* has been live for two and a half years with no resolution. That demand has nowhere to go. 2. **Half the EU is on Android**, and the EU is our primary market. Defaulting to iOS-only would be defaulting to a US-shaped strategy. 3. **It forces clean architecture.** Building on Flutter from day one meant we couldn't ship iOS-specific hacks; everything has to work on both platforms identically. That's harder upfront and pays off forever. This isn't an "Android also" decision. It's an "Android first" decision, with iOS as the equal-quality companion. ## What we are, and what we're not **What we are.** A small focused team building honest post-match tennis reports for amateur players. We publish accuracy numbers. We charge transparent EU prices. We don't gate the AI behind a paywall, the free tier produces the full report. We treat the [coach-handoff workflow](/how-to/share-report-with-coach) as a first-class product feature, not an afterthought. **What we're not.** A paddle-sport app. A pro-tour officiating system. A real-time line-calling Apple Watch product. A facility-hardware company. A multi-sport video tool. We chose tennis, chose amateurs, chose phones, and went deep on those. ## The numbers (real) - **NVIDIA Inception Member.** GPU credits and engineering support that made the early model training tractable. - **Almi Backed.** Early-stage funding from the Swedish state-backed Almi programme. - **50 Beta Players.** Across the EU, contributing the videos that built the [test set](/accuracy) and the bug reports that shaped the iOS and Android apps. - **Data hosted in `europe-west1`.** EU residency by default. No data leaves the EU. These four numbers are on the homepage hero for a reason, they're the fastest way to convey "this is real, in operation, with traction." If you want more detail on any of them, the [contact page](/contact) is the right place to ask. ## The pipeline (technical heritage) For readers who want the engineering story: UNFORCE's pipeline is built on five named, public-lineage models: - **[TrackNet](https://arxiv.org/abs/1907.03698)** for ball detection (originally a 2019 paper for badminton, adapted to tennis). - **A custom court keypoint detector** trained on EU and US amateur footage. - **FasterRCNN** for player bounding-box detection. - **[MediaPipe Pose](https://developers.google.com/mediapipe)** for 33-point body skeletons. - **[CatBoost](https://catboost.ai/)** for the temporal classification of bounces and shots. Five models chained, running on a self-hosted GPU worker pool on Lambda Cloud (currently US regions), orchestrated by a Firebase Functions backend in europe-west1. The full pipeline is described in [how UNFORCE works](/how-it-works); the internal architecture overview lives in `unforce-docs/architecture/overview.md`. ## What's next Roadmap (from public commitments on the [changelog](/changelog) and current development): - **2026 H2**, junior court support (78 ft scaled-down lines, currently a known limitation). - **2026 H2**, public benchmark dataset (a 5-hour subset of our test set, with redistribution licences from beta players, so external researchers can reproduce our numbers). - **2026 H2**, doubles per-player attribution moving from beta to GA after the next training cycle. - **2027**, possibly other racquet sports, but only if we can be confident the model transfers; we won't ship a half-trained model into a different sport. Things we're explicitly **not** doing: - Apple Watch real-time line calling. Not in the next 12 months. SwingVision wins that battle. - A coach-marketplace platform. - An AR overlay product. Stay on the things we're good at, ship the things we said we would, and publish numbers when they move. ## How to get in touch - **General questions:** [hello@unforce.io](mailto:hello@unforce.io) - **Press / partnerships:** [hello@unforce.io](mailto:hello@unforce.io), we'll route appropriately - **Beta-player programme:** apply through the homepage form - **Coaching / academy enquiries:** [contact page](/contact) If you want to test the product on your own video, your [first two complete sessions](/pricing) include the full report with no card. That is the fastest way to understand what UNFORCE is. --- **Read next:** [How UNFORCE works](/how-it-works) · [Accuracy methodology](/accuracy) · [Pricing](/pricing) · [Examples](/examples) · [Changelog](/changelog) · [FAQ](/faq) --- ### UNFORCE Accuracy: Published Benchmarks and Methodology URL: https://unforce.io/accuracy Markdown twin: https://unforce.io/accuracy.md # UNFORCE Accuracy: Measured, Published, Reproducible Most AI tennis apps describe accuracy with adjectives. We describe it with numbers. This page is the *whole* methodology: the dataset we measure on, the F1 / precision / recall the current build hits, the speed and bounce-localisation errors, and, critically, the failure modes where the pipeline still gets it wrong. We update this page every release, and the [changelog](/changelog) records when each number moved. If you've read complaints about AI tennis app accuracy on the [r/10s thread *"How accurate is Swingvision?"*](https://www.reddit.com/r/10s/comments/xc2xc0/) or [*"Is this swing vision MPH accurate, my hardest serve only 66 mph?"*](https://www.reddit.com/r/10s/comments/17c8ozf/), this page is what those threads are missing, a competitor with their numbers in public. ## TL;DR: current build Numbers below are from the **2026-04-25 release** measured against UNFORCE's internal held-out test set. Detail and methodology in the rest of the page. | Metric | Current build | |---|---| | Shot detection F1 (forehand) | ~ 0.92 | | Shot detection F1 (backhand) | ~ 0.91 | | Shot detection F1 (serve) | ~ 0.88 | | Shot detection F1 (volley) | ~ 0.78 | | Shot detection F1 (slice) | ~ 0.83 | | Bounce localisation (median error, hard) | ~ 22 cm | | Bounce localisation (median error, clay) | ~ 38 cm | | Ball-speed error vs handheld radar (median) | ~ 6.2 km/h | | Court keypoint detection (hard, full-frame) | > 99% | | Court keypoint detection (clay) | ~ 97% | | Court keypoint detection (indoor) | ~ 96% | | Doubles per-player attribution | beta, see below | These are not "lab numbers" stated as ground truth, they're current-build measurements against a representative test set, and they move each release. Read the rest of the page for what the test set is and where the numbers come from. ## How we built the test set A benchmark is only as honest as the data it sits on. Here's what's in ours. **Sample size.** ~150 hours of human-labelled tennis video, of which 35 hours are held out as the regression test set. Roughly 50,000 individually labelled frames within those 35 hours. **Court distribution.** - Hard court (acrylic / DecoTurf / Plexicushion-style): 55% - Red clay (EU): 25% - Indoor hard: 15% - Other (grass, har-tru green clay, carpet): 5% **Player level distribution.** All matches are amateur, NTRP 3.0-4.5 equivalent. We deliberately do not include pro-tour footage in the test set, because the model isn't being marketed to pro-tour players, including pro footage would inflate the numbers in a way that doesn't help amateur users predict their experience. **Camera-position distribution.** We collect from beta-player submissions and internal recordings. Roughly: - Fence-clip mount (5-10 ft height, behind baseline): 70% - Tripod (5-7 ft height, behind baseline): 20% - Side-fence mount: 7% - Below-recommended (sub-5 ft, hand-held): 3% The 3% sub-recommended is deliberate, we want the model to fail gracefully on bad inputs, not catastrophically. **Labelling protocol.** Each frame has labels for: ball position (x, y, in-frame), bounce-or-not (binary), shot-or-not (binary, +1 frame for moment of contact), shot type (forehand/backhand/serve/volley/slice), striking player. Labels are produced by trained annotators using unforce-annotate, a desktop tool we built specifically for this, and double-labelled with reconciliation on disagreements. ## Shot detection accuracy by shot type The headline number. F1 = 2 × (precision × recall) / (precision + recall). Higher = the model both finds shots that exist and doesn't hallucinate shots that don't. | Shot | F1 | Precision | Recall | Notes | |---|---|---|---|---| | Forehand | ~ 0.92 | ~ 0.93 | ~ 0.91 | Most common shot, biggest training set, highest confidence | | Backhand | ~ 0.91 | ~ 0.92 | ~ 0.90 | Slight one-handed/two-handed asymmetry; two-handed is slightly better detected | | Serve | ~ 0.88 | ~ 0.91 | ~ 0.85 | Recall hurt by occasional missed first-serve detections in tight first-server-camera angles | | Volley | ~ 0.78 | ~ 0.81 | ~ 0.76 | Hardest stroke. Net occlusion, fast contact, less pose feature signal | | Slice | ~ 0.83 | ~ 0.85 | ~ 0.82 | Sometimes confused with backhand (continental grip, similar contact angle) | **What this means in practice.** On a 90-shot match, you can expect roughly: - 80-85 of 90 shots correctly detected and classified - 3-5 misclassifications (most often slice ↔ backhand, or volley ↔ groundstroke at the service line) - 0-2 missed shots entirely (most often a quick swing-volley) These rates are tight enough that the headline coaching insights (shot mix, stroke quality trends, top-three-things-to-work-on) are robust. They're not tight enough to use UNFORCE as a chair-umpire-grade scoring tool; we're explicit about that in the [comparison page](/compare/swingvision). ## Ball-speed error vs handheld radar We compared UNFORCE's serve-speed estimates to a [Pocket Radar Smart Coach](https://www.pocketradar.com/) on 200 first serves across hard and clay. Pocket Radar is the same handheld radar coaches use as a reference at the club level; it's not Hawk-Eye-grade but it's the right reference for amateur use. **Median error (current build):** ~ 6.2 km/h. **90th-percentile error:** ~ 12 km/h. **Bias:** UNFORCE slightly under-reads vs radar by ~ 2 km/h on average. We're investigating why; suspected cause is camera-distance estimation in the homography step. For context, Pocket Radar's published accuracy is ±1 mph (~1.6 km/h) at 100 mph. So the ground truth itself has noise; subtracting that, UNFORCE's intrinsic error is ~5 km/h median. **Honest caveat:** the r/10s threads about SwingVision over-reading and under-reading speed are talking about a completely different problem from ours. SwingVision's serve-speed numbers are computed differently (we believe, they don't publish methodology), and we've seen field reports of 130 mph and 66 mph readings on the same player. UNFORCE's variance on the same server across 20 serves is typically under 8 km/h, and that's measurable on the [examples page](/examples). ## Court detection accuracy Court keypoint detection is the foundation of every other downstream step, if this fails, the whole pipeline degrades. We measure it as: percentage of frames where all six keypoints are detected within ±15 pixels of human-labelled ground truth. | Surface | Current build | Notes | |---|---|---| | Hard court (full-frame) | > 99% | Strong baseline; the model has seen ~100 hours of hard court | | Clay (EU red) | ~ 97% | Slight degradation when court has been heavily kicked up (lines partly obscured) | | Indoor hard | ~ 96% | Lighting variability + reflective floor coatings cause occasional keypoint drift | | Grass | not separately reported | Limited test data; works in practice but no published number until we have ≥10 hours of labelled grass | If court detection fails, the pipeline still produces a stroke-quality report (which is camera-relative, not court-relative) but skips the heatmap and bounce-localisation. This degradation path is intentional, we'd rather ship a partial report than fabricate a court geometry. ## Doubles support: current state Doubles is in **beta** as of the 2026-02-10 release. We document this on the [comparison pages](/compare/swingvision), the [FAQ](/faq), and during in-app analysis if a doubles match is uploaded. What works well in beta: - Court detection - Ball tracking - Shot detection (binary: was a shot hit, yes/no) - Aggregate shot-mix and heatmap What is unreliable in beta: - Per-player attribution on net exchanges (Player A or Player B at net? mis-attribution rate ~ 15% in current build) - Stroke-quality scoring on net players when the partner is in the same frame We do not recommend Pro-tier subscribers buy UNFORCE primarily for doubles use yet. The [changelog](/changelog) tracks doubles improvements. ## Where the model still fails This list is curated and short on purpose. If we kept everything that's "imperfect", you'd stop reading. These are the failure modes that matter for buying decisions. **1. Hand-held filming.** The pipeline assumes a stationary camera. Hand-held footage causes the homography to drift between frames and the ball-tracking confidence intervals to widen. We warn at upload. **2. Sub-30fps input.** Frame interpolation can't recover the ball trajectory through a fast serve at 24fps or 25fps. We warn at upload and offer to process anyway with reduced confidence. **3. Doubles net exchanges.** Per-player attribution is unreliable. See above. **4. Heavy clay dust.** When a single rally has 10+ ground strokes on red clay and the dust hasn't settled, ball detection through bounces is harder. Bounce localisation median error climbs from ~38 cm to ~60 cm in those rallies specifically. **5. Wide-angle and fish-eye phone lenses.** Some phones (the iPhone 13/14/15 ultrawide, certain Samsung wide-angle modes) introduce barrel distortion that the homography step doesn't fully correct. Use the *main* (1×) lens, not ultrawide. **6. Junior courts (78 ft).** Treated as full-size court; bounce coordinates skewed. Junior support on roadmap for 2026 H2. **7. Carpet courts.** Out of scope. Insufficient training data, and the category is shrinking globally. ## How to reproduce these numbers We ship the measurement script as part of the GPU backend repo: ```bash python scripts/compare_events.py \ games/tennis/data/ \ \ --tolerance 5 ``` The script compares UNFORCE pipeline output against a human-labelled annotations file (generated in unforce-annotate, our desktop labelling tool) and outputs per-event precision, recall, and F1. What is **not yet public** (working on it): - The 35-hour held-out test set videos and annotations. Most footage is from beta players who consented to internal use only. We're building a smaller public benchmark subset (~5 hours) for 2026 H2 with explicit redistribution licences from the players. What is public: - The script. - The methodology described on this page. - Per-release deltas in the [changelog](/changelog). ## Update history - **2026-04-25**, Re-measured on expanded clay test set (+8 hours). Clay bounce-localisation median improved from ~45 cm to ~38 cm (the [2025-12-15 clay improvements](/changelog) shipped to GA). - **2026-02-10**, First doubles-beta numbers added. - **2025-12-15**, Court detection on clay improved from ~93% to ~97%. - **2025-09-04**, Stroke quality v2 launched. Forehand and backhand F1 climbed by ~0.04 each. - **2025-06-10**, First public accuracy numbers, Android launch. ## Why we publish all of this Three reasons: 1. **It's the only honest way to compete with SwingVision.** They have a five-year head start and a much bigger team. They don't publish accuracy. We do, and that's the wedge. 2. **It builds real trust with players who got burned.** The r/10s threads about over-reading serve speed are a four-year-running complaint. We can't fix the SwingVision experience but we can prove our numbers are different. 3. **It keeps us honest internally.** The accuracy page is the regression test on the marketing site. If a release doesn't move numbers in the right direction, we don't ship it. --- **See also:** [How UNFORCE works](/how-it-works) · [Examples gallery](/examples) · [Compared to SwingVision](/compare/swingvision) · [Changelog](/changelog) · [Pricing](/pricing) --- ### UNFORCE for AI agents: programmatic tennis video analysis URL: https://unforce.io/agents Markdown twin: https://unforce.io/agents.md If you're building an AI agent that helps tennis players improve, a coaching bot, a club-management tool, a training-platform integration, and you need a real per-shot video analysis backend, UNFORCE is built for that. Same pipeline that powers the UNFORCE iOS + Android app (TrackNet → court keypoints → MediaPipe pose → CatBoost shot/bounce classification → stroke quality), exposed as a clean pay-per-minute API. This page is the public-facing entry point. The OpenAPI 3.1 spec is at [openapi.json](/openapi.json); the MCP server card is at [`/.well-known/mcp/server-card.json`](/.well-known/mcp/server-card.json). ## How it works ``` 1. Create a key in Developer UI → authenticated Firebase callable 2. Credit prepaid balance → admin-managed balance adjustment 3. Submit a video → POST https://api.unforce.io/v1/jobs 4. Poll for completion → GET https://api.unforce.io/v1/jobs/{jobId} 5. Fetch the analysis → GET https://api.unforce.io/v1/jobs/{jobId}/result ``` Or via MCP: ``` POST https://api.unforce.io/mcp Authorization: Bearer phk_... Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "analyze_tennis_video", "arguments": { "videoUrl": "https://..." } } } ``` ## Pricing | Tier | Per-minute (EUR) | Per-minute (USD) | Per-minute (GBP) | Notes | |---|---|---|---|---| | Standard | €0.75 | $0.80 | £0.65 | Default for all agent API keys | | Volume (>5,000 min/mo) | €0.55 | $0.60 | £0.48 | Email support@unforce.io | | Enterprise | custom | custom | custom | Self-hosted GPU optional | A 90-minute match costs about **€67**. A 5-minute serve drill costs **€3.75**. Consumer free sessions do not create agent-API credit. API keys use the balance shown by the developer surface and `GET /v1/usage`; contact support before a production evaluation if the key needs credit. ## Auth ``` Authorization: Bearer phk_<24-byte-url-safe-random> ``` Keys are SHA-256-hashed at rest, never logged. Rotate at any time via the [admin panel](https://admin.unforce.io) or the `revokeApiKey` callable. ## Discovery surface (well-known endpoints) | Path | Purpose | Spec | |---|---|---| | [`/openapi.json`](/openapi.json) | OpenAPI 3.1, all GET endpoints on the marketing site + the api.unforce.io schema | OpenAPI 3.1 | | [`/.well-known/api-catalog`](/.well-known/api-catalog) | Linkset of public retrievable resources | RFC 9727 | | [`/.well-known/mcp/server-card.json`](/.well-known/mcp/server-card.json) | MCP server metadata | SEP-1649 | | [`/.well-known/agent-skills/index.json`](/.well-known/agent-skills/index.json) | Agent Skills RFC v0.2.0 catalogue | Cloudflare Agent Skills | | [`/.well-known/openid-configuration`](/.well-known/openid-configuration) | OIDC discovery (Firebase Auth issuer) | OIDC 1.0 | | [`/.well-known/x402`](/.well-known/x402) | x402 payment-required discovery | x402 | | [`/.well-known/mpp.json`](/.well-known/mpp.json) | MPP machine-payment discovery | MPP | | [`/.well-known/acp.json`](/.well-known/acp.json) | ACP merchant discovery | ACP v0.1 | ## Use cases for agent operators - **Tennis-coaching chatbots**, agent uploads a user's match video, returns coaching tips. Pay per-minute, pass-through to your end-user pricing. - **Training-platform integrations**, embed UNFORCE into a course platform; auto-analyze homework videos and surface stroke-quality scores in your LMS. - **Club-management software**, analyze junior tournament matches in bulk, push reports to parents/coaches. - **Research / dataset enrichment**, annotate large collections of tennis video for labeled-data products. ## What we don't do We're not a content marketplace. UNFORCE doesn't take a cut of an agent operator's downstream revenue. The pricing above is the only thing you pay; there are no per-impression or per-end-user surcharges. ## Get started 1. Sign up at [app.unforce.io](https://app.unforce.io) (creates a Firebase user account). 2. Generate an API key: visit [admin.unforce.io](https://admin.unforce.io) → Developer → Create API Key. 3. Ask support@unforce.io to credit production balance. 4. First call: `curl -H "Authorization: Bearer phk_..." https://api.unforce.io/v1/healthz`. Email **support@unforce.io** with your project description for higher rate limits or volume pricing. ## Related - [Accuracy methodology](/accuracy) - [How UNFORCE works](/how-it-works) - [Pricing (consumer)](/pricing) --- ### The OnForm alternative for tennis players: UNFORCE URL: https://unforce.io/alternatives/onform Markdown twin: https://unforce.io/alternatives/onform.md # UNFORCE: the OnForm alternative for tennis players OnForm is a good product. If you have a coach you actively work with, OnForm's drawing tools, voice-over playback, and side-by-side comparison are excellent. We're not going to pretend otherwise. But OnForm is not an analysis tool. It's a coach toolset. If you watch your matches alone, or your coach is too busy to do voice-overs on every video, OnForm's value collapses to "video editor with cloud storage." This page is for the tennis players who hit that ceiling and want **automated tennis-specific analysis** instead. ## TL;DR | | UNFORCE | OnForm | |---|---|---| | **Auto shot detection** | Yes | No | | **Auto ball tracking** | Yes | No | | **Auto stroke quality scoring** | Yes, pose-based | No | | **Tennis-specific AI** | Yes | No (generic multi-sport) | | **Coach drawing tools** | Limited | Excellent | | **Voice-over playback** | No | Excellent | | **Multi-sport** | No (tennis only) | Yes | | **Price** | Free / €19 / €49 | Athlete $9.99-$14.99, Coach $19.99-$59.99 ([source](https://onform.com/pricing/)) | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | | **EU data residency** | Yes, `europe-west1` | No | ## Why tennis players outgrow OnForm A few patterns we hear from people who've moved over: ### 1. "I don't actually have a coach who reviews videos." OnForm's value is the coach loop. The athlete tier is cheap but the platform is built around someone with a Coach plan watching your video and giving you feedback. If your coach doesn't use OnForm, or if you don't have a coach, the platform downgrades into a video player. UNFORCE gives you analysis without needing a coach in the loop. You upload, the AI runs, you get a per-shot report. If you later add a coach, the report is the starting point for the conversation, and you save your coach 80% of the analysis time. ### 2. "OnForm doesn't know it's tennis." OnForm supports tennis as one of many sports. The drawing tools, the slow-motion playback, the side-by-side comparison are all generic. There's no tennis ball detection. There's no court keypoint detection. There's no shot classifier. UNFORCE's pipeline is tennis-specific top to bottom: - **TrackNet** trained on tennis ball flight (felt ball, fast topspin, high arc). - **Court keypoint detection** for tennis court lines (singles + doubles). - **MediaPipe pose** evaluated on tennis stroke mechanics. - **CatBoost shot classifier** for tennis shot taxonomy (forehand, backhand, serve, volley, slice, lob). That specialisation is why the output is shot-aware, not just "here's your video with a circle drawn on it." ### 3. "I want measurements, not vibes." OnForm coach feedback is qualitative: "your contact point looks late, watch this slow-mo." That's valuable when a coach you trust says it. It's not measurable. UNFORCE surfaces specifics: "12% of your forehands had a contact point below hip height (tagged frames: 0:23, 1:14, 2:47…)." Same insight, different format. You can't track "looks late" over time. You can track "contact-below-hip percentage" over time. ### 4. "I don't want to pay two people to look at my video." OnForm's economic model assumes a Coach plan ($19.99-$59.99/mo) plus an Athlete plan on top. If you're paying a coach hourly *and* paying for an OnForm Coach plan to host the workflow, the costs stack. UNFORCE Pro is €19/mo flat. If you also have a coach, the coach reviews the UNFORCE report, no second platform fee. ## Where OnForm still wins Honest list: - **Drawing on video.** OnForm's coach tools (lines, angles, side-by-side comparison) are best-in-class. - **Voice-over feedback.** Recording a coach's voice over your video is OnForm's strongest UX. - **Multi-sport.** Golf, baseball, swim, gymnastics. UNFORCE doesn't compete here. - **Coach-managed athlete groups.** If your coach manages 20 athletes, OnForm's coach dashboards are mature. If those describe your workflow and you have an active coach using OnForm, stay. UNFORCE isn't trying to replace OnForm in that workflow. ## What OnForm doesn't do To be specific: - No automatic shot classification. - No ball tracking. - No court detection. - No court heatmap. - No stroke-quality scoring. - No serve-speed estimate. - No bounce detection. OnForm is a video coaching platform; it would say the same. The mismatch is when tennis players go in expecting "AI tennis analysis" and find video tools instead. ## How UNFORCE replaces the OnForm core loop If you used OnForm specifically for tennis self-review (without a coach loop), here's the UNFORCE replacement: | OnForm workflow | UNFORCE workflow | |---|---| | Record match | Record match | | Upload to OnForm | Upload to UNFORCE | | Watch slow-mo, scrub frame-by-frame | AI processes; per-shot report drops in your inbox | | Self-annotate or send to coach | Read the per-shot tips; share single-link with coach if needed | | Hope you spotted what's wrong | The AI flagged what's wrong | The "hope you spotted what's wrong" step is where most self-review breaks down. Tennis is fast and you can't see your own swing. UNFORCE does the spotting. ## Pricing in plain English **OnForm** ([onform.com/pricing](https://onform.com/pricing/)): - Athlete, $9.99-$14.99/mo. - Coach Solo, $19.99/mo. - Coach Pro / Team, up to $59.99/mo. **UNFORCE:** - Free, full per-shot report on short videos. - Pro, **€19/mo**. - Team, **€49/mo** (multi-coach, async review workflow). If you're an OnForm Athlete-tier user with no active coach, UNFORCE free tier is a strict upgrade for the same money. ## A quick note on coach workflows If you've used OnForm extensively, you've probably built habits around the coach loop, sending matches to your coach, getting voice-overs back, watching them on your commute. UNFORCE doesn't replicate that workflow because it isn't trying to. The UNFORCE report is a different artifact: structured per-shot data, not a coach's spoken commentary. The shift, when players switch, is usually: *"oh, I have the answer in five minutes instead of waiting three days for my coach."* The flip side is that the answer is in numbers and bullet points, not a friendly voice. Some players prefer the coach voice. Some prefer the structured data. UNFORCE is for the second group. If you specifically miss the voice-over: pair UNFORCE with one in-person lesson per month. Take the UNFORCE report to the lesson. Your coach will know what to focus on instantly because the report already flagged it. ## How to switch from OnForm to UNFORCE in 5 minutes Three steps: 1. **Sign up free at [unforce.io](/)**. 2. **Export a match video from OnForm.** Tap share, save to your phone library. The video is yours; OnForm doesn't lock the file. 3. **Upload to UNFORCE.** Per-shot report in a few minutes. You don't have to cancel OnForm. If you keep multi-sport content there or your coach uses it, run both. The UNFORCE report is what you'd send to your coach instead of an unannotated raw video. ## What real users say **OnForm pricing model** ([onform.com/pricing](https://onform.com/pricing/)): coach plans $19.99-$59.99/mo, athlete plans $9.99-$14.99/mo. The model assumes a coach is paying for the coach plan; athletes pay athlete-tier on top. If the coach loop isn't there, the value drops. For the AI-analysis category specifically, the most-cited gaps in tennis-AI tooling are: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) OnForm doesn't have the iOS-only problem (it's cross-platform). What it has is the no-tennis-AI problem. Different gap, same outcome, you don't get tennis-specific analysis. ## FAQ **Why would I leave OnForm for UNFORCE?** Automated analysis + tennis specificity. **Can I keep my coach if I switch?** Yes, Team plan supports async coach review. **Is UNFORCE cheaper?** For solo athletes, usually yes. €19/mo Pro vs OnForm's coach-dependent stack. **What if I play multiple sports?** Keep OnForm for non-tennis. Add UNFORCE for tennis. **Will my OnForm videos work in UNFORCE?** Yes. Any phone-recorded MP4. --- **Try UNFORCE free on iOS and Android.** Tennis-specific AI, automatic per-shot report, no coach required for the analysis to be useful. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [vs OnForm (full comparison)](/compare/onform) · [Pricing](/pricing) --- ### The SwingVision alternative for Android (and iOS): UNFORCE URL: https://unforce.io/alternatives/swingvision Markdown twin: https://unforce.io/alternatives/swingvision.md # UNFORCE: the SwingVision alternative built for Android (and iOS) You're on Android. SwingVision still doesn't help. This page is the answer. UNFORCE runs the same kind of analysis SwingVision built its name on, automatic shot detection, ball tracking, court heatmap, stroke-quality scoring, on a phone-recorded video. No Apple Watch. No proprietary camera. No "buy an iPhone for this." We're not going to claim UNFORCE beats SwingVision at everything. It doesn't. SwingVision's Apple Watch real-time line calling is genuinely good and UNFORCE doesn't replicate it. But for the question Android tennis players have been asking since 2019, **UNFORCE is the answer.** ## TL;DR | | UNFORCE | SwingVision | |---|---|---| | **Android** | Yes | No ([source](https://swing.vision/newsletters/android-update)) | | **iOS** | Yes | Yes | | **Apple Watch needed** | No | Required for real-time line calls | | **Free tier** | Yes, full per-shot report | Limited | | **Entry paid tier** | €19/mo Pro | from ~$15/mo as of mid-2026 ([swing.vision](https://swing.vision)) | | **EU-hosted** | Yes, `europe-west1` | No | | **Published accuracy methodology** | Yes ([/accuracy](/accuracy)) | No | | **Hardware required** | Phone | Phone + Apple Watch (recommended) | ## You're on Android. SwingVision still doesn't help. Here's what does. This is the page Android tennis players have been searching for since SwingVision launched. The forums tell the story: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "Genuinely thinking of getting a iPhone just for the swing[vision]" > [r/10s](https://www.reddit.com/r/10s/comments/151g2cy/) The answer: don't buy an iPhone. Try UNFORCE first. SwingVision's own [Android update page](https://swing.vision/newsletters/android-update) acknowledges the demand. A private alpha has been hinted at. As of April 2026 there's no public release. The wait has been six years and counting. In the meantime, UNFORCE ships on both stores. Same shot detection, same ball tracking, same heatmap. ## What SwingVision does well (be fair) This is non-negotiable. Where SwingVision wins: - **Apple Watch real-time line calling.** The signature feature. A wrist-tap "out" call as you play. UNFORCE does line-related work post-recording; we don't replicate the wrist UX. - **The smaller paddle sport.** SwingVision supports it as a first-class sport. UNFORCE is tennis-only. - **Maturity.** SwingVision has been live since ~2019 with thousands of App Store reviews and an active Discord. UNFORCE is younger. - **The 4K Max tier** for serious match-recording users who want the highest line-call accuracy. Different problem from "I want analysis on my phone." - **Their iOS UX.** The Apple ecosystem integration is good and we're not pretending to match it. If you want any of those, and you're on iOS, use SwingVision. We'll be here when you also want analysis on the courts where the watch isn't with you. ## How UNFORCE replaces SwingVision's core loop on Android The SwingVision core loop most rec players actually use isn't the watch line-calling, it's "record the match, get a shot-by-shot report, see what's leaking points." That's what UNFORCE does on Android. ### Shot detection Forehand, backhand, serve, volley, slice, lob. CatBoost classifier on top of MediaPipe pose features. Per-shot timestamps with the video frame so you can scrub straight to the example. Documented test-set F1 on `/accuracy`. ### Ball tracking TrackNet, the same family of model SwingVision uses, applied frame-by-frame on your phone video. Works on hard, clay, and indoor lighting. Where it fails (very dark indoor courts, very small ball-against-bright-line contrast) is documented honestly on `/accuracy`. ### Court keypoint detection Where most competitors lose accuracy on clay, UNFORCE's court model is trained on hard, clay, and indoor. SwingVision App Store complaint: > "on clay it doesn't understand where the lines of the court are" > [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) That gap is exactly what we worked to close. ### Court heatmap Per-shot, per-bounce, per-zone. Where your forehand bounces, where the opponent's serve goes, which corner you avoid. Same level of insight you'd expect from SwingVision's heatmap, on Android. ### Stroke quality scoring Pose-based per-component scoring. Hip rotation, knee bend, contact-point height, follow-through. Translated into one-line coaching tips you can actually act on. SwingVision's technique work is more conservative, for stroke-quality depth, UNFORCE is the stronger tool. ### Per-shot tips Each labelled shot gets a one-line note: "contact too low," "weight on back foot," "follow-through cut short." Not a coach replacement, a starting point your coach can build on. ## Where SwingVision still wins Repeating the honest section because it matters: - **Apple Watch real-time line calling.** SwingVision wins. - **The smaller paddle sport.** SwingVision wins. - **Maturity and community size.** SwingVision wins. If those are dealbreakers and you're on iOS, use SwingVision. The point of this page isn't to convince every SwingVision user to switch. It's to tell Android players a real alternative exists. ## Pricing comparison **SwingVision** ([Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)): - Plus, $14.99/mo, $95.99/yr. - Pro, $24.99/mo. - Max, $39.99/mo, ≈$400/yr. > "the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually" > [Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) **UNFORCE:** - Free, €0, full per-shot report on short videos. - Pro, **€19/mo**, unlimited match length. - Team, **€49/mo**, multi-coach. EU-billed in EUR. EU-hosted in `europe-west1`. ## Real example: same match, both apps Here's the comparison that actually matters to a buyer: take one match video, run it through both. (We've done it; if you want our walkthrough, see the comparison [/compare/swingvision](/compare/swingvision).) The headline finding from running both on a 1-set NTRP 4.0 men's singles: - Shot count: within 2% between the two tools. - Forehand vs backhand split: identical. - Court heatmap clustering: visually similar. - Stroke-quality breakdown: UNFORCE is more granular (per-component scoring vs SwingVision's general flags). - Speed numbers: both apps produce numbers in plausible ranges; neither published a methodology for that specific match. In other words, the per-shot output is comparable. The differences are at the edges, Apple Watch UX vs Android availability, paddle-sport support vs clay-court support, single-tier feature parity vs SwingVision's tier stack. ## How to switch from SwingVision to UNFORCE in 5 minutes Three steps: 1. **Sign up free at [unforce.io](/)** on Android or iOS. 2. **Find an existing match video**, your phone's photo library or your SwingVision-recorded files. 3. **Upload one match.** Report drops in your inbox in a few minutes. Run the UNFORCE report next to your most recent SwingVision report on the same match. If UNFORCE gives you something you didn't get before, for most Android users, the answer is "I got *anything*, finally", keep it. You don't need to cancel SwingVision. If you want both, you have both. iOS players keep SwingVision for watch days, UNFORCE for everything else. ## What real users complain about (the receipts) **SwingVision, Android:** > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "Genuinely thinking of getting a iPhone just for the swing[vision]" > [r/10s](https://www.reddit.com/r/10s/comments/151g2cy/) **SwingVision, accuracy:** > "The advertised 'AI scoring' is never correct" > [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) **SwingVision, clay courts:** > "on clay it doesn't understand where the lines of the court are" > [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) **SwingVision, pricing tier paywall:** > "the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually" > [Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) **SwingVision, serve speed plausibility:** > "Is this swing vision MPH accurate, my hardest serve only 66 mph?" > [r/10s](https://www.reddit.com/r/10s/comments/17c8ozf/) These aren't gotcha quotes. They're the questions Android players, EU buyers, and serve-speed-skeptical players type into Google. UNFORCE exists because those questions deserve a real answer. ## FAQ **Is there a SwingVision app for Android?** No. iOS-only ([source](https://swing.vision/newsletters/android-update)). **Is UNFORCE a real SwingVision alternative on Android?** Yes, same per-shot output category, on Android. **Will my Pixel / Samsung phone work?** Yes. Any modern Android with a 1080p camera. **Do I need a tripod?** Strongly recommended. €20 fence clip works. **Where does SwingVision still win on iOS?** Apple Watch real-time line calling, the smaller paddle sport, maturity. **Is UNFORCE free?** Yes, full per-shot report on short videos, no card. --- **Try UNFORCE free on Android (and iOS).** The wait for SwingVision Android has been six years. You can try UNFORCE in five minutes. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [vs SwingVision (full comparison)](/compare/swingvision) · [Pricing](/pricing) · [Read the accuracy methodology](/accuracy) --- ### The TopCourt alternative for analysis, not lessons URL: https://unforce.io/alternatives/topcourt Markdown twin: https://unforce.io/alternatives/topcourt.md # UNFORCE: the TopCourt alternative for players who want analysis, not lessons TopCourt is good content. Pro players, professional coaches, $180/yr for unlimited access to a streaming library. If you learn well from watching technique demonstrations, it's a fair offer. But TopCourt isn't analysis. It's instruction. It tells you what should happen on a kick serve; it doesn't tell you what's happening on *your* kick serve. That's a different product, and a lot of players land on TopCourt search results when they actually want the second one. This page is for them. ## TL;DR | | UNFORCE | TopCourt | |---|---|---| | **Category** | AI analysis of your video | Pro instructional streaming | | **Personalised to your tennis** | Yes | No | | **Tells you what *you* did** | Yes | No | | **Tells you what *pros* do** | No | Yes | | **Annual commitment** | No (monthly cancel) | Yes, annual-only ([source](https://mytennislessons.com/tennis-blog/2020-topcourt-review)) | | **Free tier** | Yes | No | | **Price** | €0 / €19 / €49 | $180/yr | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | ## Why some TopCourt users want UNFORCE instead Three patterns: ### 1. "I've watched a lot of pro lessons. I still don't know what's wrong with my tennis." Watching technique demonstrations works up to a point. The bottleneck for most NTRP 3.0-4.5 players isn't lack of information about how to hit a forehand, it's not knowing which forehand you're actually hitting on a Tuesday evening match. UNFORCE fills that gap. You upload one match. The AI flags 12% of your forehands as short. Now you know what to work on. *Now* the TopCourt forehand lesson is useful, because you have a specific shot to fix. ### 2. "I don't want to commit to a year." TopCourt is annual-only. Reviewer's specific complaint: > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) If you're not 100% sure the content fits your learning style, $180 upfront is a real ask. UNFORCE Pro is €19/mo, try one month, cancel if it doesn't fit. ### 3. "I play more than I have time to watch." If you play 2-4 times a week, the bottleneck for improvement isn't more instructional content. It's match diagnosis, figuring out which of the things you already know to do, you're actually failing to do under pressure. UNFORCE does that diagnosis automatically. TopCourt adds more "things to do" without telling you which ones to fix first. ## When TopCourt is the right choice Honest list: - **You're an "I need to see it before I can do it" learner.** TopCourt's video format works. - **You're between coaches and want structured instructional content.** TopCourt approximates a coaching curriculum. - **$180/yr is comfortable in your tennis budget.** It's roughly one in-person lesson. - **You're working on something specific that TopCourt has a lesson series for** (kick serve, transition game, doubles strategy). - **You commit to watching regularly.** TopCourt doesn't pay off if the subscription sits idle. ## When UNFORCE is the right choice - **You want feedback on *your* tennis.** UNFORCE analyses your match. TopCourt analyses pros' tennis. - **You don't want annual billing.** UNFORCE Pro is monthly-cancel. - **You play frequently.** Match diagnosis is the bottleneck, not more lessons. - **You learn by reviewing your own play.** Self-video review is one of the highest-leverage skill-development activities. UNFORCE automates it. - **You want measurable progress over time.** Stroke-quality scores tracked across matches. ## Use both: the recommended workflow If you can afford both ($180 + €19/mo ≈ €35/mo total), it's genuinely the strongest setup for an NTRP 3.0-4.5 player: 1. **Record a match.** Phone on tripod, back of court. 2. **Run UNFORCE analysis.** Identify the worst shot category, say, second-serve return. 3. **Find the matching TopCourt lesson.** Pro breakdown of second-serve returns. 4. **Drill it** at practice. 5. **Re-record the next match.** UNFORCE checks whether the lesson stuck. This loop, diagnose, instruct, drill, re-measure, is the workflow most coaches use with their athletes. Two apps approximate it without a coach in the loop. If you can only afford one and you play frequently, **UNFORCE is probably the higher-leverage pick.** Diagnosis without instruction beats instruction without diagnosis, in our experience and in the skill-acquisition literature. If you play infrequently and learn well from videos, TopCourt may suit you better. ## Pricing in plain English **TopCourt** ([My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review)): - **$180/year, annual billing only.** - No monthly tier. - Reviewer's complaint: > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) **UNFORCE:** - Free, €0, full per-shot report on short videos. - Pro, **€19/mo** or **€190/yr**. - Team, **€49/mo**. Five-year cost: TopCourt $900 vs UNFORCE Pro €1,140. UNFORCE Free vs TopCourt $900. The "free" option is genuine, you can use UNFORCE's free tier indefinitely if your matches are short enough. ## What TopCourt doesn't do To be specific: - No analysis of your video. - No shot detection. - No ball tracking. - No stroke-quality scoring. - No personalised feedback. - No monthly billing. TopCourt is a streaming subscription for instructional content, it would say the same. The category mismatch is when players go in expecting "AI tennis improvement" and find a video library. ## How to add UNFORCE if you have TopCourt You don't migrate, you complement. TopCourt continues to do what it does. Add UNFORCE for the diagnosis layer: 1. **Sign up free at [unforce.io](/)**. 2. **Upload one match video.** 3. **Cross-reference the report's flagged shots against your TopCourt library.** Watch the matching lesson. Drill. Re-record. It takes about 15 minutes total to set up, and the next match's report tells you whether the lesson stuck. ## Court compatibility TopCourt is sport-content streaming, so the court doesn't matter for the lessons themselves, you watch on a couch. UNFORCE, by contrast, is court-aware: | Surface / setting | UNFORCE | TopCourt | |---|---|---| | Hard court | Yes | N/A (lessons) | | Clay court | Yes | N/A (lessons) | | Indoor | Yes | N/A (lessons) | | Travel courts | Yes | N/A (lessons) | | Public park | Yes | N/A (lessons) | If your weekly question is "which courts can I get analysis on," that's an UNFORCE question, not a TopCourt question. If your question is "what should I be working on," TopCourt has structured answers; UNFORCE surfaces the question first. ## Platform support Both apps ship on iOS and Android. That matters more than people realise, the most popular tennis-AI competitor (SwingVision) is iOS-only: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "Genuinely thinking of getting a iPhone just for the swing[vision]" > [r/10s](https://www.reddit.com/r/10s/comments/151g2cy/) If you're on Android and want both lessons and analysis, UNFORCE + TopCourt is one of the few combinations where both halves work on your phone. ## What you give up by skipping TopCourt If you go UNFORCE-only and skip TopCourt, you're choosing diagnosis over instruction. The risk: you know your forehand is short on 12% of attempts, but you don't have a structured curriculum for fixing it. The mitigations: - **Free YouTube technique videos.** Search "intermediate tennis forehand depth", there's a lot of free content from credible coaches. - **One coaching lesson focused on the UNFORCE-flagged shot.** Use the report to make the lesson highly targeted. - **A book or two.** Brent Abel, Patrick Mouratoglou, etc. Written instruction is cheap and scales. In other words, TopCourt's $180/yr buys polish and curation. The underlying knowledge is widely available. If you're price-sensitive, you're not blocked. ## What you give up by skipping UNFORCE If you go TopCourt-only and skip UNFORCE, you're choosing instruction over diagnosis. You'll know how a kick serve should look. You won't know whether your kick serve actually looks like that, or whether the bigger problem in your game is somewhere else entirely. The risk: you spend a year working on the lesson topics that *feel* relevant, and discover at the end of it that the actual leaks were elsewhere. UNFORCE surfaces leaks before you spend the year. ## What real users say **TopCourt, billing model:** > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) This is the most consistent friction point in TopCourt reviews. The content quality isn't the issue, the commitment is. UNFORCE's monthly billing addresses that specific friction without taking anything away from what TopCourt does well. For players who want both pro instruction *and* personalised analysis, the realistic complaint is that no single product covers both. UNFORCE + TopCourt is one common pairing. UNFORCE + a real coach is another. The cheapest pairing is UNFORCE + free YouTube technique videos, and that's a perfectly good starter setup if you're price-sensitive. ## FAQ **Is UNFORCE the same as TopCourt?** No, different category. Analysis vs instruction. **Why would I use UNFORCE instead?** Personalised feedback, no annual lock-in, monthly billing. **Is UNFORCE cheaper?** Free tier is €0. Pro is €19/mo no commit. **Can I cancel any time?** Yes, monthly billing. **Should I just use both?** If you can afford it, yes, they pair well. --- **Try UNFORCE free on iOS and Android.** No $180 upfront. No annual lock-in. Diagnosis of your tennis, in five minutes. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [vs TopCourt (full comparison)](/compare/topcourt) · [Pricing](/pricing) --- ### Tennis Video Analysis on Android: UNFORCE URL: https://unforce.io/android Markdown twin: https://unforce.io/android.md # Tennis Video Analysis on Android SwingVision is iOS-only. UNFORCE isn't. That's the whole pitch, and it's the reason most of you are on this page. You searched for *"swingvision android"* or *"swingvision alternative for android"* or you opened the Reddit thread literally titled [*"Genuinely thinking of getting a iPhone just for the swing[vision]"*](https://www.reddit.com/r/10s/comments/151g2cy/), and you decided there had to be a better option than buying an iPhone for a tennis app. There is. UNFORCE is the cross-platform AI tennis video analysis app, built mobile-first for Android since the first release, and it does what SwingVision does on the parts that matter for amateur self-coaching. ## SwingVision is still iOS-only in April 2026 This isn't us being cheeky. SwingVision's [own Android update newsletter](https://swing.vision/newsletters/android-update), last refreshed several quarters ago, still describes Android as "in development" with no shipping date. Forum threads on [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) and [r/10s](https://www.reddit.com/r/10s/comments/151g2cy/) have been asking the same question since 2019: *"Will SwingVision still work with an Android?"* The answer is still no. The honest read of why: SwingVision's strongest features, Apple Watch real-time line calling, deep iOS hardware integration, depend on the iOS+watchOS stack. Porting that to Android would mean rebuilding the line-calling feature, and they've chosen not to. That's a defensible product decision. It also leaves a gap the size of a market. ## What UNFORCE gives you on Android The full pipeline. Not a stripped-down version, not a 'lite' edition, not a feature-flagged subset. Same code, same models, same accuracy as the iOS build: - **TrackNet ball detection**, find the ball in every frame - **Court keypoint detection**, sidelines, baselines, service lines, T-points - **Player detection + pose** (FasterRCNN + MediaPipe), bounding box plus 33-point skeleton per player - **Bounce + shot classification** (CatBoost), forehand / backhand / serve / volley / slice - **Stroke-quality scoring**, per-component scores with the lowest-scoring component flagged as the fix to work on - **Court heatmap**, where you played from, where the ball bounced, where rallies ended - **Per-shot timeline**, every shot, scrollable, with a clip on Pro and Team - **Private coach workspace**, a two-sided account connection for shared evidence and notes For a deeper look at how each step works, the [how-it-works page](/how-it-works) walks the pipeline end-to-end. For the accuracy numbers behind the claims, the [accuracy methodology page](/accuracy) publishes the F1 by shot type and the bounce-localisation error by court surface. ## What works (specifically) ### Pixel 6, 7, 8, 9 (and 9 Pro) The most tested platform in our QA matrix. The Pixel main camera at 1080p/60fps is excellent for tennis filming, sharp, low rolling-shutter artefact, good autofocus on the player. Pixel 7 and later run UNFORCE at top performance. ### Samsung Galaxy S22, S23, S24, S24 Ultra Tested extensively. The Galaxy main 1× camera is the right one to use; avoid the ultrawide for UNFORCE filming because the barrel distortion confuses the homography step. Samsung's 60fps and 120fps modes both work well. ### OnePlus 10, 11, 12 Tested. The OnePlus camera stack is a notch behind Pixel and Galaxy in absolute image quality but more than capable for UNFORCE, the AI doesn't need the cinematic pop, it needs frame-rate consistency, and OnePlus delivers that. ### Older Android phones (2020-2022) Generally work. If your phone records 1080p at 30fps in landscape, UNFORCE will process it. The lower frame rate hurts ball tracking on serves slightly (we'd recommend 60fps), but the rest of the report is unaffected. ### What we don't recommend - Phones from before 2020 with locked-down camera apps that won't record 1080p in landscape with stable focus. - Ultrawide-only modes on any phone, barrel distortion issue. - The "auto" wide-angle on Samsung Galaxy that switches to ultrawide for "near subjects", turn this off in settings before recording. ## Pricing on Android Same as iOS. There's no platform-specific surcharge. - **Start**, two complete sessions, no card - **Pro**, 20 analyses per month, up to 30 minutes per video - **Team**, 10 seats, unlimited analyses, up to 120 minutes per video Google Play shows its localized price, billing interval, tax, and final total before purchase. Web checkout prices are listed on [pricing](/pricing). For comparison, SwingVision (when it exists for you, which is iOS-only) charges $14.99/mo Plus, $24.99/mo Pro, and a Pro Max tier that effectively costs ~$400/yr, see the [Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) for the breakdown of what's behind each tier. ## What you give up vs SwingVision (on iOS) This is the honest section. UNFORCE isn't strictly better than SwingVision on every axis. Here's what SwingVision still wins: - **Real-time line calling on Apple Watch.** SwingVision's killer iOS feature. We don't have an equivalent. If real-time line calls are the reason you'd buy SwingVision, you'd be disappointed by UNFORCE. - **Apple Watch integration in general.** Heart-rate during play, on-wrist score keeping. Not in scope for UNFORCE. - **Five years of product maturity in the iOS ecosystem.** SwingVision has been refining its iOS UX since 2019. We've been refining ours since 2025. Their iOS app is more polished on the small things. - **A mode for the racquet sport that uses paddles instead of strung racquets.** SwingVision and PB Vision both cover that adjacent sport; UNFORCE is tennis-only. What UNFORCE wins on (and SwingVision can't, structurally): - **Android.** They don't have it. We do. - **EU-native pricing and EU data storage** (`europe-west1`). GPU analysis currently runs in the US. - **Published accuracy methodology.** SwingVision describes accuracy with adjectives. - **Free tier with the full report** (not a watermarked demo). - **No Apple Watch lock-in for any premium feature.** ## What about other Android tennis AI apps? There are a few, and they're worth knowing about: - **TennisAI.net**, EU-pricing competitor, €15/mo. Closest direct rival on price and EU positioning. Less detail on methodology. - **OnForm**, generic multi-sport video tool with manual annotation, not tennis-specific AI. Different category. Our [comparison hub](/compare) covers each in detail. ## How to get started on Android 1. **Install UNFORCE** from the Google Play Store. 2. **Film your next match** following the [filming guide](/how-to/film-your-tennis-match). Phone in landscape, 1080p/60fps, fence-mounted at 5-10 ft. Five minutes of setup. 3. **Open the app, tap *New Session*, pick the video.** Upload over Wi-Fi. 4. **Leave the app if you need to.** Upload continues in the background, and UNFORCE notifies you when the debrief is ready. 5. **Optional:** [share the PDF with your coach](/how-to/share-report-with-coach) by email or your phone's share sheet. If both of you use UNFORCE, connect privately for shared evidence and notes. If your courts, your style of play, or your specific phone breaks something in the pipeline, you'll know on the very first session and you've spent nothing, that's the whole point of the free tier. --- **Read next:** [How UNFORCE works](/how-it-works) · [Accuracy methodology](/accuracy) · [UNFORCE vs SwingVision](/compare/swingvision) · [The SwingVision alternative](/alternatives/swingvision) · [Pricing](/pricing) · [Filming guide](/how-to/film-your-tennis-match) --- ### Tennis biomechanics analysis on your phone: UNFORCE URL: https://unforce.io/biomechanics Markdown twin: https://unforce.io/biomechanics.md If you have ever wondered whether you can get pro-style **tennis biomechanics analysis** from a phone in your pocket, the short answer is yes, and UNFORCE is the simplest way to do it. We use **computer vision and pose estimation** to evaluate stroke mechanics, classify shot types, and surface the 1-3 fixes most likely to win you points this season. No mocap suit, no club lab, no €1,800 court-side camera. This page covers what biomechanics tracking actually means on a phone, what UNFORCE measures, what we cannot measure (yet), and how we compare against more expensive platforms. ## What is "tennis biomechanics analysis," really? Biomechanics is the study of how the body produces movement, joints, muscles, force generation, kinetic chains. In tennis it usually maps to a small set of high-leverage questions: - Is your **service toss** consistent and high enough? - Are your **hips and shoulders rotating** in the right order on a forehand? - How far in **front of your contact point** are you striking the ball? - Is your **non-dominant arm** doing its job? - How is your **racket-head speed** at contact? Lab biomechanics labs answer these with optical mocap (Vicon, Qualisys), force plates, and a coach reviewing minute-long stretches of video frame by frame. That's the gold standard, but it costs thousands per session. **Smartphone-based biomechanics**, including UNFORCE, replaces the marker suit with a 2D pose estimator (MediaPipe), a court-detection model, and a ball tracker. The accuracy floor is lower, but the cost is zero if you already own a phone, and the iteration speed is daily instead of monthly. For amateurs, the trade-off is the right one. ## What UNFORCE measures | Stage | Method | What you get | |---|---|---| | Ball detection | TrackNet (open-source heritage) | Trajectory, speed, bounce points | | Court keypoints | Custom keypoint model | Bounce-zone heatmap, line decisions | | Player detection | FasterRCNN | Player position over time | | Pose estimation | MediaPipe Pose | 33-point skeleton per frame | | Shot/bounce classification | CatBoost on pose + ball features | Shot type (forehand/backhand/serve/volley), spin, bounce timing | | Stroke quality scoring | Pose-feature heuristics + statistical baselines | 0-100 stroke-quality score per shot, per body segment | The headline metric on the report is the **stroke-quality score**: a 0-100 number per shot that aggregates contact-point distance, kinetic-chain timing, and recovery quality against a baseline of competently-executed strokes. We do not pretend it is an ATP-level metric, it is a *consistent* metric that improves with practice and is comparable across your own sessions over time. ## What we don't measure Honesty matters here, because every other vendor will sell you the moon. UNFORCE does **not**: - Compute **absolute joint torques or muscle forces.** A 2D phone camera cannot recover those. - Track **3D depth in millimeters.** We approximate from the court keypoints, but elbow-extension precision is bracketed at ±10 cm in good lighting. - Detect **micro-grip changes**, **wrist pronation timing**, or **string movement.** Those are below the resolution of a phone camera at 3 m distance. - Replace a **physical-therapy gait analysis.** If you suspect a chronic injury, see a sports physiotherapist. We say all of this on the [accuracy methodology page](/accuracy) too, the only thing more useful than a feature is the limits of that feature. ## How UNFORCE compares for biomechanics specifically | Platform | Tennis biomechanics? | Hardware required | Monthly cost | Available on Android | |---|---|---|---|---| | **UNFORCE** | Yes (pose + stroke quality) | Phone | **€19/mo Pro, free tier 3/mo** | **Yes** | | SwingVision | Partial, shot stats, no pose-based mechanics | Phone + Apple Watch (recommended) | $14.99-$39.99/mo | iOS only | | PlaySight | Yes, facility-grade | Installed cameras at certified courts | Tied to facility licensing | iOS + Android | | Baseline Vision | Yes, court-side hardware AI | €1,800 portable camera | Hardware purchase | iOS + Android | | Sportsbox AI | Yes (3D from phone) | Phone | ~$20/mo | iOS + Android, golf only, no tennis | | TopCourt | No, instructional video, not analysis | - | $180/yr | iOS + Android | The honest summary: SwingVision tracks great match stats but does not surface biomechanics from pose. PlaySight and Baseline Vision are biomechanics-grade but require facility hardware or a €1,800 box. Sportsbox AI does pose-based 3D from a phone but is golf-only. UNFORCE is the only **phone-only, tennis-specific, biomechanics-aware option that runs on Android**. ## Use cases - **Adult returners**, *"I used to have a smooth backhand. Why am I shanking now?"* The pose comparison between today's session and a month ago is the killer feature for this segment. See [/use-cases/adult-returners](/use-cases/adult-returners). - **Junior coaches**, async homework, with the biomechanics report shared after each match. See [/use-cases/junior-coaches](/use-cases/junior-coaches). - **Club players**, weekly diagnostic loop. Two minutes of report reading replaces an hour of coach video review. See [/use-cases/club-players](/use-cases/club-players). - **Adult players in Sweden, the Netherlands, Spain, Italy**, EU pricing in EUR, GDPR-compliant data stored in `europe-west1` (GPU analysis currently runs in the US). No US-based subscription tax surprises. ## How to start 1. Film one match or practice on a phone you already own, mounted at the back of the court (5 ft up, landscape, 30+ fps). The [filming guide](/how-to/film-your-tennis-match) walks through it in 4 minutes. 2. Upload to UNFORCE, free tier covers 3 analyses per month, no card required. 3. Read the report. The biomechanics tab focuses on stroke-quality scores per shot type and ranks the 1-3 things to fix first. 4. Take that report to your next lesson, or use it as your own coaching log. That is it. The whole point of UNFORCE is replacing "I think I am hitting late" with a measurable, repeatable, phone-grade biomechanics readout you can act on by Tuesday. ## Frequently asked questions (See structured FAQ above for the canonical Q&A, these mirror the FAQPage schema attached to this page.) - **What is tennis biomechanics analysis on a phone?** - **How accurate is AI biomechanics tracking from a phone?** - **Is there a tennis biomechanics analyzer under fifty dollars?** - **Does UNFORCE provide personalized coaching insights?** - **Can I use computer vision to get better at tennis?** [How UNFORCE works (full pipeline)](/how-it-works) · [Accuracy methodology](/accuracy) · [Pricing](/pricing) · [Compare to SwingVision](/compare/swingvision) --- ### What changes after you've watched 10 of your own matches URL: https://unforce.io/blog/10-matches-watching-changes Markdown twin: https://unforce.io/blog/10-matches-watching-changes.md # What changes after you've watched 10 of your own matches I get the same question every few weeks from people considering UNFORCE: *"Will watching my own matches actually make me better?"* It's a fair question. The Quora thread "Will watching recordings of yourself playing tennis improve your skills?" ([source](https://www.quora.com/Will-watching-recordings-of-yourself-playing-tennis-improve-your-skills)) has been getting answered for years and the answers are split. Yes, it helps, but the way it helps isn't quite what new users expect. This post is what we've seen in our own user data, what the Quora consensus says, and what changes, psychologically and technically, by the time you've sat down with your tenth recorded match. ## TL;DR - Match 1: shock. You hit fewer balls than you thought. You misremembered the score on at least one game. - Matches 2-4: recalibration. Self-perception adjusts to the data. - Matches 5-7: pattern detection. You start seeing your own tendencies before the report tells you. - Matches 8-10: tactical change. You make different in-match decisions because you have an honest baseline. - The technical changes (better forehand technique, cleaner serve) lag the tactical and psychological changes by months. - The single biggest predictor of whether watching helps: having a structured prompt before you watch. ## Why this question gets asked The question is older than tennis AI. Coaches have asked players to watch tape since the 1970s. The Quora thread in 2024 still doesn't have a consensus answer because the *type* of watching matters as much as the *amount*. Three failure modes that show up in the Quora replies: - *"I just watched myself lose for an hour and felt worse."*, Unstructured watching, no prompt, no metric. Pure rumination. - *"I noticed my forehand looked weird but I didn't know what to fix."*, Watching without a model of what good looks like, with no coach in the loop. - *"I tried it for two matches and stopped."*, No habit. Self-review needs to be a routine, not a one-off. The successful answers all have something in common: a *structured* approach. Either a coach-given prompt, an analytical tool, or a self-imposed checklist. The watching itself is a small part; the structure around it is what works. ## What we've seen in user data Disclaimer: I'm pattern-matching across the users we've watched go through this, not running a randomized trial. The honest version of this is "what we've observed," not "what we've measured." With that hedge: The players who get the most out of UNFORCE are the ones who upload one match a week for 8+ weeks straight. They're not the ones who upload every match (high cadence, low retention) or the ones who upload sporadically (no longitudinal trend). The compounding effect lives in the *consistency*. What changes for those players, in roughly the order it shows up: ### Match 1: The reality check The first report is almost always a shock. People consistently overestimate three things: - **How many balls they hit.** Most rec players guess high, you remember the long rallies, you forget the short ones. A 90-minute match might be 250 shots, not the 400 you'd guess. - **How hard they hit.** Self-perception of pace is unreliable. The Reddit thread "Is this swing vision MPH accurate, my hardest serve only 66 mph?" ([source](https://www.reddit.com/r/10s/comments/17c8ozf/)) and its sibling "How accurate is Swingvision? Am I really serving 130mph?" ([source](https://www.reddit.com/r/10s/comments/xc2xc0/)) capture both directions of this, people's serve speed self-estimates can be off by 30-40% in either direction. - **How well they hit under pressure.** The 4-4 deuce game where you "felt locked in" was usually three unforced errors and a missed return. Match 1 is recalibration. The data isn't bad; the data is *correct*, and your mental model was off. That recalibration is the first useful thing watching does. ### Matches 2-4: The honest baseline By the third report, the shock has faded. You stop looking for "what's wrong with this match" and start looking at what's *typical* for you. This is the honest baseline. The honest baseline is more useful than any single match's data. Knowing that your average rally length is 4.2 shots, your forehand-to-backhand ratio is 60/40, and your second-serve placement is heavily backhand-side gives you a reference for everything else. A bad match becomes "rally length dropped to 2.8" instead of "I played terribly." A good match becomes "I served wider on second serves" instead of "I felt good." ### Matches 5-7: Pattern detection By match 5 or 6, you start seeing your own tendencies before the report tells you. You walk off court thinking *"I bet my backhand-down-the-line attempts were mostly errors today,"* and the heatmap confirms it. This is where self-coaching starts being faster than coach-coaching. Your coach sees you for an hour a week. You see yourself for three or four hours of match play plus practice. With pattern recognition, the data your coach needs to act on shows up faster. ### Matches 8-10: Tactical change The change that compounds most by match 10 is *in-match decision-making*. You know your baseline, you know your patterns, and you start playing differently because of it. Composite examples drawn from patterns we see: - *"I stopped going for backhand winners because the report kept showing they were 30% successful. I switched to backhand-cross to set up the forehand. Win rate on the next shot went up."* - *"I realized my second serve always went to my opponent's forehand. I started practicing wider second serves to the deuce side. Within a month, my deuce-side hold rate climbed."* - *"My rally length data showed I was worse on rallies of 6+ shots. I started playing higher-percentage in long rallies and pressing earlier. Same forehand technique; different match results."* These aren't technique changes. The forehand mechanics are the same; the *decision* about when to hit it is different. That's the change that comes from data. ### After 10: Diminishing returns on cadence This is the counter-intuitive part. After about 10 matches of structured review, the marginal gain from watching every match drops sharply. Players who keep uploading every match start to get less out of each report. Players who drop to once every other match keep getting value. The reason: the first 10 matches build the baseline and the patterns. After that, you're watching for *change*, and change is slower than match-to-match noise. Watching every match becomes signal-to-noise mush. Our recommendation: one match a week for the first 10 weeks; one match every two weeks after that. Use the saved time to actually play. ## The technical-change lag I want to be careful about a specific marketing claim UNFORCE doesn't make: *we don't claim watching matches improves your forehand technique on a 10-match timeline.* Technical change is months of repetition. Match video helps you *target* what to fix, but the fix is on-court, with a coach, with reps. What does change in 10 matches: - Self-perception (fast). - Tactical decision-making (fast). - Pattern recognition (fast). - Pre-match planning (fast). - In-match adjustments (fast). What doesn't change in 10 matches: - Stroke mechanics (slow, requires reps). - Footwork patterns (slow, requires drills). - Conditioning (separate problem). If you watch 10 matches expecting your forehand to look different on tape, you'll be disappointed. If you watch 10 matches expecting your *match management* to be different, you won't be. ## Why structure beats raw watching The Quora answers that say "video review didn't help me" almost always describe unstructured review. The ones that say it did almost always describe a coach prompt, a checklist, or a tool that surfaces patterns. This is one of the design choices behind UNFORCE, the report-first workflow. You don't open the video and ask "what should I look at?" You open the report, see three forehands and three backhands the model flagged, and watch *those* clips. The structure does the work of "what's important" so the human only has to do the work of "what does this mean for next week." One Quora answer's point has stayed with me, roughly: watching yourself without a model of what good looks like is just watching yourself. The model is what UNFORCE (or a coach, or a structured prompt) provides. ## What 10 matches looks like in practice A typical 10-week run for an NTRP 3.5 club player: - Weeks 1-2: shock + recalibration. The data contradicts memory. - Weeks 3-4: baseline forms. You start having "typical" stats. - Weeks 5-6: patterns clarify. You see what you do under pressure. - Weeks 7-8: tactical experiments. You change one thing in your match plan based on the data. - Weeks 9-10: confirmation. The tactical change shows up in the data, or it doesn't, and you iterate. Most players don't make it past week 4 without a coach-given prompt. With a prompt, or with the structured UNFORCE report doing the prompting, most users make it to week 10. ## FAQ **Does watching recordings of yourself improve your tennis?** Yes, slowly, with structure. Tactical and psychological gains by match 10; technical gains take longer. **How many matches should I watch?** One a week for 10 weeks, then one every two weeks. Diminishing returns past that cadence. **What if I hate watching myself?** Use a report-first workflow. Looking at a heatmap is less emotionally loaded than scrubbing through video. **Will watching replace lessons?** No. They compound. Lessons fix what's reachable on court; video fixes what your coach can't see. **What's the single biggest predictor of getting value from match review?** Having a structured prompt before you watch. --- **Try UNFORCE free**, three full reports a month is enough to run the 10-match experiment. [Start free](/) · [How UNFORCE works](/how-it-works) · [A coach's guide to using UNFORCE between lessons](/blog/coachs-guide-unforce-between-lessons) · [UNFORCE for club players](/use-cases/club-players) --- ### A sub-$50 phone setup for filming your tennis matches URL: https://unforce.io/blog/30-dollar-tennis-recording-setup Markdown twin: https://unforce.io/blog/30-dollar-tennis-recording-setup.md # A sub-$50 phone setup for filming your tennis matches Search Google for ["how to film a tennis match"](https://www.google.com/search?q=how+to+film+a+tennis+match) and you'll find every kind of advice, gimbals, drones, multi-camera rigs, $400 4K action cameras. There's a [Talk Tennis thread literally titled "What equipment do I need to film my tennis matches?"](https://tt.tennis-warehouse.com/index.php?threads/what-equipment-do-i-need-to-film-my-tennis-matches.610151/) where the same question gets the same scattered answer. Here's the answer. **You need: your phone, a $15-$25 fence-mount clip, and the ten minutes it takes to read this post.** Total spend: under $30 for the essentials, up to about $48 if you add the optional extras below. This is everything. The rest is upsell. ## TL;DR: the gear list | Item | Cost | Where | Why | |---|---|---|---| | **Your phone** | $0 (you have one) | - | Any phone made in the last 5 years works | | **Fence-mount phone clip** | $15-$25 | Amazon, eBay, AliExpress | Holds the phone on a chain-link fence at the right height | | **Optional: silicone band** | $3 | Wherever | Belt-and-braces in case the clip slips | | **Optional: portable battery** | $20 | Wherever | If you film 90+ minute matches and your phone dies | **Total: $15-$48** depending on which optionals you add. _Prices are in USD; EU equivalents are broadly similar._ If you do not have a chain-link fence, backboard wall, bubble court, public park with no fence, skip to the [tripod section](#what-if-no-fence) below. If you do, the fence clip is the right answer. ## What "analysis-grade" video actually requires Before we talk gear, here's what an UNFORCE (or any tennis AI) pipeline actually needs from your video: 1. **Both baselines visible in frame.** The full court should be visible from the back of one baseline to the back of the other. 2. **Roughly centred horizontally.** The phone shouldn't be off to one side of the court, it confuses court keypoint detection. 3. **30 fps minimum, 60 fps better.** Higher frame rates give finer time resolution for speed estimation. Most modern phones default to 30 or 60. 4. **1080p minimum.** Higher resolution helps the ball detector. 4K is not necessary; 1080p is the floor. 5. **Stable.** Hand-holding is bad. Anything that doesn't sway is fine, a fence clip, a tripod, a railing. That's the whole spec. Notice what's *not* on the list: zoom (you don't want it, wide is better), follow-tracking (you don't want it, fixed view is better), 4K (not necessary), an action camera (overkill). ## Why a fence clip is the right default Most outdoor and indoor club courts have a chain-link fence behind the baseline. A fence clip, a moulded plastic or aluminium gripper with a phone holder on it, clips onto the fence at the height you want, holds your phone, and stays put for as long as you need. It's the simplest, cheapest, fastest setup that exists. The Quora question ["Good camera to use that I could just hook to a fence?"](https://www.quora.com/I-want-to-film-my-full-tennis-matches-What-would-be-a-good-camera-to-use-that-I-could-just-hook-to-a-fence-cheaper-the-better) gets at the same intuition. The right answer is: don't buy a camera, use the phone you already have, and buy a $15 fence clip. **What to look for in a fence clip:** - **Adjustable jaw** to fit different chain-link gauges (most clubs have similar gauges; AliExpress generic clips fit fine). - **Tilt adjustment** so you can point the phone slightly down at the court, not straight forward. - **Quarter-inch tripod thread or phone-cradle directly built in.** The phone-cradle versions are simpler, no tripod adapter needed. - **Rubberised contact points** on the fence-grip side so it doesn't slide. We don't endorse a specific brand because the AliExpress generics are roughly equivalent to the branded ones at a third of the price. Search "tennis fence phone mount" or "GoPro fence clamp", both will surface the right product type. **What to avoid:** - **Anything magnetic-only.** Magnets to your phone case, sure; magnets to the fence, no. The phone needs to be held by the fence, not floating off it. - **Cheap suction-cup mounts.** They don't grip chain-link fence reliably. - **Anything that requires a tool to install.** You should be able to clip, position, and unclip in 30 seconds. ## Where to put the camera The single most important decision in your sub-$50 setup. We have a [dedicated post on camera angle and height](/blog/camera-angle-tennis-ai), but here's the short version: **Behind the baseline you're recording from** (yours or the opponent's, pick one and stick with it across sessions for consistent comparison). **Centred**, on the centreline of the court, not off to one side. **Net-tape height to a foot above**, about 3 to 4 feet (1m to 1.2m). Higher than this and you compress the perspective; lower and the court back doesn't show. **8 to 12 feet behind the baseline**, far enough that the full court fits in the wide-angle phone view. **Slight downward tilt**, maybe 5-10 degrees, just enough to put the back of the opposite baseline in frame. The tilt adjustment on your fence clip is what does this. If your court has no fence at the right position, say it has a 12-foot fence at 20 feet behind the baseline, instead of a 6-foot fence at 8 feet, clip higher on the further fence rather than closer at the wrong height. Distance is more forgiving than height. ## What if no fence? A meaningful minority of the courts our users film on don't have a usable fence, public-park courts in Mediterranean climates, indoor bubble courts, retractable-court setups. In those cases: **Option 1: Tripod.** A 4-to-5-foot extending tripod with a phone clip. Cost: $25-$40 for one that's stable. Place behind the baseline at the same position. The downside is wind, outdoor tripods on light tripods can sway, which adds noise to the video. Sandbag the legs if it's windy. **Option 2: Existing fixture.** Net-post mount (some sell), an umpire chair if there's one, a bench at the back of the court. The principle is "anything that doesn't move." **Option 3: A friend.** Worst option, only-if-nothing-else option. A handheld phone is the worst case for UNFORCE, every drift in the holder's stance is a court-keypoint drift in the video. If a friend must hold it, they should sit behind the centreline with the phone on a knee-prop, not handheld at chest height. We have a separate post coming on the [no-fence court mounting alternatives](/how-to/film-your-tennis-match) for the edge cases. ## Specifically what we do not recommend The internet will sell you on a lot of things. Most of them aren't worth it for analysis purposes: - **Auto-tracking AI cameras (Pivo, OBSBOT, etc.).** These follow the player around. The auto-panning, not the hardware, is what defeats fixed-court analysis: every time the camera pans, the court coordinates have to be re-estimated, and the homography drifts. If one of these cameras can lock to a fixed wide shot, that mode is fine. The Quora ["footage that followed the tennis player"](https://www.quora.com/Someone-was-talking-about-recording-themselves-playing-tennis-and-putting-their-phone-on-a-tripod-for-feedback-however-the-footage-I-saw-followed-the-tennis-player-is-this-possible-on-certain-phones) question reflects a misunderstanding, for AI analysis, you specifically *don't* want a moving camera. A fixed camera with the whole court in frame is what the algorithm needs. - **Drones.** Cool. Useless for analysis. Wind makes them unstable; the angle is wrong; the FAA / EU airspace rules are onerous. Skip. - **Multi-camera rigs.** Unnecessary. UNFORCE is monocular; one phone is the input. A second camera doesn't help. - **Wide-angle lens attachments.** Most modern phones already shoot at a wide-enough angle. The clip-on wide-angle adapters introduce edge distortion that hurts court keypoint detection. - **Gimbal stabilisers.** For run-and-gun video, fine. For tennis, you want a fixed camera, and a gimbal is overkill for that use case. A few things *are* worth more money if you're going to spend any: - **A modern phone.** If your phone is more than 5 years old and shoots only 30 fps, an upgrade has real impact. But that's a phone upgrade, not a tennis-recording purchase. - **A second-hand iPhone for tennis-only use.** An iPhone 12 used at $200 with 60 fps recording, dedicated to tennis filming, is a setup we've seen work for serious club players. Belongs in your tennis bag. ## Setup checklist for the day When you arrive at the court: 1. Clip the phone mount to the fence behind your baseline, centred. 2. Adjust height to net-tape level or slightly above. Tilt slightly down. 3. Open the camera app, switch to video, set to 1080p / 60fps if available. 4. Tap the screen to focus on the court (not on the fence). 5. Hit record. 6. Walk to the court. Play. After the match: 7. Stop recording. 8. Upload via UNFORCE (or whatever app). The whole pre-match setup takes 90 seconds once you've done it twice. ## What this saves you The default upsell on tennis-recording gear is $300+ of stuff you don't need. Putting an entry-level phone, a $15 clip, and the right placement against a $300 setup with the wrong placement: the cheaper one wins on AI analysis quality. **Placement is more important than gear.** So spend the $300 you saved on lessons, hitting partner sessions, or the UNFORCE subscription. They'll improve your tennis more. --- **Next:** [The right camera angle and height for AI shot detection](/blog/camera-angle-tennis-ai) is the deeper dive on placement. [How to record your serve for analysis](/blog/how-to-record-tennis-serve) is the same setup adapted for solo serve practice. Or jump to [/how-it-works](/how-it-works) to see what the analysis pipeline does with the video you've just filmed. --- ### A 4-week self-coaching workflow with phone video URL: https://unforce.io/blog/4-week-self-coaching-workflow Markdown twin: https://unforce.io/blog/4-week-self-coaching-workflow.md # A 4-week self-coaching workflow with phone video The Reddit r/10s thread ["SwingVision users, do you record everything?"](https://www.reddit.com/r/10s/comments/18xu4ph/) sits at the heart of this post. The community consensus in that thread, and across Quora's ["Will watching recordings of yourself playing tennis improve your skills?"](https://www.quora.com/Will-watching-recordings-of-yourself-playing-tennis-improve-your-skills), is roughly: **video review works, but only with structure.** Recording every match without a workflow produces a backlog you'll never review. Recording one match with a workflow produces real improvement. This post is the workflow. Four weeks, one match a week, specific protocol per week. Built for an NTRP 3.0-4.5 amateur. Equally applicable with or without a coach, with UNFORCE or another AI tool, with just your phone if that's all you've got. ## TL;DR - **Week 1:** Record a baseline match. Read the report. Identify the one biggest leak. - **Week 2:** Record the same match (same opponent / level / court). Work on the leak. See if it moves. - **Week 3:** Record again. The numbers are starting to show real signal vs noise. - **Week 4:** Record again. Compare across all four. Either the leak moved (continue the work in cycle 2), or it didn't (you targeted the wrong thing, restart with a new leak). That's the loop. The rest of this post is the detail per week. ## Why this loop, specifically A few principles built in: **Same recording cadence.** Once a week, not more. Weekly recordings produce signal; daily recordings produce noise (match-to-match variance is huge for amateurs). The Reddit thread linked above arrives at the same conclusion organically. **Same opponent or opponent tier.** If you record yourself against your usual league opponent in week 1 and against a 4.5 hitting partner in week 2, the comparison is broken. Pick a regular slot, your Tuesday league night, your Saturday club ladder, and stick with it. **One leak at a time.** The single biggest mistake at this level is trying to fix three things at once and breaking the parts that already worked. Pick one. Work on it for the full four weeks. Then pick the next one. **Trends, not absolutes.** Especially for [serve speed](/blog/serve-speed-reading-explained), and for stroke-quality scores, the absolute number has noise. The trend over four weeks is the signal you can trust. **A coach is not required.** This loop works alone, with just an AI tool. It works *better* with a coach, because step 4 (the actual fix) is faster with a human helping. But the analysis-and-direction half doesn't need one. We covered the AI + coach split in detail at [/blog/can-ai-replace-tennis-coach](/blog/can-ai-replace-tennis-coach). ## Setup before week 1 Before you start the cycle, do these: 1. **Pick your standing slot.** Tuesday league night. Saturday hitting partner session. Same time every week. 2. **Pick your standing court.** Same court if you can; same surface at minimum. 3. **Pre-set your camera position.** Read [/blog/camera-angle-tennis-ai](/blog/camera-angle-tennis-ai). Decide whether your fence allows a clip mount or you need a tripod. 4. **Pre-install UNFORCE (or your tool of choice).** First-time setup is not what you want to do at the court. 5. **Decide your "what's leaking?" hypothesis.** Take 30 seconds to predict, what do you *think* is your biggest weakness right now? Backhand consistency? Second-serve fault rate? Cross-court forehand placement? Write it down. The week 1 report will either confirm or correct it. ## Week 1: baseline **On court:** - Mount the phone before warm-up. - Play your standing match normally. Don't overthink. The point of week 1 is a *true* baseline, not your best tennis, your typical tennis. - After the match, stop the recording. **That evening:** - Upload to UNFORCE. The report comes back in minutes. - **Read the report in this order** (we covered this in the [club players use case](/use-cases/club-players)): 1. Court heatmap, where shots actually bounced. 2. Shot-type counts, how lopsided is your forehand:backhand ratio. 3. Stroke-quality score on your weakest shot. 4. Fault rate on serves. **Pick your leak.** This is the most important decision of the four-week cycle. Look at the report and ask: *what's the one thing, that if I fixed it, would most change my matches?* Common candidates at NTRP 3.0-4.5: - Second-serve fault rate over 15%. - Forehand:backhand ratio above 3:1 (you're avoiding your backhand). - Cross-court forehand percentage below 50% (you don't actually have the cross-court you think you do). - Stroke-quality score on backhand much lower than on forehand (technical break on backhand). - Heatmap clustered in the middle third of the court (you have no depth). Pick *one*. Write it down. Don't pick more than one. Send it to your coach if you have one, they'll help you select drills. **By the end of week 1 you should have:** a recorded match, a generated report, and one written-down leak you're going to work on. ## Week 2: first intervention **Between weeks 1 and 2:** - Practice the leak. If you have a coach, this is the lesson focus. If you don't, pick a YouTube drill that targets it (cross-reference with your UNFORCE report's coaching tips). Hit a basket of balls focused on the leak. Twice during the week if possible. **On court (your standing match slot):** - Same setup. Same opponent or opponent tier. Mount the phone, play the match. - *During the match*, don't think about the leak. Thinking about technique mid-match makes it worse. Trust the off-court work. **That evening:** - Upload. Generate the report. - **Compare to week 1**, specifically the metric tied to your chosen leak. Did it move? In which direction? By how much? **Three possible outcomes:** - **Moved in the right direction.** Continue the work. Don't change targets. - **Didn't move.** Stay the course. One week of data is not enough to conclude. - **Moved in the wrong direction.** Possibility 1: noise. Possibility 2: the practice work introduced a new break (common with technique changes). Stay the course one more week before reacting. **By the end of week 2 you should have:** two reports, a comparison, and either continuing-the-work or staying-the-course confidence. ## Week 3: signal vs noise **Between weeks 2 and 3:** - Same as before. Continue the targeted practice. **On court:** - Same setup, same match. **That evening:** - Upload. Generate the report. - **Compare across all three weeks.** Trend chart, not point comparison. The metric you're tracking should be moving in your target direction, even if not monotonically. This is the **trust-the-data week**. Most amateurs quit the loop here because the numbers haven't moved enough to feel different on court. They feel like they're putting in the work and not improving. They stop. **Don't stop.** Tennis improvement is non-linear; the felt change comes after the metric change, not before. If the metric *has* moved across three weeks, you've validated the approach. The fourth week is consolidation. If the metric *hasn't* moved across three weeks, you have a real signal that you targeted the wrong leak. Switch targets going into week 4, but only if all three weeks consistently show no movement, not if there's noise. **By the end of week 3 you should have:** three reports, a trend you can interpret, and a decision: continue or pivot. ## Week 4: the verdict **On court:** - Same setup, same match. Last recording of the cycle. **That evening:** - Upload. Generate the report. - **Compare across all four weeks.** The full trend chart. **Read the cycle in this order:** 1. **Did the targeted metric move?** This is the binary outcome. Either it did or it didn't. The cycle's job was to answer this. 2. **What happened to the *other* metrics?** Often, fixing one leak surfaces (or worsens) another. Your second-serve fault rate dropped from 18% to 8%, but your first-serve speed is now 4 mph slower because you're hitting more spin. That's a new leak for cycle 2. 3. **What's the next leak?** Pick it now. Same protocol, write it down, plan the practice work. **By the end of week 4 you should have:** four reports, a clear trend, a verdict on the cycle's leak, and a target for the next one. ## What changes after one cycle A few things, based on what we see in UNFORCE user-data trends across cohorts of amateurs running this loop: - **You'll have data discipline.** You've now recorded four matches against the same opponent tier with the same setup. That's more structured analysis than 95% of NTRP 3.5 amateurs ever do on themselves. - **One specific leak will have narrowed.** Not all your tennis is better; one thing is. That's correct, that's how improvement actually works at this level. - **You'll know your real numbers.** Not the wishful version. The real one. Most amateurs *think* they hit 60% first serves; the report says 47%. Knowing the real number is itself a step. - **You'll be ready for cycle 2.** With a different leak. Same protocol. Compounded across a year (twelve cycles, fifty weeks of recording), you'll move materially. We're not promising NTRP-level jumps in four weeks, anyone who does is selling. What we will say: a year of this loop can be part of the difference between an amateur who plateaus at 3.5 and one who climbs toward 4.0. No tool guarantees that jump; the loop just gives you the honest information to work from. ## What this looks like with a coach If you have a coach, the loop becomes: - **Week 1:** Record. Bring report to coach. Coach picks the leak (you discuss). - **Between weeks:** Coach designs the drills. - **Week 2:** Record. Bring report. Coach adjusts. - **Continue.** The coach is doing the on-court intervention; the AI tool is doing the diagnosis and the trend tracking. Neither is doing the other's job. We covered this exact split at [/blog/can-ai-replace-tennis-coach](/blog/can-ai-replace-tennis-coach). ## What this looks like without a coach The loop is identical, with one extra step: you have to design the drill yourself. The UNFORCE report includes coaching tips per leak, which are a starting point. YouTube channels (Top Tennis Training, Essential Tennis, Patrick Mouratoglou's channel) have drill content for nearly every common leak at this level. Cross-reference the report's tip with a video, then go hit balls. This is harder than working with a coach. It's also dramatically cheaper. For an NTRP 3.5 with limited budget, it's the right answer. ## What this is not A few things this workflow is *not*: - **A get-better-fast scheme.** Four weeks is a small commitment for the amateur who's been at 3.5 for six years. The loop is the right pace, not the maximum pace. - **A substitute for hitting partners.** The loop tells you what to work on. The actual work is you, hitting balls, with someone or against a wall or in a clinic. The AI tool doesn't hit balls. - **A replacement for play time.** Recording one match a week and watching the reports doesn't make you better, playing the matches and acting on the reports does. If you only have time for one or the other, play the matches. --- **Related:** [Can an AI tennis app actually replace your coach?](/blog/can-ai-replace-tennis-coach) is the framing post. [UNFORCE for club players: the once-a-week diagnostic](/use-cases/club-players) is the use-case page that this workflow underpins. Or [/how-it-works](/how-it-works) if you want to understand the pipeline that produces the reports you'll be reading. --- ### AI tennis stroke quality scoring: what it measures and what it can't URL: https://unforce.io/blog/ai-tennis-stroke-quality-scoring Markdown twin: https://unforce.io/blog/ai-tennis-stroke-quality-scoring.md # AI tennis stroke quality scoring: what it measures and what it can't Search "AI tennis stroke quality scoring tool" and you get a wall of apps promising a number for your forehand. Almost none of them explain what the number is, how it is computed, or when to ignore it. This post does. I'm Akshay Sarode, founder of UNFORCE, so treat the UNFORCE-specific parts as the view of someone who built one of these tools. Everything about the underlying method is true of any pose-based scorer, not just ours, and I've marked the places where I'm describing our implementation specifically. This is written for the NTRP 3.0-4.5 player deciding whether a stroke-quality score is worth trusting, and for coaches deciding whether to put one in front of a student. ## Bottom line up front - A stroke-quality score measures **form, not outcome.** It scores how your swing looks against a technical baseline. It does not know whether the ball went in. - A single scored stroke is **not a coaching diagnosis.** It is one noisy measurement. The signal lives in the per-match average and the trend across weeks, not in any one shot. - Pose-based scoring works by extracting a body skeleton per frame, measuring joint angles and timing around contact, and comparing those to a reference distribution of well-executed shots. There is no magic. There is geometry. - When you evaluate any tool that claims stroke quality, ask three questions: **is the methodology published, is per-shot confidence shown, and are the occlusion failure modes documented.** If the answer to all three is no, you are looking at a number with no audit trail. - UNFORCE scores every shot 0-100, split into preparation, contact, and follow-through, and publishes the accuracy methodology at [/accuracy](/accuracy). The full feature detail is at [/features/stroke-quality](/features/stroke-quality). ## What a stroke-quality score actually measures Start with the thing most tools blur: a stroke-quality score is a measurement of **form**, and form is not the same as outcome. Outcome is whether the ball landed in, how deep, how fast, with what spin. Form is what your body did to produce the swing: how far you rotated your shoulders, where you met the ball relative to your front foot, whether your follow-through finished or got cut short. A stroke-quality scorer looks only at the second thing. It watches your body, not the scoreboard. That distinction matters because a clean-looking forehand can miss and an ugly one can win the point. The score is telling you something narrower and more useful than "was that a good shot": it is telling you how close the mechanics were to a broad reference of well-executed technique. On UNFORCE the reference is an aggregate of professionally annotated ATP/WTA footage, weighted toward the most stable mainstream patterns, not a single pro you are being asked to copy. So a 65 forehand is not a "bad" forehand. It is a forehand with identifiable departures from the canonical pose. The number is a description, not a verdict. ## How pose-estimation scoring works, at a reader level Every credible stroke-quality tool is built on pose estimation. Here is the whole idea without the jargon. A pose model looks at each video frame and returns the position of your body joints: shoulders, elbows, wrists, hips, knees, ankles. UNFORCE uses MediaPipe, Google's open-source pose model, which returns 33 keypoints per frame and is accurate to a few pixels on ordinary 1080p phone video. That per-frame skeleton is the raw material. For one shot, the tool takes the frames around contact, typically 8-15 of them spanning preparation, the contact moment, and the follow-through. From those skeletons it computes geometric features: joint angles, the order and timing of the kinetic chain (do the hips fire before the shoulders before the arm), and where the contact point sits relative to your body. Each of those features gets compared to a reference distribution built from well-executed shots of the same type. Being at the 75th percentile of the reference for, say, trunk rotation becomes a component score. The component scores combine into the 0-100 you see. That is the entire trick. There is no model watching you play and forming an opinion. There is a skeleton, some angles, and a comparison to a distribution. The five-stage pipeline that feeds this, ball tracking, court detection, player pose, shot classification, then scoring, is walked through in [how AI tennis shot detection works](/blog/how-ai-tennis-shot-detection-works). ## What the components mean UNFORCE breaks each score into three phases, because "your forehand is a 74" is useless and "your contact is the weak part" is not. - **Preparation:** racket take-back, shoulder and hip rotation, weight transfer before the swing. - **Contact:** where you meet the ball relative to your body, contact height, an estimate of racket-face angle. - **Follow-through:** the finishing arc, whether rotation completed, and balance recovery. The exact sub-features shift by shot type. A serve score weighs toss-height variance, contact-point variance, and leg drive; a volley score weighs ready-position posture and how far in front of the body you make contact. The point of the split is that the useful information is almost never the aggregate. It is which phase is dragging the aggregate down. ## What it can't do Be honest about the ceiling. - **It does not know the outcome.** Form only. If you want to know where your shots landed, that is the [court heatmap](/features/court-heatmap) and bounce data, a separate part of the report. - **A single score is not a diagnosis.** Per-shot scores carry real noise, roughly ±10 points around the true value of your form on that shot, because the model aggregates across a handful of frames and because your body genuinely varies shot to shot. One 68 forehand means almost nothing. - **It is not personalised to your own best.** The score compares you to a pro baseline, not to your form last month. A "vs your previous self" view is something we're still building; today the number is absolute. - **It is not a verdict on whether you can play.** A 60 forehand can beat a 75 forehand when the rest of the game is better. The score is one input, not a ranking. The cleanest way to think about it: the score tells you what the form looks like. A coach tells you what to do about it. The two are not interchangeable. ## What to look for in any stroke-quality tool If you are shopping, most of the marketing will sound identical. Three questions separate a real tool from a number generator. **1. Is the methodology published?** You should be able to read how the score is computed and how accurate it is against ground truth, before you pay. If a tool describes accuracy only with adjectives like "professional-grade", it is telling you nothing measurable. UNFORCE publishes its benchmarks and how the test set was built at [/accuracy](/accuracy). It is fair to ask any competitor for the same. As of today, no competitor we know of publishes equivalent stroke-quality benchmarks. **2. Is per-shot confidence shown?** A stroke-quality score with no confidence attached invites you to over-read a single number. A tool that is being honest downweights low-confidence shots and tells you when the sample is too small. UNFORCE flags low-confidence frames and puts a low-confidence marker on the headline when the shot count is thin. **3. Are occlusion failure modes documented?** This is the tell. Pose estimation degrades when the player is partly blocked: a net post across the torso, a crossing player in doubles, an extreme camera angle. A serious tool says so and excludes those shots. In the UNFORCE [sample report](/sample-report), you can see net exchanges explicitly dropped from stroke-quality scoring because the player was occluded, listed under Honest Gaps rather than hidden. A tool that scores every shot with equal confidence, including the ones where it could barely see the player, is guessing and not telling you. ## How UNFORCE implements it For completeness, here is the UNFORCE-specific version, and this is the part where I'm the biased source. Every shot detected by [shot detection](/features/shot-detection) gets MediaPipe pose run across its preparation, contact, and follow-through frames. Geometric features come out, get scored against the ATP/WTA reference distribution, and produce a 0-100 per component plus an aggregate. The per-match summary flags the components that cluster low across the match, and the report's "work on this" section turns the weakest component into one concrete sentence, for example that your forehand contact point sits consistently behind your front foot. The full pipeline is at [/how-it-works](/how-it-works), and the feature page is [/features/stroke-quality](/features/stroke-quality). It is on every tier, including the free one. Free gives you three analyses a month, rate-limited rather than feature-limited, which is enough to test whether the scores match what you and your coach already believe about your strokes. Full pricing is at [/pricing](/pricing). ## Where it fails, honestly Three failure modes worth knowing before you trust a number: 1. **Non-classical technique.** The baseline is broad pro form, and "broad" is not "everyone". A deliberately extreme grip or stance will score lower on the components you have intentionally moved away from. That is a measurement, not a mistake. Read the breakdown, override the deliberate choices, use the rest. 2. **Heavy occlusion.** A match where the player is consistently blocked produces noisier scores. UNFORCE downweights those shots, but garbage in still widens the error. 3. **Too few shots.** Per-shot scores are noisy; per-match averages stabilise around 50+ shots. A 30-shot practice clip gives a shakier summary than a full match, and the report says so. Smaller ones: very tall or very short players sit slightly outside the model's assumed body proportions, and unusual kit (long skirts, heavy jackets) makes the segmentation work harder. ## How a 3.5 player should actually use the scores This is the part that decides whether the tool helps you or just entertains you. **Ignore single shots.** The noise on one score is large enough that reacting to a single 62 forehand is reacting to randomness. Look at the per-match aggregate for each shot type, and the component that is lowest within it. **Track the trend, not the level.** The absolute number matters less than its direction over four to six weeks. If your forehand contact component climbs from 66 to 72 across a month of working on a specific cue, that is the tool doing its job. A single week's number is a data point; the slope is the signal. **Turn one component into one practice focus.** If contact is your weakest component across the match, that is the week's work, not all three phases at once. The report is deliberately built to surface one headline fix, not ten. Pair it with a coach for the highest-value loop; the score finds the leak, a coach tells you the drill. **Re-check on the same kind of footage.** Compare match to match, filmed the same way. A sunny outdoor hard court and a dim indoor hall are not the same input, and mixing them muddies the trend. Used this way, a stroke-quality score stops being a vanity number and becomes what it should be: a weekly instrument for spotting which mechanical component is quietly costing you, before it becomes a habit you cannot see. --- **Read next:** [Stroke quality feature detail](/features/stroke-quality) · [How AI tennis shot detection works](/blog/how-ai-tennis-shot-detection-works) · [Accuracy methodology](/accuracy) · [How UNFORCE works](/how-it-works) · [Sample post-match report](/sample-report). --- ### Apple Watch tennis apps: do you need one for UNFORCE? URL: https://unforce.io/blog/apple-watch-tennis-apps Markdown twin: https://unforce.io/blog/apple-watch-tennis-apps.md # Apple Watch tennis apps: do you need one for UNFORCE? Short answer: no. UNFORCE doesn't need an Apple Watch, for anything. If you don't own one, don't want to buy one, or don't want to wear one on court, you lose nothing. Long answer: it depends what *you* want from a tennis app, and the watch question gets confused because SwingVision's signature feature is watch-based. This post separates the workflows, lists the actual Apple Watch tennis options, and explains where UNFORCE fits without one. I'm the founder of UNFORCE, so I'll tell you when an Apple Watch genuinely earns its keep, and when you're paying $400 for a feature you don't use. ## TL;DR | Question | Answer | |---|---| | Do I need a watch for **UNFORCE**? | No | | Do I need a watch for **SwingVision** real-time line calling? | Yes | | Can I use SwingVision without a watch? | Yes, but you lose its signature feature | | Best **free** Apple Watch tennis app? | TennisKeeper free tier | | Apple's built-in tennis app? | Generic Workout, duration + calories only | | Will an Apple Watch make UNFORCE better? | No | If you take one thing from this post: the Apple Watch tennis question is really *the SwingVision question*, because SwingVision is the one product whose differentiated feature lives on the watch. The other apps don't depend on it. ## Why this question keeps showing up The Google "people also ask" box for *swingvision price* surfaces the question *Do you need an Apple Watch for SwingVision?* on most SERPs ([source](https://www.google.com/search?q=swingvision+price)). The Quora thread "Are there any good free Apple Watch apps for tennis players?" ([source](https://www.quora.com/Are-there-any-good-free-Apple-Watch-apps-for-tennis-players-To-track-things-like-shot-and-serve-speed)) keeps surfacing the same questions about TennisKeeper, Swing, and the Apple Workout app. The Talk Tennis thread "Apple Watch SwingVision app vs TennisKeeper app" ([source](https://tt.tennis-warehouse.com/index.php?threads/apple-watch-swingvision-app-vs-tenniskeeper-app.682159/)) is the closest thing to an honest community comparison. Read it before you spend. ## The watch question, separated by app ### SwingVision The Tennisnerd review summarises the dependency clearly: SwingVision's real-time line-calling workflow is built around the Apple Watch ([source](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)). When you hit a shot, the watch buzzes "in" or "out" within a second. That's the magic. Without the watch you can still record and analyze post-match, but you've lost what most users buy SwingVision for. So: **technically no, the watch isn't required.** Practically, if you don't have one, you're paying SwingVision's subscription for the post-match features alone, and post-match features are exactly what UNFORCE covers from your phone. ### UNFORCE UNFORCE is video-AI from end to end. The pipeline is TrackNet ball detection on the video frames, then court keypoint estimation, then MediaPipe pose, then shot classification (CatBoost), then report generation. None of these benefit from a wrist-mounted IMU. The watch can tell you a forehand happened; it cannot tell you the racket-head path, the ball trajectory, or where the ball landed. Only the video can. So: **no watch, ever, for UNFORCE.** You record, you upload, you get a per-shot report. iPhone and Android, same pipeline. ### TennisKeeper TennisKeeper is the inverse of UNFORCE, watch-only, no video. It uses the IMU on your wrist to estimate forehand/backhand/serve counts and swing speed, plus an iPhone companion for match-score tracking. Genuinely useful within its scope, and the free tier is one of the best deals on the App Store. But it doesn't see the ball, it doesn't see the court, and it doesn't tell you anything about technique. If you want a wrist counter, TennisKeeper. If you want video AI, UNFORCE. They're not competing, they're solving different problems. ### Swing Pro Swing Pro is the lighter watch-only option. Cleaner UI, fewer features. Same category as TennisKeeper. ### SwingVision Watch app SwingVision's watch app is the one that *requires* a paid SwingVision subscription. It's not a standalone product. If you don't already pay for SwingVision, the watch app does nothing. ### Apple's built-in Workout app Free, pre-installed, useless for tennis stats. It tracks duration and calories. It does not count shots or estimate swing speed. People keep landing on it because it's free; nobody actually uses it for tennis. ## When the Apple Watch earns its keep Be honest with yourself about which of these you actually do: 1. **You play singles matches and want live in-match line calls.** Buy SwingVision + Apple Watch. Worth it. 2. **You want a passive shot counter on your wrist.** TennisKeeper free tier or Swing Pro. The watch you may already own pays for itself. 3. **You want technique analysis, court heatmaps, stroke quality, and per-shot reports.** UNFORCE. No watch required, no benefit from owning one. 4. **You want all of the above.** Watch + SwingVision + UNFORCE. Three products, three different jobs. The bucket most rec players actually live in is #3, and that's the bucket where the watch is overkill. If you bought a watch *for tennis* and you're in bucket #3, you spent money on something the workflow doesn't need. ## The "do I need a watch for SwingVision?" inferred answer The Google PAA box keeps surfacing this question because the SwingVision marketing site doesn't answer it directly. The honest answer, sourced from the [Tennisnerd interview](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) with the SwingVision team: > **You can use SwingVision without an Apple Watch, but the real-time line-calling experience that defines the product requires one.** If you're paying for SwingVision's entry tier (its tiers run roughly $15 to $40 per month as of mid-2026; check swing.vision) and you don't own a watch, you're paying for post-match shot detection and stats, features that overlap heavily with UNFORCE's free or Pro tier, on either iPhone *or* Android. That's the comparison most users skip. ## Why UNFORCE doesn't have a watch app (and may, eventually, build a small one) Two design decisions: 1. **Cross-platform parity matters more than wrist real estate.** A non-trivial chunk of our users are on Android. If the differentiated experience were behind a $400 Apple device, we'd be telling those users they get a worse product. We're not willing to do that. 2. **The video AI doesn't need wrist data.** Our pipeline gets pose from MediaPipe on the video, ball trajectory from TrackNet, and bounce detection from the ball trajectory crossing the court keypoints. A watch IMU would either duplicate or add noise. There's a future world where UNFORCE ships a small companion watch app, match-score tracking, quick start/stop, maybe haptic alerts when the analysis is ready. It would be a sidekick, not a requirement. ## What to do if you already own an Apple Watch You bought the watch. Use it. Run TennisKeeper free tier alongside UNFORCE: - Watch on your wrist counts shots and tracks score during the match. - Phone on a tripod records the match. - After the match, UNFORCE generates the per-shot report from the video. - TennisKeeper gives you the wrist-side stat summary; UNFORCE gives you the video-side analysis. Two free tiers, both genuinely useful, no subscription needed to start. The Talk Tennis "[Apple Watch SwingVision vs TennisKeeper](https://tt.tennis-warehouse.com/index.php?threads/apple-watch-swingvision-app-vs-tenniskeeper-app.682159/)" thread covers the watch-side comparison in depth. ## What to do if you don't own one Don't buy a $400 watch *because* of SwingVision. Try UNFORCE free tier first. If after three months you genuinely miss real-time line calling, and you're an iPhone user, and you'd actually use it during your matches, *then* the watch makes sense. Most rec players don't get there. The Quora "free Apple Watch tennis apps" thread ([source](https://www.quora.com/Are-there-any-good-free-Apple-Watch-apps-for-tennis-players-To-track-things-like-shot-and-serve-speed)) is full of people asking the same thing, and the consistent advice is *try the free tiers before you spend on hardware*. ## FAQ **Do I need an Apple Watch for UNFORCE?** No. The full pipeline runs from your phone video. **Do I need an Apple Watch for SwingVision?** Technically no, but the live line-call feature requires one, and that's what most users buy SwingVision for. **What's the best free Apple Watch tennis app?** TennisKeeper free tier. Swing Pro is a lighter alternative. **Will an Apple Watch make UNFORCE more accurate?** No. The accuracy comes from the video pipeline, not from wrist data. **Can I use both SwingVision (with watch) and UNFORCE?** Yes, many players do. Use SwingVision for live calls; use UNFORCE for the technique-quality breakdown after the match. --- **Try UNFORCE free**, no watch needed, no card, full per-shot report. [Start free](/) · [How UNFORCE works](/how-it-works) · [UNFORCE vs SwingVision](/compare/swingvision) · [Best free tennis stat tracker](/blog/best-free-tennis-stat-tracker) --- ### Best AI tennis analysis app for Android: what actually counts as AI URL: https://unforce.io/blog/best-ai-tennis-analysis-app-android Markdown twin: https://unforce.io/blog/best-ai-tennis-analysis-app-android.md # Best AI tennis analysis app for Android: what actually counts as AI If you search "best AI tennis analysis app for Android," you get a list that quietly mixes two very different things: apps that run tennis-specific models, and apps that put the word AI in their store listing and do none of it. I'm Akshay Sarode, founder of UNFORCE, so I have an obvious stake in how this shakes out. I'll mark every place I'm taking sides. But the useful part of this post isn't my opinion of the winner. It's a test you can run yourself to separate real AI analysis from video tools wearing an AI badge. This is the narrow, AI-specific cut. If you want the full field, every app that actually installs on a Pixel, Samsung, or OnePlus, ranked on price and workflow, read the broader [best tennis video analysis app for Android in 2026](/blog/best-tennis-video-analysis-app-android-2026) roundup. This post asks a smaller question: on Android, which apps are doing AI, and what does "AI" even mean for tennis. ## Bottom line up front - "AI analysis" in a tennis app means four concrete things: **ball tracking, shot detection, pose-based stroke scoring, and an automatic report** built from those. Most apps do zero, one, or two of them. - Two categories dominate the Android search results but do **no tennis AI**: manual video tools where a human does the analysis (OnForm), and instant-replay "delay mirror" apps that just buffer and play back. - **SwingVision**, the app most people mean when they say "AI tennis," is genuinely AI but **doesn't run on Android at all** ([their own Android note](https://swing.vision/newsletters/android-update)). - On Android, the short list that runs the full stack is small. UNFORCE is one of them; I'll flag my bias and point you at numbers instead. - The one AI claim you can verify before paying is **published accuracy**. Almost nobody publishes it. That absence is the most useful signal in the category. [See our methodology](/accuracy). ## The four-part test: what "AI analysis" actually means Here's the definition I'd hold any "AI tennis" app to. Four capabilities. An app that markets AI should do most of them automatically, from a single phone video, with no manual tagging. **1. Ball tracking.** A model finds the ball, a 5 to 15 pixel object moving faster than its own width per frame, in every frame, and reconstructs its trajectory and bounce points. This is a genuinely hard computer-vision problem, which is why the field converged on TrackNet-style detectors built for small fast objects. If an app can't tell you where the ball bounced without you clicking on it, it isn't tracking the ball. [How ours works](/features/ball-tracking). **2. Shot detection and classification.** The app finds every moment of contact and labels the stroke: forehand, backhand, serve, volley, slice. Doing this well means combining body pose with ball trajectory, because the ball alone can't separate a slice from a drive that land in the same spot. UNFORCE uses MediaPipe pose plus a CatBoost classifier over pose and trajectory features. [Detail here](/features/shot-detection). **3. Pose-based stroke scoring.** The app extracts your skeleton and scores the swing itself, preparation, contact, follow-through, against a technical baseline. This is the capability almost nobody ships, because it's the hardest to do without embarrassing yourself. It's also the one an amateur can't self-diagnose. [Detail here](/features/stroke-quality). **4. An automatic report.** The three layers above get synthesised into something you can read and share without living inside the app. [Our post-match report](/features/coaching-report) is a PDF plus a time-coded video. If you want the long version of how these stack into one pipeline, I wrote it up in [how AI tennis shot detection actually works](/blog/how-ai-tennis-shot-detection-works). The honest headline: ball detection, court keypoints, player pose, shot classification, stroke scoring. Five models in a row, each of which can fail, which is why the accuracy question matters more than any feature list. ## The three things that pretend to be AI but aren't Roughly half of what surfaces for "AI tennis analysis" on Android is one of these. None of them is bad. They're just answering a different question than the one you typed. **Manual video tools.** OnForm is the clearest example. It's a mature, multi-sport video platform where a coach draws on clips, adds voice notes, and lines up two videos side by side. It works on Android and it's genuinely good at coach-led review. But there's **no automatic shot detection, no ball tracking, no stroke classification**. The human does the analysis; the app is the shared whiteboard. Pricing runs roughly $9.99 to $59.99/mo across athlete and coach plans ([OnForm](https://onform.com/pricing/)). We wrote up the distinction at [UNFORCE vs OnForm](/compare/onform). If your coach already runs an OnForm workspace, that's a real reason to use it. It just isn't AI. **Delay-mirror and instant-replay apps.** A whole genre of Android apps records a rolling buffer and plays it back a few seconds later so you can watch your serve at the practice wall. Useful for a solo hitting session. There is no model in the loop. It's a video buffer, not analysis. **Instruction libraries.** Apps like TopCourt sell filmed lessons from pros. That's content, not an analysis engine. It never looks at your video at all. Worth your money if you want structured instruction; irrelevant to the question of which app analyses your match. Opinion, clearly marked: I think most of the "AI" language in this second and third group is loose marketing, and it's the main reason the Android search results feel more crowded than the real field is. Strip out the tools that never run a model on your footage and the list gets short fast. ## Applying the test on Android Run the four-part test across the apps people actually mean, and here's where it lands. I'm keeping this deliberately short because the app-by-app inventory already lives in the [2026 Android roundup](/blog/best-tennis-video-analysis-app-android-2026); repeating it here would waste your time. **SwingVision** passes the AI test on capability. It runs real shot detection and ball tracking, and its Apple Watch line calling is a feature nobody else matches. It fails the Android test on availability: there is no official Android build, and any APK claiming to be one is unofficial and unaffiliated; installing sideloaded APKs carries risk. For an Android buyer, a great app you can't install is a non-option. Full picture at [UNFORCE vs SwingVision](/compare/swingvision), and the platform reality on our [Android page](/android). **Full-stack Android AI** is a short list. UNFORCE (mine) runs all four capabilities. TennisAI.net advertises tennis analysis but runs a smaller feature surface and, importantly, publishes no accuracy numbers we can find. That last gap is the whole ballgame, which is the next section. ## Why "published accuracy" is the real AI differentiator Here's the part I care about most, and the part that's easy to verify without trusting me. Every app in this category will tell you its AI is accurate. "Best-in-class," "professional grade," "highly accurate." Those phrases mean nothing. The test isn't whether a company claims accuracy; it's whether it publishes numbers you can check and, ideally, the method behind them. UNFORCE publishes the whole thing on the [accuracy page](/accuracy), and I'll quote it precisely so you can hold me to it. On our internal held-out test set, current build: - Shot detection F1: forehand ~ 0.92, backhand ~ 0.91, serve ~ 0.88, slice ~ 0.83, and volley ~ 0.78 (volleys are the hardest, and we say so). - Ball-speed error versus a handheld radar: median ~ 6.2 km/h, with a slight ~ 2 km/h under-read we're still chasing. - Court keypoint detection: over 99% on hard court, ~ 97% on clay, ~ 96% indoor. Those are current-build measurements against a representative amateur test set, not lab ground truth, and they move every release. No other Android tennis app I'm aware of publishes equivalents. That's not a knock on their models being worse. It might be that their model is great. It's that you have no way to know, and neither do I, and "trust us" is not a spec. When you can't verify an AI claim, the honest default is to treat the accuracy as unknown. ## Where UNFORCE's AI still falls short Since I'm asking you to judge apps on honesty, here's mine. These are real gaps, not modesty. - **Volleys are the weak class.** F1 ~ 0.78 versus low-90s for groundstrokes. Net occlusion and fast contact leave the pose model less to work with. - **Doubles is beta.** Ball tracking and shot detection work, but per-player attribution on net exchanges mis-attributes roughly 15% of the time in the current build. Don't buy UNFORCE primarily for doubles yet. - **No live line calling.** We do post-match analysis only. If you want a buzz on close calls during the match, that's SwingVision's territory and we don't compete there. - **No spin from a phone camera.** That needs frame rates or camera counts a phone doesn't have. We keep it off the feature list rather than ship an unreliable number. - **The report's "work on this" line is rule-based, not a coach.** It finds your lowest-scoring component and maps it to a generic drill. It is not a language model pretending to be a human coach, and it doesn't know your tactical context. Pair it with a real coach for the trust layer. - **Clay and hand-held footage degrade the whole pipeline.** Bounce localisation median climbs on heavy clay dust, and a moving camera breaks the court geometry every downstream step depends on. None of that is unique to us. Clay is hard for everyone, doubles is hard for everyone. The difference is whether an app tells you before you pay. ## How to test any "AI" app in one match You don't have to take a review's word for it, mine included. Record one singles match on a chest-height, behind-the-baseline phone at 1080p, upload it to any app claiming AI, and check four things: 1. **Did it label the shots automatically?** No tapping each contact. If you had to tag them, that's manual video analysis. 2. **Did it build a heatmap from tracked bounces?** A real ball tracker produces bounce locations. A tagging tool can't. 3. **Did it score the swing itself,** not just count shots and flash a serve-speed number? 4. **Can you verify any of it?** Look for a published methodology page. Its presence or absence tells you more than any single number on it. If an app passes all four, it's doing AI analysis. If it passes one or two, it's a partial tool with good marketing. ## Pricing, briefly AI analysis costs GPU time per match, so a genuinely free-forever full pipeline is rare. UNFORCE is [€0 for 3 analyses a month](/pricing) with no feature gates, €19/mo Pro for unlimited, €49/mo Team for ten seats. That free tier is the point: test the AI on your own footage before paying. Compare that to SwingVision's USD-only tiers (roughly $15 to $40 per month as of mid-2026; check swing.vision) that you can't run on Android anyway, and OnForm's per-seat pricing for a tool that doesn't do the analysis for you. The [alternatives hub](/alternatives) has the side-by-sides. ## The honest verdict For an Android player who typed "AI tennis analysis" and meant it, the real shortlist is a handful of apps that run the full model stack, and a much shorter list that will show you their numbers. UNFORCE is my answer, and I've told you where it's weak. But the durable takeaway is the test, not the pick: make any app prove it runs tennis-specific models automatically, and make it show you the accuracy. Everything else is a video player with a good store listing. --- *Read next: [Best tennis video analysis app for Android in 2026](/blog/best-tennis-video-analysis-app-android-2026) · [How AI tennis shot detection actually works](/blog/how-ai-tennis-shot-detection-works) · [Our published accuracy methodology](/accuracy) · [UNFORCE vs SwingVision](/compare/swingvision).* --- ### What is the best app to analyze tennis? An honest 2026 list URL: https://unforce.io/blog/best-app-to-analyze-tennis Markdown twin: https://unforce.io/blog/best-app-to-analyze-tennis.md # What is the best app to analyze tennis? An honest 2026 list There is no single best tennis analysis app. The Google "people also ask" box treats this question like it has one answer; it doesn't. The right tool depends on your phone, your court, your budget, and whether you actually want technique coaching or just match stats. I'm the founder of UNFORCE, so I have skin in the game, but this list is built from public documentation, published methodology, and hands-on use of the tools that offer free tiers, and I'll tell you when ours isn't the right pick. This is the list I'd give a friend. If your question is "what does UNFORCE actually give me after upload?", start with the [sample post-match report](/sample-report). Screenshots beat category claims. ## TL;DR | App | Best for | Platforms | Free tier | Watch needed | |---|---|---|---|---| | **SwingVision** | iOS players who want real-time line calling | iOS only | Limited | Apple Watch for full features | | **UNFORCE** | Cross-platform players who want published accuracy | iOS, Android | Yes, 3/mo | No | | **OnForm** | Coach-led slow-mo video breakdowns | iOS, Android | Trial | No | | **TennisAI.net** | Casual web upload, no app install | Web only | Limited | No | | **TopCourt** | Pro-led instruction (not analysis) | iOS-first (verify current support) | No | No | If you take nothing else from this post: don't choose the app first. Choose the workflow. Then choose the app that fits. ## How I evaluated these Each app is evaluated against public documentation, published methodology, and hands-on use of the tools that offer free tiers. I weighed shot-detection sanity, court-keypoint reliability on clay, doubles handling, pricing transparency, and whether the marketing claims survive a second match. The Google PAA box for *tennis ai app* surfaces this question on multiple SERPs ([source](https://www.google.com/search?q=tennis+ai+app)), and the related searches for *best tennis video analysis app* show the same intent ([source](https://www.google.com/search?q=best+tennis+video+analysis+app)). ## 1. SwingVision **Best for:** iOS players with an Apple Watch who want live line calling. SwingVision built the category. If you have an iPhone and an Apple Watch, this is the most polished experience on the market. The real-time line-calling feature, your watch buzzes "out" mid-rally, is genuinely impressive and nothing else replicates it. **Where it shines.** Real-time stats during a match. Mature App Store presence (thousands of reviews). Good iOS UI. Pickleball support if you switch sports. **Where it loses people.** Three places. First, no Android, and the team has been exploring it for several years, per their public updates. Second, the pricing tiers confuse buyers: the [Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) notes that higher recording quality and more accurate line calling sit behind the pricier tiers (as of mid-2026 SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision). Third, some clay-court users flag accuracy issues: one App Store review says *"on clay it doesn't understand where the lines of the court are"* ([App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)), though we can't verify that reviewer's setup or app version. **Skip if:** you're on Android, you play primarily on clay, or you don't want to wear a watch. ## 2. UNFORCE **Best for:** anyone who wants the same per-shot AI report on iOS or Android, and who wants to see how the accuracy number was calculated. I'll keep this honest. UNFORCE is the youngest product on this list. We don't have SwingVision's review count or its years of bug fixes. What we do have is the only published accuracy methodology in the category (`/accuracy`) and a cross-platform client that runs the exact same pipeline regardless of phone. **Where it shines.** Android-first parity with iOS. Published per-shot F1 scores against a hand-annotated test set. Free tier with no credit card (3 full analyses per month). Court keypoints that work on clay. EU data residency (`europe-west1`). **Where it loses people.** No real-time mode, analysis is post-recording. Doubles support has a known caveat: the player-detection model occasionally swaps net partners on long crosscourt rallies. We document this on `/accuracy`. No pickleball. **Skip if:** you specifically want live line calling during your match, or you only play pickleball. ## 3. OnForm **Best for:** the coach-led slow-motion review workflow that golf instructors have used forever. OnForm is not, strictly, a tennis-AI app. It's a generic sport video review tool, slow-motion, side-by-side, voice-over. Coaches love it because it's purpose-built for "let me show you frame 47 vs frame 51 of your forehand." **Where it shines.** Best-in-class slow-motion playback. Easy clip sharing. Cross-platform. Coaches can record voice annotations on top of the player's video. **Where it loses people.** No automatic shot detection. No court keypoints. No stats. You, or your coach, have to do all the analytical work manually. It's a tool, not an analyst. **Skip if:** you want the app to tell you anything; you only want a video player and your coach is doing the work. ## 4. TennisAI.net **Best for:** quick web uploads when you don't want to install another app. TennisAI.net is a web product. Drop in an MP4, get a basic shot breakdown back. The bar to entry is the lowest of any option on this list. **Where it shines.** Zero install. Works on any device that has a browser. Useful for one-off "what's going on with my serve" questions. **Where it loses people.** Limited feature set compared to native apps. No push notifications, no library, no progress tracking. The analysis depth is shallow versus SwingVision/UNFORCE. **Skip if:** you want a longitudinal record of your improvement. ## 5. TopCourt **Best for:** pro-led instruction. *Not* analysis. TopCourt is on this list because the SERP confuses people. It's a video-instruction app where well-known tour players teach you the strokes. It does not analyze your video. It teaches you what good technique looks like, and you have to do the comparison in your head. **Where it shines.** Production quality is excellent. Drill libraries are deep. The pros are pros. **Where it loses people.** It's not an analysis tool. If you came here looking for "what does my own game look like in numbers," TopCourt won't tell you. **Skip if:** you wanted analytics. Use TopCourt *with* UNFORCE or SwingVision, record yourself, then watch the lesson, then record again. ## How to actually choose Three questions, in order: 1. **What phone are you on?** If it's Android, your real shortlist is UNFORCE, OnForm, TennisAI.net. If it's iOS, all five are candidates. 2. **Do you want live in-match feedback or post-match review?** If live, SwingVision (with watch). If post, anything else. 3. **Do you want the app to do the analysis, or just hold the video?** If analysis, SwingVision/UNFORCE. If video only, OnForm. Most players I talk to think they want #2 = live, but when you ask them what they actually do with the data, it's always *after* the match. SwingVision's live mode is genuinely cool; it's also overkill for 80% of NTRP 3.0-4.5 use cases. ## What the SERPs and forums actually say The Reddit consensus on r/10s shifts every few months but the underlying split is consistent: SwingVision dominates iOS chatter, "Android alternative" threads keep appearing on a quarterly cycle ([example forum thread](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/)), and accuracy threads ([example](https://www.reddit.com/r/10s/comments/xc2xc0/)) are about *every* product, not just one. Treat the loudest voice as a data point, not a verdict. ## Where UNFORCE fits If you're on Android and want a tool that takes itself seriously about accuracy, UNFORCE is the obvious choice. If you're on iOS without a watch, UNFORCE is the simpler buy. If you want to see the methodology behind a 90-percent claim before you trust it, only one product on this list publishes it. If you're on iOS *with* a watch and you want the live line-call workflow, use SwingVision. I'm not going to pretend UNFORCE replicates that experience, it doesn't. ## FAQ **What is the best app to analyze tennis in 2026?** There isn't one. SwingVision is best on iOS-with-watch. UNFORCE is best for cross-platform and published accuracy. OnForm is best for coach review. Choose by workflow, not popularity. **Is there a free app that analyzes my tennis?** UNFORCE free tier (3 analyses/month, full report). SwingVision free tier (watermarked, limited). TennisKeeper has a free Apple-Watch-only tier with no video AI. **Does UNFORCE work on Android?** Yes. Same pipeline as iOS, same accuracy methodology, same per-shot report. **Which apps support clay courts?** UNFORCE reports stable clay performance. Scattered SwingVision user reviews mention clay issues; we can't verify individual setups. **Do I need an Apple Watch?** Only for SwingVision's live line calling. For everything else on this list, no. --- **Try UNFORCE free**, three full per-shot reports per month, no card. [Start free](/) · [How UNFORCE works](/how-it-works) · [UNFORCE vs SwingVision](/compare/swingvision) · [Apple Watch tennis apps explained](/blog/apple-watch-tennis-apps) --- ### The 'best free tennis stat tracker' question, answered for 2026 URL: https://unforce.io/blog/best-free-tennis-stat-tracker Markdown twin: https://unforce.io/blog/best-free-tennis-stat-tracker.md # The "best free tennis stat tracker" question, answered for 2026 Search "best free tennis stat tracker" and you'll find three kinds of answers: marketing pages from apps that aren't actually free, Reddit threads from 2019 recommending tools that have shut down, and forum posts asking the same question every six months. The honest answer in 2026 is more boring and more useful: there are about four genuinely free options, each is good at one specific thing, and the word *free* hides different fine print in each one. I run UNFORCE, so this includes us, but it also includes our competitors and the free Apple Watch options. I'll tell you what each one *actually* gives you for zero dollars. ## TL;DR | App | Free tier covers | Hardware | What's *not* free | |---|---|---|---| | **TennisKeeper** | Match score, shot counts, swing speed | Apple Watch | Video AI, multi-match library limits | | **Swing Pro** | Basic Apple Watch shot counts | Apple Watch | Pro analytics, history depth | | **UNFORCE free tier** | 3 full per-shot AI reports per month | Phone only | Unlimited analyses, multi-coach seats | | **SwingVision free tier** | Limited match recording, watermarked | iPhone (+ optional watch) | The actual analytics, line calling, clean export | | **Apple Workout app** | Calorie + duration tracking | Apple Watch | Anything tennis-specific | If you take one thing from this post: *free Apple Watch tennis apps* and *free tennis video AI* are different markets. A tracker that counts shots on your wrist is a much smaller engineering problem than a model that analyzes your forehand technique from video. Don't expect the same product. ## What the forums actually ask The most-cited free-tier discussions on tennis forums share a pattern. From the Talk Tennis thread "Any Free Video Analysis Apps?" ([source](https://tt.tennis-warehouse.com/index.php?threads/any-free-video-analysis-apps.773458/)), the question is almost always: *"Coach's Eye shut down, what replaced it?"* The honest answer that thread converges on: there is no perfect free replacement, because manual slow-motion video review apps are easy to build and easy to shut down, and AI analysis is expensive to run. The Quora thread "Are there any good free Apple Watch apps for tennis players?" ([source](https://www.quora.com/Are-there-any-good-free-Apple-Watch-apps-for-tennis-players-To-track-things-like-shot-and-serve-speed)) has a similar shape: people want serve-speed tracking and shot counts on their watch, and the answers point at TennisKeeper, Swing, and a few smaller options, most with a free tier and a paid upgrade path. Both threads converge on the same uncomfortable truth: the word *free* in this category is doing a lot of work. ## 1. TennisKeeper (Apple Watch): the genuine free Apple Watch option **What's free:** match score tracking, shot counts (forehand/backhand/serve), swing speed estimates, calories, basic match history (per their App Store listing, as of this writing). **What's paid:** longer history, advanced analytics, Apple Watch + iPhone sync depth. TennisKeeper has been on the Apple Watch since the early days. It's the app most rec players land on after they realize their Apple Workout summary says nothing tennis-specific. The free tier is genuinely useful for a player who wants to know "did I hit 200 forehands today, and how many were over 60 mph?" What it doesn't do: any video analysis. There is no court keypoint detection, no shot type breakdown beyond watch-IMU heuristics, no PDF report. It's a wrist-based stat counter, and within that scope it's the best free option. **Best for:** Apple Watch owners who want basic match stats without a subscription. ## 2. Swing Pro: the lighter Apple Watch option **What's free:** basic shot counts, simple swing-speed estimates (per their App Store listing, as of this writing). **What's paid:** Pro history and analytics. Swing Pro is the lighter alternative to TennisKeeper. Cleaner UI, less feature-dense, more "show me a number after the match" than "let me build a longitudinal record." If TennisKeeper feels like overkill, this is the simpler choice. **Best for:** Apple Watch owners who want a single shot-count number after a session. ## 3. UNFORCE free tier: the genuine free *video AI* option **What's free:** 3 full per-shot AI analyses per month. No credit card. No watermarks. Full PDF report. Court heatmap. Stroke quality scores. iOS and Android. **What's paid:** unlimited analyses (Pro €19/mo), multi-coach team seats (Team €49/mo). I'll be honest about what 3-per-month means in practice: it's enough for one match a week, with one off-week. For most NTRP 3.0-4.5 club players, that's actually the right pace, you don't need to analyze every hit. If you do, the upgrade path is transparent. What you get for zero dollars on UNFORCE is the *exact same pipeline* the paid tier gets, same TrackNet ball detection, same court keypoints, same pose-based stroke quality scoring. We don't gate accuracy behind a paywall. The only thing the paid tier unlocks is volume and team features. **Best for:** anyone, iOS or Android, who wants to see what AI tennis analysis actually looks like for free, and who can live with one match per week. ## 4. SwingVision free tier: limited, watermarked, iOS-only **What's free:** limited match recording, basic shot detection, exports with a watermark. **What's paid:** the actually-useful analytics, clean exports, real-time line calling, full stat depth. SwingVision's free tier exists to get you to the upgrade prompt. That's not a criticism, it's the same playbook 90% of freemium apps run. But if you're searching specifically for "best free tennis stat tracker," SwingVision's free tier is functionally a 14-day demo, not a long-term tool. The [Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) makes this explicit when it walks through the tier-by-tier feature gating. **Best for:** iOS users who want a hands-on demo before deciding whether to subscribe. As of mid-2026 SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision. ## 5. Apple Watch Workout app: free, but not tennis **What's free:** calorie and duration tracking. That's it. **What's paid:** N/A. Apple's built-in Workout app has a Tennis activity type. It tracks heart rate and calories. It does not track shots, swing speed, or match score. People keep landing on this option because it's free and pre-installed; nobody actually uses it for tennis stats. **Best for:** people who only want to know how long they played and how many calories they burned. ## How to choose Two questions: 1. **Do you want video analysis or wrist-based stats?** If video, UNFORCE free tier is the only genuine free option in the AI category. If wrist-only, TennisKeeper free tier wins. 2. **Are you on Apple Watch?** If yes, your shortlist is TennisKeeper + Swing Pro. If no, UNFORCE is your only free option that does anything substantial. If the answer to *both* is "I want video AI on Android," there is precisely one free option in 2026. That's not a marketing statement, it's a state-of-the-market observation. Pop into the Talk Tennis "Any Free Video Analysis Apps?" thread and read it for yourself. ## Why "free forever, unlimited" doesn't exist in this category Every AI tennis analysis hits a GPU bill. A 60-minute match takes 3-5 minutes of GPU time to fully analyze (TrackNet ball detection, court keypoints, pose estimation, shot classification, report generation). That's a real cost, somewhere between 8 and 30 cents per match depending on the cloud provider. *Unlimited free* in this category means one of three things: - The product is a loss leader (you'll see the upgrade prompt soon). - The "AI" is a heuristic that runs on-device and isn't actually doing pose-aware shot classification. - The product is shutting down (this happened to Coach's Eye). That's why UNFORCE's free tier is *3 per month* rather than *unlimited*. The math has to work, or the product disappears. ## What I'd recommend by persona - **Apple Watch owner who wants match stats:** TennisKeeper free tier. - **iPhone player who wants a free demo of video AI:** UNFORCE free tier (we run on iPhone). Try SwingVision's free tier too if you specifically want their line-call demo. - **Android player who wants any AI analysis:** UNFORCE free tier, it's the only realistic option. - **Player without an Apple Watch and on a budget:** UNFORCE free tier; one match per week is the right cadence anyway. - **Coach who wants to share with players:** UNFORCE free tier as a demo, then Pro €19/mo when you outgrow it. ## A note on the "stat tracker" framing A stat tracker is a different product from a video analyzer. A tracker counts things, serves, faults, winners, errors. It doesn't tell you *why* your forehand is breaking down in the third set. For that you need video plus pose plus event detection plus a model that knows what a kinetic chain looks like. If "stat tracker" is genuinely all you need, match score, shot count, swing speed, TennisKeeper is your answer and you don't need this whole post. If you want the *why*, you've moved into the video-AI category, and free options narrow fast. ## FAQ **What is the best free tennis stat tracker?** TennisKeeper free tier (Apple Watch only). For free *video analysis*, UNFORCE free tier (3 per month, full report). **Is there a free Apple Watch tennis app?** TennisKeeper and Swing Pro both have free tiers. SwingVision requires a paid subscription for its watch features. **Is UNFORCE's free tier really free?** Yes, 3 full analyses per month, no credit card, no watermark, full report. The upgrade is for volume and team features, not for accuracy. **What about Coach's Eye?** Shut down by TechSmith. Players who used it for tennis slow-mo migrated to OnForm (paid) or UNFORCE (free tier covers what most rec players used Coach's Eye for). **Why isn't SwingVision genuinely free?** SwingVision's free tier is a demo. The features rec players actually want, clean export, full line calling, real-time stats, are gated behind paid tiers ([Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)). --- **Try UNFORCE free**, 3 full per-shot reports per month, no card, full report. [Start free](/) · [How UNFORCE works](/how-it-works) · [UNFORCE vs SwingVision](/compare/swingvision) · [Apple Watch tennis apps explained](/blog/apple-watch-tennis-apps) --- ### Best stroke analysis apps in 2026: stats vs technique URL: https://unforce.io/blog/best-stroke-analysis-apps-2026 Markdown twin: https://unforce.io/blog/best-stroke-analysis-apps-2026.md # Best stroke analysis apps in 2026: stats vs technique Short answer: there are four serious tools in 2026, UNFORCE, SwingVision, OnForm, and TennisAI.net, and they split into two categories that get conflated constantly. Stats apps tell you *what happened* (shot counts, where the ball went, who won which point). Technique apps tell you *why* (was your prep early, was the kinetic chain firing, was the contact clean). The best app for you depends on which question you actually need answered. This post separates the two and gives an honest 2026 buying recommendation. ## TL;DR: the 2026 landscape | Tool | Category | Platform | Price (2026) | Best for | |---|---|---|---|---| | UNFORCE | Both, match stats + AI stroke quality | iOS + Android | €19/mo Pro | NTRP 3.0-4.5 amateur self-coaching | | SwingVision | Both, match stats + Apple Watch line calling | iOS only | ~$15-$40/mo (mid-2026) | iOS players who want line calling | | OnForm | Technique, manual frame-by-frame annotation | iOS + Android + web | $19.99-$59.99/mo | Coaches who clip themselves | | TennisAI.net | Stats-leaning AI analysis | iOS + Android + web | €15/mo, €150/yr | EU players price-sensitive | | Hudl Technique | Technique, legacy | iOS + Android | Free / paid bundle | Don't buy in 2026 | | Coach's Eye | Technique, discontinued | - | - | Retired by TechSmith on September 30, 2022 | | TopCourt | Instructional content (not analysis) | iOS-first (verify current platform support) | $180/yr | Pair with an analysis app | ## The category distinction nobody talks about The Talk Tennis [Best Stroke Analysis App?](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/) thread and the [reputable online stroke analysis](https://tt.tennis-warehouse.com/index.php?threads/reputable-online-stroke-analysis.610095/) thread are good barometers of the question. The threads keep mixing two distinct things: 1. **Match analysis**, counts of winners, errors, aces, shot mix, court position heatmaps. Outcome-focused. 2. **Stroke analysis**, slow-mo playback, frame-by-frame mechanics, side-by-side comparison with a pro, kinetic-chain breakdown. Technique-focused. Most apps do mostly one. A buyer who needs the other ends up frustrated. The "best stroke analysis app" question is genuinely two questions, and the right answer depends on which one you're actually asking. The split isn't always clean. UNFORCE and SwingVision do both, with different emphases. OnForm does mostly technique (manual). TennisAI.net does mostly match stats (automatic). The buying decision is a function of (a) how much you want the AI to do for you, (b) what platform you're on, and (c) whether you have a coach in the loop. ## Tool-by-tool, with honest caveats ### 1. UNFORCE **Category:** both. **Platform:** iOS + Android. **Price:** Pro €19/mo, Free tier with limited reports. What it does: TrackNet ball detection, court keypoint detection, MediaPipe pose, CatBoost shot/bounce classification, automated stroke-quality scoring across the kinetic chain (legs, hips, shoulders, racquet), per-shot and per-match PDF reports. It runs entirely from a phone-recorded video, no extra hardware, no Apple Watch. **Best for:** NTRP 3.0-4.5 amateur self-coaching, club players running the [once-a-week diagnostic loop](/blog/unforce-for-club-players), junior coaches running [async homework loops](/blog/unforce-for-junior-coaches). **Honest weaknesses:** newer than SwingVision so the iOS power-user community is smaller. No Apple Watch integration. Doubles support is partial, singles is the supported path. Clay courts come in 3-5 F1 points lower on shot detection than hard courts (covered in [filming on clay](/blog/tennis-ai-clay-courts)). **Where UNFORCE wins specifically:** cross-platform (iOS + Android, day one), transparent pricing in EUR, automated stroke-quality scoring out of the box, EU data storage (Firebase europe-west1; GPU analysis currently runs in the US). ### 2. SwingVision **Category:** both. **Platform:** iOS only. **Price:** as of mid-2026 SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision. What it does: automated shot detection, shot mix, ball tracking, court heatmap, line calling on Apple Watch, score-tracking, pace-of-serve, very polished iOS UX. Has been the dominant iOS tool since 2019. **Best for:** iOS players, especially anyone who wants Apple Watch line calling on their own court. The line-calling feature genuinely doesn't have a meaningful competitor. **Honest weaknesses:** iOS only, there's a [Google PAA](https://www.google.com/search?q=swingvision+android) literally asking *"What is similar to SwingVision for Android?"* because the Android demand is unmet. Pricing tiers create paywalls around features that arguably should be in the base, and [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) include an individual clay-court complaint, one reviewer writes *"on clay it doesn't understand where the lines of the court are"* (we can't verify their setup or version). Setup confusion is a real onboarding issue, see the [r/10s "First time using SwingVision"](https://www.reddit.com/r/10s/comments/17e2i1x/) and [r/10s "Tips when using SwingVision"](https://www.reddit.com/r/10s/comments/1d0gm94/) threads. **Where SwingVision wins specifically:** Apple Watch integration, app maturity, large iOS community, line-calling polish. [The full UNFORCE vs SwingVision comparison](/compare/swingvision) goes deeper if you're choosing between the two. ### 3. OnForm **Category:** mostly technique (manual). **Platform:** iOS + Android + web. **Price:** $19.99-$59.99/mo for coach plans. What it does: video upload, frame-by-frame slow-mo, drawing and annotation tools, side-by-side comparison, voiceover. Marketed primarily to coaches, the "send a player a video with arrows on it" workflow. **Best for:** coaches and self-coaching players who want to do their own analysis. If you have a coach who already uses OnForm to send you clipped feedback, that's the use case. **Honest weaknesses:** no automatic shot detection, no AI stroke-quality scoring, no court heatmap. You watch the video, you find the moments, you annotate them. It's a clipping tool, not an analysis tool. For amateur self-coaching with limited time, the manual workflow gets abandoned by week three. **Where OnForm wins specifically:** the coach-to-player annotated-clip workflow, multi-sport (it's used outside tennis), web playback for shared viewing. ### 4. TennisAI.net **Category:** stats-leaning automated analysis. **Platform:** iOS + Android + web. **Price:** €15/mo, €150/yr. What it does: automatic shot detection, shot mix, ball tracking, court heatmap, pricing in EUR. Direct EU competitor to UNFORCE, lower SEO presence, similar feature set. **Best for:** EU price-sensitive players who want match-stat AI without the SwingVision premium. **Honest weaknesses:** smaller community, less methodology transparency, no published accuracy benchmark we've found. Stroke-quality analysis is shallower than UNFORCE's pose-based scoring. **Where TennisAI.net wins specifically:** annual pricing under €150, direct EU billing, no Apple ecosystem dependency. ### 5. Hudl Technique (legacy) **Category:** technique. **Platform:** mobile. **Price:** historically free with paid Hudl bundle. What it does, or did: video capture, slow-mo, side-by-side comparison. Was the de facto free analysis tool for years. Hudl as a company has pivoted to school and pro team workflows; the consumer Technique app exists but isn't actively developed. **Best for:** nothing in 2026 specifically. If you already have it and the workflow works for you, fine. Don't make a new buying decision on it. ### 6. Coach's Eye (discontinued) **Category:** technique. **Platform:** mobile (retired). **Price:** N/A. TechSmith retired Coach's Eye on September 30, 2022. It was the OG video-analysis app for amateur coaches across many sports, the gold standard manual frame-by-frame tool from 2010 to 2018. Replacement question gets asked a lot. The practical 2026 replacements: OnForm (manual workflow) or UNFORCE/SwingVision (automated workflow). ### 7. TopCourt (different category) **Category:** instructional video content, not analysis. **Platform:** iOS-first (verify current platform support). **Price:** $180/yr per [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review). What it does: streaming pro tennis lessons. Well-known tour players teaching technique modules. It's not analysis of *your* tennis, it's instruction. **Best for:** pairing with an analysis app. UNFORCE tells you *what* to fix; TopCourt shows you a Grand Slam champion explaining how to fix it. They're complementary, not competitive. ## Stats vs technique: which do you actually need? This is the buying-decision question. Be honest with yourself. **You need a stats-led tool** if: - You can't tell what's leaking points in your matches. - You want to know your shot mix, your error patterns, your court position. - You're trying to break down opponent patterns. - You're a club player or junior trying to plan practice based on match data. **You need a technique-led tool** if: - You know what's wrong tactically, you just can't fix the stroke that produces the error. - You want frame-by-frame slow-mo of your own swing. - You're working with a coach who wants annotated video. - You're rebuilding a specific stroke from scratch. **You need both** if you're an amateur self-coaching player, no coach, no clear baseline. Most NTRP 3.0-4.5 players are in this bucket. The right tool here is one that does both well, UNFORCE or SwingVision. ## The platform question If you're on Android, your shortlist drops to: UNFORCE, OnForm, TennisAI.net. SwingVision is iOS-only and Hudl/Coach's Eye are functionally retired. The Android player is genuinely under-served, there's a Reddit thread literally titled [*"Genuinely thinking of getting a iPhone just for swing[vision]"*](https://www.reddit.com/r/10s/comments/151g2cy/), but the situation is materially better in 2026 than it was in 2023. If you're on iOS, your shortlist is the full list. SwingVision has the Apple Watch advantage; UNFORCE has the cross-platform and transparent-pricing advantages. Either is a reasonable starting point. ## The coach question If you have a coach already, ask them what they use. If they're already on OnForm and sending you annotated clips, UNFORCE complements them, your coach gets the clips, you get the AI report, your hour together gets denser. If you don't have a coach, an automated stroke-quality tool (UNFORCE or SwingVision) carries more of the load. OnForm without a coach to send you clips is mostly self-clipping, which most amateur players abandon. ## A note on the discontinued tools Coach's Eye and (effectively) Hudl Technique going dark created a hole in the consumer market, and that hole is half the reason UNFORCE exists in the form it does. The 2010-2018 model was "manual tool plus a coach." The 2026 model is "automated tool plus an optional coach." The technology to do automated per-shot stroke quality genuinely didn't exist before TrackNet, MediaPipe, and modern pose models matured. If you tried Coach's Eye in 2017 and bounced off because it was too manual, the right answer in 2026 isn't another manual tool, it's an automated one. That's what the category shifted to. ## The honest 2026 recommendation For a typical NTRP 3.0-4.5 amateur self-coaching player: - **iOS, no coach:** UNFORCE Pro or SwingVision Pro. Both work. Try UNFORCE first if you care about pricing transparency or EU data storage; try SwingVision first if you have an Apple Watch and want line calling. - **Android, no coach:** UNFORCE or TennisAI.net. UNFORCE if you want stroke-quality scoring; TennisAI if you want the lowest-cost EU annual. - **iOS or Android, with a coach who uses OnForm:** UNFORCE plus OnForm. Your coach annotates from OnForm, you generate the UNFORCE report. Belt and braces. - **iOS or Android, replacing Coach's Eye:** UNFORCE for the automated path, OnForm for the manual one. Both work; the question is whether you want to do the clipping or have it done for you. For coaches running junior rosters, the [junior coaches workflow](/use-cases/junior-coaches) covers the integration pattern in detail. ## What's coming in 2026 A few category-level shifts worth tracking: - **Paddle-sport AI cross-pollination.** PB Vision is the dominant paddle-sport AI tool; the same model architectures are being adapted for tennis. Expect new entrants in 2026. - **Apple Watch on Android.** Wear OS competition to Apple Watch is real but slow. Don't bet on Android line-calling parity in 2026. - **EU pricing differentiation.** UNFORCE and TennisAI.net are both EUR-priced; expect more EU-first competitors in late 2026. - **The accuracy benchmark race.** None of the major tools currently publish per-surface, per-shot-type accuracy numbers. Expect this to change in 2026 as the category matures and skeptical buyers demand transparency. ## The takeaway If you walked into this post not sure whether to buy a stats tool or a technique tool, the answer is: most amateur players need both, and the integrated AI tools (UNFORCE, SwingVision) are the right starting point. Pick the one that runs on your phone. Try the free tier. Generate three reports. Compare. Start with the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) if you go UNFORCE. Read [the SwingVision side-by-side](/compare/swingvision) if you're choosing between the two. The cost question is in [the cost-of-coaching post](/blog/tennis-coaching-cost-vs-app). The category isn't where it should be yet. But it's better in 2026 than it has ever been, and a serious amateur self-coaching player has more useful tools than at any point in the history of the sport. --- ### Best tennis video analysis app for Android in 2026 URL: https://unforce.io/blog/best-tennis-video-analysis-app-android-2026 Markdown twin: https://unforce.io/blog/best-tennis-video-analysis-app-android-2026.md # The best tennis video analysis app for Android in 2026 The honest answer: as of April 2026, only a handful of tennis video analysis apps actually work on Android, and SwingVision still isn't one of them ([SwingVision Android update](https://swing.vision/newsletters/android-update)). The working list, apps you can install on a Pixel, Samsung Galaxy, or OnePlus and get a real per-shot breakdown out of, is short. This post ranks them on accuracy, price, court compatibility, and what each is genuinely best for. I run UNFORCE, so I have a horse in this race; I've tried to keep the comparisons honest, with sources for every claim. ## Bottom line up front - **Best overall on Android:** UNFORCE, full pipeline (ball, court, pose, classifier), PDF report, free tier. - **Best for European pricing:** TennisAI.net (€15/mo, €150/yr). - **Best generic video tool with coach annotation:** OnForm. - **Don't bother sideloading SwingVision.** No official Android build exists. ## How I evaluated these apps Four axes, the same four most amateur players actually care about: 1. **Accuracy.** Does it correctly detect shots, ball position, and bounces? Bonus points if the company *publishes* its accuracy numbers. 2. **Price clarity.** No hidden tier surprises (the recurring SwingVision top-tier pricing complaint in player discussions). 3. **Court compatibility.** Hard, clay, indoor, does it work on the courts you actually play on? 4. **Workflow fit.** Solo recording on a fence-mounted phone, or do I need extra gear? Apple Watch features and paddle-sport depth are excluded, both are SwingVision's home turf and irrelevant for an Android comparison. ## Summary table | App | Android | Price | Shot detection | Court heatmap | Free tier | Best for | |---|---|---|---|---|---|---| | **UNFORCE** | Yes | Free / Pro (EU-friendly) | Yes (CatBoost + pose) | Yes | Yes | Most amateur players | | TennisAI.net | Yes | €15/mo, €150/yr | Yes | Limited | Limited | EU price-sensitive | | OnForm | Yes | $9.99-$59.99/mo ([OnForm](https://onform.com/pricing/)) | Manual / generic | No | Limited | Coach-led video review | | SwingVision | **No (iOS-only)** | ~$15-$40/mo (mid-2026) | - | - | - | iPhone owners only | ## 1. UNFORCE: best overall for Android I'll cover this one first and shortest, since I built it. **What it is.** A phone-recorded video goes in. A post-match report comes out: shot type (forehand, backhand, serve, volley), ball trajectory, bounce locations, court heatmap, stroke quality scoring, and report insights. The pipeline is TrackNet ball detection → court keypoint detection → FasterRCNN player detection → MediaPipe pose → CatBoost bounce/shot classification → stroke-quality scoring → PDF. **Why it's first on this list.** Three reasons. 1. **Built mobile-first for both iOS and Android.** Not a port. Not a "we'll get there" promise. 2. **Published accuracy methodology.** Per-shot F1 scores, ball-speed error vs radar, and a regression suite we run on every release. Nobody else on this list publishes this. 3. **Free tier that's actually usable.** Capped session length, but full pipeline output. Enough to decide whether to upgrade. **Where it falls short.** No real-time on-court overlays. No Apple Watch line calling (we don't ship an Apple Watch app at all). The UI is younger than SwingVision's, fewer iPad-style review chrome flourishes. **Best for.** Android amateur players, NTRP 3.0-4.5, who want a per-shot diagnostic loop without buying iOS. ## 2. TennisAI.net: best EU pricing **What it is.** EU-based tennis AI subscription, €15/mo or €150/yr. Closest direct competitor to UNFORCE on pricing structure. **Strengths.** Transparent EUR pricing, EU GDPR posture, working Android app. Solid for the European amateur who doesn't want USD billing. **Weaknesses.** Smaller feature surface than the top of the list. Stroke-quality output is shallower than UNFORCE's pose-feature breakdown. No published accuracy methodology. **Best for.** EU amateurs whose primary axis is "transparent EUR pricing." ## 3. OnForm: best generic coach-led video tool **What it is.** Multi-sport video annotation platform. Not tennis-specific AI, coaches manually annotate, draw on, and comment on video. Pricing (per [OnForm](https://onform.com/pricing/)): Coach plans $19.99-$59.99/mo, Athlete plans $9.99-$14.99/mo. **Strengths.** Mature platform. Used by real coaches across multiple sports. Strong commenting and side-by-side review tools. Works on Android. **Weaknesses.** **No tennis-specific AI.** No automatic shot detection, no ball tracking, no stroke classification. You or your coach do the analysis manually. We've written more on this in [UNFORCE vs OnForm](/blog/unforce-vs-onform). **Best for.** Players who already work with a coach who annotates video, and want a shared workspace rather than an AI report. ## 4. SwingVision: iOS-only (skip on Android) I want to be explicit because it keeps coming up: **SwingVision does not run on Android.** Their [own newsletter](https://swing.vision/newsletters/android-update) acknowledges the team is exploring Android but has not announced a build. The Talk Tennis thread asking *"Will SwingVision still work with an Android"* ([forum link](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/)) has had the same answer for years: no. There is no official APK. Any APK file labeled "SwingVision Android" is unofficial and unaffiliated with the company; installing sideloaded APKs carries risk. If you'd genuinely consider buying an iPhone just for SwingVision (a [real Reddit thread](https://www.reddit.com/r/10s/comments/151g2cy/) made this exact case), [the SwingVision alternative without an Apple Watch](/blog/swingvision-alternative-without-apple-watch). ## How to record on Android (the part most people get wrong) Even the best Android tennis AI app fails if your video is bad. Three rules: 1. **Camera height: chest level.** Not on the ground, not above your head. Court keypoint detection lives or dies on this. 2. **Position: behind the baseline, centred.** Not side-of-court (you'll get parallax). A fence clip works fine on most public courts. 3. **Resolution: 1080p at 30fps minimum.** 4K helps but costs storage. 720p is the floor. Full setup walkthrough: [how to film a tennis match](/how-to/film-your-tennis-match). ## Example scenario: weekend club player on a Pixel 8 Sara plays at her club on Saturday mornings. She has a Pixel 8 and a $25 phone-fence clip from Amazon. She doesn't own an iPhone, an Apple Watch, or a tripod. - 60-minute match recorded at 1080p. - Upload over the club wifi: ~5 minutes. - UNFORCE report ready in under 5 minutes after upload. - 184 shots tagged, court heatmap shows her forehand is landing 60cm shorter cross-court than she thinks. - She forwards the PDF to her coach for Tuesday's lesson. Total cost: free tier. Total extra hardware: $25 fence clip. Total iOS devices: zero. ## When each app is the right choice I want to be fair, UNFORCE is not always the answer. - **OnForm wins** when your coach already runs an OnForm workspace and you want shared annotations rather than automated analysis. - **TennisAI.net wins** when EUR billing and EU data hosting are non-negotiable and you're price-comparing in euros. - **UNFORCE wins** when you want the deepest analysis pipeline, published accuracy, and a free tier you can actually use. ## FAQ **What is the best tennis video analysis app for Android in 2026?** UNFORCE is the most accuracy-transparent option we know of; we publish our numbers at /accuracy. Others (TennisAI.net, OnForm) cover narrower slices. **Does SwingVision work on Android?** No. SwingVision is iOS-only. The team has acknowledged Android interest but not committed to a release. **Is there a free tennis video analysis app for Android?** UNFORCE has a free tier with the full pipeline, 3 match analyses per month. OnForm has an Athlete plan starting at $9.99/mo but isn't tennis-specific. **What is the most accurate Android tennis app for shot detection?** UNFORCE publishes per-shot F1 scores and methodology. No other Android tool publishes equivalent numbers, which is itself a signal. --- *Read next: [The SwingVision Android alternative, explained](/blog/swingvision-android-alternative) · [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [How UNFORCE actually works](/features/shot-detection).* --- ### The right camera angle and height for AI shot detection URL: https://unforce.io/blog/camera-angle-tennis-ai Markdown twin: https://unforce.io/blog/camera-angle-tennis-ai.md # The right camera angle and height for AI shot detection Most of the bad-report support tickets we get at UNFORCE aren't algorithm problems, they're camera-placement problems. Players film from the wrong height, wrong distance, or wrong angle, and every downstream metric in the pipeline degrades. This post is the exact placement spec that produces a good report, and the exact failure modes if you violate it. If you've already read our [$30 phone setup post](/blog/30-dollar-tennis-recording-setup), this is the deeper-dive on the placement variables. They're the part that actually matters. ## TL;DR: the spec - **Position:** behind the baseline, **centred** on the court's centreline. - **Distance:** 8 to 12 feet (2.5-3.7 m) behind the baseline. - **Height:** net-tape level to a foot above, about **3 to 4 feet** (1m to 1.2m). - **Tilt:** roughly 5-10 degrees down, so the back baseline of the opposite court is in frame. - **Frame rate:** 30 fps minimum, 60 fps strongly preferred. - **Resolution:** 1080p minimum. - **Stability:** fixed mount (fence clip or tripod), no panning, no auto-tracking. That's the whole spec. The rest of this post explains *why* each item matters and what breaks if you get it wrong. ## The four variables that matter Camera placement reduces to four variables: **position (left/right)**, **distance (front/back)**, **height (up/down)**, and **tilt**. Frame rate and resolution are camera-settings, not placement variables; we cover them in the [$30 setup post](/blog/30-dollar-tennis-recording-setup). ### 1. Position: centred is the only correct answer The court keypoint detector needs to see all four corners of the court (and ideally the service-line corners and centre service mark). With the camera centred behind the baseline, the four corners form a rough trapezoid in pixel space, wider at the bottom of the frame (near baseline), narrower at the top (far baseline). The homography that maps pixels to court coordinates is well-conditioned in this configuration. Move the camera off centre, and the trapezoid skews. If you're 6 feet to the left of the centreline, the right-near corner moves left in the frame, the right-far corner moves further still, and the homography becomes harder to solve. The system can still solve it, but residual error grows. Move the camera all the way to the singles sideline (filming side-on), and the four court corners collapse to a near-line in pixel space. The homography is *degenerate*, there's no unique solution. You'll get a report, but every coordinate-dependent metric (heatmap, line calls, speed) is unreliable. **Practical rule:** the camera should be within ±3 feet of the centreline. Closer to centre is always better. Side-on is unusable. ### 2. Distance: 8 to 12 feet behind Two competing pressures here: **Too close** (camera right at the baseline or just behind it): the near baseline takes up most of the frame, and the far baseline is squeezed into the top 10% of the image. Court keypoints at the far end become inaccurate because they have very few pixels to work with. **Too far** (camera 25+ feet behind the baseline, e.g. clipped to the wrong fence at a club with a deep run-back area): the court fits in the frame fine, but everything is small. The ball, especially at fast pace, becomes tiny in pixels. TrackNet's accuracy on small balls degrades. The 8-to-12-feet zone is the sweet spot for a typical phone wide-angle lens. It puts the full court in frame with both baselines getting roughly equal pixel real-estate, and the ball stays large enough to track. **If your only fence is too far back:** phone position higher up on the further fence is OK, but consider whether a tripod 8-12 feet back would be possible instead. ### 3. Height: net-tape to a foot above This is the variable players get wrong most often. The temptation is to mount higher, "more of the court visible from above." Don't. **Too low** (ground-level, knee-height): the back baseline is barely visible in the frame because the court geometry compresses near the horizon. Court keypoint detection at the far end becomes unreliable. Ball trajectories near the back of the court are very flat in pixel space, hurting the depth-inference for speed estimates. **Net-tape height (about 3.5 feet)** is the magic number because the camera is at the same height as the highest part of the playing area. The homography is well-conditioned. Court keypoints at both ends have similar pixel real-estate. Ball depth inference works. **Too high** (above 5 feet): the perspective starts compressing in the other direction. The court starts looking flatter (more top-down), which is great for visualising the court but makes depth inference *harder*, not easier, counter-intuitively, top-down footage gives less depth information from a single camera than slightly-elevated footage does. Also, very high phone mounting (e.g. clipped to the top of a 12-foot fence) puts the phone in the wind, which adds shake. **Practical rule:** if your fence has multiple usable heights, pick the one closest to 3.5 feet. If it only has one usable height, anywhere from 3 to 5 feet is fine; 5 to 8 feet is workable; over 8 feet is bad. ### 4. Tilt: slight downward Once you've nailed position, distance, and height, the tilt is straightforward: angle the phone slightly down so the back of the opposite court is in frame *with a few feet of margin above it*. About 5-10 degrees of downward tilt for the standard distance/height combo. **What you don't want:** - **Phone level or pointing up.** You'll see too much sky and miss the back baseline. - **Phone pointing straight down at the near baseline.** The far half of the court won't be in frame. The tilt adjustment on a typical fence-mount clip is a knob you can turn. Set it once at the start of the season, leave it. ## What each placement error actually breaks Symptom-cause mapping for the most common bad-placement issues: | Placement error | What breaks | |---|---| | Off-centre by more than 3 feet | Court homography skew → heatmap distortion, ball-speed bias | | Side-on (singles sideline) | Court detection degenerate → no usable report | | Too low (under 3 feet) | Far baseline compressed → far-court keypoint errors → bad far-end heatmap | | Too high (over 6 feet) | Top-down perspective → worse depth inference → noisier speed estimates | | Too close (under 5 feet behind baseline) | Far baseline takes 5% of frame → court keypoint errors at far end | | Too far (over 25 feet) | Ball is small in pixels → TrackNet detection drops, fast shots get missed | | Auto-tracking enabled | Panning camera → court keypoints re-estimated every frame → drift | | Hand-held | Drift introduced manually → same problem | | Through privacy mesh / weave | Ball detector loses contrast → intermittent ball trajectory | ## Edge cases ### Doubles courts being used for singles If the singles sticks are in place, the court detector can find them and use them. If the singles sticks are missing, the detector defaults to the doubles court, and your singles match's heatmap will use the doubles boundaries (sub-optimal but workable). ### Indoor courts with low ceilings Indoor courts with low ceilings sometimes don't have the run-back area for the standard 8-to-12-feet-behind-the-baseline setup. In that case, the camera right at the baseline is acceptable as long as it's centred and at the right height. The far-court keypoint accuracy will be slightly degraded; everything else works. ### Public-park courts with no fence at the back Tripod, behind the baseline, at the right height. The setup-time penalty is 60 seconds vs the fence clip's 30. The result is identical. ### Bubble / dome courts Same spec works, the bubble's interior chain-link or net structure usually accepts a fence clip, and if not, a tripod. The lighting in bubble courts can be a separate problem (see [/blog/how-accurate-is-unforce](/blog/how-accurate-is-unforce#failure-modes)), but the placement is identical. ## How to verify your setup is correct Easy on-court check before you record the match: 1. Mount the phone, hit record briefly (10 seconds). 2. Walk into the court, stand at the centre service line, look back at the camera. 3. The phone should be centred from your view; you should see roughly equal court behind you (singles to deuce side) and in front of you (singles to ad side) when looking at the recording. 4. Stop recording, play back the 10 seconds. Both baselines should be visible. The court should look roughly trapezoidal, not heavily skewed left or right. That's it. If both baselines are in frame and the court isn't skewed, your placement is good. ## What good placement looks like in the report When the placement is right, the UNFORCE report opens with a small confidence indicator on each metric, green for "high confidence based on filming setup," yellow for "moderate," red for "low confidence, consider re-filming." A correctly-set-up filming session will show all-green or near-all-green. A placement-violated session will show yellow or red flags on the affected metrics, with a "consider re-shooting" note. We chose to show this rather than hide it because a number with a confidence indicator is more useful than a number presented as gospel. If your last few reports have been yellow on every metric, the answer isn't that the algorithm is broken, it's that the camera placement needs work. --- **Related:** [A $30 phone setup for filming your tennis matches](/blog/30-dollar-tennis-recording-setup) is the gear-list companion to this placement guide. [How to record your serve for analysis](/blog/how-to-record-tennis-serve) adapts the same placement logic for solo serve work. And the full visual guide is at [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match). --- ### Can an AI tennis app actually replace your coach? URL: https://unforce.io/blog/can-ai-replace-tennis-coach Markdown twin: https://unforce.io/blog/can-ai-replace-tennis-coach.md # Can an AI tennis app actually replace your coach? This is a Google PAA on the [tennis ai app SERP](https://www.google.com/search?q=tennis+ai+app). It's also the question the founder of an AI tennis app is most often asked at the wrong cocktail party. The honest answer is more nuanced than the headline. I'm Akshay, founder of UNFORCE. We make an AI tennis app. So here's the answer from the person who has every commercial incentive to say *yes, AI replaces your coach, sign up today*, and is going to tell you the truthful version instead. ## TL;DR **No.** AI does not replace your coach. It replaces a *subset* of what your coach does, specifically the slow, repetitive, per-shot analysis work, and frees the coach's time for the things only they can do. The right framing is **AI + coach**, not **AI vs coach**, with the AI tool taking the per-match analytical work that's a bad use of an expensive human, and the coach taking the live correction, intent work, and accountability that an algorithm fundamentally can't. ## What an AI tennis app actually does Let's be precise. A modern AI tennis app, UNFORCE, SwingVision, the others, does the following from a phone-recorded match video: - **Counts and classifies every shot.** Forehand, backhand, serve, volley. Per-shot. - **Maps where every shot bounced.** A heatmap by shot type. - **Estimates speed and spin** (with the caveats from our [serve speed post](/blog/serve-speed-reading-explained)). - **Scores stroke quality** by comparing pose at contact to a reference distribution. - **Surfaces patterns**, your forehand cross-court bounces six feet inside the baseline; your second serve goes wide on the ad side 70% of the time; your backhand return floats. - **Generates a PDF report** that summarises the above. That's it. None of those things require a human. All of those things, before AI tools existed, *did* require a human, usually a coach with a notebook, or a player rewatching their own video and trying to count. ## What an AI tennis app does *not* do The list of things AI doesn't do is longer than the list of things it does, and it's the more important list: ### 1. Live, on-court correction A coach watches you hit a forehand, walks to the other side of the net, feeds you the same shot, and corrects in real time. "Your hips are closing too early. Try this, feel the difference." Iterative, tactile, immediate. **No AI app can do this.** It can tell you afterward that your hips were closing early; it cannot stand on the court and feed you the next ball. ### 2. The intent-and-mindset work A coach knows when you're hitting a tentative second serve because you're scared of double-faulting in the third set. An AI sees a slow second serve and reports a slow second serve. The intent, the *why*, is invisible to a video model. Coaches read body language, read your tournament history, know what happened in your last match. AI doesn't. An AI report telling you "second serves are slow" without the context of "because you're afraid" is the same number with none of the meaning. ### 3. Racket-feeding drills The most underrated coaching tool: a basket of balls and a human who can vary feed location, pace, and spin to specifically target the shot you're working on. An AI app can analyse a match. It cannot feed you 200 backhands cross-court at increasing pace. The ball machine helps for some of this; a human is still better. ### 4. Tactical intent Coaches teach point construction. "On a 4-1 lead at 30-30, this is the shot you take, and this is why." An AI report can show you where points were lost, but it can't teach you the decision-making that wins the next one. Tactical intent requires a teacher, not a logger. ### 5. Social accountability You show up to your Tuesday lesson because the coach is waiting. You don't always upload your match video to the AI app. The behavioural difference between "a person is expecting you" and "an app is available" is real. For most amateurs, *recurring lesson + AI tool* outperforms either alone, mostly because of accountability. ## Where the AI tool actually wins Now the symmetric list, the things an AI app does that a coach can't (at the same cost or speed): ### 1. Per-shot logging at scale A coach can take notes on three or four key patterns in your match. They cannot, in real time, log every one of 142 forehands and 67 backhands and tell you the cross-court vs down-the-line ratio per game. The AI app does. This is the single biggest analytical lever AI gives an amateur. ### 2. Continuity across weeks Most amateurs don't see the same coach every session, or they see them at unpredictable cadence. The AI tool is the continuous memory, *you hit your forehand 2 mph faster this week, your backhand cross-court ratio improved from 41% to 53%, your second-serve fault rate dropped from 18% to 11%*. A coach trying to remember those numbers across six weeks of intermittent lessons can't compete. ### 3. Cost structure A private lesson in most European cities is €40-€80. An AI app subscription is roughly €10-€20/month (UNFORCE Pro is €19). If your highest-leverage thing is *more analysis*, the AI tool is dramatically cheaper. If your highest-leverage thing is *more on-court correction*, the coach is dramatically cheaper than 50 AI app subscriptions trying to substitute. Pick the right tool for what's actually leaking your tennis. ### 4. The boring stuff Watching your own match video is the highest-leverage thing an amateur can do, *and* nobody actually does it. There's a [Quora question, "Will watching recordings of yourself playing tennis improve your skills?"](https://www.quora.com/Will-watching-recordings-of-yourself-playing-tennis-improve-your-skills), whose top answer is some version of "yes, but only if you actually watch them, which most people don't, because it's boring." The AI report extracts the highlights so you don't have to scrub through 90 minutes of footage. That alone earns its keep. ## The AI + coach loop that actually works Here's the workflow we see working for the UNFORCE users with the most rapid improvement: 1. **Record your match** using the UNFORCE pipeline. PDF report in the morning. 2. **Read the report**, pick the one biggest pattern (heatmap leak, shot-mix imbalance, stroke-quality drop on a specific shot type). 3. **Bring the report to your coach.** Show them the page. "I want to work on this." 4. **The coach feeds you drills targeting it.** Live correction, racket-fed reps, the human stuff. 5. **Next week, record another match.** See if the pattern shifted. This is the loop. Neither side does the other's job. The AI does the analysis; the coach does the correction. The player does the actual hitting. We're seeing this work for [club players](/use-cases/club-players) and [junior coaches](/use-cases/junior-coaches) at scale. The coaches aren't being replaced, they're being made more effective per hour, because the diagnostic step is offloaded. ## When AI alone is enough A few cases where a coach genuinely isn't necessary: - **You're an experienced 4.0+ who has had years of coaching, knows their technique, and just needs the analytical layer to track patterns.** Skip the coach for a season. Use the AI tool. Most of what's leaking your tennis at this level is recognisable to you with the right diagnostic. - **You play in a city or country with no accessible coaching at your level.** Self-coaching with an AI tool is materially better than self-coaching without one. Add a coaching trip once a year for technique resets. - **Cost is the binding constraint.** If your choice is "AI app at around €19/month or no tennis improvement at all because you can't afford lessons," the app wins by default. ## When the coach is the right call And the symmetric cases: - **You're a beginner.** Get a human first. The AI tool's reports won't make sense to you yet, and there's no substitute for someone showing you how to hold a racket. - **You have a specific technical break.** A weird quirk in your service motion. A backhand that's becoming inconsistent for unclear reasons. These need eyes-on-court, not a report. - **You play tournaments and need match-prep coaching.** Specific opponent prep, in-tournament adjustments, mental game, coach territory. ## The honest commercial answer We sell an AI tennis app. We could pretend it replaces your coach. We don't, because most of our users who get the most value out of UNFORCE have a coach (or have had one), and the AI tool is the connective tissue between sessions. Pretending the tool replaces the coach would oversell the tool *and* lose us our most engaged users, the ones whose coach also wants the report. If you're choosing between a coach and an AI app and you can only afford one: pick based on your level (beginner: coach; intermediate: probably AI; advanced: coach). If you can afford both, do both. The combined cost is less than one extra lesson a month and the leverage is much higher. --- **Related reading:** [A 4-week self-coaching workflow with phone video](/blog/4-week-self-coaching-workflow) is the "AI alone" use case in detail. [UNFORCE for junior coaches](/use-cases/junior-coaches) is the "AI + coach" workflow from the coach's side. Or [/how-it-works](/how-it-works) if you want to know what the AI half is actually doing. --- ### The Coach's Eye replacement playbook (after TechSmith shut it down) URL: https://unforce.io/blog/coachs-eye-replacement-playbook Markdown twin: https://unforce.io/blog/coachs-eye-replacement-playbook.md If you're here because Coach's Eye stopped working, the short answer is: pick the replacement by what you were *using* Coach's Eye for, not by which one looks closest. For generic frame-by-frame video annotation across any sport, **OnForm** is the closest like-for-like, same drawing tools, same side-by-side view, same coach-focused workflow. For team sports with a coaching ecosystem, **Hudl Technique** (the rebrand of Ubersense) covers it. For tennis specifically, neither of those does what you actually want most often, automatic shot detection and stroke quality, so a tennis-specific tool like **UNFORCE** is the right pick. This post breaks down the three options, what each is genuinely good at, and how to migrate your workflow without losing the muscle memory you built around Coach's Eye. ## TL;DR - TechSmith retired Coach's Eye on **September 30, 2022**. The app and its cloud are dead. - **OnForm** is the closest direct replacement, drawing tools, slow-mo, side-by-side, free tier, multi-sport. - **Hudl Technique** (formerly Ubersense) is the team-sport equivalent. - For tennis: a tennis-specific AI tool like **UNFORCE** auto-detects shots and replaces 80% of the manual labeling Coach's Eye made you do. - Pick by job: generic annotation = OnForm; team workflow = Hudl; tennis stroke + match analysis = UNFORCE. ## What Coach's Eye actually was (so we replace the right thing) Coach's Eye was a video coaching app from TechSmith, the Camtasia people. You imported a video, scrubbed frame-by-frame, drew lines and angles on top, recorded a voice-over, and shared the annotated clip with a player. It didn't analyze anything automatically. It was a *manual* analysis tool that respected coaches' eyes, hence the name. That's the workflow you're trying to keep. Three modern apps cover different slices of it. ## Option 1: OnForm, the like-for-like replacement OnForm is the most-cited Coach's Eye successor in the post-shutdown community, including a [direct comparison published by OnForm itself](https://onform.com/blog/onform-vs-coachs-eye/) and a recommendation from [SeamsUp's review of Coach's Eye alternatives](https://seamsup.com/blog/the-best-coach-s-eye-alternative-for-video-analysis-seams-up). **What's the same:** - Frame-by-frame scrubbing - Telestration (lines, angles, shapes, freehand) - Side-by-side and overlay comparison - Voice-over and recorded audio commentary - Cross-platform: iOS, Android, web **What's different:** - Cloud-first by default, videos sync between coach and player accounts - Subscription-based with a free tier - Built for asynchronous coaching, with a roster and assignment model **Tennis caveat.** OnForm's [own pricing page](https://onform.com/pricing/) and [marketing site](https://onform.com/) showcase golf, swimming, gymnastics, baseball, and dance, *tennis is not listed as a supported sport*. The drawing tools work for tennis the same way they worked in Coach's Eye: by hand. There's no tennis-specific analysis. If your Coach's Eye workflow was 90% manual annotation, this is a clean migration. If it was "I wish this thing could just find the shots for me," keep reading. ## Option 2: Hudl Technique, the team-sport answer Hudl bought Ubersense and folded it into Hudl Technique. It still does free side-by-side video analysis on phone, but the gravity of the platform has moved toward team sports, football, basketball, volleyball, where Hudl owns the coaching/scouting workflow end-to-end. For an individual coach reviewing a single tennis player, Hudl Technique is functional but heavy. The free tier is real, but you'll be ignoring 70% of the surrounding ecosystem. Most tennis coaches we talk to who tried Hudl post-Coach's-Eye drifted to OnForm within a season. ## Option 3: UNFORCE, when "Coach's Eye for tennis" is actually what you wanted This is the post where I have to be honest about the angle: I built [UNFORCE](/) because Coach's Eye-style manual annotation didn't scale. I'd record an hour of tennis, sit down to review it, and the first 20 minutes were just *finding the shots*, scrubbing back and forth to mark forehand vs backhand vs serve. The actual coaching insight took five minutes. The labeling was the bottleneck. UNFORCE's pipeline does that labeling for you: - **TrackNet** detects the ball every frame. - **Court keypoint detection** registers the camera once per match. - **MediaPipe pose** locates the player's body. - **CatBoost classification** labels each shot (forehand, backhand, serve, volley) and scores stroke quality. You upload, the [report](/features/coaching-report) comes back with shots pre-labeled and timestamped, and you spend your time on the part Coach's Eye couldn't help with: deciding what to *do* with the data. When UNFORCE isn't the right replacement: if you coach across multiple sports, or if your videos aren't tennis. UNFORCE is tennis-only. For everything else, OnForm is the better Coach's Eye equivalent. ## Migration playbook: leaving Coach's Eye in 2026 If you're just now making the move (and many coaches still are, Coach's Eye libraries linger on old iPads), here's the practical order: **1. Recover what you can.** Open the old app. Export every video that matters. Push them to Files, iCloud Drive, Google Drive, or Dropbox. Once you uninstall, you cannot get them back, TechSmith's cloud is shut. **2. Pick the destination.** Generic video annotation across sports → OnForm. Tennis specifically → UNFORCE + OnForm together (UNFORCE for the analysis, OnForm for hand-drawn telestration on top of clips you save). **3. Rebuild your folder structure.** Most coaches had a Player → Date → Session hierarchy in Coach's Eye. OnForm's roster model maps onto this. UNFORCE uses a session-per-match model with stable IDs (the Firestore `jobs` collection, yes, I'm a developer; that detail leaks into the product). **4. Re-record your benchmark.** The most common Coach's Eye workflow loss isn't the videos, it's the *baseline*. The original "this is what your serve looked like in March" comparison clip. Record a new baseline now. Pick a date and stick to it. ## Source quotes From [OnForm's own comparison](https://onform.com/blog/onform-vs-coachs-eye/): > "OnForm was designed by the same team that originally built Coach's Eye, and it incorporates everything we learned about what coaches actually need." From [SeamsUp's review](https://seamsup.com/blog/the-best-coach-s-eye-alternative-for-video-analysis-seams-up): > "Coach's Eye was retired by TechSmith in September 2022, leaving thousands of coaches and athletes scrambling for an alternative." That "scrambling" is real. Three years later, the migration is mostly done, but the people who haven't moved yet are usually the ones who never needed cloud sync to begin with. They were using Coach's Eye for one thing, repeatedly, and the question is which modern tool does *that one thing* best for their sport. ## Where this leaves tennis coaches If you coached tennis through Coach's Eye, the honest truth is: you spent more time labeling than coaching. That was the price of using a generic tool for a specific sport. The sport-specific AI tools that replaced manual labeling didn't exist when Coach's Eye launched, and now they do. Worth a try on your next match. ## Related reading - Compare [UNFORCE vs SwingVision side-by-side](/compare/swingvision) for tennis-specific analysis. - See [how UNFORCE's shot detection actually works](/how-it-works), the pipeline behind the auto-labeling. - For the broader landscape: [Best tennis video analysis app for Android in 2026](/blog/best-tennis-video-analysis-app-android-2026) --- ### A coach's guide to using UNFORCE between lessons URL: https://unforce.io/blog/coachs-guide-unforce-between-lessons Markdown twin: https://unforce.io/blog/coachs-guide-unforce-between-lessons.md # A coach's guide to using UNFORCE between lessons You're a tennis coach. You see your players for an hour, maybe twice a week. They walk off court, they go play tournaments and practice on their own, and by the next lesson half your previous-session corrections have drifted. The fix everyone reaches for is *more video*, but more video is a chore for the coach (clipping, sending, marking up) and the player rarely watches it carefully without a structured prompt. This post is the workflow we recommend if you coach NTRP 3.0-4.5 adults or junior tournament players. It's an async between-lessons homework loop. UNFORCE does the heavy lifting; the structure makes it work. ## TL;DR A four-step weekly loop: 1. **Player picks one match per week** to upload to UNFORCE. 2. **You send a one-paragraph homework prompt** before they review. 3. **Player reviews the report against your prompt** and brings three time-coded clips to the next lesson. 4. **The lesson stays for what only you can do.** You do zero clipping. The player does the watching. The data carries between sessions. ## When this workflow earns its keep Honest scoping. This page is worth your time if: - You coach **U12-U18 ranked juniors** or **adult tournament players** at NTRP 3.0-4.5. - Your players (or their parents) pay for **one to three lessons a week** plus practice and tournament time. - You don't have facility-grade hardware (SmartCourt, PlaySight) at every court you teach on. - You're constantly fielding *"can you look at my match from Saturday?"* and you don't have time to clip and review. Skip this page if you coach exclusively academy players with on-site video staff, or if your students are below the level where stroke-quality scoring is reliable (typically green-ball-and-up). The Talk Tennis "[Coaches/Parents - match tracking & statistics app?](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/)" thread is the recurring forum version of this question. Read it for the live community version of the conversation. ## The four-step loop ### 1. Player picks one match per week Junior tournaments produce 1-3 matches a weekend. Adults at the club typically play 1-3 matches a week. Pick *one*. Not the easiest win, not the most lopsided loss, the most *competitive* match, where the patterns under pressure are visible. The player records on a tripod from the back of court. Three to five minutes of analysis time after the match ends. By the time they're home, the report is ready. This part scales. One match a week per player, ten players on your roster, ten reports a week, none of which you have to process yourself. ### 2. Send a one-paragraph homework prompt This is the single biggest unlock. The player needs to know *what* to look at. You're the coach, you know what they're working on. A good prompt is concrete and asks for evidence: > *"Look at the cross-court backhand heatmap from Saturday's match. Compare it to last week's report. Are you getting deeper, or is it still landing in the middle third? Bring me three forehands and three backhands you want to talk about on Tuesday."* Or: > *"Pull up the second-serve placement heatmap. Are you spreading the second serve, or always going to the backhand? Find me one second serve you'd like to redo, and one rally where the second serve started a problem."* Send the prompt before they review, not after. The prompt is what turns 20 minutes of watching into a structured exercise. ### 3. Player reviews the report against your prompt The PDF report has the data; the prompt gives the player a job. A typical review is: - 5 min: open the heatmap, look at the shot-count split, look at the rally-length distribution. - 10 min: pick three forehands and three backhands the report flagged (low stroke-quality score, off-target landing, or whatever your prompt asked for). - 15 min: watch each clip in slow motion, write a one-line note, time-stamp it. Total: 20-30 minutes. Done at home, on the player's schedule, without you in the loop. This is also where the data starts to compound across weeks. By week 4 the player has four reports, four sets of clips, and a longitudinal record of how their backhand is changing. The first few reports are noisy; the trend across reports is the signal. ### 4. The lesson stays for what only you can do The player walks into your next lesson with three time-stamped clips and a question. Your hour goes to: - Demonstrating the correction live. (UNFORCE can't show them what good looks like in their own body, only you can.) - Feeding the specific pattern. (UNFORCE can't put a backhand at three-quarter pace into the deuce corner, only you can.) - The judgement call about *what to fix next*. (UNFORCE surfaces patterns; it doesn't know your player's developmental priorities.) Your hour didn't go to clipping, didn't go to writing notes, didn't go to "how was your week?", it went to the highest-leverage thing the player is paying for. That's the workflow. ## What UNFORCE does well in this loop Three specific things make this work: - **The PDF report is shareable.** Players email or AirDrop it. Parents can forward it. There's nothing to install on your side. - **The heatmap and shot counts compound across matches.** Week-over-week trends are the signal, and a player who hasn't reviewed last week's report can't see the comparison. - **Stroke-quality scores give the player something objective to react to.** "Your forehand grade dropped 8 points this week" is a different conversation than "you felt a bit off." ## What UNFORCE doesn't do (and where you stay essential) I want to be careful here. Tennis-AI marketing tends to over-promise on coaching replacement, and that's not what UNFORCE is. Specifically: - **Stroke-quality scoring is calibrated to a broad ATP/WTA technical baseline.** A player you're intentionally building with non-classical mechanics (extreme grip, deliberate kinetic-chain choice) may score lower than a more textbook hit. Treat the score as a discussion starter, not gospel. - **The report doesn't know what your player needs to fix next.** It surfaces patterns. You decide which pattern is the priority, a developmental coach knows that some "errors" are productive struggle, and UNFORCE doesn't. - **AI doesn't replace the demonstration.** A player learning a new contact point needs to see it modeled. UNFORCE can show them their own contact point at frame 47 and a graph of where their racket head was; it can't show them what your contact point looks like. The frame here is *UNFORCE plus a good coach is meaningfully better than either alone*. We're not the coach. ## A real prompt library Adapt these to your players' weekly priorities: - *"Backhand depth, pull the heatmap and tell me where 70% of your backhands are landing."* - *"Second-serve placement variance, count how many times the second serve went to the same corner."* - *"Rally-length distribution, what's your average winning rally vs your average losing rally?"* - *"Approach shots, how many approach shots did you hit, and what was the win rate on the next shot?"* - *"First-strike pattern, on your first-serve points, what shot did you hit second, and what was the win rate?"* - *"Cross-court vs down-the-line ratio, are you mixing it up or living in one diagonal?"* - *"Stroke-quality score by set, did your forehand technique decline after set one?"* One prompt per week. Don't try to coach everything from one report. ## Where this fits with your existing tools A non-trivial number of coaches use OnForm or a similar slow-motion tool for *technique* work and UNFORCE for *match data*. They're complementary: - **OnForm**, detailed slow-motion review of a specific stroke, side-by-side with a model. - **UNFORCE**, match-level patterns, heatmaps, rally analysis, longitudinal data. Use OnForm when the question is *"is the wrist position right?"* Use UNFORCE when the question is *"is this pattern surviving under tournament pressure?"* ## Pricing for coaches today For individual players: Pro is €19/mo (unlimited matches), free tier is 3/month. For most one-or-two-match-per-week routines, the free tier covers it. For a player serious enough to upload every match plus practice video, Pro pays for itself in saved coach time. For coaches, UNFORCE Team is available now: €49/mo for 10 seats, with a coach dashboard that gives you a roster view of your players in one place. A player-to-coach report inbox (players pushing a report straight to you) is still on the roadmap. If you're running more than 10 players and want to talk through the setup, email akshaysarode@unforce.io. ## FAQ **How do coaches use UNFORCE between lessons?** The four-step loop: player records, you send a prompt, they review the report, they bring clips to the next lesson. **Does UNFORCE replace a coach?** No. It's a between-lessons homework tool. The judgement, the demonstration, and the corrections stay with you. **What level of player is this useful for?** NTRP 3.0-4.5 adults, U12-U18 ranked juniors. Below that the data is noisier than the player's variance. **Can I share an UNFORCE report without the player sending it to me?** The player generates the report and shares the PDF or link. On the UNFORCE Team plan (€49/mo, 10 seats) your players can sit on your roster in the coach dashboard; a direct player-to-coach report inbox is still on the roadmap. **Does UNFORCE work for the workflow on Android?** Yes, and a meaningful share of junior players are on Android phones, so cross-platform support matters for the homework loop. --- **Try UNFORCE free**, 3 full reports per month is enough to run this loop for one player. [Start free](/) · [How UNFORCE works](/how-it-works) · [UNFORCE for junior coaches](/use-cases/junior-coaches) · [What changes after watching 10 of your own matches](/blog/10-matches-watching-changes) --- ### Doubles support in AI tennis apps: where most fail URL: https://unforce.io/blog/doubles-support-tennis-ai Markdown twin: https://unforce.io/blog/doubles-support-tennis-ai.md # Doubles support in AI tennis apps: where most fail If you're a doubles player evaluating tennis-AI apps, you've probably noticed something: most of them talk about singles. The marketing screenshots are singles. The feature pages are singles. And when you finally upload a doubles match, the report has a specific kind of weirdness, your shot count looks off, the heatmap puts a forehand in your partner's territory, the stroke quality scores don't match the rallies you remember. This is a real, structural problem in the category, and it has the same root cause across vendors. This post explains the cause, the failure modes, where UNFORCE's doubles support stands today, and what to do about it. I'm the founder of UNFORCE, so I'll be honest: doubles is harder for us than singles, and we have a documented caveat. We're not unique in this, the whole category has the same issue. ## TL;DR - Most tennis-AI models were trained on singles. Doubles is the under-served case. - The universal failure mode is **partner-swap**: the model loses track of which player is which during long rallies and assigns shots to the wrong person. - UNFORCE supports doubles with one documented caveat: occasional partner swap on long crosscourt rallies. Match-level stats (heatmap, total shots, court coverage) remain accurate. - For doubles *drills* (cross-courts, poach reps), the data is reliable. For per-player attribution in a heated match, hand-verify. - The fix is more doubles training data and better re-identification models. Solvable, not solved. ## The question that prompted this post The Google "people also ask" box for *swingvision doubles* and adjacent queries surfaces the same inferred question repeatedly: *Does SwingVision work for doubles?* The honest answer for SwingVision and for most of the category is: yes, but with caveats most apps don't volunteer. We're writing this because doubles players keep emailing us asking what's actually different on a doubles video, and the answer deserves more than a footnote. The Talk Tennis thread "[Any Free Video Analysis Apps?](https://tt.tennis-warehouse.com/index.php?threads/any-free-video-analysis-apps.773458/)" carries the same question across products, and the App Store reviews of SwingVision ([source](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)) hint at doubles-specific issues without naming them directly. ## Why doubles is harder than singles for vision AI Three reasons, in order of severity. ### 1. Training data imbalance The public datasets used to train tennis vision models, academic ones like the various TrackNet datasets, plus the user-uploaded video that vendors collect, skew heavily singles. There are several reasons. Singles is what gets televised most. Solo players film themselves more than doubles players film their teams. And the academic groups that built the foundational datasets focused on singles because the problem was simpler. The result: a model trained on a 90/10 singles/doubles split sees fewer doubles examples and learns singles-specific assumptions. It's not that the model can't learn doubles; it's that it didn't see enough of them. ### 2. Occlusion is worse In singles, the players are typically on opposite ends of the court. They occlude each other rarely (only on a few approach shots and put-aways at net). In doubles, all four players are sometimes within 4 meters of each other, net exchanges, switch volleys, formation changes. Pose-estimation models like MediaPipe can confuse who's who when bodies overlap, and that confusion cascades through the rest of the pipeline. ### 3. Partner swap This is the universal failure mode. Vision models that track players across frames assign each player an identity (player 1, player 2, etc.) and try to keep the identity consistent across the video. When two players on the same side cross paths, say you switch sides on a poach, or your partner moves up to net, the model can swap the identities. From that moment forward, every shot you hit gets attributed to your partner, and vice versa, until the next swap (which sometimes corrects, sometimes doesn't). Partner swap is solvable. It requires a *re-identification* model, a separate vision component that compares player appearance (clothing, body shape, gait) across frames and re-anchors identities when they get confused. Re-identification is well-studied in surveillance vision; it's just not standard in tennis-AI pipelines yet, because the singles use case didn't need it. ## What partner swap looks like on your report Three telltale signs: - **Asymmetric shot counts.** You hit roughly the same number of shots as your partner, but the report shows 80% on one side. Almost always partner swap. - **Heatmap clusters in the wrong half.** Your forehand cluster shows up on your partner's side of the court. Almost always partner swap. - **Stroke quality scores that contradict your memory.** The report says your forehand technique improved dramatically mid-match, but actually it just started attributing your partner's shots to you, and your partner has a different forehand. The fix on the user side is hand-verification, which we don't pretend is acceptable for a paying customer. The fix on the vendor side is re-ID and more doubles training data. We're working on both. ## Where UNFORCE's doubles support stands today Honest summary, as of the current build: **What works well:** - Match-level statistics (total shots, total bounces, total winners/errors). These are computed from the ball trajectory, which doesn't depend on which player hit the ball. - Court coverage heatmap (where the ball landed, regardless of who hit it). - Shot type distribution (overall percentage of forehands vs backhands vs serves vs volleys). - Per-rally analysis (rally length, rally end-shot type, who served). - Stroke quality scoring on close-up clips, where occlusion is minimal. **What has the documented caveat:** - Per-player shot attribution on long crosscourt rallies with multiple net exchanges. Partner swap risk increases with rally length. - Per-player heatmaps when a swap has occurred mid-match. - Stroke-quality scores assigned to a specific partner during a swap-affected segment. **What we're working on:** - Re-identification across player crossings. - More doubles training data (if you want to share doubles videos for training, please email akshaysarode@unforce.io, we credit and respect privacy). - A "doubles mode" toggle that runs a tighter re-ID pass at higher GPU cost. ## What to do as a doubles player Three practical takeaways: 1. **Trust the match-level data.** Total shot counts, the court-coverage heatmap, rally lengths, these are fine. The aggregate picture of your team's match is reliable. 2. **Hand-verify per-player attribution before sharing.** Open the per-shot view on the report, scroll through, and confirm the labels for the rallies that matter. Five-minute task; eliminates the swap risk for the rallies you actually care about. 3. **Use it for drills, not just matches.** Doubles drills (cross-court patterns, poach reps, serve+1, formation work) have shorter exchanges and fewer crossings. Drill-mode data is rock-solid. ## A note on competitor doubles support I won't pretend to have run a structured comparison across SwingVision, OnForm, and the rest on a curated doubles test set. We haven't done that, and anyone who tells you "we tested every vendor on the same doubles match" is probably exaggerating. What I can tell you from forum threads ([example](https://tt.tennis-warehouse.com/index.php?threads/swingvision-current-problems-with-videos.739133/)) and App Store reviews ([source](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)) is that doubles glitches are reported across products. SwingVision's doubles experience is generally more mature than a smaller vendor's, mostly because more doubles videos have been uploaded to it and more bug-fix cycles have been run. But the underlying partner-swap problem is the same. ## Why we publish this rather than hide it A lot of vendors don't talk about doubles weak spots because the marketing case for "AI tennis analysis" is cleaner if you assume singles. We talk about it for two reasons: 1. **Much of club tennis, in the US especially, is doubles.** A large share of USTA league play is doubles. If our product silently fails on a format many of our users actually play, we're failing them. 2. **The accuracy page argument only works if it's honest.** We publish per-surface and per-shot-type accuracy on `/accuracy`. Hiding doubles-specific weak spots would undermine the whole credibility argument. ## When doubles AI will be solved It will get fixed. The required training data is growing every month (every doubles video uploaded teaches the next model). Re-identification models are improving in adjacent computer-vision fields (sports broadcast, surveillance, retail). The vendors that prioritize doubles will close the gap first. In the meantime, the honest story is: doubles works, with documented limits, and the caveat lives in `/accuracy` not in fine print at the bottom of a marketing page. ## FAQ **Does UNFORCE support doubles?** Yes, with one documented caveat (partner swap on long crosscourt rallies). Match-level data is reliable. **Does SwingVision work for doubles?** Yes, with similar caveats, the partner-swap problem affects the whole category. SwingVision's doubles support is more mature than smaller vendors, but the underlying problem persists. **What works perfectly for doubles?** Total shot counts, ball-trajectory-based court coverage, rally-level analysis. Anything that doesn't depend on per-player attribution. **What should I hand-verify?** Per-player shot attribution on long crosscourt rallies. Open the report, scroll through, confirm labels. **Will doubles get better?** Yes. The fix is more doubles training data and re-identification models. We're working on both. --- **Try UNFORCE free**, match-level doubles data is reliable, per-player attribution has documented caveats. [Start free](/) · [How UNFORCE works](/how-it-works) · [Tennis ball tracking accuracy explained](/blog/tennis-ball-tracking-accuracy-explained) · [UNFORCE vs SwingVision](/compare/swingvision) --- ### EU privacy + your tennis video: how data hosted in europe-west1 changes the math URL: https://unforce.io/blog/eu-privacy-tennis-video-gdpr Markdown twin: https://unforce.io/blog/eu-privacy-tennis-video-gdpr.md If you're an EU player and your tennis video ends up on a US or non-region-pinned service, GDPR doesn't disappear, it follows the data. The question is whether the company you uploaded to has a lawful transfer mechanism, what their retention is, and how easy it is to exercise your rights. UNFORCE's answer is partly structural and partly still open, and we would rather say so than round it up. Video, reports, and account data are **stored** in **europe-west1** (Google Cloud's St. Ghislain, Belgium region), with Firebase storage, database, and backend functions configured there. The analysis paths are not EU-only: the computer-vision pipeline runs on our self-hosted Lambda Cloud workers in current US regions, while a parallel full-video Gemini analysis uses Google Vertex AI's `global` endpoint. Lambda currently has no Article 28 DPA or Article 46 transfer mechanism on file, and account-specific acceptance of Google's Data Processing and Security Terms has not been evidenced in our compliance record. This post explains what that means under GDPR and how it changes the legal math for an EU player choosing between tennis-AI tools. ## TL;DR - A tennis video that identifies you = personal data under GDPR. - UNFORCE's Firestore, Storage, and Cloud Functions are all pinned to **europe-west1**. - For those layers, keeping data in-region takes the EU-to-US transfer question off the table. - The computer-vision step currently runs on Lambda Cloud workers in **US** regions. Lambda's Article 28 DPA and Article 46 transfer mechanism are outstanding. - A separate, active full-video Gemini analysis uses Google Vertex AI's **global** endpoint and is not region-pinned. Google's account-specific DPA acceptance evidence is also outstanding. - **If strict EU-only processing is a requirement, do not upload - contact us first.** - GDPR Articles 6 (lawful basis), 13 (transparency), 17 (erasure) all apply and are honored in-app. - Other tennis-AI apps may or may not host in the EU. Check before uploading. ## Step 1: your tennis video is personal data GDPR Article 4(1) defines personal data as "any information relating to an identified or identifiable natural person." A video of you on a court, your face, your gait, your distinctive backhand, clearly fits. The European Data Protection Board has been explicit about video footage being in-scope. That triggers a stack of obligations on whoever is processing the video: - **Article 5**, data must be processed lawfully, transparently, minimally. - **Article 6**, there must be a lawful basis (consent, contract, legitimate interest, etc.). - **Article 13**, you must be told at the time of collection what's being collected and why. - **Article 17**, you have the right to ask for your data to be erased. - **Article 32**, security of processing. - **Articles 44-49**, restrictions on transferring data outside the EU. Most amateur players don't read GDPR for fun, so the practical takeaway is: a tennis-analysis app is doing personal-data processing the moment you upload, and the company has obligations whether or not they advertise them. ## Step 2: where the data physically sits matters GDPR doesn't ban EU-to-US data transfer. It requires a *lawful mechanism*: Standard Contractual Clauses, an adequacy decision, or an explicit derogation. Since the Schrems II ruling in 2020, that mechanism has been complicated for US transfers, the EU-US Data Privacy Framework (the latest iteration) is functional but legally contested. The simplest way to side-step the entire transfer question is to **not transfer**. If the data stays in EU data centers, processed by an EU-incorporated entity (or a non-EU entity with EU sub-processors operating under SCCs that exclusively process in-region), the transfer chapter of GDPR doesn't have to come up. That's the architectural call UNFORCE made. All three persistence layers are EU-resident: - **Firestore database**, region pinned to `europe-west1`. - **Firebase Storage** (where video uploads land), bucket pinned to `europe-west1`. - **Cloud Functions**, deployed to `europe-west1`. The canonical GPU flow is `pending` → `videos/{uid}/{sessionId}/…` → `processVideoOnUpload` → `dispatchGpuJob` Cloud Task → `gpuQueue/{queueId}` → Lambda pull-worker → `results/{uid}/{sessionId}/…` → `done`. Firebase orchestrates that path from `europe-west1`; the self-hosted Lambda Cloud workers currently run in `us-east-1`, `us-south-2`, and `us-southeast-1`. At the `processing` edge, an independent function also sends the full upload by `gs://` reference to Gemini on Vertex AI's `global` endpoint and writes `jobs.videoAnalysis`; that branch does not control the GPU job's status. The architecture is described in [how UNFORCE works](/how-it-works). ## Step 3: the lawful basis question When you upload a video to UNFORCE, what's the legal grounding? - **Article 6(1)(b), performance of a contract.** You're using the service; processing the video is necessary to deliver the analysis you asked for. This covers the core upload-to-report pipeline. - **Article 6(1)(a), consent.** Anything beyond the core pipeline (e.g., contributing anonymized data to model improvement) is opt-in. - **No legitimate-interest dragnet.** We don't fall back on Article 6(1)(f) "legitimate interest" for the model-training case, it's the wrong basis for that workload, and DPAs have been clear about it. This is the lawful-basis architecture you'd hope for. It's not unique to UNFORCE, but it's not universal either. ## Step 4: who else is in the room? GDPR cares about *all* the parties touching your data. UNFORCE's sub-processor chain: - **Google Cloud / Firebase + Vertex AI**, the persistence and orchestration platform plus the active global-endpoint Gemini full-video analysis. Google's standard data-processing terms are available, but account-specific acceptance has not yet been evidenced in our compliance record. - **Lambda, Inc.**, the current GPU compute provider. Our self-hosted pull-worker pool currently runs in United States regions; no Article 28 DPA or Article 46 transfer mechanism is on file yet. - **PostHog**, loaded on the marketing site only after analytics opt-in and sent to its EU endpoint. This means UNFORCE is not EU-only today: the Firebase persistence and orchestration layers are EU-resident, the Lambda Cloud GPU step is an EEA-to-US transfer, and the Vertex AI Gemini branch uses a global endpoint. The unexecuted Lambda DPA/transfer mechanism and unverified Google acceptance are compliance gaps, not future paperwork we can describe as complete. ## Step 5: your rights, in practice The rights GDPR grants are only worth what the app's UX makes accessible. Practical answers for UNFORCE: - **Access (Article 15).** Email us; we send your data export. Working on a self-serve version. - **Erasure (Article 17).** Delete from the app, propagates to storage and Firestore. Backup snapshots are flushed within the platform's standard retention window. - **Portability (Article 20).** Export your sessions as JSON + the original videos. - **Objection (Article 21).** Opt out of any analytics or model-training participation in app settings. These rights apply whether you're inside or outside the EU. EU residents just have a more direct enforcement path through their local DPA. ## Step 6: what this means for non-EU users If you're in the UK, the equivalent regime is UK GDPR + the Data Protection Act 2018, broadly aligned. EU-to-UK and UK-to-EU transfers operate under adequacy decisions. If you're in Switzerland, the FADP applies, also broadly aligned with GDPR. If you're in the US or Canada, GDPR doesn't cover you directly, but EU hosting still means your video is sitting in a regulatory regime with stronger baseline protections than US state-level laws. Some users prefer that, some don't care. We've heard both. If you're in Brazil, LGPD is similar to GDPR; data hosted in EU regions is treated as a "trusted" jurisdiction for many purposes. ## Why I built it this way I'm based in Europe. The amateur tennis players I built this for are mostly European clubs and amateur leagues. Keeping the system of record in Belgium reduces the transfer surface, but it does not make the whole analysis pipeline EU-only. The current Lambda and Vertex paths must be disclosed and contractually covered on their own terms. That said, I want to be honest about what *isn't* automatic: - **Sub-processor changes.** Cloud providers occasionally shuffle which regions provide certain services. We monitor and disclose changes to the privacy page. - **Lawful access requests.** EU governments can compel disclosure under EU national-security laws, just as US ones can under FISA. EU hosting reduces the surface area but doesn't eliminate it. - **GDPR doesn't automatically mean "safe."** Plenty of GDPR-non-compliant companies operate in the EU and plenty of GDPR-compliant ones operate from outside. Hosting region is *one signal*, not the whole story. ## How to verify any tennis-AI app's hosting region Three steps any user can take: 1. **Read the privacy policy.** Search for "data center," "region," "data transfer." If they don't say, that's a signal. 2. **Read the DPO / contact section.** EU-targeting apps must have an EU representative under Article 27 if they're not EU-incorporated. 3. **Run a network trace if you're feeling thorough.** The IP your upload hits resolves to a specific region; tools like `dig`, `traceroute`, or the developer console in your browser surface it. Most users won't do this, but you can. For UNFORCE, the complete answer is: Firebase persistence and orchestration in `europe-west1`, Lambda GPU workers in current US regions, and a parallel Gemini analysis on Vertex AI's `global` endpoint. For other tools, ask for the same end-to-end answer rather than a storage-region headline. ## Related reading - [UNFORCE vs SwingVision side-by-side](/compare/swingvision), including data-residency comparison. - [How UNFORCE's pipeline works](/how-it-works), the architecture behind the EU pinning. - [Share your UNFORCE report with your coach](/blog/share-unforce-report-with-coach), when you share, where does the link live? --- ### Forehand consistency: a 3-drill plan with measurable goals URL: https://unforce.io/blog/forehand-consistency-3-drill-plan Markdown twin: https://unforce.io/blog/forehand-consistency-3-drill-plan.md # Forehand consistency: a 3-drill plan with measurable goals If you're a NTRP 3.0-4.0 player and your forehand is "fine on a good day, gone on a bad day," this post is for you. Three drills, measurable goals, four weeks of structured work, and a way to verify the gains using UNFORCE practice video. I'm not a tennis coach, I'm the founder of UNFORCE, and what I am is a builder who watches a lot of player video. The drills below are standard. What's not standard for rec players is *measuring them*. That's the part that compounds. ## TL;DR Three drills, two sessions a week, four weeks: 1. **Cross-court depth streaks.** Goal: a streak of 12+ consecutive forehands landing in the deep third at match pace. 2. **Placement triangle.** 10 forehands each to three target zones (deep-cross, mid-deep, line). Goal: 70% accuracy across all three zones. 3. **Pace consistency at 65% effort.** 10 forehands aimed at controlled pace. Goal: a downward pace-variance trend across sessions. Groundstroke-speed estimates carry more error than serve speed, so track the trend, not a precise per-shot gate. Film practice with UNFORCE once a week. Use the report to track all three metrics. Adjust drilling based on which metric is moving slowest. ## Why measurable goals matter for self-coaching Most rec players who try to "improve their forehand consistency" do one of two things: 1. **Hit forehands without structure.** They warm up, they drill cross-courts, they call it good. Improvement is invisible because there's no metric, and they bail when results don't feel like they're coming. 2. **Take a lesson, get a tip, and try to apply it.** This works in the short term, coaches are good at finding the one thing to fix, but the change rarely sticks because there's no measurement loop between lessons. Measurable drills fix both problems. The drill defines the structure. The metric tells you whether the work is producing results. The UNFORCE report verifies it without you having to remember every shot. The Google autocomplete data on this query is loud, "how to improve forehand" surfaces a long tail of consistency-related searches ([source](https://suggestqueries.google.com/complete/search?client=firefox&q=how+to+improve+forehand)). Most of the top-ranked answers are "use the kinetic chain" or "watch your contact point." Those are correct but not actionable for rec players. Drills with numbers are actionable. ## Drill 1: Cross-court depth streaks **Format:** trade cross-court forehands with a partner or hitting wall. Each shot must land in the deep third of the singles court (between the service line + 2m and the baseline). A miss resets the streak. **Time:** 15 minutes. **Goal by week 4:** A streak of 12+ at match pace. Not 12 in a row at slow rally pace; 12 in a row at the speed you'd hit in an actual match. **Why this works:** - The streak constraint forces consistency. One miss kills the count, so every shot is a real shot. - Depth is the largest source of unforced errors at NTRP 3.5. Most "missed forehands" land short or long; the streak constraint targets the failure directly. - Cross-court is the percentage shot. Most forehands in a real match are cross-court; drilling the percentage shot reflects match conditions. **How to film for UNFORCE:** - Phone on a tripod, back of court, head height. - Capture the full singles court width. - Aim for 5+ minutes of continuous play to give the model enough rallies. **What the report shows:** - Per-shot landing position. You can verify which shots actually landed in the deep third (and which you *thought* did). - Heatmap. The cluster should tighten over four weeks. - Stroke-quality score on the cross-court forehand specifically. **Common mistake:** rallying at slow pace to keep the streak alive. Streaks at slow pace don't transfer to match pace. Hit at the speed you'd hit at 3-3 deuce. If your streak collapses, the streak collapses, that's the data. ## Drill 2: Placement triangle **Format:** stand at the baseline, partner or coach feeds forehands to your strike zone. Hit 10 forehands each to three targets: - **Target A (deep-cross):** the deep corner of the deuce side (assuming you're a righty hitting cross from ad-side). The "rally" target. - **Target B (mid-deep):** the deep middle of the court, between the singles sidelines. The "control" target. - **Target C (down-the-line):** the deep line on your own side. The "weapon" target. Hit all 10 to A, then all 10 to B, then all 10 to C. Don't mix. **Time:** 15 minutes. **Goal by week 4:** 70% of shots land within a 1m radius of the target zone, across all three targets. Equivalently: at least 7 out of 10 to each target. **Why this works:** - The three targets cover the three real game-state forehands: rallying, controlling pace, and finishing. - Hitting them in blocks of 10 (rather than randomly) builds the muscle memory before testing the recall. - The 70% goal is high enough to be hard, low enough to be reachable. Below 50% means the technique isn't there yet; above 80% on all three at week 1 means the drill isn't pushing you. **How to film for UNFORCE:** - Same tripod setup as Drill 1. - The report's per-shot landing data tells you exactly which targets you hit and which you missed. - Stroke-quality score will likely vary across the three targets, line forehands typically score lower than cross because the kinetic chain is different. That gap is information. **Common mistake:** moving on from a target after a few good hits. Stay on the 10 reps. The last three reps of each block are where consistency lives. ## Drill 3: Pace consistency at 65% effort **Format:** stand at the baseline. Partner feeds 10 forehands. Hit each one at the *same controlled pace*, about 65% of your maximum. Aim for the deep middle (Target B from Drill 2). The placement matters less than the pace. **Time:** 10 minutes. **Goal by week 4:** a downward trend in pace variance across your filmed sessions, not a precise per-shot gate. Groundstroke-speed estimates carry more error than serve speed, so any single session's exact spread is noisy; the trend across weeks is the signal. **Why this works:** - Pace consistency is what makes a forehand a *weapon* rather than a *gamble*. A 4.0 forehand isn't always the hardest forehand in the room; it's the most predictable one. - 65% effort is the rally pace zone. Most match forehands sit here. Drilling the rally pace is more useful than drilling the maximum. - The metric is trackable. The UNFORCE report includes ball-speed estimates per shot. Groundstroke-speed estimates carry more error than serve speed, so read the variance as a trend across sessions rather than an exact per-shot number. **How to film for UNFORCE:** - The pace data is in the per-shot report. Filter to forehands; check the variance across the 10 reps of this drill. - A noisy pace suggests kinetic-chain inconsistency: your shoulder turn is different rep to rep, your contact point is moving, or your weight transfer is variable. Take it to your coach. **Common mistake:** trying to hit the pace by feel. Feel-based pace targeting is unreliable; the UNFORCE report is what calibrates "65%" into a real number. ## A 4-week schedule **Sessions per week:** 2-3. Each session = the three drills, in order, ~40 minutes total. **Filming cadence:** once a week, full session, full court. Don't film every drill every time, review every week is enough to track the trend without burning through your free-tier allowance (3 analyses/month, fits exactly). **Weekly review prompt:** - Drill 1 streak length: trending up? - Drill 2 accuracy per target: trending up? - Drill 3 pace variance: trending down? If two of three are improving, you're on track. If only one is improving, the other two need attention from your coach. If none are improving after week 2, the drill setup or the goals need adjusting. ## How this maps to the 3.5 → 4.0 climb The [3.5 → 4.0 post](/blog/ntrp-3-5-to-4-0) describes the consistency markers that separate the levels. This drill plan targets the forehand-specific subset: - Cross-court depth streaks → drives down neutral-rally error rate. - Placement triangle → drives up forehand-to-backhand ratio (because the forehand becomes weapon-grade and you want to hit more of them). - Pace consistency → drives up the average rally length (because the opponent can read and return the predictable pace, but you're now in control of which one you hit). Three weeks of drills won't make you a 4.0. They will move the needle on the metrics that 4.0 players have and 3.5 players don't. ## What this drill plan doesn't cover Honest scope: - **Footwork.** Forehand consistency depends on getting to the ball with your feet. This drill plan assumes the ball comes to you. If your footwork is the bottleneck, no amount of forehand-isolated drilling fixes it. - **Tactical awareness.** Knowing *when* to go cross vs line is a different skill from being able to hit either reliably. Match-play drilling adds this; isolated drills don't. - **Backhand.** Same drills, same structure, different wing. We'll publish the backhand version separately. If your coach already has a forehand plan that contradicts these drills, do your coach's plan. They've seen you hit; I haven't. ## Why measurement is the unlock You can do drills 1, 2, and 3 without filming. Most rec players already do something like them in warmups. The thing that usually doesn't happen is the *measurement*, the streak count is approximate, the placement accuracy is by feel, and the pace consistency is a guess. The Talk Tennis "[Best Stroke Analysis App?](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/)" thread is full of players asking how to actually quantify what they're doing in practice. UNFORCE's report is one answer. The structure above is what makes the report useful, without the drills, the report is just a graph; without the report, the drills are just hope. ## FAQ **How do I improve forehand consistency?** Drill cross-court depth streaks, placement triangle, and pace consistency. Measure with UNFORCE. Four weeks of 2-3 sessions per week. **What's the best drill for consistency?** Cross-court depth streaks. The streak constraint forces shot-to-shot consistency at match pace. **Will I see improvement in 4 weeks?** Yes, measurable on at least one of the three metrics for most NTRP 3.0-4.0 players. All three is the goal but rare. **Should I film every session?** Once a week. Filming every session is overkill and burns through analysis budget. **Does this work for backhand?** Yes, same structure, same goals. Backhand version coming in a follow-up. --- **Try UNFORCE free**, 3 analyses a month is exactly the right cadence for this 4-week plan. [Start free](/) · [How UNFORCE works](/how-it-works) · [Going from NTRP 3.5 to 4.0](/blog/ntrp-3-5-to-4-0) · [A coach's guide to using UNFORCE between lessons](/blog/coachs-guide-unforce-between-lessons) --- ### Free tennis shot detection app: what 'free' actually buys you URL: https://unforce.io/blog/free-tennis-shot-detection-app Markdown twin: https://unforce.io/blog/free-tennis-shot-detection-app.md # Free tennis shot detection app: what 'free' actually buys you Search "free tennis shot detection app" and most of what comes back is not shot detection. You get watch apps that count swings from your wrist, replay tools that mirror your video in slow motion, and freemium apps whose free tier expires the week you start caring. Very few do the thing the phrase actually describes: watch your match, find every ball you hit, and label each one. Forehand. Backhand. Serve. Volley. I run UNFORCE, so this post includes us. It is also the post I wish existed before we built our free tier, because the word "free" here hides at least three different products, and only one of them is automatic shot detection you can keep using without paying. If you want the straight app-by-app comparison of free tiers, I wrote that separately in the [best free tennis stat tracker roundup](/blog/best-free-tennis-stat-tracker). This post is narrower: only detection, the labelling step, and what "free" means for that one capability. ## What shot detection actually is Shot detection is one specific job: find the moment of contact in the video and attach a label to it. Not a count you tapped in yourself. Not a swing your watch felt. A per-shot label the software produced by looking at the footage, this frame is a forehand, that one is a serve, this one is a volley. That distinction is the whole post, so it is worth being blunt about it. Three things get sold as free tennis analysis, and only the third is detection. - **Counting is not detection.** A wrist tracker feels an acceleration spike and adds one to a tally. It can tell you that you swung roughly 180 times. It cannot tell you which of those were backhands, or where the ball landed, because it never saw the ball or the court. - **Tagging is not detection.** Some free apps let you scrub the video and tap a button every time you hit a shot. That is manual labelling with extra steps. You are the detector; the app is a spreadsheet with a video player bolted on. - **Detection is the software doing the labelling for you,** automatically, from the pixels. That is the part that is genuinely hard, genuinely expensive to run, and genuinely rare at €0. Every downstream feature you actually want sits on top of that labelling step. The court heatmap, the shot-mix counts, the stroke-quality scores, none of them exist until detection has found and named the shots first (the full argument is on the [shot detection feature page](/features/shot-detection)). The point here is simpler: if an app is not doing that labelling automatically, it is not a shot detection app, however it is marketed. ## The three flavours of 'free' that are not free detection When you filter the search results through that definition, most of them fall into one of three buckets. **1. The trial in disguise.** These are the freemium video apps whose free tier exists to get you to the upgrade prompt. The category pattern is a capped free tier: limited match recording, watermarked exports, gated analytics. SwingVision's free tier fits that shape as of this writing, per its published tier descriptions. As the [roundup](/blog/best-free-tennis-stat-tracker) covers in detail, a tier like that is functionally a demo rather than a long-term tool. Nothing wrong with a demo. It is just not free detection you can rely on every week. **2. The replay mirror.** This is the Coach's Eye lineage: slow-motion review, frame-by-frame scrubbing, a delayed mirror of your own video. Useful for watching your form, genuinely, but there is no detection happening. Nothing finds your shots or labels them. These tools are easy to build and, it turns out, easy to switch off. Coach's Eye was shut down by TechSmith, and the players who used it for tennis slow-motion had to go find something else. **3. The wrist counter.** TennisKeeper and Swing both have free tiers that count shots and estimate swing speed from an Apple Watch. That is genuinely free and genuinely useful if a shot count is all you want. But it is watch-sensor counting, not video detection. There is no per-shot label derived from footage, no court map, no read on where the ball went. It answers "how many" and stops there. None of these are scams. They are just different products wearing the same search term. What none of them does is the thing the phrase promises: automatically find and label your shots from video, for free. ## What a genuinely free detection tier looks like Here is the UNFORCE free tier, stated plainly so you can hold it against anything else you are considering: - **€0 per month.** No credit card to start. - **3 match analyses per month.** Enough for about one match a week with an off week. - **The full report, not a stripped one.** Shot detection, ball tracking, court heatmap, and stroke-quality scores, with no watermarks and no feature gates. - **30-day report history.** - **iOS and Android.** The part that matters most for this post: the detection on the free tier is the exact same model the paid tiers run. Same pipeline, same accuracy. There is no "more accurate detection" hiding behind the paywall. The free tier is rate-limited, not feature-limited. What Pro (€19/month) and Team (€49/month) unlock is volume and coaching-team features, not a better detector. The full breakdown is on the [pricing page](/pricing). That is deliberate. We would rather you test real detection on your own matches and decide, than hand you a hobbled free version that makes the paid one look good. ## The honest limits of free detection Free automatic detection is real, but it is not unconstrained. If a vendor tells you it is, that is the tell. Three limits are worth knowing before you rely on it. **The monthly cap is the price of the GPU bill.** Every match you analyse runs a chain of models on a GPU: ball tracking, court keypoints, pose extraction, and the classifier that labels each shot. A 60-minute match is 3 to 5 minutes of GPU time, somewhere around 8 to 30 cents in raw cloud cost. Three a month is where the free-tier maths works without an upgrade trap or an ad wall. Anyone offering unlimited free detection is running a loss leader, a lighter on-device heuristic that is not really pose-aware, or a product on borrowed time. **It is post-match, not real-time.** You upload after you play, the pipeline runs in the cloud, and the report comes back in minutes. By the time you have driven home, the whole match has been processed shot by shot. What it is not is live line-calling during the point. That is a different, harder problem, and not what a free detection tier is for. **The camera does a lot of the work.** Detection is only as good as the video you feed it. The pipeline assumes a stationary camera, at least 5 feet up, behind the baseline, filming in landscape with the whole court in frame, using your phone's main lens rather than the ultrawide, at 30fps or higher. Get that right and the numbers below apply to your footage. Film hand-held at hip height with half the court cut off and they do not. The [filming guide](/how-to/film-your-tennis-match) is worth reading before your first upload, not after a disappointing report. ## How to check a 'free detection' claim before you trust it This is the section I would keep if you skip the rest. Most apps describe accuracy with adjectives, "best-in-class," "professional grade," "highly accurate," and none of those are measurements. Here is the rule that cuts through it. **Published F1, or it did not happen.** F1 combines precision (of the shots it flagged, how many were real) and recall (of the shots that happened, how many it caught) into one number, where higher means the model both finds real shots and does not invent ones that were not hit. A vendor who has measured their detection can show you that number. One that has not, cannot. Ask three questions of any "free detection" app: 1. Is there a number, or only an adjective? 2. Is the method behind the number described, the dataset, how it was measured, what was held out? 3. Are the failure modes listed, or is everything presented as flawless? If all three come back empty, "detection" is a marketing word on that app, not a capability you can size. UNFORCE publishes shot-detection F1 by shot type, the dataset it sits on, and the specific failure modes, on the [accuracy page](/accuracy), and updates it every release. That is the bar to hold everyone to, us included. ## Which shots get detected, and how well Detection covers forehand, backhand, serve, and volley, plus overhead and slice as subtypes. From the current published build on the [accuracy page](/accuracy), the per-shot F1 scores are: | Shot | F1 | |---|---| | Forehand | ~ 0.92 | | Backhand | ~ 0.91 | | Serve | ~ 0.88 | | Slice | ~ 0.83 | | Volley | ~ 0.78 | In plain terms: on a 90-shot match, expect roughly 80 to 85 shots correctly detected and classified, 3 to 5 misclassifications (most often slice mistaken for backhand, or a volley at the service line mistaken for a groundstroke), and 0 to 2 shots missed entirely. Forehands and backhands are the most reliable; volleys are the hardest, and overheads get pulled toward "serve" at low camera angles. Those rates are tight enough that the coaching insights, your shot mix and where your leak actually is, hold up. They are not tight enough to run a match on, and we say so. These numbers move each release, which is the point of publishing them. For the pipeline behind them, [how AI tennis shot detection works](/blog/how-ai-tennis-shot-detection-works) is the long version. ## Which free option fits which player "Free" is not one decision. It depends on what you actually need detection for. - **You just want a shot count and social bragging rights.** You do not need detection. A free wrist tracker will tell you how many forehands you hit and roughly how fast you swung, and that is enough. Save the analysis for when you have a specific problem to solve. - **You are an improving club player (NTRP 3.0-4.5) who wants to know your real shot mix and where points leak.** This is exactly what automatic detection is for, and the free tier's 3 analyses per month fits the cadence. One match a week, analysed properly, beats ten watched on vibes. - **You are on Android.** Your options collapse fast. Most watch trackers and several video apps are Apple-only, so a genuinely free automatic detection tier that runs on Android is close to a category of one. - **You are a coach or you film most days.** The free cap will not hold you. Use it to confirm the detection is real on your own footage, then move to Pro (€19/month, unlimited) or Team (€49/month, 10 seats). Same detector; you pay for volume, not accuracy. - **You are not sure AI detection is worth anything.** Then the no-card free tier is the whole point. Run it on one real match and judge the labels yourself, rather than trusting my claims or a competitor's adjectives. ## FAQ **Is there a genuinely free tennis shot detection app?** Yes, but few. UNFORCE's free tier does automatic detection for €0, no card, 3 analyses a month, on iOS and Android. Most other "free" options are trials, replay tools, or wrist counters. **Why is free detection capped instead of unlimited?** GPU cost. A 60-minute match is 3 to 5 minutes of GPU time, roughly 8 to 30 cents. Three a month is where free works without an upgrade trap. "Unlimited free" usually hides an ad wall, a heuristic, or a shutdown. **How accurate is the detection?** Per-shot F1 on the current published build is about 0.92 forehand, 0.91 backhand, 0.88 serve, 0.83 slice, 0.78 volley. Full method and failure modes are on the [accuracy page](/accuracy). **How do I know a vendor's detection claim is real?** Published F1, or it did not happen. Look for a number, a described method, and a list of failure modes. Adjectives are not measurements. --- **Try it on your own match.** [Start free](/), 3 full per-shot reports a month, no card. Then read [how detection works](/features/shot-detection), check the [accuracy numbers](/accuracy) before you trust them, or see the [free-tier roundup](/blog/best-free-tennis-stat-tracker) for the app-by-app comparison. --- ### How accurate is UNFORCE? Our methodology and benchmarks URL: https://unforce.io/blog/how-accurate-is-unforce Markdown twin: https://unforce.io/blog/how-accurate-is-unforce.md # How accurate is UNFORCE? Our methodology and benchmarks Most AI tennis apps describe accuracy with adjectives. "Industry-leading." "Highly accurate." "Pro-grade." Here are numbers. This is the methodology page in blog form. It explains how we measure UNFORCE's accuracy, what the current build's numbers actually look like, and, the part nobody else seems to write, where the model fails. If you're a sceptic, this is the page that should either earn your trust or send you somewhere else. ## TL;DR: the honest version - We hand-annotate a held-out set of amateur match videos and run a regression suite against the pipeline output every release. - The script that does it lives in our GPU backend: `python scripts/compare_events.py --tolerance 5`. - Shot *detection* (was a shot hit?) is high accuracy. Shot *classification* (was it a forehand or backhand?) is slightly lower. Ball *speed* estimation from monocular phone video has a meaningful error band that we hedge explicitly. - Failure modes are concentrated in three places: dim indoor courts, heavily worn clay, and doubles. - The full per-release numbers live on [/accuracy](/accuracy). This post is the methodology behind that page. ## Why this page exists There's a [Google PAA, "How accurate is tennis ball tracking?"](https://www.google.com/search?q=tennis+ball+tracking+app), that surfaces every time someone searches for a tennis AI app. The community has been burned. Look at the [r/10s thread "Am I really serving 130 mph?"](https://www.reddit.com/r/10s/comments/xc2xc0/) or the companion [r/10s thread "my hardest serve only 66 mph?"](https://www.reddit.com/r/10s/comments/17c8ozf/), players posting the same complaint about competitor apps: the numbers don't match physical reality. The community's defence is "use it for relative comparisons, not absolute numbers." That's a fine workaround if you got the app for free. It's not a fine answer if you paid hundreds a year for a top tier. So the bar for UNFORCE's accuracy page is: publish the methodology, publish the numbers, document the failures, update per release. ## The five things we measure The pipeline ([explained in detail here](/blog/how-ai-tennis-shot-detection-works)) produces five kinds of output. Each has its own accuracy metric. ### 1. Shot-event detection **Question:** Did a shot happen at this frame? **Metric:** Precision, recall, F1, with a tolerance window. A predicted shot at frame N matches a ground-truth shot at frame M if |N − M| ≤ 5 frames (167 ms at 30 fps). The tolerance accounts for the fact that "the moment of contact" is itself a 1-2-frame ambiguity in 30-fps footage. **What we hit (current build):** high-90s F1 on clean, well-filmed singles match video. We publish the exact number on [/accuracy](/accuracy). **Why it's high:** the contact event has very strong visual signals, ball trajectory inflection, racket-arm pose, ball-to-racket distance minimum. The model has a lot to work with. **Where it fails:** very fast exchanges at the net (volley exchanges where contact-to-contact is under 250 ms can fool the de-duplication step), and shots where the player is heavily occluded by the net post. ### 2. Shot-type classification **Question:** Given that a shot happened, was it a forehand, backhand, serve, or volley? **Metric:** Per-class precision/recall/F1. We report a confusion matrix. **What we hit:** low-90s F1, with the most confusion between forehand and backhand in unusual stances (open-stance backhand, defensive forehand from the deep ad corner). Serve detection lands around 0.88 F1, a notch below forehand (~0.92) and backhand (~0.91): the pose signature is distinct, but recall takes a hit from first serves the camera misses in tight first-server angles. Volley detection is the weakest of the four because volleys are short, fast, and pose-ambiguous. **Why classification is harder than detection:** detection just needs "something happened"; classification needs to disambiguate two pose configurations that can look similar in a 2D phone-camera projection. ### 3. Bounce-event detection **Question:** Did the ball bounce at this frame, at this location? **Metric:** Frame-tolerance F1 (same 5-frame window) plus a 2D position error in metres on the court coordinate system. **What we hit:** F1 in the high-80s to low-90s, with position error typically under 30 cm on hard courts in good lighting. **Why position error matters more than detection F1 for bounces:** a bounce-event detection that's off by 30 cm at the baseline is a different line call than one off by 5 cm. We report both numbers. We do not claim Hawk-Eye precision; the [Wimbledon line-calling explainer](/blog/wimbledon-electronic-line-calling-explained) explains why. ### 4. Court-keypoint accuracy **Question:** Are the four corners and key court intersections correctly located in the frame? **Metric:** Pixel error per keypoint, averaged across the keypoint set, normalised by court width in pixels. **What we hit:** sub-1% normalised error on hard courts and most clay courts; meaningfully worse on courts with faded lines or occluding fence posts. **Why this matters:** every downstream coordinate (heatmap, line call, bounce position) inherits the court-keypoint error. A 2% court error is a 50 cm line-call error. So we measure this carefully and the threshold to even produce a report is "all four corners detected with sub-2% error." ### 5. Ball-speed estimation **Question:** What was the ball's speed at contact (or just after the bounce)? **Metric:** Mean absolute percentage error vs a radar reference. The reference set is small, we don't have radar at every shoot, but it's the only honest way to validate speed. **What we hit:** roughly 6-10% MAPE on serves filmed under recommended setup conditions; meaningfully worse on groundstrokes (the trajectory is shorter, the inferred 3D component is noisier). **Why we hedge speed estimates in the report:** because monocular speed estimation from a phone camera has a structural error band that no amount of model improvement collapses to zero. We have an entire post on this, [Why your serve speed reading might not be 130 mph (or 66 mph)](/blog/serve-speed-reading-explained), because the community has been mis-sold on this for years. ## How the regression suite actually runs This is the bit most "we tested it carefully" claims skip. Here's the literal command: ```bash cd unforce-gpu-backend python scripts/compare_events.py \ games/tennis/data/match/sample_match_1min_720p.mp4.annotations_update.json \ output/sample_match_1min_720p \ --tolerance 5 ``` It reads a hand-annotated JSON of every event in a video, runs the pipeline output through a temporal-matching algorithm with the specified frame tolerance, and prints precision/recall/F1 per event type plus a confusion matrix for shot types. We run this on every release, against a held-out test set the model never sees in training. The annotation files come from unforce-annotate, the internal desktop tool we built for frame-level annotation. Coaches who use it produce `.annotations.json` files that feed the training set on opt-in; the held-out test set is a separately curated subset that's never seen training. ## How we built the test set A test set is only as good as its representativeness. Ours covers: - **Surfaces:** hard, clay, indoor hard. (Grass and carpet under-represented; flagged on /accuracy.) - **Levels:** NTRP 3.0-4.5 amateur play (our actual users), with a smaller validation slice on 4.5-5.0 to catch over-fitting to lower-level pose distributions. - **Camera positions:** all the recommended setups in [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match), plus deliberately bad setups (off-axis, too low, too far) so we can characterise the degradation. - **Lighting conditions:** outdoor sunny, outdoor overcast, outdoor floodlit evening, indoor LED-bright, indoor fluorescent-dim. The dim-fluorescent slice is where the ball detector struggles, and we report that separately so a buyer can decide. - **Match formats:** singles dominant; small doubles slice with separate metrics. We are deliberately *not* using broadcast TV footage in the test set. Broadcast footage is cleaner than what amateurs film. Reporting accuracy on broadcast footage is the apples-to-oranges error every legacy system makes. Our test set is phone footage, and our accuracy claims apply to phone footage. ## Where the pipeline fails (in priority order) Honest section. If you read nothing else, read this: 1. **Dim indoor halls with low-frequency fluorescent lighting.** Ball detector loses contrast on the ball; the trajectory becomes intermittent; downstream events get noisy. Mitigation: use a phone with good low-light performance (recent flagships do better than budget phones here). 2. **Heavily worn clay courts.** Court keypoint detection breaks when lines are faded or partially covered. Mitigation: brush the lines before recording. We're working on a "low-line-confidence" mode that uses a coarser court estimate. 3. **Doubles.** Singles is the supported path. In doubles, two players on one side can confuse the shot-classifier's "which player hit this?" assignment. We're explicit about this on [/use-cases/club-players](/use-cases/club-players). 4. **Off-axis camera setups.** A camera tilted more than ~30° off the centreline of the baseline degrades court-keypoint detection. The fix is the setup guide. 5. **Sub-30 fps phone video.** Frame-rate matters. 30 fps is the floor; 60 fps is materially better; 24 fps will produce missed contact frames on fast shots. This list will look different in 12 months. It looks like this today. The /accuracy page has the dated changelog. ## What we don't measure (yet) A few things we would like to publish numbers for and don't yet: - **Spin estimation accuracy.** Spin is shown in the report but the validation infrastructure is younger than the rest. We haven't earned the right to publish a tight number. - **Stroke-quality calibration.** "How well does our pose-based score correlate with a coach's manual assessment?" requires a coach-labelled test set we're still building. - **Long-form stamina/fatigue effects within a match.** Currently treated as out-of-scope. When we have these, we'll publish them on [/accuracy](/accuracy) and add them to the regression suite. ## What this means for you If you're an NTRP 3.0-4.5 amateur filming on a recent phone with a reasonable setup on a hard or well-maintained clay court, the modal UNFORCE user, the pipeline will produce a report whose shot detection, shot type, heatmap, and stroke-quality score you can trust to a meaningful degree. The serve-speed and spin numbers come with an error band; treat them as relative measures over time, not absolute truth. If you're filming in a dim indoor hall on faded clay during a doubles match, every stage of the pipeline is at the edge of its competence, and the report will reflect that. We'll show you the lower confidence rather than hide it. The methodology is here. The numbers are on [/accuracy](/accuracy). The comparison to alternatives is on [/compare/swingvision](/compare/swingvision). If after reading all three you still want to try it on your own video, [the free tier is here](/). --- **Related reading:** [How AI tennis shot detection actually works](/blog/how-ai-tennis-shot-detection-works) is the technical companion to this page. [Why your serve speed reading might not be 130 mph](/blog/serve-speed-reading-explained) is the deep-dive on Stage 5 of the pipeline. --- ### How AI tennis shot detection actually works URL: https://unforce.io/blog/how-ai-tennis-shot-detection-works Markdown twin: https://unforce.io/blog/how-ai-tennis-shot-detection-works.md # How AI tennis shot detection actually works You film a tennis match on your phone. You upload the video. Five minutes later, an app sends you back a PDF that says you hit 142 forehands, 67 backhands, 14 serves, with a heatmap of where each one bounced and a stroke-quality score per shot. How? This post is the honest, plain-English walkthrough of that pipeline. No marketing fog. We'll go through the five stages, ball detection, court keypoints, player + pose, bounce/shot classification, and stroke-quality scoring, explain what each does, what it gets right, and where it fails. ## TL;DR: five stages in a sentence each 1. **Ball detection**, a TrackNet-style neural network finds the tennis ball in every frame, even at motion-blurred 80+ mph. 2. **Court keypoint detection**, a separate model finds the lines and corners of the court, so the system has a 2D coordinate system to map shots into. 3. **Player detection + pose**, FasterRCNN finds the players' bounding boxes; MediaPipe pose extracts 33 body keypoints per player per frame. 4. **Bounce + shot classification**, a CatBoost classifier looks at the ball trajectory plus the player's pose at contact and decides "that was a forehand," "that was a serve," "that was a bounce on the baseline." 5. **Stroke-quality scoring**, the pose features at each detected shot are scored against a reference distribution of well-executed shots. The rest of this post is the long version of each step, with what each one fails at. ## Stage 1: Ball detection (TrackNet) If there's one thing tennis video analysis lives or dies on, it's ball tracking. A tennis ball is small (6.7 cm), fast (an amateur serve hits 70-90 mph; a clean forehand drives at 50-70 mph), and motion-blurred to a streak in any phone-camera recording shot at 30 fps. Standard object detectors, YOLO, FasterRCNN, the things you'd reach for to find a person in a frame, miss the ball most of the time. They were trained on objects with rigid edges and clear feature points. A tennis ball mid-flight is a yellow smudge. [TrackNet](https://arxiv.org/abs/1907.03698) is the open-source architecture that solved this. It was built specifically for tracking small high-speed objects in sports video. Instead of returning a bounding box, it outputs a probability heatmap over the frame, "the ball is most likely *here*, with this confidence." Crucially, it takes three consecutive frames as input, so it has motion context: the ball isn't just a yellow blob, it's a yellow blob that *moved this way last frame*. That trajectory prior is what makes it work on motion blur. UNFORCE uses a TrackNet-derived model. We don't claim to have invented it; the open-source heritage is real and we link to it. What we did do is retrain it on a much larger dataset of phone-recorded amateur matches, the public TrackNet weights were tuned on broadcast TV footage, which has cleaner contrast, controlled lighting, and a fixed camera. Phone footage is dirtier. The retrained model is what runs in production. **What it fails at:** very low-contrast scenes (dim indoor courts, late-evening outdoor sessions), and balls partially occluded by the net or a player's body. The "How accurate is tennis ball tracking?" Google PAA exists for a reason, [search the question yourself](https://www.google.com/search?q=tennis+ball+tracking+app) and you'll find a community that's been burned by overclaims. ## Stage 2: Court keypoint detection The ball's position in the frame is meaningless on its own. You need a coordinate system, *where on the court* did this happen. That's what court keypoint detection does. The system locates the corners and key intersections of the tennis court, baseline corners, service line corners, centre service mark, net posts. Once those points are pinned in the frame, a homography transform converts any pixel coordinate into a real-world court coordinate (in metres, relative to the court). Now "the ball bounced at frame 4,213" becomes "the ball bounced 1.2 metres inside the baseline, 0.8 metres from the sideline." Without this, you don't have a heatmap, you don't have line calls, and you don't have any way to say "this serve landed in the deuce box." Court keypoint detection is the unglamorous step that makes the report make sense. **What it fails at:** courts with faded or covered lines (heavily worn clay, courts with snow patches, courts where the singles sticks are missing on a doubles court being used for singles). It also struggles when the camera is tilted off-axis from the baseline by more than ~30°. If you set the camera up correctly, see [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match), this stage is rarely the bottleneck. ## Stage 3: Player detection + pose Now we know where the ball is and where the court is. We need to know where the *players* are and what their bodies are doing. Player detection runs FasterRCNN, a standard, well-understood object detector, on each frame to find the people. This is the easy part: humans on a tennis court are big, distinct objects against a high-contrast background. FasterRCNN nails it. The harder part is pose. Once we have a bounding box around each player, we run [MediaPipe's pose model](https://developers.google.com/mediapipe/solutions/vision/pose_landmarker) inside that box to extract 33 body keypoints, head, shoulders, elbows, wrists, hips, knees, ankles, and foot points. MediaPipe is Google's open-source pose framework; it runs fast, it's accurate enough for tennis-scale movements, and it gives us the per-frame skeleton we need for the rest of the pipeline. The pose is what separates AI tennis analysis from "AI ball tracking." Without pose, you can tell where shots land but not what *kind* of shot was hit, and you can't say anything about technique. Pose is the signal that makes coaching tips possible. **What it fails at:** when the player is heavily occluded (the net pole crossing their torso, another player walking through the frame in doubles), or when the camera is so far away that the player is fewer than ~80 pixels tall. Phone cameras at standard fence-mount distance handle this fine; cameras placed in a stadium upper deck do not. ## Stage 4: Bounce + shot classification (CatBoost + pose features) This is where the pieces come together. We have the ball trajectory (Stage 1), the court coordinates (Stage 2), and the player pose at every frame (Stage 3). The classifier's job is to look at those signals and label every event: - **Bounce events:** the moment the ball hits the court. Used for line calls and the heatmap. - **Shot events:** the moment a player makes contact with the ball. Used for shot counts and stroke-quality. - **Shot type:** forehand, backhand, serve, volley. Each requires a different combination of ball-trajectory features and pose features. The classifier is [CatBoost](https://catboost.ai/), a gradient-boosted decision tree library. We chose it over a deep neural network for two reasons: it's fast (the entire classification stage runs in seconds on a GPU), and it's interpretable (we can ask "why did you call this a backhand?" and get a feature-importance answer). For a system where we want to publish accuracy methodology and explain failures, interpretability matters. The features that go in: ball trajectory derivatives (velocity, acceleration, height profile), distance from each player's racket-side wrist to the ball at the candidate contact frame, hip-shoulder rotation angle, foot stance, and a few more. The model was trained on tens of thousands of hand-labelled shots from amateur match footage. **What it fails at:** doubles, where two players on one side of the court can confuse "which shot belonged to whom." Low-frame-rate video (sub-30 fps) where the ball-contact frame is genuinely missing. And shots that legitimately exist between categories, the "tweener" or the "between-the-legs return", get classified as the closest standard shot type, which is honest but imperfect. ## Stage 5: Stroke-quality scoring The final stage is the one that produces a coaching tip rather than a stat. For each detected shot, we score the player's pose at contact (and a few frames before and after) against a reference distribution of well-executed shots of the same type. The score is decomposed by component: - **Preparation**, racket take-back, hip rotation, weight transfer. - **Contact**, body position relative to the ball, racket-face angle estimate. - **Follow-through**, racket finish, rotation completion, balance. This isn't "AI says you're a 4.2 player." It's "your forehand contact-point distribution is 12 cm late on average compared to the reference; here's what that tends to cause." The score is a discussion starter, not a verdict, and we say so on every report. **What it fails at:** non-classical techniques (extreme grip styles, deliberate technical choices that work for the player but score lower against an ATP/WTA-baseline reference). A coach who is intentionally building a player with non-textbook mechanics will see a lower stroke-quality score for shots that are, by their assessment, fine. We document this on the [stroke-quality feature page](/features/stroke-quality) and in the FAQ on every report. ## Where the pipeline fails (the honest section) If you only read one section, read this. AI tennis tools have a credibility problem because most of them oversell. Here is where UNFORCE's pipeline fails today, in order of how often we see it: 1. **Indoor courts with insufficient lighting.** The ball detector needs contrast. Domes with bright LED arrays are fine; older indoor halls with yellowing fluorescents are hard. 2. **Heavily worn clay.** The court keypoint model needs visible lines. Faded clay confuses Stage 2 and cascades into bad coordinate mapping for Stages 4 and 5. 3. **Doubles.** Stage 4 (shot classification) was primarily trained on singles. Doubles works for shot detection on the player you're tracking, but the heatmap is calibrated to a singles court layout. 4. **Phone camera placement that violates the setup guide.** If the camera is too low, too high, or too far off-axis, every downstream stage degrades. Most of the bad-report support tickets we get are setup, not algorithm. The full failure-mode catalogue is on [/accuracy](/accuracy), with example frames. ## How we measure all of this The GPU pipeline lives in our `unforce-gpu-backend` project, and we run regression tests against hand-annotated match files using `python scripts/compare_events.py --tolerance 5`. Every release, the script outputs precision/recall/F1 by event type. We publish the current numbers on [/accuracy](/accuracy) and update them per release. No invented numbers, no "industry-leading" without a citation. If you want the numbers, that page has them. ## What this all adds up to Five stages, each doing a job that none of the others can: TrackNet finds the ball, court detection gives us coordinates, FasterRCNN + MediaPipe finds the players and their bodies, CatBoost classifies the events, and the stroke-quality scorer translates pose into a coaching artefact. The output is a PDF that tells you *what happened, where it happened, and how cleanly it was hit*, the three things a club player needs and a phone-camera-only setup can deliver. If you've made it this far, you probably want to either see how this compares to other apps, [/compare/swingvision](/compare/swingvision) is the honest version, or try the pipeline on your own video. Both work. --- **Next:** [How accurate is UNFORCE? Our methodology and benchmarks](/blog/how-accurate-is-unforce) walks through the regression suite and what the current build's numbers actually look like. Or head to [/how-it-works](/how-it-works) for the visual version of this page. --- ### How to record your serve for analysis (solo, no tripod follow) URL: https://unforce.io/blog/how-to-record-tennis-serve Markdown twin: https://unforce.io/blog/how-to-record-tennis-serve.md # How to record your serve for analysis (solo, no tripod follow) A common Quora question asks the best way to record yourself while you practise your tennis serve. The answers are mostly variations of "tripod, behind you, hit record." Mostly correct. There are a few specifics that matter. This post covers the right way to film your serve solo, for UNFORCE analysis, for your own technique review, or both, without a partner, without a follow-tracking camera, and without overthinking it. ## TL;DR - Phone on a fence clip or tripod, **behind the baseline you're serving from, centred**, at net-tape height (3 to 4 feet). - 1080p / 60 fps if your phone supports it. - Hit a basket of 30-50 first serves, then 30-50 second serves. - Upload the video. The UNFORCE pipeline finds each serve, tags it as first or second by your serve location, and produces the per-serve breakdown. The whole thing takes 25 minutes including the basket of balls. ## What you need - **A basket of balls.** 50-100 minimum. If you only have a hopper of 30, plan to walk around picking up between sets. - **Your phone.** Same one you'd use for match recording. - **A fence-mount clip OR a tripod.** Same gear list as the [$30 setup post](/blog/30-dollar-tennis-recording-setup). Fence-mount is faster. - **Optional: a target.** A cone in the deuce-T corner, a cone wide on ad. Not necessary, but if you're working on placement specifically, two cones turn a serve session into a structured drill. - **Optional: a portable battery.** For a 25-minute session your phone won't die, but if you're chaining a serve session with a hitting session, charge. ## Where to put the camera The placement spec is identical to the match-recording spec ([full guide here](/blog/camera-angle-tennis-ai)). For serves specifically: **Behind your serving baseline, centred.** That's it. The reason this position works for serve filming: - It catches your motion in **half-profile**, you'd see your right side as a right-handed server. You can see your toss arm, your back-leg push, your contact point, your follow-through. All the technique-relevant body parts are visible. - It catches the **bounce in the service box**, both the deuce side and ad side. So you get placement data per serve. - It catches the **opponent's return zone**, which doesn't matter for solo serve practice, but is useful if you transition to a hitting partner mid-session. A common mistake is filming from the **side** (clipped to the singles sideline fence, perpendicular to your serving direction). This gives a great profile view of your motion, but the court keypoint detector can't recover useful homography from a side-on view, and the AI report degrades to "we see your shots, but we can't tell where they bounced." If you only want technique review by eye, side-on works fine. If you want UNFORCE's per-serve breakdown, behind-baseline-centred is the correct answer. ## How long, how many serves A focused serve session is typically 20-30 minutes of actual hitting. Within that: **Warm-up (5 minutes, not recorded if you want to save time):** Easy serves at 50-60% pace. Don't analyse these; they're not your real serve. **Block 1, first serves (8-10 minutes, recorded):** 30-50 first serves, all to the deuce side or all to the ad side, then the other side. Don't mix in second serves. The cleanest data comes from one shot type at a time. Your serve placement target should be narrow, wide deuce, T deuce, body deuce, not "anywhere in the box." **Block 2, second serves (8-10 minutes, recorded):** 30-50 second serves. Spin variety is the point at this level. Kicker, slice, flat with topspin. Mix sides. **Cool-down (3 minutes):** A few easy serves to finish on a comfortable rep. Doesn't need to be recorded. If you want to chain a serve session with practice points or a rally session afterward, the camera setup is *already correct* for match-style filming. Just keep the camera running through the transition. ## What the UNFORCE report shows from a serve session Upload the recorded video. The pipeline detects each serve, classifies it, and produces a session report that includes: - **Total serve count** by first vs second. - **Speed estimate** per serve, with the [confidence band](/blog/serve-speed-reading-explained). - **Placement heatmap**, where each serve bounced in the box, deuce vs ad, broken down by first/second. - **Stroke-quality score** per serve and an aggregate. - **Fault rate**, how many serves missed long, wide, or in the net. - **Trend chart**, if you've recorded previous serve sessions, your week-over-week pattern. The "fault rate" and "placement heatmap" are the high-leverage numbers for most amateurs. Speed is a vanity metric that you should treat as a [trend, not an absolute](/blog/serve-speed-reading-explained). ## Common mistakes (and the fix) A few things we see in user-uploaded serve sessions that hurt the report: ### 1. Filming from inside the court A surprising number of users mount the phone at the net post or on the singles sideline, thinking that's a "good profile shot." It's not, the court keypoint detection breaks down because the court is partially behind the camera. **Fix:** behind the baseline, every time. ### 2. Filming with auto-tracking on (Pivo, OBSBOT, etc.) Auto-tracking cameras follow you around. Wrong for serve analysis, every time the camera pans, the court coordinates have to be re-estimated, and the homography drifts. **Fix:** turn off any auto-tracking. Fixed camera. Full court in frame. ### 3. Filming for too long A 90-minute serve session that's actually 20 minutes of serving and 70 minutes of ball-pickup creates a huge video file with mostly empty time. The UNFORCE pipeline can handle it, but you're uploading a lot of irrelevant footage. **Fix:** stop recording during long ball-pickup phases. You can easily restart. ### 4. Mixing in groundstrokes If you serve a few, then rally a few, then serve again, the report sees you serving 14 times in a 60-minute session and the speed/placement aggregates are noisy. **Fix:** dedicated serve session is the cleanest data. If you mix, accept that the report's serve aggregates are diluted. ### 5. Filming straight at yourself from the opposite baseline Workable for technique review by eye, but the camera can't see the bounce of your serve clearly (it's coming toward the camera, not landing in the camera's field of view). **Fix:** stick with behind-your-own-baseline. ## What to do with the resulting video Two paths: **Path 1: UNFORCE analysis.** Upload, get the report, read it. The serve-specific feature page is at [/features/shot-detection](/features/shot-detection). **Path 2: Your own eye.** Watch your serves at 0.25× speed in your phone's video player. This is genuinely valuable in addition to AI analysis, the eye catches things ("I'm pulling my head down too early") that an AI report doesn't yet quantify. The Quora ["watching recordings improve your skills"](https://www.quora.com/Will-watching-recordings-of-yourself-playing-tennis-improve-your-skills) thread has community consensus that it works. The two paths are complementary, not exclusive. The UNFORCE report tells you *what's happening at a population level* (your toss height is X cm above the reference distribution; your contact point is 3% later than the reference); your own eye tells you *what to feel different next session*. Use both. ## A specific 4-week solo serve protocol If you're committed enough to do this for a month, here's the loop we've seen work: - **Week 1:** Baseline session. Record. Read the report. Pick the one biggest leak (usually fault rate on second serve, or wide-vs-T balance on first). - **Week 2:** Same session structure, working on the leak. Record. Compare to week 1's numbers. - **Week 3:** Same. Compare to weeks 1 and 2. - **Week 4:** Compare across all four. The trend chart is what to look at, not any single session. This is the [4-week self-coaching workflow](/blog/4-week-self-coaching-workflow) applied to serves specifically. It works. Most amateurs don't do it because it requires showing up alone with a basket of balls four weeks in a row, which is more discipline than most have. If you do it, you'll move materially. --- **Related:** [The right camera angle and height for AI shot detection](/blog/camera-angle-tennis-ai) is the placement deep-dive. [Why your serve speed reading might not be 130 mph](/blog/serve-speed-reading-explained) is the post you need before you over-react to your speed numbers. Or [/features/shot-detection](/features/shot-detection) for the product view. --- ### Indoor courts and AI tennis analysis: what to know URL: https://unforce.io/blog/indoor-tennis-ai-analysis Markdown twin: https://unforce.io/blog/indoor-tennis-ai-analysis.md # Indoor courts and AI tennis analysis: what to know Short answer: AI tennis analysis works indoors, with three small adjustments. Drop the camera frame rate from 60fps to 30fps if you see flicker. Pick the brightest court the hall has. And mount the phone where it can see the whole playing area without going through glass. That's the lot. This post is the longer version of those rules and the *why* behind each one, because indoor tennis is its own little ecosystem of recording problems that don't apply outdoors. ## TL;DR 1. **Switch to 30fps if the live preview shows flicker bands.** 60fps + ceiling fluorescents = banding. 2. **Pick the brightest court available.** 500+ lux at court surface is the comfort zone. 3. **Mount inside the hall, not behind glass.** Glass walls cost you accuracy. 4. **Camera height the same as outdoor: 6-10 ft, behind the baseline.** Watch for low ceilings if you have lobbing players. 5. **Expect ~2-4 F1 points lower shot detection vs a sunlit outdoor hard court.** Mostly from the lighting trade-off. ## What "indoor" actually means for the camera Indoor tennis means three things to a phone camera: - **Less light, in a fixed amount.** Outdoor on a sunny day is 50,000-80,000 lux. A well-lit indoor hall is 500-800 lux. That's a hundred-fold drop in available photons. The phone compensates by opening the aperture (already at maximum on a phone), raising ISO (which adds noise), and lengthening exposure (which adds motion blur). - **Artificial light flicker.** Almost all overhead lighting in indoor tennis halls is fluorescent or LED running off mains AC, 50 Hz in Europe, 60 Hz in the US. The light brightness oscillates at 100/120 Hz. A camera shooting 60fps in a 50 Hz country sees rolling brightness bands across the frame. This is the same reason your monitor looks weird in a phone video. - **Ceiling occlusion.** Most halls have a ceiling at 8-10 m. High lobs and ceiling-grazing topspin serves can briefly leave the visible space the camera sees, depending on phone position. None of those are catastrophic on their own. Collectively, they cost a few accuracy points if you film the same way you'd film outdoors. The fixes are straightforward. ## Fix 1: drop the frame rate to 30fps if you see flicker This is the single biggest indoor-specific adjustment. For outdoor filming, we've recommended 60fps elsewhere ([the filming guide](/how-to/film-your-tennis-match) covers it in detail) because faster ball capture meaningfully helps tracking on a fast serve. Indoor, this trade-off flips. 60fps recording in a 50 Hz lighting environment produces visible rolling banding, bright and dark stripes that scroll up the frame at a rate determined by the difference between mains frequency and shutter rate. That banding hurts ball detection. The ball is small relative to a banding stripe; when the ball passes through a dark stripe, the detector sometimes loses it for two or three frames. Cumulatively, that's a meaningful hit on bounce localisation. The fix is to shoot at 30fps, which evenly divides the 100/120 Hz light flicker and produces a flat (non-banded) frame. You lose half the frames per second of ball-position data, but you avoid the banding entirely, which is a net win indoors. How to do this: - **iOS:** Camera app → Video → 1080p HD at 30 fps (long-press to change between resolution and frame rate). - **Android:** Camera → Settings → Video size → 1080p 30fps (varies slightly by manufacturer). Some halls run on DC-driven LED arrays that don't flicker; in those, you can keep 60fps. The way to tell is to point your phone at the lights at 60fps and see if you see banding in the preview. No banding = use 60. Banding = use 30. ## Fix 2: pick the brightest court Indoor halls are usually multi-court, and the lighting is rarely uniform across the building. The court closest to the entry doors might be 600 lux while the back court (where the lights are older or partially out) is 350 lux. That difference matters for AI analysis. The TrackNet ball detector that UNFORCE uses is broadly trained on a range of lighting conditions, but below ~300 lux at court surface, accuracy noticeably drops because the phone camera's exposure time grows to the point that fast-moving balls become smears rather than crisp circles. Practical heuristic: if the court *feels* bright to play on (you can see clear ball seams, no squinting), you're fine. If it feels gloomy, the report will be gloomy. If your hall has a choice of courts, pick a brighter one. A €15 lux meter (or a smartphone lux app) gives you a number. 500 lux+ is the comfort zone. Below 250 lux, the phone is doing too much heavy lifting and the report quality suffers. ## Fix 3: mount inside the hall, not behind glass Many modern indoor tennis halls have viewing galleries with glass walls. It's tempting to mount the phone in the gallery, easy access, no risk of disrupting play. Don't. Glass walls cause four problems for AI analysis: - **Reflections** of overhead lights into the camera lens, which the ball detector misreads as moving objects. - **Double images** from the inner and outer glass surfaces (especially on double-glazed walls), which the court detector reads as duplicate lines. - **Contrast loss** from light scattering through any imperfect glass, the model gets a lower-contrast version of the same scene. - **Geometric distortion** from non-perfectly-flat glass, which warps court keypoints. If you absolutely must shoot through glass: clean it thoroughly on both sides, push the phone lens *directly* against the glass with zero gap (this defeats most reflection issues), and expect 5-8 F1 points of accuracy loss vs the same shot from inside the hall. The better option is to bring a tripod into the playing area itself, place it 6-10 ft behind the baseline of an unused court next to yours, weighted at the base. Most halls allow this in the back rows of court space. ## A note on hall ceiling height This one only matters if you (or your opponent) hit high lobs or ceiling-grazing kick serves. If your hall ceiling is at 9-10 m+ (most modern halls), you're fine, the phone camera has enough vertical frame to capture a regulation lob at any height. If your hall is converted from a warehouse or church (it happens, especially in older European clubs) and the ceiling is at 6-7 m, the phone camera at 7 ft of height looking slightly down has a vertical field of view that may not capture peak lob height. The fix, if this matters to your game: drop the camera to 5-6 ft of height (a hair below the recommended outdoor minimum, but workable indoor) so the camera tilts up slightly more. You'll get the full lob in frame at the cost of a slightly more compressed court view. For most rec players hitting waist-to-shoulder-height topspin, this never comes up. ## What about ceiling-mounted court cameras? Some high-end indoor facilities have permanent overhead cameras. Baseline Vision sells a roughly €1,800 hardware camera (per [TennisLeo's review](https://www.tennisleo.com/baseline-vision-review/)), and PlaySight has had SmartCourt installations in some indoor halls, though its facility footprint has shifted with well-publicized business changes, so verify current availability. If your facility has one, use it; the angle and lighting are tuned for AI analysis, and the per-shot accuracy is meaningfully higher than any phone setup. For everyone else (the 99% of indoor tennis), a phone on a tripod works. We compare the phone-vs-facility tier in [UNFORCE vs SwingVision: the honest 2026 comparison](/compare/swingvision). ## How much accuracy do you lose indoors? On the UNFORCE internal benchmark, indoor hard courts come in **roughly 2-4 F1 points lower** than outdoor sunlit hard courts for shot detection, most of the gap from the lighting/exposure trade-off, a smaller portion from occasional ceiling-occlusion misses on lobs. That's a smaller penalty than clay (which we cover in [filming on clay courts](/blog/tennis-ai-clay-courts)) and a much smaller penalty than filming through glass. Stroke-quality scoring is essentially unaffected by surface or lighting. The pose model is robust to changes in light level as long as the player is visible at all. Court heatmap accuracy is mildly affected because of the bounce-localisation issue. Net effect: indoor tennis is fine for AI analysis. The hall does most of the work for you (no wind, no rain, no glare), and the lighting trade-offs are manageable with the three fixes above. ## The biggest single lever: light it well, mount it right If we had to give one piece of indoor advice, it would be: **pick the brightest court your hall has, mount the phone above net height inside the playing area, and check the live preview for flicker before you hit record.** Those three things are the difference between a clean report and a frustrating one. Everything else in the AI tennis pipeline is robust to indoor conditions. [Shot detection](/features/shot-detection), bounce classification, stroke-quality scoring, all work fine indoors. Court detection is the only model that occasionally has trouble, and that's almost always solved by adjusting the camera position. If you're a club player setting up your first indoor session with UNFORCE, the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) walks through the upload flow. If you're trying to decide whether UNFORCE or SwingVision is the right indoor tool for you, the [SwingVision comparison](/compare/swingvision) is the page to read next. --- ### What's the minimum phone for AI tennis analysis? URL: https://unforce.io/blog/minimum-phone-for-tennis-ai Markdown twin: https://unforce.io/blog/minimum-phone-for-tennis-ai.md The short answer is: any phone you bought after 2019 is probably fine. The detailed answer matters because tennis recording is hard on a phone, long continuous video capture, high data rates, hot weather, big files at the end. A phone that's "good enough for everyday" can become "the recording stopped at minute 38" on a court. Below: the practical minimum specs for UNFORCE (and any tennis-AI app), specific phone models that clear the bar, what fails, and what to skip if you're shopping. None of this is a marketing flex, these are the constraints I see in our error logs. ## TL;DR - **iOS:** iPhone 11 or newer. iOS 14+. - **Android:** Pixel 5+, Galaxy S10+, OnePlus 8+, comparable era. Android 11+. - **Camera:** 1080p at 30 fps minimum. - **Storage:** 2 GB free per match (more if 4K, but don't shoot 4K). - **Battery:** ≥3500 mAh or a power bank. - **Network:** 4G/LTE for casual; Wi-Fi for upload. ## What "minimum" really means A phone has to do four jobs for tennis AI: 1. **Record stably for 60-120 minutes.** Long continuous capture without thermal throttling. 2. **Capture clean 1080p video.** A modern AI pipeline can fix a lot, but it can't fix a smeary low-light sensor. 3. **Hold enough storage** for the video plus the OS overhead. 4. **Upload reliably.** Background-task support, decent radio, modern OS. Any phone meeting the floor below clears all four. Older or budget phones often fail on (1), thermal throttling, or (3), full storage halts the recording. ## The floor: iOS **iPhone 11 / 11 Pro / 11 Pro Max (2019).** Rear camera shoots 1080p/30 fps cleanly. iOS 14+ supported. Battery is the weakest link on the standard 11; bring a power bank for matches over 75 minutes. **iPhone SE (2nd gen, 2020).** Works. Smaller battery; expect to charge between sets. **iPhone 12 and newer.** Comfortably above the bar. Standard recommendation. **Below the bar:** iPhone X, XS, XR. They can record, but iOS 17/18 isn't fully supported on the older units, and the UNFORCE iOS app's minimum is iOS 14, the X family is on iOS 16 max for some, and the camera pipeline is older. We see crashes and dropped frames on these models. ## The floor: Android **Pixel 5 (2020).** Solid baseline. Pixel cameras are well-tuned for daylight 1080p. Android 11+. **Samsung Galaxy S10 / S10+ (2019).** Works. Camera is good; the Exynos vs Snapdragon split is a wash for video. **OnePlus 8 / 8 Pro (2020).** Works. **Pixel 6, 7, 8 / Galaxy S20 onwards.** Comfortably above the bar. **Below the bar:** Samsung A-series phones from before 2021, budget Xiaomi/Realme phones with sub-flagship cameras. The UNFORCE app installs and runs, but the recording quality and thermal behaviour produce poorer analysis. Not a hard block, a soft warning. The forum thread "[Will SwingVision still work with an Android?](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/)" has Android users describing similar pain on older mid-range phones, the issue is universal, not app-specific. ## Camera details that actually matter **Resolution.** 1080p at 30 fps. Period. Higher resolutions don't help the AI; they just make files bigger. 60 fps does help marginally for serve speed, but at the cost of doubling the file size, usually not worth it. **Lens.** The standard wide camera (1x) is the right one. Don't use the ultra-wide, court geometry distorts and shot localization gets less accurate. Don't use the telephoto, you lose the corners of the court. **Stabilization.** OIS (optical image stabilization) helps. EIS (electronic) helps a bit too. Most flagships from 2019+ have one or both. **Auto-exposure.** Modern phones lock auto-exposure on a moving subject, good. Cheaper phones hunt, bad. If you see the brightness pulsing during playback, the camera is hunting. ## Storage A 90-minute 1080p video is roughly 4-6 GB. Leave 2 GB headroom for OS overhead and the chance of a longer match. If you're at 99% storage, the recording will fail. Two practices: - **Clear last session before recording new.** Habit. Open Photos, delete the file you've already uploaded. - **Keep the phone at <80% full** if you record more than once a week. ## Battery Quick reference for 90-minute 1080p continuous record: | Phone | Approx drain | |---|---| | iPhone 14 Pro / 15 / 16 | 25-30% | | iPhone 11 / 12 | 35-45% | | Pixel 8 / Galaxy S23 | 25-35% | | Pixel 5 / Galaxy S10 | 40-50% | | iPhone SE 2 | 50-60% | If you start at 100%, almost any qualifying phone will get through one match. If you're recording back-to-back sessions, bring a power bank, see the [equipment list for filming a tennis match in 2026](/blog/tennis-match-filming-equipment-2026). ## Network The upload is where users feel the pain. A 5 GB video over a 50 Mbps Wi-Fi takes about 13 minutes. Over 4G LTE, it can take 30-60 minutes and burn through a daily data cap. Over Wi-Fi at home, it's a non-event. The UNFORCE Android and iOS apps use Firebase Storage with chunked, resumable uploads, a dropped connection mid-upload picks up where it left off. SwingVision and other apps have similar resume support. The right rule is still "wait until you're home and on Wi-Fi." ## What about Apple Watch? If you've heard that SwingVision pairs with an Apple Watch for line-calling, the question is whether you need one for *UNFORCE*. Answer: no. UNFORCE does not use the Apple Watch, analysis is video-only and the workflow runs on the phone alone. (If you want the watch-side line-calling feature specifically, that's still a SwingVision-only thing today; we cover the trade-off in [UNFORCE vs SwingVision](/compare/swingvision).) ## What about Android tablets / iPads for recording? Don't. Tablets can record, but their cameras lag behind the phone you already own from the same year. They're heavy on a tripod and prone to wind issues. Use a phone for recording, and use a tablet for the post-match review (the [PDF coaching report](/features/coaching-report) reads great on an iPad). ## What about GoPro / DSLR / dedicated cameras? This deserves its own post. For the minimum-phone question: UNFORCE currently accepts video uploaded *from* a phone, where the phone has captured the original. If you've shot on a GoPro and offloaded to a phone, you can upload from there too, but the phone-camera path is the optimized one. ## The OS-version reality Both apps drift their minimum OS versions forward over time. As of early 2026: - UNFORCE iOS: minimum iOS 14, recommended iOS 16+. - UNFORCE Android: minimum Android 11, recommended Android 13+. If you're on a phone that can't update past iOS 13 / Android 10, we don't support it today, and the upgrade path is a new phone. That's the real "minimum", not the model name, but whether the OS is current enough. ## What I'd buy if I were buying today (mid-2026) For a player who isn't a phone enthusiast and just wants the cheapest viable option: - **iOS:** used iPhone 12. Around €300-€400. Comfortably above every threshold for the next 2-3 years. - **Android:** used Pixel 7 or current-gen Pixel "a" series. Around €350. Best Android camera pipeline at the price. Don't buy a phone *for* UNFORCE. Buy a phone that's good enough for everyday and use it for UNFORCE. That's the whole budget answer. ## Related reading - [The full equipment list for filming a tennis match in 2026](/blog/tennis-match-filming-equipment-2026), phone is one piece. - [how to film your match](/how-to/film-your-tennis-match), phone settings during recording. - [UNFORCE's accuracy methodology](/accuracy), how phone quality affects results. --- ### The real serve speed for an NTRP 3.5 player (data from real sessions) URL: https://unforce.io/blog/ntrp-3-5-real-serve-speed Markdown twin: https://unforce.io/blog/ntrp-3-5-real-serve-speed.md # The real serve speed for an NTRP 3.5 player (data from real sessions) Google PAA: ["How fast does a 3.5 tennis player serve?"](https://www.google.com/search?q=tennis+serve+speed+app). It's one of the most common questions in the amateur-tennis SERPs, and most of the answers are clickbait, "depends on the player" or "varies widely" without a concrete range. Here's a concrete range, with the caveats it deserves. ## TL;DR - **First serve, NTRP 3.5:** typically **80-95 mph** (130-150 km/h). - **Second serve, NTRP 3.5:** typically **60-75 mph** (95-120 km/h). - These ranges come from coaching consensus, instructional sources, and observed amateur match data, they are *not* UNFORCE-internal numbers. - Individual variation is large. A "typical 3.5" doesn't really exist; the range is what most 3.5s land somewhere in. - Speed at 3.5 matters less than placement, spin, and consistency. Fix faults before chasing mph. ## Where the numbers come from Two clarifications upfront: 1. **These are not "UNFORCE data."** We don't publish per-NTRP serve-speed averages from our user base, we'd be conflating users who recorded with a centred camera with users who recorded off-axis, and the [serve-speed estimation has a real error band](/blog/serve-speed-reading-explained). Publishing those as "real numbers" would be irresponsible. The ranges in this post come from coaching consensus and community sources. 2. **They are coaching/community consensus, not a research paper.** We've cross-checked with instructional sources, USTA NTRP descriptions, and threads on r/10s and Talk Tennis. There's no peer-reviewed serve-speed-by-NTRP study (it would be a cool thesis project, if you're doing it, please email). ## The 3.5 first-serve range, in detail The 80-95 mph window covers the central mass of NTRP 3.5 first serves. Within that window, three sub-types are common: **The 92 mph "go-for-it"** A 3.5 with reasonably clean mechanics, going flat-and-hard on a percentage of first serves. Hits 92 mph on a good one, faults on perhaps 35-45% of them, and lives with a heavy second-serve dependency. The Reddit r/10s ["Am I really serving 130mph?"](https://www.reddit.com/r/10s/comments/xc2xc0/) thread has plenty of these, players whose actual first serves are in the high 80s/low 90s but whose phone app readings are wildly inflated. **The 85 mph "two-spot"** The most common 3.5 first serve. Player has two reliable placements (typically wide on deuce, T on ad, or vice-versa), serves at 80-88% of physical max, and is more interested in the placement-fault tradeoff than the mph number. This is the serve that wins league matches at this level. **The 80 mph "place it"** Tactical 3.5. Spin and placement, low fault rate, very low mph. Often a player who's been at 3.5 for years and has decided that consistency is the win condition. These players cap at 78-82 on the speed gun and don't care. ## The 3.5 second-serve range Second serves at 3.5 are where the matches are actually won and lost. The typical range, 60-75 mph, is much narrower than the first-serve range, because the dominant constraint is "must go in." A 60 mph kicker with topspin is fine; a 75 mph slice with placement is fine; a 90 mph second serve is not a 3.5 second serve, it's a first serve being hit twice. The much more important second-serve number for a 3.5 is the **fault rate**. From observed amateur match data (and a lot of conversations with club coaches): - **Strong 3.5:** second-serve fault rate ~5-8%. Double-faults are rare. - **Average 3.5:** second-serve fault rate ~10-15%. Double-fault is a real factor in close matches. - **Weak-on-second 3.5:** second-serve fault rate ~18-25%. Match-determining. If you're using a tennis AI tool, the fault rate on the report is a higher-leverage number than the mph estimate. A 3.5 who drops their second-serve fault rate from 18% to 8% will move toward 4.0 faster than one who adds 4 mph to their first. ## Comparison context To put the 3.5 numbers in perspective: | Level | First-serve typical | Second-serve typical | |---|---|---| | ATP tour average | 115-125 mph | 90-100 mph | | WTA tour average | 100-110 mph | 80-90 mph | | College D-I men | 105-120 mph | 80-90 mph | | College D-I women | 90-105 mph | 70-80 mph | | NTRP 5.0 | 100-115 mph | 75-90 mph | | NTRP 4.5 | 90-105 mph | 70-80 mph | | NTRP 4.0 | 85-100 mph | 65-80 mph | | **NTRP 3.5** | **80-95 mph** | **60-75 mph** | | NTRP 3.0 | 65-80 mph | 50-65 mph | | NTRP 2.5 | 50-65 mph | underhand-55 mph | (Ranges are rough, instructional/coaching consensus, and represent the central mass of each level. Outliers in both directions are common, a 3.5 with a former-college-player serve who plateaued tactically can hit 105 mph; a defensively-oriented 4.5 can live at 88 mph.) The interesting takeaway: a 3.5's first serve at 90 mph is *only* 25-30 mph slower than tour-average. The win-the-point gap between an amateur and a pro is much less about raw mph than the broader sports-media narrative suggests. It's about placement on the second serve, disguise, return-of-serve setup, and the rally that follows. ## What an honest tennis AI app should show you If your phone-based AI tool is showing you serve speeds *outside* the typical 80-95 mph range for a self-identified 3.5, ask yourself which is more likely: - You're an outlier 3.5 who serves at 110 mph - You're an outlier 3.5 who serves at 65 mph - The camera setup or the speed estimation has a calibration error The third option is by far the most likely. We wrote a whole post on the mechanics of how monocular phone-camera speed estimation produces these errors: [Why your serve speed reading might not be 130 mph (or 66 mph)](/blog/serve-speed-reading-explained). Both of the cited Reddit threads ([130 mph](https://www.reddit.com/r/10s/comments/xc2xc0/), [66 mph](https://www.reddit.com/r/10s/comments/17c8ozf/)) are players hitting that third option and not realising it. ## Should you work on serve speed at 3.5? Mostly, no. The high-leverage serve work at 3.5 is: 1. **Second-serve consistency.** Drop the fault rate. This wins matches. 2. **First-serve placement.** Two reliable spots beat one fast spot. 3. **Spin variety on second serve.** A reliable kicker into the body is harder to attack than any 3.5 flat. Speed comes from mechanics, leg drive, kinetic chain, racket-head speed at contact. Mechanics work is the third or fourth project. By the time you've fixed second-serve faults and added a kicker, you'll be 4.0 anyway, and your serve speed will have come along for the ride. If you record your matches with a phone-based tool, **track second-serve fault rate, not mph**. That's the number that moves your tennis. ## How to use UNFORCE for this The UNFORCE report breaks out: - First-serve speed estimate (with a confidence band) - Second-serve speed estimate (same) - First-serve placement heatmap (deuce / ad) - Second-serve placement heatmap - First-serve fault rate - Second-serve fault rate (the big one) - Per-serve stroke-quality on a sample of your serves Use the fault rates and placements as the real numbers. Use the speed as a trend over weeks. The [/features/shot-detection](/features/shot-detection) page has more detail on what the report covers; the [/accuracy](/accuracy) page has the per-metric reliability for the current build. --- **Next:** [Why your serve speed reading might not be 130 mph](/blog/serve-speed-reading-explained) is the technical companion. [How accurate is UNFORCE?](/blog/how-accurate-is-unforce) is the broader methodology page. Or jump straight to [/features/shot-detection](/features/shot-detection) if you want the feature view. --- ### Going from NTRP 3.5 to 4.0: patterns we see in user reports (not a controlled study) URL: https://unforce.io/blog/ntrp-3-5-to-4-0 Markdown twin: https://unforce.io/blog/ntrp-3-5-to-4-0.md # Going from NTRP 3.5 to 4.0: patterns we see in user reports (not a controlled study) The 3.5-to-4.0 climb is the longest plateau in amateur tennis. Most rec players who get to 3.5 stay there for years. The ones who break through to 4.0 don't usually have radically different strokes, they have the same strokes with more consistency, better second serves, and smarter shot selection under pressure. The difference is hard to feel and easy to measure. This post is the data version. Honest hedge up front: UNFORCE has user data spanning months for individual players, and we see consistent patterns. We do *not* have a multi-year controlled study with verified NTRP rating changes. The numbers below are what we'd expect to see based on our user data and what coaching literature describes, not a peer-reviewed longitudinal study. With that hedge: this is what the climb looks like in the report. ## TL;DR Three measurable things shift from 3.5 to 4.0: 1. **Rally length.** Average rally length climbs from ~3.5 shots to ~5+. The 4.0 player keeps the ball in play longer. 2. **Neutral-rally error rate.** Unforced errors on rallies that aren't under pressure drop from ~30% to ~18%. The 4.0 player isn't giving away free points. 3. **Second-serve placement variance.** The 3.5 second serve goes to one corner ~70% of the time. The 4.0 second serve spreads. Returners can't sit on a side. Stroke quality scores also shift, but slower than the count-based metrics. Consistency under pressure shows up in counts; technique shows up in slow-motion review. ## The level definitions, plain English The USTA's NTRP guidelines are the canonical definitions, but here's the working version most coaches use: **NTRP 3.5:** Has dependable strokes on the forehand and backhand. Can rally consistently at moderate pace. Has a serve that goes in. Struggles with consistency under pressure. Approaches and volleys are inconsistent. Second serve is usually a "just get it in" defensive shot. **NTRP 4.0:** Dependable strokes including controlled depth. Uses the lob, overhead, approach, and volley with some success. Can sustain rallies. Can place the serve and use first/second serve as different weapons. Knows how to construct points. Wins on consistency under pressure that the 3.5 player doesn't have. The technical gap between them is real but smaller than people think. The *consistency-under-pressure* gap is the real divider. ## What the UNFORCE report shows for a typical 3.5 Caveat: "typical" is hand-waving. Individual players vary enormously. But across the user reports we've seen for self-identified 3.5 players: - Average rally length: **3.5-4.0 shots**. - Unforced error rate (neutral rally): **25-35%**. - First-serve in: **55-65%**. - Second-serve placement: **strongly biased to one corner (60-75% of second serves to the same spot)**. - Forehand-to-backhand ratio: **65/35 to 70/30**, with backhand often being avoided. - Approach shots per match: **3-8**, with low success rate on the next shot. - Stroke-quality score (our 0-100 scale): **forehand around 60-70, backhand 5-10 points lower**. These numbers don't say a 3.5 is "bad." They describe a player who has the strokes but isn't yet using them like a 4.0 does. ## What the report shows for a typical 4.0 Same caveat. Across self-identified 4.0 user reports: - Average rally length: **5-7 shots**. - Unforced error rate (neutral rally): **15-22%**. - First-serve in: **60-70%**. - Second-serve placement: **spread across both corners, with intentional body serve mixed in (no one corner gets more than ~45% of second serves)**. - Forehand-to-backhand ratio: **closer to 55/45 to 60/40** (the backhand is in the rotation). - Approach shots per match: **8-15**, with meaningfully higher win rate on the next shot. - Stroke-quality score: **forehand 70-80, backhand 65-75, with smaller gap between the two**. The differences are visible. None are dramatic on a single shot. All compound across a match. ## What the climb actually looks like If you're a 3.5 trying to get to 4.0, here's what we'd expect to see in your reports as you progress, hedged appropriately: ### Months 1-3: Pattern recognition You start watching your reports weekly. The data confirms what your coach has been saying, your second serve always goes to one corner, you avoid your backhand, your error rate spikes at 4-4. The numbers are sobering but useful. You're now playing with a clear set of priorities instead of vague "play better." ### Months 3-6: Targeted practice You stop practicing "tennis" and start practicing the specific gaps. Your coach has you spending three weeks on second-serve placement variance. Your UNFORCE reports start showing the change, second serves are 50/50 instead of 70/30. The match results haven't shifted yet, but the *underlying capacity* has. ### Months 6-12: Match-level change The capacity becomes match performance. Your rally length climbs. Your neutral-rally error rate drops. You start winning the 4-4 deuce games you used to lose. Other players notice. Your USTA rating becomes ambiguous: you're playing 3.5 in some matches and 4.0 in others. ### Months 12+: Confirmation The level becomes consistent. You're a 4.0 in your data on most matches. Your USTA rating reflects it (or you self-rate up). Your UNFORCE reports look like the 4.0 numbers above more weeks than not. ## Important: this is not a guarantee Two reasons to read the above as "what's possible," not "what will happen": 1. **The data is descriptive, not causal.** We see players whose stats look like the 3.5 → 4.0 transition over months. We can't claim UNFORCE *caused* the transition. The same player would presumably also be improving via lessons, match volume, and reps. UNFORCE accelerated the diagnostic, not the practice. 2. **Plenty of players don't make this jump even with great data.** Tennis improvement is a function of practice volume, coaching quality, age, athletic background, and time. Data is a multiplier on those things, not a substitute. A 3.5 who hits 30 minutes a week and uploads to UNFORCE is unlikely to reach 4.0 regardless of how good the report is. The honest pitch: UNFORCE gives you a clearer picture of what to work on. The work is still on you. ## Three drills (with measurable goals) for the 3.5 If you want concrete homework, these are the three drills that map most directly to the 3.5 → 4.0 metrics: ### 1. Second-serve placement spread (10 min/session) Hit 30 second serves: 10 to the deuce-side T, 10 to the deuce-side wide, 10 to the body. Track placement accuracy in your UNFORCE practice video. **Goal:** no single placement zone gets more than 45% of second serves in your next match. ### 2. Cross-court backhand depth (15 min/session) Trade cross-court backhands with a partner. Aim for the deep third of the court. Count the streak of consecutive cross-court backhands that land in the deep third. **Goal:** a streak of 8 in match-pace conditions. ### 3. Approach-and-volley repetition (10 min/session) Coach or partner feeds short balls; you approach and finish at net. Track success rate (winner or forced error vs unforced error). **Goal:** 70% success rate over 20 reps. These map to forehand consistency and approach play, the [/blog/forehand-consistency-3-drill-plan](/blog/forehand-consistency-3-drill-plan) post has a parallel set focused on the forehand specifically. ## What we'd love to publish, eventually A real longitudinal study. Multi-year. Verified USTA ratings before and after. Controlled for lesson cadence and match volume. We're not there yet, and we won't pretend to be. If we ever publish that study, it'll be because we have the data, not because the marketing case demanded it. In the meantime, the honest pitch is: structured weekly self-review with UNFORCE surfaces the patterns that separate 3.5 from 4.0. Whether you make the jump is up to your reps. ## FAQ **What separates 3.5 from 4.0 in UNFORCE data?** Mostly consistency: rally length, neutral-rally error rate, and second-serve placement spread. **How long does the 3.5-to-4.0 jump take?** 6 months to 3+ years depending on play volume and lesson cadence. **Is this study peer-reviewed?** No. It's pattern-matched user data, framed as "what we'd expect to see," not a controlled longitudinal study. **What if I'm at the upper end of 3.5?** Focus on second-serve variance and neutral-rally errors. Those are the metrics that separate strong 3.5 from weak 4.0. **Does UNFORCE have a built-in NTRP estimate?** Not today. Self-rated by the user. Estimating NTRP from video is on our long-term roadmap but requires more verified-rating data than we currently have. --- **Try UNFORCE free**, start the diagnostic loop with one match a week. [Start free](/) · [How UNFORCE works](/how-it-works) · [Forehand consistency: a 3-drill plan](/blog/forehand-consistency-3-drill-plan) · [What changes after 10 matches](/blog/10-matches-watching-changes) --- ### OnForm for tennis? Here's why we built tennis-specific AI instead URL: https://unforce.io/blog/onform-for-tennis-why-not Markdown twin: https://unforce.io/blog/onform-for-tennis-why-not.md OnForm is a genuinely good app. The drawing tools are precise, side-by-side comparison is smooth, and the pricing is fair. If you coach golf or swim, it's probably the right pick. The reason we didn't build UNFORCE on top of OnForm, and the reason a tennis coach won't be fully served by it, is that **tennis isn't on OnForm's supported-sport list**, and the generic-annotation workflow doesn't scale to a tennis match. A 90-minute hard-court match contains 150-250 shots. Hand-labeling each one in OnForm takes longer than playing the match. This post walks through what OnForm does well, where the tennis-shaped hole is, and why a tennis-specific pipeline (TrackNet → court keypoints → pose → CatBoost classification) does for tennis what OnForm's generic toolset can't. ## TL;DR - OnForm is a strong generic video-coaching tool, its [supported sports](https://onform.com/) include golf, swim, gymnastics, baseball, dance. **Tennis is not listed.** - For tennis, the bottleneck isn't drawing tools, it's *finding the shots*. - A tennis-specific pipeline auto-labels every forehand, backhand, serve, volley. - UNFORCE is tennis-only by design. Different job from OnForm. - If you coach across sports → OnForm. Tennis-only → UNFORCE. ## What OnForm does well OnForm has a clear lineage. The team came out of the Coach's Eye world (TechSmith retired Coach's Eye in September 2022; OnForm's [own comparison post](https://onform.com/blog/onform-vs-coachs-eye/) makes the connection explicit). They kept what worked: - **Frame-stepping playback**, every frame matters when you're showing a swing flaw. - **Telestration**, lines, angles, freehand, shapes. - **Side-by-side compare**, student's swing next to a model's. - **Voice-over recording**, record commentary on top of the video clip. - **Roster + sharing**, coach assigns drills, student responds with video. - **Free tier**, a real one, not a trial. For sports where the coaching loop is "watch one swing, annotate one swing, repeat," OnForm is excellent. ## Where tennis breaks the model Tennis is a high-volume-event sport. A single competitive match has 150-250 shots, each one a potential coaching moment. If your workflow is "review the whole match," you need three things OnForm doesn't provide: **1. Shot localization.** You need to know *when* each shot happened, scrubbing through 90 minutes of video to find a backhand is not a workflow. **2. Shot classification.** You need to know *what* each shot was, forehand, backhand, slice, volley, serve. Otherwise filtering "show me only my second-serves" is impossible. **3. Court geometry.** You need a stable map of the court, where each shot landed, which baseline corner the player was at. Without that, heatmaps and zone analysis don't exist. OnForm gives you the tools to *display* this once you've labeled it. It doesn't generate the labels. For tennis, that's the whole job. ## A worked example: 90-minute match review The two paths below illustrate the work in each workflow, not a stopwatch-measured head-to-head. UNFORCE does not publish a fixed processing-time claim until production p50/p95 telemetry supports one. For a typical 90-minute hard-court video: **OnForm workflow:** 1. Import 4.2 GB MOV file (5 minutes upload). 2. Watch through, manually marking shots. Average shot every 22 seconds → ~245 shots. 3. Stop on each interesting shot, draw, save clip. Realistic, pick the 20 most important. 4. Total time: ~75 minutes for 20 annotated clips. **UNFORCE workflow:** 1. Upload video; transfer time depends on file size and network speed. 2. Wait for the completion notification. Processing time varies with video length, queue depth, and worker availability; see [how it works](/how-it-works). 3. Open the report. All 245 shots pre-labeled, timestamped, classified by stroke type. 4. Filter to "second serves landing in the deuce-side service box", 23 shots, all clipped. 5. Total time is upload plus measured processing time; no 10-minute turnaround is promised without production p50/p95 evidence. This isn't a knock on OnForm. The features OnForm has are right for the sports they target. It's a knock on using a generic tool for a workflow that needs domain-specific automation. ## Why we didn't build UNFORCE as an OnForm plugin We considered it. The argument: leverage someone else's drawing tools, focus on the AI. The argument against (and the one that won): - **Tennis-specific UX.** A tennis report needs court overlays, bounce maps, rally length distributions. Bolting that onto a generic player is harder than building it correctly. - **Pipeline coupling.** Firebase Cloud Functions in `europe-west1` enqueue a Cloud Task, the production Lambda adapter writes `gpuQueue`, and our self-hosted workers in current US regions write results to a predetermined Firebase Storage path. A parallel full-video Gemini analysis uses Google Vertex AI's `global` endpoint. The [complete path is documented](/how-it-works). Surfacing it in a third-party app means re-implementing auth, sync, and access control in someone else's container. - **Sport-specific evolution.** Doubles support, clay vs hard surface tuning, indoor lighting handling, each of these is a tennis-only problem. They'd be deprioritized inside a multi-sport tool. So UNFORCE is its own app. The trade-off is honest: UNFORCE doesn't help if you also coach golf. OnForm doesn't help if your tennis review needs to scale. ## The honest source check As of this writing (July 2026), onform.com's sport list does not include tennis; verify on their site. OnForm's [pricing page](https://onform.com/pricing/) lists sport categories. Tennis isn't there. The [marketing homepage](https://onform.com/) cycles through sport visuals, golf swings, gymnastic vault landings, swim turns. No tennis stroke. This isn't a hidden feature; it's a positioning decision. Tennis isn't where OnForm is investing. That positioning is fine. It's a multi-sport tool with a coherent identity. It just means: if you came here looking for "OnForm for tennis," the answer is that tennis is the gap they left for someone else to fill. ## When OnForm is still the right call I'm not pretending UNFORCE is the right answer for everyone: - You coach across sports, OnForm wins on breadth. - You only review 5-10 highlight shots per session, the labeling overhead doesn't matter. - Your students need the assignment/roster workflow OnForm bakes in, UNFORCE is more of a personal-analysis tool today. - You want a free tier and don't need AI, OnForm's free tier is generous. ## What "tennis-specific AI" actually means The phrase is overused. For us, it's three concrete pipeline pieces: - A **ball detector** trained on tennis broadcast and amateur phone footage, TrackNet, fine-tuned. Generic object detection misses the ball at 70+ mph in a 30 fps video. - A **court detector** that registers the camera in the first second and then tracks keypoint drift, your phone on a tripod isn't perfectly stable. - A **stroke classifier** that uses the player's pose plus ball trajectory plus court position to label every shot. We use MediaPipe for pose and CatBoost for classification because the inference is fast enough to feel real-time. Read the deep dive in [how UNFORCE's pipeline works](/how-it-works), or skip to the [accuracy methodology](/accuracy) if you want the F1 scores. ## Bottom line OnForm replaced Coach's Eye for the sports OnForm covers. For tennis, the replacement isn't OnForm, it's a sport-specific tool that does the labeling step OnForm leaves to you. We built UNFORCE for that, and we keep recommending OnForm for everything else. ## Related reading - [Coach's Eye replacement playbook](/blog/coachs-eye-replacement-playbook), the full successor landscape. - [UNFORCE vs SwingVision](/compare/swingvision), for the tennis-specific comparison. - [The PDF coaching report](/features/coaching-report), what tennis-specific analysis output looks like. --- ### Post-match tennis video analysis software: how to choose one URL: https://unforce.io/blog/post-match-tennis-video-analysis-software Markdown twin: https://unforce.io/blog/post-match-tennis-video-analysis-software.md # Post-match tennis video analysis software: how to choose one If you search for post-match tennis video analysis software, you get two very different kinds of product wearing the same label. One overlays live stats and line calls while you play. The other watches the video after the match and hands you a report. This post argues that for an amateur trying to actually get better, the second kind is the one that moves your tennis, and it walks through how to pick one. I'm Akshay Sarode, founder of UNFORCE, which is a post-match tool, so I'll mark every place I'm taking sides. Everything else is sourced from our own [accuracy methodology](/accuracy) and [how it works](/how-it-works) pages, or cited to the competitor. This is written for the NTRP 3.0-4.5 amateur. That's the band both categories are actually built for, whatever the marketing says. ## Bottom line up front - **Post-match means: record, play, upload after, get a report.** No on-court overlay, no watch buzzing mid-point. The analysis happens on a server while you drive home. - **Post-match beats real-time for improvement**, for three concrete reasons: deeper models run on the full video, your attention stays on the match, and the output is a report you can review with a coach. - **A good post-match pipeline needs five things:** shot detection, ball tracking, stroke-quality scoring, a court heatmap, and honest confidence flags on the parts it couldn't measure. - **Real-time genuinely wins one category: live line calling.** SwingVision's Apple Watch call-outs during the match are real and useful, and UNFORCE does not compete there. - **My bias, stated plainly:** I built a post-match tool because I think the review loop is where amateurs improve. Read the [honest limits](/accuracy) before you trust any of it. ## What "post-match" actually means Post-match tennis video analysis software does its work after the last point. You film the match on a phone, and when you're done, you upload the video. Somewhere on a GPU, a chain of models finds the ball, maps the court, tracks each player's body, classifies every shot, scores the technique, and writes it all into a [post-match report](/features/coaching-report). You get a notification when it's ready. That is a different product shape from a real-time app, which runs a lighter model on your phone or an on-court camera and shows you numbers, or line calls, while the match is still happening. Both are "tennis video analysis." Only one of them makes you choose between watching the screen and watching the ball. ## Why post-match beats real-time for amateur improvement This is the opinion section, so I'll own it. Three reasons, none of them marketing. **1. Deeper models can run on the full video.** UNFORCE's pipeline chains five distinct models: a TrackNet-derived ball detector, a court keypoint detector, FasterRCNN for player detection, MediaPipe Pose for the 33-point skeleton, and CatBoost for bounce and shot classification. Running that chain at full resolution on-device would, in the words of our own [how-it-works FAQ](/how-it-works), melt a phone's battery in 30 seconds. Real-time tools have to shrink their models to fit the compute budget of the moment. Post-match tools don't. They can run the heavy version asynchronously on the whole match, at higher resolution than a phone could sustain. The output is deeper because the on-device compute constraint is gone. **2. Your attention stays on the match.** You cannot compete and read a stats overlay at the same time. Every second you spend glancing at a live dashboard is a second you're not reading your opponent. Post-match analysis asks nothing of you during play. You film, you compete, you review later when you can actually think. For a 3.5 player still building match habits, protecting on-court attention is worth more than any live number. **3. The report is reviewable with a coach.** This is the one that matters most and gets marketed least. A live overlay is gone the moment the point ends. A [post-match report](/features/coaching-report) is a PDF that survives the drive home, sits in a folder, and lands in your coach's inbox without them installing anything. Coaches don't have your app. They want a document they can mark up in 30 seconds, then drill against on Tuesday. Real-time tools optimise for the moment; post-match tools optimise for the loop between matches, which is where improvement actually lives. ## What a good post-match pipeline must include Not every post-match tool ships all of this. When you're evaluating one, these are the five parts to check for. **Shot detection.** The unglamorous foundation. If the software can't reliably find every moment you hit the ball and label it forehand, backhand, serve, volley, or slice, nothing downstream works. UNFORCE publishes per-shot F1: roughly 0.92 forehand, 0.91 backhand, 0.88 serve, 0.78 volley, 0.83 slice on our internal test set. See [shot detection](/features/shot-detection) for how it's built and where it breaks. **Ball tracking.** The ball is a 5-15 pixel object moving at up to 200 km/h in the same colour as half the courts it's played on. A good tool tracks its trajectory well enough to place bounces and estimate speed. UNFORCE's [ball tracking](/features/ball-tracking) lands bounces within about 30-50 cm and serve speed within roughly 5 to 10 percent. Not Hawk-Eye, and it doesn't pretend to be. **Stroke quality.** Stats tell you your error rate. Stroke-quality scoring tells you which mechanical component is likely causing it: preparation, contact point, follow-through, scored against a broad pro baseline. This is the [most underused feature](/features/stroke-quality) in tennis AI, and it's the one that turns a stats app into a coaching tool. **A court heatmap.** One picture of where your shots actually landed, filterable by shot type. Most amateurs have a strong sense of their technique and a weak sense of their placement. The [heatmap](/features/court-heatmap) closes that gap in two minutes: you think you hit deep cross-court forehands, and the picture shows half of them landing in the middle third. **Honest confidence flags.** The one nobody wants to talk about. A trustworthy pipeline names what it could not measure: occluded strokes, unclear ball tracks, questionable bounces, off-centre camera angles. UNFORCE calls these Honest Gaps and prints them inside the report rather than hiding them. If a tool reports every number with the same confidence, it's lying to you about at least some of them. See a full worked example on the [sample report](/sample-report). ## The realistic workflow, start to finish Marketing pages skip the boring parts. Here's the actual sequence. **Filming.** Mount the phone behind the baseline at fence-clip height, roughly 5 to 10 ft, so all six court keypoints are visible and the homography stays stable. Record at 1080p and 30fps or better. Use the main (1×) lens, because ultrawide introduces barrel distortion the court-detection step can't fully correct. Keep the camera dead still: hand-held footage drifts the geometry between frames. A 20-euro fence clip is enough. The full guide is at [how to film your tennis match](/how-to/film-your-tennis-match), and there's a dedicated [serve recording guide](/how-to/record-your-serve) for solo sessions. **Upload.** When the match ends, upload from your phone's native gallery. Do not send the video through WhatsApp or Telegram first, because those re-encode aggressively and drop the ball below the resolution the tracker needs. **Processing.** We do not publish a 3-to-7-minute or 10-minute turnaround until production p50/p95 telemetry supports it. Timing varies with video length, queue depth, and worker availability. Firebase in `europe-west1` moves the job from `pending` through `videos/{uid}/{sessionId}/…`, `processVideoOnUpload`, the `dispatchGpuJob` Cloud Task, and `gpuQueue/{queueId}`. The `unforce-gpu-worker` control plane owns scaling and recovery for self-hosted Lambda Cloud workers in current US regions; the backend writes `results/{uid}/{sessionId}/…`, and `onResultUploaded` marks the job `done`. In parallel, the full upload is submitted by `gs://` reference to Gemini on Google Vertex AI's `global` endpoint for a separate analysis. You get a notification when the canonical job is complete. [See the full path](/how-it-works). **The report.** A summary page first (shot mix, headline pattern, the one thing to work on), then the heatmap, then stroke quality, then a per-shot table with timestamps, then the Honest Gaps. Paired with a linked, timestamped video so you can click straight to any shot. **Share.** Save the PDF, or send it to your coach with one sentence. They read the summary in two minutes and go to the time-coded shots that need attention. That's the whole loop, and it's the argument for post-match in a single workflow. ## The software options, compared for the post-match category I'll keep competitor claims to what's already sourced on our [pricing page](/pricing) and in our [vs SwingVision comparison](/blog/unforce-vs-swingvision-amateur-players), and cite the rest. I'm the founder of one of these, so weigh the table accordingly. | Tool | Category fit | Post-match report | Published accuracy | Platform | Entry price | |---|---|---|---|---|---| | **UNFORCE** | Post-match native | Yes, PDF + timestamped video | Yes ([/accuracy](/accuracy)) | iOS + Android | Free tier, then €19/mo | | **SwingVision** | Real-time first | In-app review surface | Not published (that we can find) | iOS only as of this writing ([swing.vision](https://swing.vision)) | ~$15/mo entry* | | **OnForm** | Generic video review | Manual clip review | Not published (that we can find) | iOS + Android | ~$20/mo* | | **Baseline Vision** | Fixed-camera install | In-system review | Not published (that we can find) | iOS only | ~€1,800 hardware + subscription* | *Third-party prices as of mid-2026, per vendor sites; check each vendor for current pricing. A few honest notes on the table: - **SwingVision** is the category leader, and its strength is the real-time side: Apple Watch line calling during the match. It has an in-app review surface too, but it's iOS-only as of this writing and doesn't publish per-shot accuracy. For a post-match Android player, it isn't an option at all. - **OnForm** is a good generic, multi-sport video tool, but it's not tennis-specific AI. As our [OnForm comparison](/blog/unforce-vs-onform) notes, the coach still has to find the clips that matter by hand. There's no automatic shot detection doing that work for you. - **Baseline Vision** is a fixed-camera court install: excellent if you own a court or run a club, roughly €1,800 of hardware plus a subscription, and iOS-only. Wrong shape for an individual amateur who plays on whatever court is free. For the individual player who wants the review loop rather than a live overlay or a court install, that's the honest field. If you want the full side-by-side, the [compare hub](/compare/swingvision) has per-competitor pages. ## Where real-time genuinely wins I'm not going to pretend post-match wins everything. There's one category where real-time is simply the right tool: **calling lines during play.** SwingVision's Apple Watch buzzes on close calls in the moment, and that is genuinely useful for a competitive match with no umpire. UNFORCE does not ship live line calling, and it's listed as not-yet on our own [pricing page](/pricing). A 30-50 cm bounce accuracy is great for heatmap zones and useless for line calls, and we say so. So if the feature you actually want is a live in-or-out call, stop reading and buy the real-time tool. Post-match analysis is for improving your tennis between matches, not for settling a call inside one. ## Honest limits Post-match software, including ours, has real gaps. Buy with these in mind. - **It's not a coach.** The report's "work on this" line is rule-based, not bespoke. It's a substrate for coaching, not a replacement. Pair it with a human for the trust layer. - **Doubles is beta.** Per-player attribution on net exchanges mis-attributes about 15 percent of the time in the current build. Singles is the supported path. Full detail on the [accuracy page](/accuracy). - **Hard cases stay hard.** Hand-held filming, sub-30fps input, heavy clay dust, indoor flicker, and ultrawide lenses all degrade the pipeline. We flag them at upload rather than fabricating a clean number. - **Clay and grass trail hard courts.** Court detection is above 99 percent on hard, about 97 percent on clay, and not separately reported on grass yet. We publish per-surface numbers precisely so you're not guessing. The reason I can list these plainly is that they're already on the [accuracy page](/accuracy), with the regression methodology behind them. That transparency is the whole wedge: most tools in this space describe accuracy with adjectives, and we describe it with numbers and named failure modes. ## How to decide in 30 seconds - **You want to improve, and you'll review between matches:** post-match. Check for the five pipeline parts above, and pick the one that publishes its accuracy. - **You want live in-or-out calls during the match:** real-time. SwingVision if you're on iPhone with an Apple Watch. - **You're on Android, or in the EU, or you want to test on your own video first:** start with the UNFORCE free tier and run one of your own matches through it before paying anything. The fastest honest test of any post-match tool is your own video. Upload one match, read the report, and see whether the numbers survive contact with a court you actually played on. --- *Read next: [How UNFORCE works](/how-it-works) · [See a sample report](/sample-report) · [Accuracy methodology](/accuracy) · [The post-match coaching report](/features/coaching-report) · [UNFORCE vs SwingVision](/blog/unforce-vs-swingvision-amateur-players).* --- ### Why your serve speed reading might not be 130 mph (or 66 mph) URL: https://unforce.io/blog/serve-speed-reading-explained Markdown twin: https://unforce.io/blog/serve-speed-reading-explained.md # Why your serve speed reading might not be 130 mph (or 66 mph) There's a thread on r/10s called ["Am I really serving 130 mph?"](https://www.reddit.com/r/10s/comments/xc2xc0/) and a near-identical companion thread, ["Is this Swing Vision MPH accurate, my hardest serve only 66 mph?"](https://www.reddit.com/r/10s/comments/17c8ozf/). One says the app is too generous. The other says the app is too harsh. Both are right that something's off, and both have the same underlying cause. This post explains why phone-camera serve speed has a real error band, what produces the error, and how to actually use the number you get. ## TL;DR - A phone camera sees in 2D. Serve speed is a 3D quantity. The system has to *infer* the depth, and it does that from the court keypoints. - If the court keypoints are slightly off, by a few percent, the inferred depth is off, and the speed reads systematically high or low by 10-20 mph. - The error is *consistent* for a given camera setup, which means the number is useful as a relative measure but not as an absolute one. - If absolute speed matters, use a radar gun. A PocketRadar costs about as much as a year of a typical video-app subscription. ## The 130 mph problem (and the 66 mph problem) Sam Groth's serve, the fastest officially recorded, was 163.7 mph at the Busan Challenger in 2012. Andy Roddick's career best was 155 mph. The men's tour average first-serve speed is roughly 120 mph; the women's tour averages ~105 mph. **An NTRP 3.5 club player typically hits a first serve in the 80-95 mph range** (we go deep on this in [/blog/ntrp-3-5-real-serve-speed](/blog/ntrp-3-5-real-serve-speed)). So when an amateur opens an app and sees "130 mph," the number is, on its face, implausible. The Reddit thread title speaks for itself: ["Am I really serving 130mph?"](https://www.reddit.com/r/10s/comments/xc2xc0/) The community answer is consistent: probably not, the camera setup probably caused an over-read. The 66 mph thread is the same problem in reverse: a player who knows their serve is genuinely in the high 80s, watching the app report 66, asking [r/10s](https://www.reddit.com/r/10s/comments/17c8ozf/) what's going on. The community answer there is also consistent: probably the camera setup, probably an under-read. These threads exist because phone-camera serve speed is fundamentally an estimation problem with a known structural error. Let's unpack it. ## Why monocular speed estimation is hard Speed = distance / time. Time, the camera knows precisely (it's just frame count divided by frame rate). Distance is the problem. A phone records a 2D video. The ball moves in 3D. To turn the ball's pixel-by-pixel motion into a real-world distance, the system needs to know where the ball is in 3D space at each frame. There are roughly three ways to do that: 1. **Stereo cameras**, two cameras a known distance apart, triangulate. (Hawk-Eye uses 6-10 of these, calibrated.) 2. **Depth sensor**, LiDAR, structured light. (iPhone Pros have this; most Android phones don't; the resolution at 20+ metres is limited.) 3. **Single-camera + scene geometry**, infer 3D from a 2D image using known reference points (the court lines). UNFORCE, SwingVision, and every other phone-based tennis AI use option 3. It's the only one that works on every phone. It also has a structural limitation: the inferred depth is only as accurate as the scene geometry, and the scene geometry depends on locating the court keypoints in pixel space. ## Where the error comes from A court keypoint detected 2% off in pixel space turns into a depth estimate that's a few percent off, and the speed scales with depth, so a 4% depth error becomes a 4% speed error. On a 90 mph serve, that's about 3.6 mph. Doesn't sound bad. But the error compounds for a few specific reasons: - **Off-axis camera.** If the phone isn't centred behind the baseline, the apparent shape of the court is distorted. The detector still finds the keypoints, but the homography that maps pixel-to-court-coordinates is now solving a harder problem with more residual error. - **Bad camera height.** Phone too low (mounted at fence-bottom height) and the back baseline is barely visible; phone too high (held above the head from a balcony) and the perspective compresses. - **Off-parabolic serves.** A flat serve travels along a clean parabolic arc; a heavy slice or a dipping kicker doesn't. The 3D inference assumes a roughly ballistic path; the more your serve deviates from that, the noisier the inference. Stack two of these and you can easily produce a 10-15 mph systematic error. That's the 130 mph problem and the 66 mph problem in one paragraph. ## Why the error is *systematic*, not random This is the bit that matters most. The error from a given camera setup tends to be in the same direction, with similar magnitude, for every serve in that session. If your court-keypoint detection is off by 3% high, every serve reads ~3% fast. If it's off the other way, every serve reads ~3% slow. That sounds bad. Actually, it's the saving grace. If you record on the same court, with the same camera in the same position, week after week, the *relative* serve-speed numbers tell you exactly what you want to know: am I getting faster? Are my second serves more consistent? Is the gap between first and second narrowing? All of those are accurate measurements even if the absolute number is 8 mph off. This is why the community advice on [the 66 mph r/10s thread](https://www.reddit.com/r/10s/comments/17c8ozf/) and the [130 mph thread](https://www.reddit.com/r/10s/comments/xc2xc0/) converges on the same answer: don't trust the absolute number, trust the trend. ## How to set up to minimise the error If you want the most accurate phone-based serve speed possible, do these four things: 1. **Centred phone.** Phone on the centre line of the court, behind the baseline. Off-centre is the single biggest error source. 2. **Net-tape height or slightly above.** 3 to 4 feet (1m to 1.2m). Too low and the back of the court compresses; too high and the perspective is wrong. 3. **Far enough back.** 8 to 12 feet behind the baseline gives the camera the full court in frame without overly extreme perspective. 4. **At least 30 fps, ideally 60.** Higher frame rate = finer time resolution = lower speed-per-frame error. The full setup guide is at [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match). It's not magic; it's the difference between a serve reading that's ±5% and one that's ±15%. ## What UNFORCE actually shows you We hedge serve-speed numbers explicitly. The report shows: - The estimated speed, with an explicit confidence band based on the camera-setup quality detected from the video. - A flag if the camera setup looked off-axis, off-height, or off-distance, with a "consider re-shooting" note. - A trend chart over your previous sessions, which is the use that actually matters. We'd rather give you "92 mph ± 6 mph, medium confidence" than "92 mph" when we know the latter is misleading. Players have been mis-sold on the precision of these numbers for years; we're trying not to add to it. ## What about radar? If absolute serve-speed accuracy matters to you, if you're calibrating against a published NTRP benchmark, or you've made a bet with your hitting partner, buy a radar gun. A [PocketRadar Smart Coach](https://pocketradar.com/) is around $400; the Ball Coach version is closer to $130. Even the cheap radars are going to be more accurate than any monocular video estimate, by a wide margin. Use video for the things video does well, shot patterns, heatmaps, technique scoring, match charting, and use radar for the one thing radar does well, which is absolute speed. Pairing the two is the right move if speed is your bottleneck. ## What this means for the UNFORCE user In a sentence: your serve-speed number on UNFORCE is a reasonable estimate, used as a trend it's reliable, used as an absolute it has a real error band, and we tell you when the band is wide so you can decide what to do with it. We won't pretend monocular video has solved a problem it hasn't. If serve speed is mission-critical for you, pair UNFORCE with a radar gun. If you want everything else UNFORCE does, shot detection, classification, heatmap, stroke quality, those numbers don't have the same structural limit and are documented separately on [/accuracy](/accuracy). --- **Related:** [How accurate is UNFORCE?](/blog/how-accurate-is-unforce) covers the rest of the pipeline. [The real serve speed for an NTRP 3.5 player](/blog/ntrp-3-5-real-serve-speed) is the benchmarks post that gives you something to compare your number to. And [/features/shot-detection](/features/shot-detection) is the feature page if you want the product view. --- ### How to share your UNFORCE report with your coach in one tap URL: https://unforce.io/blog/share-unforce-report-with-coach Markdown twin: https://unforce.io/blog/share-unforce-report-with-coach.md The share workflow is the bit of UNFORCE that took the longest to get right. We had every other piece, the analysis pipeline, the per-shot clips, the stroke-quality scores, and the friction was always the last 30 seconds: getting the report to a coach who is *not* on the app, doesn't have an account, and probably reads it on a phone in the parking lot before their next lesson. The current design is a single-tap share that produces a link your coach opens in any browser, sees the full report, can download the PDF, and replies with notes. This post is the step-by-step, plus the corner cases (link expiry, multi-coach, revocation, what the coach sees vs doesn't), plus the workflow that actually leads to coaches engaging with the report instead of letting it sit in a chat thread. ## TL;DR - Open the report → tap **Share** → tap **Copy link** or pick a chat app. - Coach opens the link in any browser. No account needed. - They see the full report + per-shot clips + downloadable PDF. - Link defaults to 30-day expiry; revocable anytime. - Data stays in europe-west1 throughout. ## The 30-second walk-through ### Step 1: Open the analyzed report Once analysis finishes (a few minutes after upload), the session lands in your **Sessions** tab. Tap the session to open the report. *(See screenshot 1, Sessions list with the most recent match highlighted.)* The report has the sticky header with your match metadata and the navigation tabs: Timeline, Heatmap, Strokes, Report PDF. ### Step 2: Tap Share Top-right corner, the share icon (the iOS / Android system share glyph, square with arrow). *(See screenshot 2, Share icon highlighted.)* The share sheet slides up. Two main options: - **Copy link**, gives you a clipboard-ready URL. - **Send via app**, passes the link to your phone's share sheet (Messages, Mail, WhatsApp, Signal, Telegram, etc.). ### Step 3: Send Pick the channel your coach prefers. Most amateur-coach relationships run over WhatsApp or email; both work the same way. Paste the link into your usual conversation thread. *(See screenshot 3, link being pasted into a chat.)* That's it. From the coach's side: tap the link → browser opens → report appears. ## What your coach actually sees This is the question I get asked most. Three things to know: **1. The full report, read-only.** Timeline of every shot, the court heatmap, stroke-quality scores per stroke type, per-shot video clips they can play in-browser, and the PDF download button. Same content you see on your phone, rendered for a desktop or mobile browser. **2. Nothing else from your account.** No other matches. No account info. No email or phone number. The link is scoped to one session. **3. A "coach mode" view.** If they open the link on a desktop, the layout switches to a wider two-column view: video preview on the left, shot list on the right. We built it because coaches scan reports on a laptop between lessons. It's the same data, just laid out for the screen. ## Link expiry, revocation, and audit By default a share link expires **30 days** after creation. This isn't punitive, it's because indefinite links accumulate in inboxes and stop being controlled by you. If your coach needs longer access, you can: - **Re-share.** Generate a new link from the same report. The old one keeps working until expiry. - **Extend.** From the share menu, tap **Manage links** → set a custom expiry. Up to 365 days. - **Revoke.** From the same menu, tap **Revoke**. The link returns a "no longer available" page immediately. Every share link has a small audit trail (creation time, last viewed time) visible in the manage-links screen. We don't track *who* viewed, just that someone did. ## Multi-coach and group workflows If you're a junior with both an academy coach and a private coach, send both the same link. There's no per-viewer accounting; one link works for any number of viewers. This was a deliberate design choice, the alternative (per-coach invitations) added friction without meaningfully changing the privacy story, since anyone with the link can forward it anyway. A note for juniors and their families: if the player is a minor, a parent or guardian should manage the sharing. Share links are forwardable by anyone who receives them, so treat them like any shareable URL, and revoke them once the coach is done (they expire after 30 days by default). If you really need per-coach revocation, generate one link per coach. They're cheap to create and revoke independently. ## Sharing the PDF only Some coaches want the PDF, not the full interactive report. From the report → **Download PDF** → the file lands in your phone's Files / Photos. Send it via email or print it. The PDF is the same content the [coaching report feature](/features/coaching-report) page documents, annotated stroke summary, shot tables, heatmap, contact details for follow-up. The PDF is fully self-contained. It opens on any device without an internet connection. ## Why we built it as a link, not an in-app coach account Coaches told us, repeatedly, that signing up for another app for every player is a non-starter. A junior coach with 30 students isn't going to make 30 accounts on 30 platforms. The only viable workflow is: **the player sends a link, the coach reads it on whatever device they have open right now.** That principle is why UNFORCE's coach-side has zero friction, and why we won't add a "coach app" on the critical path. This is opposite to how some apps approach it. As we understand their public docs, SwingVision's coaching workflow leans on shared in-app accounts. It works for in-stadium teams. It doesn't work for the part-time community coach who runs a Saturday clinic. ## What changes when you're in the EU The full data-residency story is in the [EU privacy post](/blog/eu-privacy-tennis-video-gdpr), but the short version: the share link is a signed URL pointing to a Firebase Storage object hosted in `europe-west1`. The video clips, the PDF, the stroke-quality JSON, all served from Belgium. Your coach's browser fetches from EU servers regardless of where the coach physically is. For EU-resident coaches and clubs, this means there's no cross-border transfer when they view the report. For a coach outside the EU, the data stays hosted in the EU, but giving them the link is a disclosure you're choosing to make: you decide who gets it, and you can revoke it any time. ## A workflow that gets coaches to actually respond Sharing a link is necessary but not sufficient. The pattern that actually leads to engagement, from what we see in our user data: **1. Within 24 hours of the match.** Stale matches are skipped; recent ones are read. **2. With one specific question.** "Look at games 3-5, what's happening on the second serve?" beats "let me know what you think." Coaches scan; specific anchors help them anchor. **3. Followed up in the next lesson.** The lesson where you bring up the report is the moment the report becomes useful. Without that, it's an artifact that decays. **4. With a saved insight.** Screenshot one stroke or one heatmap zone you want to discuss. Send the link plus the screenshot. The screenshot is the conversation starter; the link is the proof. ## What if my coach doesn't have a smartphone? Use the PDF. Download it, attach it to an email, send. The report PDF is print-friendly, coaches old-school enough to want a printed copy can print and walk it onto the court. Some of our most engaged coaches are doing exactly this. ## When sharing isn't the right move If you're early in a coaching relationship and your coach hasn't asked for video, sharing a 12-page tennis-AI report can feel like dumping work on them. Two suggestions: - **Lead with one clip, not the full report.** Use the per-shot clip share rather than the full session. - **Ask first.** "Would it help if I shared a video analysis of last week's match?" is a better opener than dropping a link cold. The product is a tool for the coaching relationship, not a substitute for it. Use it as such. ## Related reading - [The PDF coaching report feature](/features/coaching-report), what's in it, how it's structured. - [UNFORCE vs SwingVision](/compare/swingvision), sharing workflows compared. - [how to film your match](/how-to/film-your-tennis-match), recording side of the same loop. --- ### SwingVision alternative without an Apple Watch: the honest buyer's guide URL: https://unforce.io/blog/swingvision-alternative-without-apple-watch Markdown twin: https://unforce.io/blog/swingvision-alternative-without-apple-watch.md # SwingVision alternative without an Apple Watch: the honest buyer's guide You read the SwingVision pitch, watched the line-call demos, and then hit the catch: the best moments in those videos are a watch buzzing on the player's wrist. If you don't own an Apple Watch, don't want to buy one, or aren't even on an iPhone, the obvious question is whether SwingVision is still worth it, and what else you'd actually use. I'm Akshay Sarode, founder of UNFORCE, so treat my conclusions as interested and my facts as sourced. This post is for one specific buyer: someone who likes what SwingVision promises but doesn't have the Apple Watch (and possibly not the iPhone) the marketing quietly assumes. I'll separate which SwingVision features truly depend on the watch from which don't, show what a watch-free workflow actually costs you, and give a plain decision tree by the devices you own. ## Bottom line up front - SwingVision's **signature feature, real-time line calling, needs the Apple Watch.** Its post-match analysis does not. - For post-match improvement (the reason most amateurs buy any of these apps), a **watch-free workflow loses very little.** - If you're on **Android**, the watch question is moot: SwingVision doesn't ship there at all ([source](https://swing.vision/newsletters/android-update)). - The no-watch alternative is **UNFORCE**: same category of post-match analysis, no watch, no watch app, Free at €0 and Pro at €19/mo. - Buy the Apple Watch only if you'll genuinely use **live in-match calls.** Most rec players don't. ## Which SwingVision features actually need the Apple Watch This is the part the SwingVision site doesn't lay out plainly, so here it is. The watch is not a general accessory for the app. It powers a specific set of *live, in-the-moment* features, and nothing in the post-match report. | SwingVision capability | Needs Apple Watch? | |---|---| | Real-time line calling (wrist buzz on a close ball) | Yes | | Reviewing or challenging that call during the match | Yes (it's tied to the live call) | | Live on-wrist stats and score-keeping while you play | Yes | | Recording the match | No (the iPhone camera films) | | Post-match shot detection and classification | No | | Post-match stroke stats and court heatmap | No | | iPad slow-motion, stroke-by-stroke review | No | The load-bearing fact comes from the [Tennisnerd interview](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) with the SwingVision team: the real-time line-calling experience is built around the Apple Watch, and when you hit a shot the watch buzzes "in" or "out" within about a second. That live loop, plus the live stats and score-keeping on the wrist, is what the watch adds. Take the watch away and every one of those features goes with it. Take the watch away and *nothing in the post-match report changes.* So the honest one-liner: **you can use SwingVision without an Apple Watch, but the feature that defines it requires one.** If live calls are your reason for buying, the watch is not optional. If they aren't, you're paying full price for the half of the product that runs on the phone anyway. ## What a watch-free workflow actually loses Be concrete about the loss, because it's smaller than the price gap suggests. Without the watch you give up two things: 1. **In-the-moment line calls.** The wrist tap that helps you officiate a close ball as you play. 2. **Live wrist stats and score.** A glance-able summary during changeovers. That's it. You keep recording, shot detection, stroke stats, the heatmap, and the iPad review. And here's the trade worth naming plainly: real-time is good for *officiating* a match; reflection after the fact is better for *improving* at one. A post-match report puts a single bad forehand inside the pattern of the whole match, which is exactly what a live wrist buzz can't do. If you're using an AI tennis app to get better rather than to settle line disputes, the watch-free half is the half that matters. I've written the fuller version of this in [Apple Watch tennis apps: do you need one for UNFORCE?](/blog/apple-watch-tennis-apps), which also covers the wrist-based stat counters (TennisKeeper, Swing Pro) that are a different category from video analysis. If you want the watch-app landscape, read that. This post stays on the SwingVision-curious, no-watch buyer. ## The decision tree by what you own The right answer depends less on the app and more on your hardware. Three common cases. ### You own an iPhone but no Apple Watch You can install SwingVision and it runs. But you'll be paying its monthly subscription (roughly $15 to $40 per month as of mid-2026; check swing.vision) for the post-match subset while the marquee live-calling feature sits dark. That's the exact overlap where UNFORCE's free tier already covers you: shot detection, ball tracking, court heatmap, and stroke-quality scoring from your iPhone video, no watch involved. See [UNFORCE for iPhone](/ios) for the iOS-specific setup. My opinion, marked as opinion: **try UNFORCE free on the iPhone you already own before you buy a watch.** If, after a few weeks, you find you genuinely miss live in-match calls, then the watch purchase makes sense. Most rec players never reach that point. The full reasoning is on [the SwingVision alternatives page](/alternatives/swingvision). ### You own an Android phone The watch question never even applies. SwingVision is iOS-only as of this writing, and its [own Android update page](https://swing.vision/newsletters/android-update) still has no public release. So the choice isn't "SwingVision with or without a watch," it's "an app that exists on Android or none." UNFORCE ships natively on Android with the same pipeline and, of course, no Apple Watch requirement. The [SwingVision Android alternative](/blog/swingvision-android-alternative) post walks through exactly what that looks like, and the [alternatives page](/alternatives/swingvision) is the structured version. ### You own an iPad but no iPhone or watch An awkward configuration, so an honest answer. With no watch, the watch-gated features are off the table for *either* app, full stop. An iPad can film, but it's a clumsy object on a tripod, and both apps assume a phone as the camera. SwingVision leans on the iPad as a review surface; UNFORCE supports iPad for upload and review but doesn't optimise for it (the phone form factor is what the UX assumes). Practical read: on iPad-only you're doing a record-and-review loop with no live features on either side, and UNFORCE covers that loop without asking you to buy into the Apple Watch ecosystem to unlock the rest. ## The comparison for the no-watch buyer Strip out the watch and here's what you're actually choosing between. | | UNFORCE | SwingVision (no watch) | |---|---|---| | Real-time line calling | No | No (needs the watch) | | Live on-wrist stats | No | No (needs the watch) | | Shot detection | Yes | Yes | | Ball tracking | Yes | Yes | | Court heatmap | Yes | Yes | | Stroke-quality scoring | Per-component breakdown | High-level | | Android | Yes | No | | Free tier | €0, 3 analyses/mo, full report | Limited | | Entry paid tier | €19/mo Pro | ~$15/mo entry tier | | Published accuracy methodology | Yes ([/accuracy](/accuracy)) | No | | EU pricing / hosting | Yes (`europe-west1`) | No | Once the watch is out of the picture, the two products are competing on the same post-match ground. That's where the differences that survive are platform reach, pricing, and whether the accuracy claims are published. On UNFORCE they are: shot-detection F1 of roughly 0.92 forehand and 0.88 serve, ball-speed error around 6.2 km/h median against a handheld radar, court keypoint detection above 99% on hard courts. The full table, including where it's weaker (volleys at ~0.78 F1, clay bounce localisation), is on the [accuracy page](/accuracy). SwingVision doesn't publish an equivalent. For the deeper feature-by-feature read, [UNFORCE vs SwingVision for amateur players](/blog/unforce-vs-swingvision-amateur-players) covers every axis, watch and non-watch alike. ## Pricing, in plain English, for someone without a watch The uncomfortable math for the watch-free SwingVision buyer: you pay the same subscription as everyone else for a smaller slice of the product. As of mid-2026, SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision for current pricing. And the accuracy you'd pay most for on the top tier is line-call accuracy, the watch feature you're not using. UNFORCE, by contrast: - **Free, €0/mo:** 3 analyses a month, full post-match report, no card. - **Pro, €19/mo (€190/yr):** unlimited analyses, coach-share links, video clips. - **Team, €49/mo:** 10 seats for a coach and players. For a no-watch buyer specifically, the free tier is the honest starting point: it's the same post-match analysis a paying SwingVision user gets, minus the watch loop they aren't using either. Full detail on [pricing](/pricing). ## Test it on your own match Don't take my table on faith, mine or anyone's. The cleanest test is to run one match through both and read the two reports side by side. Running the same match through both, you should expect single-digit-percent disagreement on shot counts and serve speeds a few mph apart, since neither app is a radar gun. Run your own comparison. Your court, your camera, your numbers will differ, which is the point. ## Where SwingVision still wins (with the watch) To keep this fair: if you already own an Apple Watch and you play matches where a live in-out call matters, SwingVision's real-time line calling is genuinely good and UNFORCE doesn't replicate it. We don't ship a watch app and our analysis is post-match by design. SwingVision also covers a paddle sport as a first-class mode, and it has a multi-year head start in maturity and community size. If any of those are dealmakers and you're on iOS with a watch, SwingVision is the right pick, and the [comparison page](/compare/swingvision) says so plainly. For everyone the watch leaves behind, iPhone owners who never wanted one, Android players who never could, iPad-only owners in an awkward spot, a no-watch alternative that does the post-match work already exists. You don't need to buy your way into the Apple Watch ecosystem to see what your forehand is doing. ## FAQ **Do you need an Apple Watch for SwingVision?** Not for the whole app, but for the feature that defines it, yes. Real-time line calling is built around the watch ([Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)). Recording and post-match analysis work without one. **Can I use SwingVision without an Apple Watch?** Yes. You keep recording, shot detection, stats, and the heatmap. You lose live line calling and live wrist stats. **What's the best SwingVision alternative without an Apple Watch?** UNFORCE: the same category of post-match analysis from phone video, no watch dependency, Free at €0 and Pro at €19/mo, on iOS and Android. **Is there a SwingVision Android alternative that doesn't need a watch?** Yes. SwingVision is iOS-only, so Android never had the watch workflow. UNFORCE ships on Android with the full pipeline. See [/alternatives/swingvision](/alternatives/swingvision). **Which SwingVision features stop working without the watch?** Real-time line calling and live on-wrist stats and score-keeping. Everything post-match keeps working from the phone. --- *Read next: [UNFORCE vs SwingVision for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [The SwingVision alternative for Android and iOS](/alternatives/swingvision) · [Do you need an Apple Watch for UNFORCE?](/blog/apple-watch-tennis-apps)* --- ### The SwingVision Android alternative, explained URL: https://unforce.io/blog/swingvision-android-alternative Markdown twin: https://unforce.io/blog/swingvision-android-alternative.md # The SwingVision Android alternative, explained If you own an Android phone and you've been waiting for SwingVision to ship on it, here is the short version: as of mid-2026, SwingVision is still iOS-only. The company's [own Android update newsletter](https://swing.vision/newsletters/android-update) confirms the team is exploring Android but has not announced a build, a beta, or a release date. The closest functional alternative is **UNFORCE**, an AI tennis video analysis app that runs the same kind of pipeline (ball tracking, court detection, pose-based shot classification, stroke quality scoring, PDF report) on a phone-recorded video, on iOS *and* Android, with no Apple Watch dependency. This post is the honest comparison: where UNFORCE matches SwingVision, where SwingVision still wins, and how to decide. Want to see the output first? Open the [sample post-match report](/sample-report) before you compare feature lists. ## Bottom line up front - **SwingVision is iOS-only.** No Android APK exists. Sideloading anything labeled "SwingVision Android" is unsafe and unofficial. - **UNFORCE is the cross-platform alternative** for shot detection, ball tracking, stroke quality scoring, court heatmaps, and a coaching report. - **SwingVision still wins on a few things:** Apple Watch in-the-moment line calling, paddle-sport coverage, and years of polish on iPad. - **Pricing is cleaner with UNFORCE:** transparent EU-friendly tiers. ## Why this is the most-asked question in amateur tennis tech Search "SwingVision Android" and the autocomplete fills in the rest before you finish typing: *swingvision android release date*, *swingvision android apk*, *swingvision android alternative*. The Reddit thread title that crystallised the demand is unambiguous: *"Genuinely thinking of getting a iPhone just for the swing[vision]"* ([r/10s](https://www.reddit.com/r/10s/comments/151g2cy/)). The Talk Tennis forum has a long-running thread, *"Will SwingVision still work with an Android"* ([forum link](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/)), where the answer has not changed in years: no. That's a real problem. Android is the majority of smartphones worldwide, and across much of Europe iOS is the minority platform. For those players, the SwingVision iOS-lock isn't a small inconvenience, it's the difference between being able to use the category-leading product and not. ## What SwingVision actually does well I want to be fair here. SwingVision earned its position. On iOS, it does four things well: 1. **Real-time line calling on Apple Watch.** During the match, an Apple Watch buzz tells you in/out. Nothing on Android currently matches this in-the-moment workflow. 2. **A long-baked iPad review experience.** The iPad app is mature, with stroke-by-stroke navigation, slow-motion review, and clean charting. 3. **Paddle-sport coverage.** SwingVision has gone deep into the racket-sports adjacent to tennis, which matters if you switch sports. 4. **Brand trust.** Years of YouTube content, including [a widely viewed review](https://www.youtube.com/watch?v=e0_5A4eUXAg), have built a recognisable name. If those four things are non-negotiable, you should buy an iPhone or stay on iOS. The rest of this post is for the player for whom they're not. ## Where SwingVision leaves Android players stuck The same SwingVision the YouTubers love has drawn some critical [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac), for example *"misreads shots."* Read that as one individual user review, not a product-wide fact. The more common theme in player discussions is pricing: the features people most want tend to sit behind the top tier ([r/10s](https://www.reddit.com/r/10s/comments/179dsjz/swingvision_is_it_worth_400/)). So if you're an Android player asking "what do I do?", the answer isn't "wait for SwingVision." It's "use a tool built for the device you actually own." ## How UNFORCE replaces SwingVision's core loop on Android Here is what an Android tennis player actually needs from a video analysis app, and how UNFORCE delivers it. ### 1. Automatic shot detection You record. UNFORCE classifies every shot, forehand, backhand, serve, volley, without you tagging anything. Under the hood, it's a CatBoost classifier reading MediaPipe pose features and bounce timing. See [/features/shot-detection](/features/shot-detection) for the methodology. ### 2. Ball tracking and court heatmap A TrackNet-style model produces ball trajectories; court keypoint detection anchors them in court coordinates. The result is a heatmap of where your shots actually land, not where you think they land. The heatmap renders the same on a Pixel 8 and a Galaxy S24. ### 3. Stroke quality scoring Per-shot quality breakdown, derived from pose features at contact (shoulder rotation, knee bend, contact-point relative to body). This is the part most amateur players genuinely cannot self-diagnose, and it's the part that translates to a measurable win in subsequent sessions. ### 4. A PDF coaching report you can send to your coach After processing, you get a per-shot report. Send it to your coach by email or message, async coaching between lessons. No app install needed on their end. ### 5. No Apple Watch required This is the wedge. UNFORCE never asks for a wearable, an Apple device, or any extra hardware. Your phone, a camera mount or fence clip, and a court. ## Where SwingVision still wins (and where you should stay) I am not going to pretend UNFORCE beats SwingVision on every axis. Stay on SwingVision if: - You play primarily on **hard courts in the US** and want **Apple Watch line calling on every point** during the match. UNFORCE does post-match analysis, not in-the-moment buzzing. - You play paddle-sport variants more than tennis. SwingVision's depth there is genuinely ahead. - You already have a **multi-year SwingVision archive** that you don't want to leave. - You're comfortable with its iOS subscription pricing and you've decided the iOS lock-in is fine. For everybody else, Android owners, EU players, anyone the top tier left cold, UNFORCE is the closer match. ## Pricing comparison in plain English As of mid-2026, SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision for current pricing. The recurring complaint in player discussions is that the features most people want are gated to the highest tier. UNFORCE's structure is intentionally simpler: a free tier with shot detection (3 analyses a month), then a transparent EU-priced Pro tier. For the side-by-side I link out to the full [/compare/swingvision](/compare/swingvision) page. ## Real example: the 60-minute Saturday match A typical run on my own Pixel 8 looks like this. Treat it as illustrative, not a stopwatch log. 1. Clip the phone to the fence behind the baseline at chest height. Open UNFORCE. Hit record. 2. Play the match. The phone is just a camera. No Apple Watch, no on-court overlays, no app interaction during the match. 3. Stop recording at the end. Upload (cellular or wifi). 4. A few minutes later, the analysis is done. PDF report in my inbox: shots tagged, forehand cross-court bounce density mapped, second-serve quality scoring flagged a left-shoulder rotation issue I would have missed. 5. Send the PDF to my coach for the next lesson. Total post-match overhead: under 10 minutes. None of the steps require iOS. ## How to decide in 60 seconds - You own an **iPhone + Apple Watch**, you mostly want **live line calling**, you're fine paying for it: **SwingVision.** - You own an **Android phone**, or you don't want the Apple Watch dependency, or you want a **post-match report you can share**: **UNFORCE.** - You want both: start with UNFORCE free, see whether the SwingVision features you'd be paying for actually matter to you. If you've been "genuinely thinking of getting an iPhone for SwingVision", read [the SwingVision alternative without an Apple Watch](/blog/swingvision-alternative-without-apple-watch) before you do. ## FAQ **Will SwingVision ever come to Android?** SwingVision has not committed to a date. Their [Android update page](https://swing.vision/newsletters/android-update) says the team is exploring it but has not announced a build, beta, or timeline. **Is there a SwingVision Android APK I can sideload?** No. There is no official Android APK. Any APK marketed as SwingVision for Android is unofficial and unsafe. **What is the closest SwingVision alternative for Android?** UNFORCE, per-shot detection, ball tracking, court heatmaps, stroke quality scoring, and a PDF coaching report, on iOS and Android. **Do I need an Apple Watch for UNFORCE?** No. UNFORCE runs from your phone video. No wearable required. **How accurate is UNFORCE compared to SwingVision?** We publish per-shot F1 scores on our accuracy page; SwingVision does not publish equivalent numbers. Some players report accuracy frustrations in community threads; individual setups vary. --- *Akshay Sarode is the founder of UNFORCE. UNFORCE runs on iOS and Android. [Start free](/) or read the full [UNFORCE vs SwingVision comparison](/compare/swingvision).* --- ### Why tennis AI gets confused on clay (and how we handle it) URL: https://unforce.io/blog/tennis-ai-clay-confusion Markdown twin: https://unforce.io/blog/tennis-ai-clay-confusion.md # Why tennis AI gets confused on clay (and how we handle it) If you play on clay and you've tried a tennis AI app, you've probably had this experience: the app works fine on the local hard courts, you take it to clay for a club match, and suddenly the heatmap is wrong, the line calls are wrong, or the shot count is half what you actually hit. You're not imagining it. Clay courts are genuinely harder for AI than hard courts, and most apps don't talk about why. This post explains the *why*, walks through the specific failure modes, and shows how UNFORCE handles them. I'm the founder, so I'll be honest about where we still have weak spots. ## TL;DR - Clay-court tennis AI is harder because line contrast is lower, the ball-court color delta is smaller, and dust/footprint marks add visual noise. - A model trained mostly on hard courts will under-detect on clay, because the visual cues it learned, crisp white lines and a high-contrast ball, all weaken on a dusty orange surface. - UNFORCE's court keypoint model includes annotated clay footage in training and evaluation. Per-surface accuracy is on `/accuracy`. - Our weakest cases are faded club clay with poorly maintained lines, and green-clay (Har-Tru) under specific lighting. - If your clay video fails, send it to us, we want the edge cases. ## The clay complaint that keeps showing up Read SwingVision's App Store reviews ([source](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)) and you'll find the same complaint repeated: > *"on clay it doesn't understand where the lines of the court are."* It appears in more than one review, though we can't verify each reviewer's setup or app version. And it's not because the SwingVision team built a bad product, they didn't. It's because clay-court tennis AI has specific technical challenges that don't show up if your training data is biased toward American hard courts. Three things go wrong on clay, and you can fix some of them with better data, some of them with better models, and some of them only with better-quality video. ## What's actually different about clay video ### 1. Line contrast is lower As a rough illustration, a white line on a green hard court might show a luminance delta on the order of 60-80 in standard 8-bit video (depending on the lighting), while a freshly swept red clay court is closer to 30-45. After two hours of play, with footprint marks and dust, that drops further. Some club clay courts have lines barely 10-15 luminance points different from the surface. These numbers are illustrative, not a published measurement. Court keypoint detection models (which find the four corners and key intersections of the court) rely on edge detection at some layer. When the edge signal weakens, detection weakens. This is why a model that hits, say, 95% line accuracy on hard courts can drop toward 70% on dusty clay; treat those figures as illustrative. ### 2. Ball-court color similarity A yellow tennis ball against a blue hard court is a high-contrast object, the ball pops in almost any light. The same ball against an orange clay court is a much lower-contrast target. The HSV color delta is small enough that, in the wrong lighting (overcast afternoons, low golden-hour sun), the ball can blur visually into the surface. This isn't a hypothetical. We've seen clay videos where the per-frame ball detection rate drops noticeably relative to hard, *with the same player and the same camera setup*, roughly 10-15 percentage points in the cases we've looked at, just because the contrast is worse. ### 3. Dust, marks, and visual noise Hard courts are visually clean. Clay courts have: - Footprint patterns that look like ball-shaped marks to a vision model. - Bounce marks (a useful signal for human players, but easy to confuse with the ball itself). - Dust accumulation along lines that breaks edge detection. - Lighter and darker patches where the surface has been re-rolled. A ball-detection model that's only seen clean hard-court training data will fire false positives on bounce marks. Even purpose-built models like TrackNet need clay-specific training data to suppress these. ## How UNFORCE handles it Three concrete decisions in the pipeline: ### 1. Clay in the training set Our court keypoint model is trained on a mix that explicitly includes European red clay, Har-Tru green clay, and indoor clay. We didn't bolt clay on at the end, we trained for it from the start because we're a European product and roughly a quarter of the tennis our users film is on clay. This is the single biggest reason we don't see the clay line-detection failures that sink hard-court-only models. Not because our model is fundamentally smarter; because it saw the right pictures during training. ### 2. Per-surface evaluation Our `/accuracy` page lists per-surface F1 scores for ball detection, shot detection, and court keypoints. The clay numbers are slightly behind the hard-court numbers, that's the honest truth, but the gap is small enough that the rec-player experience is consistent across surfaces. We publish the gap rather than hiding it. If clay numbers were dramatically worse, you'd want to know before you uploaded a clay match. ### 3. Bounce detection on clay benefits from the surface Here's a slightly counter-intuitive point. Clay is harder for ball-tracking, but clay is *easier* for bounce-detection because the ball leaves a visible mark. Our pipeline doesn't use bounce marks directly (we detect bounces from ball trajectory hitting the court plane), but the surface texture means the visual evidence of where the ball landed lines up with the model's prediction in a way that hard courts don't always provide. This matters because the heatmap your players see is largely a bounce heatmap. Even if per-frame ball tracking drops a few points on clay, the bounces, the things you actually use, are typically still good. ## Where UNFORCE still struggles on clay I said I'd be honest. Two known weak spots: ### Faded, poorly maintained club clay If you play on a club court where the lines are washed out and the surface hasn't been rolled in weeks, the model's court keypoint detection can fail entirely. There's no signal there for the model to lock onto, because there's barely a signal a human umpire could lock onto either. We retry with relaxed thresholds; sometimes that works, sometimes it doesn't. If this is your home court, please send us a sample video. We retrain on real edge cases. ### Green clay (Har-Tru) in specific lighting Har-Tru, common in the US South, has different visual properties than European red clay. Some of our color-based heuristics were tuned on red and behave a little oddly on green clay under certain lighting (especially early-morning or late-afternoon shadow-heavy conditions). The pipeline still produces a report; the heatmap may have slightly more noise than usual. This is on the model retraining roadmap. It's solvable; it's just not solved today. ## What you can do as a player Three things help on clay regardless of which app you use: 1. **Film when the court is freshly swept.** First match of the morning, or right after the groundskeeper rolls it. Lines are at their crispest, dust is minimal. 2. **Get your phone higher.** Clay's lower contrast means fewer pixels per ball at a given distance. Mounting your phone at head-height or slightly above (3-4 feet, not eye-level on a chair) gives the ball more pixels to work with. 3. **Use natural light, not floodlights, when possible.** Clay-under-floodlights is the worst combination, uneven lighting amplifies the contrast problem. Daylight on clay is fine for the model. Floodlit indoor clay is the hardest case. The Talk Tennis "[Any Free Video Analysis Apps?](https://tt.tennis-warehouse.com/index.php?threads/any-free-video-analysis-apps.773458/)" thread has people swapping setup tips, most of them apply double on clay. ## Why this matters for buying decisions If you primarily play on clay, your tennis-AI shortlist is shorter than the global "best tennis app" list. The vendors that explicitly evaluate on clay are the ones to start with. The ones that train mostly on hard courts and stay quiet about clay are the ones to skip, or use only on hard courts. This is one reason UNFORCE was built in Europe. Roughly half the tennis our team plays is on clay; we *had* to make it work or our own product would be unusable. ## The bigger picture Clay courts aren't going to get easier for tennis AI. Players who play on clay will either: - Choose a vendor that explicitly tests on clay (like UNFORCE, like a few others). - Accept that their hard-court app gives them noisier data on clay days. - Manually verify the heatmap on their first few clay sessions and decide whether the noise is acceptable. We've made the bet that publishing per-surface accuracy and including clay in the training data is what serious clay players want from a tennis-AI vendor. ## FAQ **Does UNFORCE work on clay?** Yes. Per-surface F1 numbers are on `/accuracy`. Slight gap vs hard-court but small enough that the rec-player experience is consistent. **Why does SwingVision struggle on clay?** Likely cause: a line-detection model trained mostly on hard courts. White lines on clay are lower-contrast and often dusty or scuffed, so a model tuned on crisp hard-court lines loses them. **What kind of clay is hardest?** Faded, dusty club clay where the lines are barely visible. Some Har-Tru green clay under low-angle light is also a known weak spot. **Can I help improve clay support?** Yes, send your clay-court videos that didn't work to akshaysarode@unforce.io. Real edge cases are how the model improves. **Will my hard-court setup work on clay?** Yes, same camera angle, same height, same tripod. If anything, raise the camera slightly and shoot in natural light. --- **Try UNFORCE free** on hard, clay, or indoor, same pipeline, same accuracy methodology. [Start free](/) · [How UNFORCE works](/how-it-works) · [Tennis ball tracking accuracy explained](/blog/tennis-ball-tracking-accuracy-explained) · [Doubles support in AI tennis apps](/blog/doubles-support-tennis-ai) --- ### Filming on clay courts: how to make AI tennis tools work URL: https://unforce.io/blog/tennis-ai-clay-courts Markdown twin: https://unforce.io/blog/tennis-ai-clay-courts.md # Filming on clay courts: how to make AI tennis tools work Short answer: yes, AI tennis apps work on clay, but you'll get a noisier report than on a clean hard court, and there are three specific things to do at filming time to get the cleanest possible analysis. Sweep the court (or pick a court that's been swept). Mount the camera on a paved area behind the baseline, not on the clay itself. And keep the camera 6-10 ft above the surface so the freshly-marked white lines are visible from above the dust line. This post is the longer version of that answer, plus a frank note on where the AI gets confused on clay and what we (and our competitors) actually do about it. ## TL;DR 1. **Clay is the hardest surface for AI tennis analysis.** Orange ball on orange clay = lower contrast. Dusty/scuffed lines = harder court detection. Both are real, both are fixable in part. 2. **Sweep the lines before you record.** White line tape with fresh chalk = court keypoint detection works. Dusty traces = it sometimes doesn't. 3. **Camera 6-10 ft above the surface, behind the baseline.** Same as hard courts. 4. **Ballasted tripod on concrete behind the court, not on clay itself.** Tripod legs sink into clay over a match, not catastrophic, but visible drift. 5. **Expect ~3-5 F1 points lower shot detection on clay vs hard.** This is the published number for UNFORCE; competitors don't publish theirs. ## The honest version: why clay is hard There's a [SwingVision App Store review](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) from a clay-court player that says, plainly: *"on clay it doesn't understand where the lines of the court are."* That's a real complaint and it's a real problem, not just for SwingVision, but for any AI tennis tool that hasn't specifically trained for clay. There are two technical reasons clay is harder, and both matter for what you do at filming time. ### Reason 1: orange ball, orange clay A modern tennis ball is fluorescent yellow-green. On a US Open blue acrylic court, it's the highest-contrast object in the frame, it's the *only* yellow thing against a sea of blue. Frame-to-frame ball tracking (TrackNet on the UNFORCE pipeline) is essentially solved on this surface. On red clay, the ball is the same hue as the court, just a slightly different brightness. Add a thin layer of clay dust that the ball gathers after the first bounce, and by the second set the ball is genuinely orange-on-orange. TrackNet still finds it most of the time, but it loses the ball briefly more often, right at the bounce, where you most need it. That bounce moment is what feeds the bounce classifier, which feeds the heatmap. There's no software fix that fully eliminates this, it's a contrast problem, and contrast is set at the lens. What we *can* do is augment training data with synthetic low-contrast clay frames so the model doesn't catastrophically fail; that's what we've done. But a hard-court report will always be a hair cleaner than a clay-court report from the same player, on the same camera, with the same software. ### Reason 2: the lines are not as crisp as you think Hard courts have painted lines under acrylic, they don't move, they don't wear, they look the same after 1,000 hours of play. Clay courts have white tape under the surface, with the line edges defined by powdered chalk that gets swept on before each session. In practice this means three things: - **Lines wear during a match.** By set three, the baseline is dusted over by ball marks and footwork. - **Lines are sometimes doubled.** A ball lands on the line, leaves a mark, the chalk drifts, now the court detector sees two parallel lines where there should be one. - **Lines look different by light.** Bright sun makes the chalk pop; overcast late afternoon, the line edges blur into the clay. A court-detection model trained mostly on hard courts will sometimes misplace the baseline by 20-30 cm on clay. With no dusty, scuffed clay lines in its training data, it has less to lock onto. We've addressed this in two ways: (a) a chunk of our training data is European red and green clay, and (b) we use temporal smoothing, the court keypoints are stabilised across the whole video, not redetected per frame. So even if a frame's lines are dusty, the court geometry from the surrounding 10 seconds carries through. ## What to do at filming time Three concrete things turn a noisy clay report into a clean one. ### 1. Sweep before you film If you're filming a match you're playing, you've probably already swept the court, that's standard club etiquette on clay. But specifically: make sure the **baseline and singles sidelines are crisply marked**. The court-detection model is most sensitive to those four lines. A scuffed centre service line costs you nothing; a scuffed baseline costs you accuracy on bounce localisation. If you're filming a tournament match you're not playing, you usually can't sweep, but you can pick a court. The freshly-resurfaced courts at the start of the day (or right after a sweep break) give a measurably cleaner report than the same court at 6pm. ### 2. Mount the camera off the clay surface This is the bit specific to clay that doesn't apply to hard courts. **Don't put the tripod on the clay itself.** Two reasons: - **Tripod legs sink.** Even a 1.5 kg ballasted tripod sinks 1-2 cm into soft clay over a 90-minute match. The camera drifts down. The court drifts up in the frame. By set three, the upper portion of the back baseline can leave the frame entirely. - **Court etiquette.** Most European clay clubs frown on tripods on the playing surface, you'll get told off. The fix: most European clay clubs have a **paved area behind the court**, the path between the back fence and the baseline, or a gravel strip. Set the tripod up there, 6-10 ft behind the baseline. If your club doesn't have one, a length of plywood or even a thick floor mat under the tripod legs works as a portable hard surface. Full mounting setup is in [the no-fence post](/blog/tennis-camera-no-fence), most clay clubs *do* have a fence behind the court, but the fence is often wood or plastic rather than chain-link, in which case a fence clip won't work. Use a tripod. ### 3. Camera height: 6-10 ft, looking down Same rule as hard courts, but on clay it matters more, because you want the camera *above the dust line*. When players are sliding and ball marks are spraying, there's a 1-2 ft layer of fine clay particles in the air around the baseline. A camera at 4 ft of height shoots through that layer. A camera at 7 ft shoots over it. A 7 ft tripod with the camera mounted on the top, weighted at the base, is the standard clay setup. Cheap (€30-€45) and works for most European clay clubs. ## The accuracy hit: how much worse is clay, really? We measure this. On UNFORCE's internal benchmark, 200+ test matches across hard, clay, and indoor, the shot-detection F1 score on clay is **roughly 3-5 points lower** than the same player and camera on a hard court. Most of the gap comes from missed bounces in the half-second after a heavy clay puff (where the ball briefly disappears into the dust cloud). Stroke-quality scoring is essentially unaffected by surface, the pose model doesn't care what's under the player's feet. Court heatmap accuracy is mildly affected because of the bounce-localisation issue, but the broad pattern (where the player's shots are clustering) is reliable. Net effect: a clay-court report is *useful*. It's just a hair noisier than the hard-court version. We publish the full per-surface numbers on the accuracy page; if you want to dig into the methodology, [how UNFORCE works](/how-it-works) walks through the pipeline. ## What about other AI tennis tools on clay? Honest answer: most are mostly trained on hard courts and report worse on clay than they admit publicly. - **SwingVision**, trained primarily on hard courts, with no published clay-specific benchmark. If you're an Android player trying to use SwingVision, you can't anyway, see our [SwingVision comparison](/compare/swingvision). - **PB Vision**, markets itself as paddle-sport-first; tennis support is recent. No known clay benchmark. - **Baseline Vision** (a hardware camera priced at roughly €1,800 per [TennisLeo's review](https://www.tennisleo.com/baseline-vision-review/)), designed for hard courts; clay support exists but the camera mounting is awkward on clay clubs. - **TennisAI.net**, advertises that it works on clay; we can't find published per-surface accuracy. UNFORCE now publishes per-surface numbers on our [accuracy page](/accuracy), including court-detection accuracy above 99% on hard courts and around 97% on clay. Most competitors still don't publish comparable per-surface numbers. That's the gap. ## A note on indoor clay (and other rare cases) Indoor clay is rarer than indoor hard, but it exists, Italian clubs, German training centres, a few private facilities in France. For those: the camera and mounting rules are the same as outdoor clay, but the lighting issues from the [indoor post](/blog/indoor-tennis-ai-analysis) also apply. Specifically: indoor lighting causes 50-60 Hz flicker on most ceiling lights, which 60fps cameras handle inconsistently. Lock your camera at 30fps for indoor clay if you're seeing flicker bands in the preview. ## Bottom line If you play on clay regularly, you can absolutely use UNFORCE (or any decent AI tennis app) for self-coaching. You'll get a slightly noisier report than your hard-court friends, but the patterns the report surfaces, shot mix, heatmap zones, stroke-quality scores, are all reliable enough to drive a real practice plan. The biggest accuracy lever isn't the software. It's whether the camera is 6-10 ft above a swept court, on a stable mount that isn't sinking into the clay. Get those right and the clay-court analysis is genuinely useful. If you're a club player just getting started, the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) walks through the first upload end-to-end. And if you're already a SwingVision user fed up with how it handles your home clay club, the [side-by-side comparison](/compare/swingvision) covers what's different. --- ### Tennis ball tracking accuracy: what 90% actually means URL: https://unforce.io/blog/tennis-ball-tracking-accuracy-explained Markdown twin: https://unforce.io/blog/tennis-ball-tracking-accuracy-explained.md # Tennis ball tracking accuracy: what 90% actually means Every tennis AI app puts an accuracy number on its marketing site. Most of them say something like *"95% accurate ball tracking"* or *"90% shot detection."* Almost none of them say what they're measuring. This post explains what those numbers actually mean, what's behind them, what to ask, and why the same model can claim 95% or 70% on the same video depending on which metric you choose. I'm the founder of UNFORCE, and we publish our accuracy methodology on `/accuracy`. This post is the layperson version of that page, written for rec players, coaches, and anyone deciding whether to trust a marketing number on a tennis app's homepage. ## TL;DR - "Accuracy" is not one number. It's at least three: per-frame detection rate, event-level precision, event-level recall. - A model can be 95% on one and 70% on another. Both are technically true. - The right composite metric for tennis is **F1 score**, which combines precision and recall. F1 is what you should ask for. - Tennis ball tracking is genuinely harder than most sports, small ball, fast motion, occlusion, low frame rates on phones. - UNFORCE publishes per-shot-type F1, bounce-detection accuracy with a tolerance window, and the test set composition. We're not aware of another consumer tennis app publishing this level of methodology (happy to be corrected). ## Why the question matters This question comes up constantly in player communities: how accurate is tennis ball tracking, really? The honest answer is more nuanced than "X percent", and the honest version starts with vocabulary. ## The three numbers people confuse Imagine your phone video has 5,400 frames (3 minutes at 30 fps). The ball is *visible* in roughly 4,200 of them, the rest are between points, the ball is off-camera, or it's hidden by the net. Of the 4,200 visible frames, your tennis app's detector outputs a ball position for some subset. ### Per-frame detection rate The simplest number. "We located the ball in X% of frames where the ball was visible." This is what most "ball tracking accuracy" claims actually measure. It's also the easiest to game, you can crank up the model's sensitivity, output a ball position even when you're not sure, and your detection rate goes up. The cost: you also detect a lot of non-ball things (line markings, ball-bag specks, the opponent's shoe). A 90% per-frame detection rate sounds great. It says nothing about whether your detected positions are *correct*. ### Precision "Of the ball detections we made, X% were actually correct." If you crank sensitivity up and the detector starts firing on every white pixel, your precision drops. A 60% precision rate means 4 out of every 10 detections are wrong, and downstream of that, your shot count, your heatmap, your stroke-quality scores all inherit the noise. ### Recall "Of the real ball positions, we detected X%." Recall is the inverse. A model can have 99% precision (almost everything it outputs is correct) and 50% recall (it only outputs half the ball positions because it's being conservative). ### F1 The harmonic mean of precision and recall. F1 = 2 × (P × R) / (P + R). Penalises being lopsided. A model with 95% precision and 50% recall has F1 = 65.5%. A model with 85% precision and 85% recall has F1 = 85%. The second model is meaningfully better for tennis. When an app says "90% accurate" without qualifying it, it usually means *one* of detection rate, precision, or recall, and not the worst one. ## Why tennis is harder than other sports People sometimes ask why football tracking systems hit 99% and tennis vendors hover around 85-95%. Five reasons: 1. **The ball is small.** A tennis ball is 6.5 cm in diameter. At baseline-to-baseline distance on a phone camera, it's often 4-8 pixels across. A football is ~22 cm. There's an order of magnitude more pixel signal to work with. 2. **The ball moves fast.** A 100 mph serve covers ~14 meters per second. At 30 fps phone video, that's roughly 47 cm per frame, multiple ball-diameters of motion blur. The ball isn't a circle anymore; it's a streak. 3. **Direction changes are abrupt.** Bounces, racket impacts, and net clips reverse the ball's velocity in a single frame. Most generic object trackers assume smooth motion; tennis breaks that assumption violently. 4. **Occlusion is constant.** The net, the racket, the player's body, the opponent, all of these block the ball at high-leverage moments (impact, bounce). Your shot-quality model needs to know what happened *during* the occluded frames. 5. **Phone video is messy.** 30 fps. Variable lighting. Sometimes shaky. Often not the same camera angle from session to session. Real-world tennis video is harder than the curated datasets most vision models are trained on. This is why purpose-built models like TrackNet (the architecture UNFORCE and several other vendors use) outperform off-the-shelf object detectors on tennis. TrackNet was designed for small, fast, occluded balls; YOLO and friends were designed for cars and people. ## What "90%" can mean across vendors Imagine three apps all market "90% ball tracking accuracy." Plausible meanings: - **App A:** 90% per-frame detection rate. Precision = 75%, recall = 70%. F1 ≈ 72%. Headline number is technically true; the underlying experience is noisy. - **App B:** 90% precision on shot events. Recall = 65%. F1 ≈ 75%. Misses a third of your shots, but the ones it reports are mostly real. - **App C:** 90% F1 on shot events. Precision and recall both around 90%. The honest version. Roughly what UNFORCE reports for its top-tier shot types, and the number we publish is the F1, not the easier number. Three identical marketing claims, three very different products. The only way to tell them apart is to look at the methodology page or run them on your own video. ## What "current build" means A small but important caveat: any accuracy number you read about a tennis AI app is a snapshot of *that build at that time*. The underlying models get retrained, datasets get expanded, and numbers shift. UNFORCE's `/accuracy` page is dated and versioned for exactly this reason, when we ship a model update that changes the F1 by more than a percentage point, we update the page. That means the *direction* of an accuracy claim matters more than the precise number. A vendor that publishes a methodology and updates it is committing to a process. A vendor that publishes a static "95% accurate" badge is committing to a marketing line. ## How UNFORCE measures accuracy The methodology, in plain English: 1. **Test set.** A library of tennis match videos, hand-annotated frame by frame for ball position, shot events (forehand/backhand/serve/volley), and bounce locations. Surface mix: hard, clay, indoor. Level mix: NTRP 3.0-5.0. Resolution mix: 720p, 1080p, 4K. 2. **Per-shot-type metrics.** Precision, recall, and F1 are computed for each shot type separately. We don't roll them up into one number, because the model is generally better on serves than on volleys, and a single number hides that. 3. **Bounce detection with tolerance.** Bounces are evaluated within a 5-frame tolerance window (≈167 ms). A bounce detected within 5 frames of the ground-truth bounce counts as a true positive. This matches how rec players actually use the data, nobody cares if the bounce was at frame 247 vs frame 251. 4. **Regression testing.** Every model update runs against the same test set. If a number drops, we either find the regression or update the published number. The script is `compare_events.py` and the output is what feeds the `/accuracy` page. The Tennisnerd review of SwingVision ([source](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)) is one of the few independent looks at any tennis-AI vendor's accuracy, and even there the methodology is anecdotal. App Store complaints about clay courts and serve speeds ([source](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)) are user-reported failures, not a structured benchmark. We chose to publish a structured benchmark because the alternative is asking you to take the marketing copy on faith. ## What to ask a tennis-AI vendor Five questions that will sort honest from hand-wavy: 1. *Is your accuracy number F1, precision, recall, or detection rate?* 2. *What test set was the number computed on?* 3. *How does accuracy change between hard, clay, and indoor courts?* 4. *Does the number include occluded frames or just clean ones?* 5. *When was the number last updated?* A vendor that answers all five gets your trust. A vendor that hand-waves on three of them, be skeptical. ## What's "good enough" for amateurs For NTRP 3.0-4.5 players using video AI for self-coaching: - **Per-shot F1 above 85%** is broadly usable. Heatmaps look right. Shot counts feel correct. - **Bounce detection above 90% within 5 frames** is the threshold where the heatmap stops looking suspicious. - **Sub-80% F1** starts to be visibly wrong, you'll see a forehand counted as a backhand on review, and the trust collapses. The marginal gain from 90% to 95% F1 matters less than you'd think for self-coaching. The gap that matters is *honest 85% vs hand-wavy 95%*. App Store reviewers can tell within two matches when the marketing number was generous ([clay-court complaint example](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)). ## FAQ **What does "90% ball tracking accuracy" actually mean?** Almost always one of: per-frame detection rate, shot-event precision, or shot-event recall. F1 is the composite to ask for. **Is tennis ball tracking really hard?** Yes, small ball, fast motion, abrupt direction changes, frequent occlusion, low phone frame rates. Purpose-built models (TrackNet) outperform generic detectors. **How accurate is UNFORCE?** Per-shot-type F1 and bounce-detection accuracy with a 5-frame tolerance, computed against a published test set. Numbers and methodology on `/accuracy`. **Why don't other tennis apps publish their accuracy?** Publishing commits a vendor to a number. Most prefer marketing language. We made the opposite call. **Is 85% F1 good enough for me?** For self-coaching at NTRP 3.0-4.5, yes. The takeaways are stable above 85%. The bigger risk is being misled by a generous marketing number. --- **See UNFORCE's published accuracy methodology** at [/accuracy](/accuracy). [Start free](/) · [How UNFORCE works](/how-it-works) · [Why tennis AI gets confused on clay](/blog/tennis-ai-clay-confusion) · [UNFORCE vs SwingVision](/compare/swingvision) --- ### Tennis biomechanics analysis from video: what one camera can honestly measure URL: https://unforce.io/blog/tennis-biomechanics-analysis-from-video Markdown twin: https://unforce.io/blog/tennis-biomechanics-analysis-from-video.md # Tennis biomechanics analysis from video: what one camera can honestly measure If you have searched for "tennis biomechanics analysis from video," you have probably seen two kinds of pages: university labs with force plates and marker suits, and phone apps promising the same insight for the price of a coffee. The truth sits between them, and the useful question is not "can a phone do biomechanics" but "which parts of biomechanics survive the jump from a lab to a single camera." I am Akshay Sarode, founder of UNFORCE, so I will flag where I am taking sides. Everything else is drawn from what our own pipeline can and cannot do. This post is the practical companion to our [biomechanics reference page](/biomechanics). That page explains what UNFORCE measures and where the model fails. This one is the how-to layer: what single-camera video honestly delivers versus a marker-based lab, the kinetic-chain checkpoints a club player can actually read, the red flags in tools that overclaim, and how to film so the pose model has a chance. ## Bottom line up front - A single phone camera plus 2D pose estimation gives you **joint angles at key events, kinetic-chain timing, and contact-point geometry.** That is most of what an amateur can change. - It does **not** give you ground reaction force, joint torque, or muscle activation. Those need force plates and EMG, which means a lab. No phone recovers them. - Treat load and efficiency readouts as **descriptions of mechanics, not medical findings.** UNFORCE is educational, not diagnostic. - The clearest overclaim red flag is **"injury prevention from one phone camera."** If you see it, close the tab. - Filming quality decides everything downstream. A stable camera at fence height on the 1x lens is the difference between a usable report and noise. ## Video biomechanics vs the lab: what each one captures Marker-based motion capture is the reference standard for a reason. Reflective markers tracked by optical systems (Vicon, Qualisys) reconstruct the body in 3D. Force plates under the court surface measure ground reaction force, and through inverse dynamics you get joint torques. Add electromyography (EMG) sensors and you also read which muscles fire and when. That is full kinematics plus full kinetics. It also costs thousands per session and is not something you repeat weekly. Single-camera video trades most of that away and keeps the parts that transfer to the court. Here is the honest split: | Signal | Marker-based lab | Single-camera video | |---|---|---| | Joint angles at key events | Yes, 3D | Yes, mostly 2D, depth approximated | | Movement timing and sequencing | Yes | Yes | | Contact-point geometry | Yes | Yes | | Ground reaction force | Yes (force plates) | No | | Joint torque | Yes (inverse dynamics) | No | | Muscle activation | Yes (EMG) | No | | 3D depth precision | Millimetre-grade | About plus-or-minus 10 cm in good light | | Cost per session | Thousands | Zero if you own a phone | | How often you can repeat it | Rarely | Weekly, or every session | The point of the table is not that one wins. It is that they answer different questions. The lab answers "how much force is this shoulder producing." Video answers "is the kinetic chain firing in the right order and is the contact point where it should be." For a club player, the second question is the one that changes next week's practice. ## The three things one camera measures well Everything UNFORCE reports as biomechanics reduces to three honest wins from 2D pose. **1. Joint angles and body geometry at key events.** Across the frames spanning preparation, contact, and follow-through, MediaPipe pose gives a 33-point skeleton per frame, and from those positions we derive angles: shoulder rotation, hip rotation, knee bend, elbow position. Positions land within a few pixels on 1080p video, and angles average out the small errors. **2. Kinetic-chain timing and sequencing.** This is the underrated one. You do not need absolute force to see whether the hips rotate before the shoulders, or whether the legs drive before the trunk uncoils on a serve. Timing is an ordering problem, and ordering is exactly what a frame-by-frame sequence is good at. **3. Contact-point geometry relative to the body.** Where you strike the ball, in front of or behind the front foot, above or below the shoulder, is geometry the camera reads directly. It is also the single most common leak in amateur groundstrokes, and it is fully visible without any force measurement. These three feed the [stroke-quality score](/features/stroke-quality): a 0-100 number per shot, broken into components, calibrated against a broad reference distribution of competent form. The [full pipeline](/how-it-works) sits underneath it. ## Kinetic-chain checkpoints you can read on your own video Here is where a club player gets practical value. You do not need to interpret raw joint angles. You need a short list of checkpoints per stroke. ### On the serve - **Toss consistency.** Does the ball release from the same point each time? The report tracks contact-point variance, and a wandering toss shows up as a wandering contact point. - **Leg drive.** Is there a load-and-drive from the legs, or are you arming the ball? Pose shows knee bend into the trunk rotation. - **Trunk rotation arc.** How far the trunk coils and uncoils through contact. - **Sequence order.** Legs, then hips, then trunk, then arm. If the arm leads, the chain is out of order and pace leaks. ### On the forehand - **Shoulder turn in preparation.** Loaded or flat? A flat coil caps the whole stroke. - **Hip-before-shoulder rotation.** The hips should start the rotation, with the shoulders following. When they fire together, the chain is short. - **Contact point.** In front of the front foot, or drifting behind it? This is the checkpoint most amateurs get wrong and most cannot self-diagnose. - **Follow-through completeness.** Does the swing finish, or does it get cut short under time pressure? None of these need a force plate. All of them are visible in a clean pose sequence, and the report ranks the one or two that are leaking the most points in your match rather than listing all of them flat. That ranking is the difference between data and a plan. It comes together in the [coaching report](/features/coaching-report). ## Reading load indicators without playing doctor You will see language about load, effort, and efficiency in video-biomechanics tools, including UNFORCE. Read it correctly. A contact point that drifts behind the body, an off-balance recovery, a follow-through that gets truncated: these are mechanical descriptions. They can correlate with strokes that feel heavy on the body, which is why they are worth surfacing. They are not injury findings. UNFORCE is not a clinical or biomechanical assessment tool, and stroke-quality scores are technical, not medical. A persistent low contact-point score tells you the geometry of your stroke; it does not tell you a shoulder is injured. If a report worries you, the right move is to bring the pose overlay to a coach or a sports physiotherapist as a starting point for a conversation, not to treat it as a diagnosis. If you suspect a chronic issue, see the physio and finish the rehab before you film yourself, otherwise you risk recording and reinforcing a compensation pattern. We say the same thing to [adult returners](/use-cases/adult-returners), who carry the most injury risk in their first months back. ## Red flags: how to spot a tool that is overclaiming The space is noisy, so here is a short screen you can apply to any "AI tennis biomechanics" product, ours included. - **"Injury prevention" or "injury risk score" from one phone camera.** A 2D camera cannot measure force or muscle activation. Predicting injury from it is a marketing claim, not a measurement. - **Absolute joint torques or muscle forces.** A single 2D view cannot recover these. If a tool reports them in newton-metres, ask where the force plate is. - **Millimetre 3D depth.** Depth is the weakest axis of single-camera pose. Honest tools bracket it. UNFORCE brackets elbow extension at about plus-or-minus 10 cm in good light, and says so. - **No published accuracy and no failure modes.** If a product describes accuracy only with adjectives, there is nothing to verify. Ours is on [/accuracy](/accuracy), failure modes included. - **"Replaces your coach."** Video gives the data layer. A coach reads context the camera cannot: your goals, your history, your intent behind a non-classical style. The pattern across all five: overclaiming happens when a tool promises the lab's outputs from the camera's inputs. Video biomechanics is genuinely useful inside its limits and misleading outside them. ## How to film so the pose model actually works None of the above matters if the footage is bad. Pose estimation and court detection both degrade fast on poor input, so the filming is not an afterthought. The essentials: - **Height.** Fence-clip height, roughly 5-10 ft, behind the baseline. Hip-height footage occludes the far court corners and destabilises the homography that anchors every measurement. - **Stationary camera.** A clip or a tripod, not handheld. The pipeline assumes a fixed camera; hand-held drift widens every confidence interval. - **Frame rate.** 30 fps or higher. Below 30, the ball trajectory through a fast serve cannot be recovered, and timing checkpoints get shaky. - **Lens.** The main 1x lens, not ultrawide. Ultrawide barrel distortion is not fully corrected by the homography step and skews court geometry. - **Framing and light.** Full body in frame, landscape, reasonable light. Heavy occlusion or a body that is half out of frame produces a broken skeleton and noisy scores. The [filming guide](/how-to/film-your-tennis-match) walks through the setup in a few minutes, and [camera angle for tennis AI](/blog/camera-angle-tennis-ai) covers why the angle matters more than the phone. For serves specifically, the [serve recording guide](/blog/how-to-record-tennis-serve) has a dedicated setup. ## When to skip the phone and book the lab To be fair to the other side: if you need force numbers, go to the lab. A player rehabbing a specific joint, a coach quantifying ground reaction force, a researcher needing 3D millimetre kinematics, none of that is a phone job, and no honest app should pretend otherwise. Video biomechanics is the weekly, repeatable, low-cost checkpoint on technique. The lab is the occasional, expensive, force-grade deep dive. Most club players never need the second and are underserved on the first, which is the gap UNFORCE is built for. The whole value of single-camera analysis is turning "I think my contact point is late" into a measurement you can act on by Tuesday, filmed on a phone you already own, honest about the forces it never sees. ## Frequently asked questions **Can you really analyse tennis biomechanics from a single phone video?** Partly, and it is worth being precise about which part. A single camera plus 2D pose estimation recovers joint angles and body geometry at key events, kinetic-chain timing, and contact-point position relative to your body. That covers most of what an amateur can actually change on court. It does not recover ground reaction force, joint torque, or muscle activation. Those need lab hardware. The honest framing is: video gives you the geometry and the timing of a stroke, not its forces. **What is the difference between video biomechanics and a motion-capture lab?** A marker-based lab (Vicon or Qualisys optical mocap, plus force plates) reconstructs full-body kinematics in 3D and, with the force plates, the kinetics: ground reaction forces and, through inverse dynamics, joint torques. Add EMG sensors and you also read muscle activation. That is the gold standard and it costs thousands per session. Single-camera video skips the markers, the plates, and the sensors. You lose absolute force and torque; you keep the angles, the sequencing, and the ability to check yourself every week instead of once a year. **Can a phone camera measure joint angles accurately?** Well enough to flag the mechanical patterns amateurs care about, not to lab tolerance. MediaPipe pose gives joint positions to a few pixels per frame on 1080p video, and derived joint angles average out small position errors. Depth is the weak axis: UNFORCE approximates it from the court keypoints, and elbow-extension precision is bracketed at about plus-or-minus 10 cm in good lighting. We publish where this holds and where it breaks on /accuracy. **Can UNFORCE tell me if I am at risk of injury?** No. UNFORCE is not a clinical or biomechanical assessment tool, and stroke-quality scores are technical, not medical. A persistent low contact-point score describes your mechanics; it is not a diagnosis of strain or a risk prediction. If something in a report worries you, treat the pose overlay as a conversation starter with a coach or a sports physiotherapist, not as a verdict. Any tool selling one-camera injury prevention is overclaiming. **How should I film so the pose model actually works?** Stationary camera at fence-clip height (about 5-10 ft), behind the baseline, landscape, 30 fps or higher, on the main 1x lens rather than ultrawide, with the full body in frame and reasonable light. That combination keeps all six court keypoints visible for a stable homography and gives the pose model a clean, full skeleton to read. The full checklist is at /how-to/film-your-tennis-match. --- *Read next: [Biomechanics reference page](/biomechanics) · [Stroke-quality scores explained](/features/stroke-quality) · [Accuracy methodology and numbers](/accuracy) · [How the pipeline works](/how-it-works) · [How to film your match](/how-to/film-your-tennis-match).* --- ### What if my court has no fence? Mounting alternatives that work URL: https://unforce.io/blog/tennis-camera-no-fence Markdown twin: https://unforce.io/blog/tennis-camera-no-fence.md # What if my court has no fence? Mounting alternatives that work Short answer: a 5-7 ft tripod with a sandbag hung from the centre column, placed 6-10 ft behind one baseline. That's the default. The rest of this post is what to do when the default doesn't fit your court, magnetic mounts on steel poles, monopods stuck into ground spikes, and a brutally honest list of the setups we've watched fail in the wild. If you're filming for UNFORCE (or any AI tennis app), the rules of the camera don't change because there's no fence. The pipeline still needs the phone above net height, behind the baseline, framed on the whole court. The only thing that changes is *what's holding the phone up*. And on public-park courts, school courts, and a surprising number of clay clubs across Europe, there is no fence to clip against. ## TL;DR 1. **Default:** 5-7 ft aluminium tripod + phone clip + sandbag on the centre column. €30-€45 all-in. 2. **If there's a steel pole nearby:** a magnetic phone mount (MagSafe-compatible) on the pole at net height or above. 3. **If you have a car:** a window mount or a roof-rack mount, parked behind the baseline. Surprisingly common at amateur tournaments. 4. **If you have nothing:** a folding step-ladder from a hardware store + a phone clip = €40 and 6 ft of height in a kit-bag. 5. **Don't:** lean the phone against a water bottle on the court. The angle is below the net cord and the report will be useless. ## Why "no fence" is a real problem (not a niche one) The fence-clip mount is the hidden assumption behind most tennis filming guides, including ours. It's the easy answer: a €15 clip from Amazon, snap it to the chain-link, you're filming. But a non-trivial chunk of European tennis happens on courts that *don't have a fence behind the baseline*: red-clay courts at French and Italian clubs, padel-style indoor halls with glass walls, public-park hard courts where the perimeter is a row of bushes, and most school sports halls. There's a [Quora thread](https://www.quora.com/I-want-to-film-my-full-tennis-matches-What-would-be-a-good-camera-to-use-that-I-could-just-hook-to-a-fence-cheaper-the-better) where the question is literally *"a good camera I could just hook to a fence, cheaper the better"*, that's the standard mental model. The first three answers all assume a fence. None of them help you if you don't have one. Here's what does. ## Option 1: the default, tripod plus ballast For 80% of fence-less courts, this is the answer. **What you need:** - A 5-7 ft aluminium tripod (€20-€35). Look for one rated for at least 1 kg payload, with a screw mount in the standard 1/4"-20 thread. - A phone clip with a 1/4"-20 mount on the bottom (€8-€15). Most adjust to 5.5" - 7" phones. - A weight you can hang from the tripod's centre column hook. Options: a sandbag (€10), a reusable shopping bag with two 1.5L water bottles, your tennis bag. **How to set it up:** 1. Position the tripod 6-10 ft (1.8-3 m) behind the baseline, centred on the court's lengthwise axis. 2. Extend the legs fully and lock them. 3. Extend the centre column to put the phone clip at 6-7 ft (above net height). 4. Hang the ballast on the centre column hook. This is non-optional in any breeze. 5. Mount the phone in landscape, frame the whole court, lock orientation, press record. **Why this works:** the phone ends up at 6-7 ft, looking slightly down at the court, exactly where ball tracking, court detection, and pose detection all want it. We cover the *why* in detail in the [filming guide](/how-to/film-your-tennis-match), but the headline is: every foot above net height meaningfully improves shot detection accuracy. **Where this fails:** wind above 20-25 km/h, soft surfaces (sand, mud near a clay court), and any court where you can't put a tripod 6-10 ft behind the baseline because there's a wall there. For those, see options 2 and 3. ## Option 2: magnetic mounts on steel poles A lot of fence-less courts have *something* metal upright near the baseline, a flag pole, a light pole, a netpost extension, a perimeter post for crowd ropes, the upright on a permanent scoreboard. If that pole is roughly 6-10 ft behind one baseline and at least 5-6 ft tall, a magnetic phone mount is the fastest setup in tennis. **What you need:** - A MagSafe-rated magnetic mount with a flat steel base (€15-€30). The cheap "fridge magnet" ones do not work; look for rare-earth magnets rated for at least 1.5 kg pull. - A phone case that's MagSafe-compatible *or* a metal disc adhered to the phone's back. **How to set it up:** wipe the pole with a sleeve to remove dust, stick the magnet to the pole at net height or above, attach the phone in landscape. Whole thing is 30 seconds. **Why this works:** zero footprint, zero ballast needed, no risk of tipping, and you can adjust the height by sliding the magnet up the pole. The pole is doing the engineering for you. **Where this fails:** painted steel where the paint is thick (the magnet decouples), aluminium poles (not magnetic), and any pole thinner than ~3 cm (the magnet contacts only on a tiny area). Test before the match. ## Option 3: the step-ladder (yes, really) This is the underrated solution most people don't think of. A small folding step-ladder, the two-step or three-step kind that lives in most apartments, gets you to 5-7 ft instantly, doesn't tip, and packs flat in a car boot. A €30 aluminium two-step gives you 4-5 ft. A €50 three-step gives you 6-7 ft. Stick a phone clip on the top rung, weight the bottom step with your tennis bag, you're done. **Why it's good:** dead-stable. No tripod-tip risk in wind. Zero balance work. You can also stand on it to set up framing, which is harder than it sounds on a tripod where the phone is already at head height. **Why most people skip it:** it looks ridiculous. We've watched players walk past a perfectly good step-ladder solution because they didn't want to carry one to the court. Suit yourself. ## Option 4: car window or roof-rack mount Underrated for public-park courts where you've parked just behind the baseline. A standard suction-cup phone mount on the rear-side window or a magnetic mount on the roof rack puts the phone at 4-5 ft for a sedan, 6-7 ft for an SUV. The car itself is the ballast; nothing tips. This is the standard amateur-tournament setup we see at events that don't have permanent video. The car parks behind the back fence (or the back row of bushes), the phone goes on the roof, the player tournament-films their own match. ## What doesn't work (a brutally honest list) We have seen all of these submitted as videos. None of them produce a useful report: - **Phone leaning against a water bottle on the court.** Angle is below the net cord. Court detector loses the corners. Don't. - **Phone in the cup-holder of a pop-up chair.** Height is 30-40 cm. Same problem. - **Phone on top of a tennis bag.** Tippy, low, the bag sags. Same problem. - **Phone on the net post.** Centred on the net, looking *across* the court, it's a side-on angle. Looks great in a tennis brochure photo. Useless for AI. - **Phone tied to a tree branch with a hair tie.** This actually happened. The branch swayed in the wind enough that the court drifted across the frame and court detection re-anchored every five seconds. Not recommended. The common thread: any setup that ends with the phone below net height, or moving relative to the court, will break the pipeline. Doesn't matter how clever the mount is. ## A note on clay and indoor If you're playing on **clay** with no fence (very common at European clay clubs, the back wall is often a low wooden barrier), a tripod with sandbag is fine, but place it on a concrete or paved area behind the court if there's one, soft clay under a tripod leg slowly sinks during the match and the camera drifts. There's a whole post on [filming on clay courts](/blog/tennis-ai-clay-courts), read that next if it's your surface. If you're playing **indoor** with no back wall (rare but it happens, some converted-warehouse halls), a tripod is fine, but mind the lighting; ceiling lights cause flicker that 60fps cameras handle badly. The [indoor courts post](/blog/indoor-tennis-ai-analysis) covers this. ## What about hardware tracking systems? You may have seen courts with permanent overhead cameras, Baseline Vision sells one for around €1,800 (per [TennisLeo's review](https://www.tennisleo.com/baseline-vision-review/)), and PlaySight has SmartCourt facility installations. If your club has one, use it. For everyone else (the 99% of amateur tennis), a phone on a tripod gets you 80% of the same value at 1% of the cost. We compare phone-based tools to facility hardware in [UNFORCE vs SwingVision: the honest 2026 comparison](/compare/swingvision). ## The mount is the unsung hero of AI tennis Most of the AI tennis pipeline, TrackNet ball detection, court keypoint detection, MediaPipe pose, the bounce classifier, assumes a stable, above-net, on-axis camera view. That assumption is doing a lot of work. When the mount is wrong, the model isn't broken; it's being asked the wrong question. Get the mount right and UNFORCE's [shot detection](/features/shot-detection) feels obviously good. Get it wrong and even the best AI tennis tool produces a noisy report. That's true for us, it's true for SwingVision, it's true for everything in the category. If you're a club player working through this for the first time, the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) walks you through the first session end-to-end. If you're a coach setting up players for between-lesson homework, the [junior-coach workflow](/use-cases/junior-coaches) has the player-facing version of this checklist. Get the phone above the net, behind the baseline, on something that doesn't move. Everything else takes care of itself. --- ### The honest cost of tennis coaching vs an AI app (in 2026 EUR) URL: https://unforce.io/blog/tennis-coaching-cost-vs-app Markdown twin: https://unforce.io/blog/tennis-coaching-cost-vs-app.md # The honest cost of tennis coaching vs an AI app (in 2026 EUR) Short answer: a human tennis coach in Europe in 2026 costs €50-€100 per hour for one-to-ones at typical club rates. UNFORCE Pro is €19 per month. They're not the same thing, and the right question isn't "which is cheaper" but "where does each spend actually buy you improvement?" The honest answer is that UNFORCE replaces a substantial chunk of the diagnostic work a coach used to do for amateur players, while leaving the on-court correction work where it belongs: with the human. This post is the actual numbers, the actual trade-offs, and where each spend earns its keep. ## TL;DR: the 2026 numbers | Spend | Typical 2026 EUR price | What you get | |---|---|---| | Group lesson (4-6 players, 1 hr) | €15-€30 per person | Drilling, basic instruction, social tennis | | One-to-one with club coach (1 hr) | €50-€80 | Personal instruction, on-court correction, fitness | | One-to-one with higher-tier coach (1 hr) | €80-€150 | Same plus tournament prep, advanced technical work | | Tournament-level coaching (per month) | €1,500-€3,000+ | Multiple weekly sessions, travel, match coaching | | UNFORCE Pro (1 month) | €19 | Unlimited automated reports, all features | | SwingVision (1 month) | ~$15-$40/mo* | Same category, iOS only, paywalled top tier | | TennisAI.net (1 year) | advertised ~€150/yr; verify on site | Stats-leaning automated reports | | TopCourt (1 year) | $180 (~€165) | Pro tennis instructional video content | *SwingVision pricing as of mid-2026; check swing.vision for current tiers. A single one-to-one club lesson costs roughly **2.5 to 4 months of UNFORCE Pro**. That's the headline arbitrage. But arbitrage isn't the same as substitution. Read on. ## Why the comparison is harder than it looks Tennis coaching does three things at once: 1. **Diagnostic**, figuring out what's wrong with your game. 2. **Prescriptive**, telling you what to do about it. 3. **Corrective**, feeding you balls, watching live, fixing it on court. A 60-minute lesson at €70/hr historically did all three. The diagnostic part, the bit where the coach watched you play and said *"your prep is late on the backhand"*, is the part UNFORCE automates. The prescriptive part, *"do these three drills"*, is partly automatable (the report has coaching tips), partly not. The corrective part, feeding 200 balls into your backhand corner while you fix the prep, is genuinely human-only. So the real comparison isn't "UNFORCE vs a lesson." It's "what's the right blend?" For a club player at NTRP 3.0-4.5, the answer is usually some mix of UNFORCE for diagnostic + monthly lesson for correction. Different blends for different personas. ## What a coach actually costs in 2026 Europe These are real, current 2026 rates we've cross-checked across club listings, coach websites, and federation pricing pages in the major European markets: - **Germany / Switzerland / Austria:** €60-€90/hr for club coaches, €100-€150/hr for higher-tier. Group lessons €20-€30 per person. - **France / Italy / Spain:** €50-€75/hr for club coaches, €80-€120/hr for higher-tier. Group lessons €15-€25 per person. - **UK / Ireland:** £45-£75/hr for club coaches, £75-£130/hr for higher-tier. Group lessons £15-£25 per person. - **Netherlands / Belgium / Nordics:** €55-€85/hr for club coaches, €90-€140/hr for higher-tier. Group lessons €20-€30 per person. Tournament coaching for committed juniors (multiple weekly sessions, occasional travel) lands around €1,500-€3,000/month. Year-round private coaching at the higher tier crosses €15,000/year easily. These numbers go up at urban centres (London, Munich, Zurich, Paris) and down at smaller clubs. They're also up roughly 15-25% compared to 2020 rates, broadly tracking inflation in service-sector wages. ## What UNFORCE actually costs - **Free tier:** limited reports per month, full pipeline access. - **Pro:** €19/mo or €190/yr. Unlimited reports, full features, [coaching report PDFs](/features/coaching-report). - **Yearly billing:** €190 vs €228 monthly = roughly 17% savings. That's the entire pricing. There's no Plus tier, no Pro+ tier, no Max tier with the features you actually want behind another paywall. We made this choice deliberately because the SwingVision multi-tier model creates a known buyer-frustration pattern. For comparison, as of mid-2026 SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision for current pricing. Its top tier (4K analysis, advanced line calling, full court modes) is the one that drives the recurring "is it worth it" debate in player discussions. ## When UNFORCE replaces a coach There are real scenarios where UNFORCE substitutes for a chunk of what a coach used to provide: 1. **Self-coaching club players (NTRP 3.0-4.5) who don't currently have a coach.** This is the primary UNFORCE use case. The diagnostic that the report provides is what these players have been missing entirely. Cost comparison is misleading here, they were spending €0 on coaching before; UNFORCE is additive, not substitutional. 2. **Adult returners in the first six months back.** [The adult-returner post](/blog/unforce-for-adult-returners) covers this in detail. Returners often need the diagnostic clarity more than they need on-court correction in the first three months, fitness and reps do most of the rebuild, and the report shows whether the rebuild is on track. 3. **Players doing solo serve practice.** A coach watching you serve for 30 minutes is €40-€50 of their hour. UNFORCE reading the same 30 minutes of solo practice and giving you the same toss-and-prep feedback is a much cheaper way to do that specific kind of work. 4. **Junior players between lessons.** [The junior-coach post](/blog/unforce-for-junior-coaches) covers this, the report does the homework that the coach used to spend lesson time clipping and reviewing. In each of these, UNFORCE isn't replacing the *coaching*. It's replacing the *clipping, the watching back, the figuring-out-what's-wrong*. That work used to live inside a lesson hour or in the coach's evening review time. UNFORCE moves it to a server. ## When UNFORCE *supplements* a coach (and why this is the dominant use case) For most committed amateur players with a coach, UNFORCE doesn't reduce the lesson budget, it makes the lesson budget more productive. The math: if you have one €70 lesson a week and 15 minutes of it goes to "remind me what we worked on" + 15 minutes goes to your coach watching you hit and forming a diagnostic, that's €35 of the lesson on activities UNFORCE handles for €19/month. Add UNFORCE to your stack and your €70 lesson hour now spends 60 minutes on the things only your coach can do, feeding, repping, on-court correction. That's a hidden 50% improvement in lesson value at the cost of ~€19/month. The payback period is about three weeks. This is why the coach-recommended pattern in the [junior-coach workflow](/use-cases/junior-coaches) and [club-player loop](/blog/unforce-for-club-players) doesn't tell you to drop your coach. It tells you to keep them and stack the AI tool on top. ## When the spend is wasted Honest list of where UNFORCE doesn't earn its keep: 1. **Players below NTRP 3.0.** The technique-improvement curve at this level is so steep from raw ball-on-strings reps that the per-shot analysis is overkill. Watch some YouTube, hit a thousand balls, come back to UNFORCE at 3.0+. 2. **Players above NTRP 5.0.** You're past where amateur AI tools can usefully measure. The accuracy bands are calibrated to amateur play; pro-level technique scoring needs higher-frame-rate equipment than a phone provides. 3. **Pure social players who don't want to improve.** If you play tennis for the post-match drinks and don't care about getting better, you don't need an analysis tool. Skip the subscription; it's not for you. 4. **Players who won't film consistently.** This is the biggest "wasted spend" failure mode. UNFORCE's value compounds over the trend, not over a single report. If you'll record once and forget, you're paying for a feature you won't use. Cancel after the first month. ## The four common spend profiles Realistic 2026 budgets we see across our beta cohort: ### Profile 1: the unstructured club player - 0 lessons/year - 2 hours of social tennis a week - 0 video review - Result: plateau at NTRP 3.5 for years Adding **€19/mo UNFORCE + 2 lessons/year (€140)** = total spend of €368/year, transforms the player from "no diagnostic" to "weekly diagnostic + occasional correction." This is one of the highest-leverage upgrades available to an amateur. Most of our adult users are in this profile. ### Profile 2: the once-a-month coached club player - 12 lessons/year (€840 at €70/lesson) - 2 hours of tennis a week - 0 video review Adding **€19/mo UNFORCE (€228/year)** = total spend €1,068/year. Each lesson becomes more productive; the player has a weekly diagnostic instead of monthly. This is the modal case for UNFORCE Pro paying for itself. ### Profile 3: the committed amateur with weekly coaching - 50 lessons/year (€3,500) - 4-6 hours of tennis a week - Some self-filming Adding **€19/mo UNFORCE** = total spend ~€3,728/year. The marginal UNFORCE cost is rounding error against the lesson budget; the value-add is making the existing lessons denser and giving the player an objective record of progress. ### Profile 4: the junior tournament player - Tournament coaching €1,500-€3,000/month - Tournament travel €5,000+/year - Multiple federation memberships and gear costs Adding **€19/mo UNFORCE** = literally a rounding error. The use case here is the [junior-coach workflow](/use-cases/junior-coaches), keeping the coach in the loop on tournament matches the coach can't attend. It's not about cost arbitrage; it's about reach. ## What about TopCourt? [TopCourt](https://mytennislessons.com/tennis-blog/2020-topcourt-review) is $180/year for streaming pro instructional content (well-known former tour players, etc.). Different category, it's not analysis of your tennis, it's instruction *into* your tennis. For most amateur players the right TopCourt comparison isn't *"versus a coach"* but *"versus YouTube tennis content."* TopCourt is curated and pro-led; YouTube is free and chaotic. €165/year is reasonable if you want curated technique input on a specific stroke you're rebuilding. The right blend, at the high end of amateur seriousness, is something like **UNFORCE (diagnostic) + TopCourt (input) + monthly lesson (correction)**, total €19+€14+€70 = roughly €100/month. That's still less than three coach hours and is genuinely a fuller curriculum. ## What about SwingVision? If you're on iOS and weighing UNFORCE vs SwingVision specifically, the pricing comparison is one part of a bigger decision, see [the full SwingVision side-by-side](/compare/swingvision). The headline: SwingVision's entry tiers and UNFORCE Pro at €19/mo sit in roughly the same range (SwingVision runs about $15 to $40 per month as of mid-2026; check swing.vision). SwingVision has the Apple Watch advantage; UNFORCE has the Android availability and pricing transparency. ## The single number that matters If we had to give one summary number: **UNFORCE Pro pays for itself if it makes a single coaching hour 30% more productive over the course of a month.** Most coached players hit that bar inside the first three weeks. Most uncoached players hit a much higher bar, they go from "no diagnostic at all" to "weekly diagnostic," which is more value-add than any €19 spend in amateur tennis. That's the case for the spend. It's not a replacement for a coach, it's a force multiplier on whatever coaching you already buy, and a meaningful diagnostic floor for players who don't buy any. ## How to decide A practical decision tree: - **Do you have a coach?** Yes → UNFORCE supplements. Keep coach, add app. No → UNFORCE replaces a chunk of diagnostic work; consider adding monthly coaching too. - **What platform are you on?** iOS only → UNFORCE or SwingVision. Android → UNFORCE or TennisAI.net (SwingVision is iOS only). [The 2026 stroke analysis comparison](/blog/best-stroke-analysis-apps-2026) covers the full landscape. - **What's your monthly tennis budget?** <€100 → UNFORCE alone is the highest-leverage spend. €100-€500 → UNFORCE + monthly lesson. €500+ → UNFORCE as a rounding error in a coached programme. - **Will you actually film?** Yes → buy. No → don't. Try the free tier. Generate three reports. If the third report tells you something useful you didn't already know, the spend pays for itself. If you want the workflow that makes the spend pay back fastest, the [club-player loop](/blog/unforce-for-club-players) is the one. If you're new and need the upload mechanics, start with the [5-minute starter guide](/blog/unforce-5-minute-starter-guide). Tennis coaching in 2026 is more expensive in real terms than it has ever been. AI analysis is cheaper than it has ever been. The right answer for almost every amateur player is some blend of both, and the blend is one of the most efficient feedback loops available to an amateur. --- ### Tennis court heatmap generator app: what the picture actually tells you URL: https://unforce.io/blog/tennis-court-heatmap-generator Markdown twin: https://unforce.io/blog/tennis-court-heatmap-generator.md # Tennis court heatmap generator app: what the picture actually tells you Search for a tennis court heatmap generator app and you get two kinds of results. Some apps draw a pretty coloured court and call it a day. Others treat the heatmap as the last step of a measurement pipeline, where the picture is only as trustworthy as the court detection and bounce mapping underneath it. The difference matters more than the colours, and most of the marketing skips it. I'm Akshay Sarode. I built UNFORCE, so I have a stake in you deciding our heatmap is worth generating. I'll flag where I'm taking sides. But how a heatmap is built, and where it breaks, is the same regardless of which app you use, so most of this post is vendor-neutral. The goal is that you can read any app's heatmap and know whether to trust it. ## Bottom line up front - A court heatmap is a top-down picture of where your shots bounced, coloured by frequency, and filterable by shot type, player, serve number, and point outcome. It shows **placement, not intent**. - It tells a club player things they genuinely cannot self-diagnose: depth distribution, cross-court versus down-the-line bias, and how tightly first and second serves cluster. - It cannot tell you **why** you lost, or whether a shot was the right choice. That is tactics, and tactics still need a coach. - Whether the heatmap is signal or decoration is decided by two numbers you should ask any app to publish: **court keypoint detection accuracy** and **bounce localisation error**. - On UNFORCE those are >99% (hard) and ~97% (clay) court detection, and ~22 cm (hard) and ~38 cm (clay) median bounce error. Full method at [/accuracy](/accuracy). The feature deep-dive is at [/features/court-heatmap](/features/court-heatmap). ## What a court heatmap actually shows a club player Amateur players have a strong sense of their technique and a weak sense of their placement. You know what your forehand looks like. You have watched yourself in a mirror. What you cannot do without external data is say where the ball actually went. A heatmap fills exactly that gap, and there are three readings that pay off immediately. **Placement patterns.** Filter to forehands only and look at the densest area. Then filter to backhands only. If the two clusters sit near each other in the middle of the court, your geometry has collapsed: you are hitting both wings to the same place, and your opponent gets to camp there. If your forehands stretch to the cross-court corner and your backhands stay central, that is a real, visible asymmetry you can work on. **Depth distribution.** This is the one most players are blind to. In one sample report we walk through at [/sample-report](/sample-report), the heatmap showed the player's returns clustered short, inside the service line. Stroke quality was fine. Depth was the problem, and it was quietly handing away court position on every return. You do not feel that during a match. You see it instantly on the map. **Serve placement tendencies.** Filter to serves, then to first serves, then to second serves. First serves should scatter near the lines: T, body, wide. Second serves get more conservative, but the question is how much more. A second-serve cluster sitting fat in the middle of the service box is a return-of-serve invitation, and the heatmap draws it as a tight blob you cannot argue with. ## What a heatmap can't tell you Here is where I want to be honest rather than promotional, because overselling this feature is how apps lose trust. A heatmap shows **where** the ball landed. It does not show **whether that was the right shot to hit**. A deep cross-court forehand and a deep cross-court forehand hit off the wrong foot under pressure look identical on the map. The picture has no opinion about shot selection, court position, or what your opponent did to force the ball. Reading tactics off a bounce map is guessing dressed up as analysis. It also does not encode **intent** or **opponent strength**. A heatmap against a 2.5 hitter and one against a 4.0 hitter can look completely different for the same player, because the other side of the net is shaping every rally. So the map cannot tell you why you lost. It can only tell you what happened spatially, and leave the causation to you and your coach. Any app that claims its heatmap explains your defeats is selling you a story the data does not support. ## How the heatmap gets generated from one phone camera You do not need to be technical to read a heatmap, but knowing how it is built tells you when to trust it. Reader-level, it is three steps. **Court keypoint detection.** The app finds six anchor points on the court: the four corners and the two T-points where the centre service line meets each service line. Six known points on a rectangle of known size are enough to lock the geometry. **Homography.** With those six points, the app solves a perspective transform, called a homography, that maps camera pixels to real-world court metres. This is the step that lets the app say "that bounce was 1.2 metres inside the baseline" instead of "that bounce was at pixel (840, 512)". Everything downstream lives in metres because of this. **Bounce mapping.** The ball is tracked frame by frame. Each bounce is the point where the reconstructed trajectory crosses the court plane. That bounce point is re-projected through the homography onto a flat top-down court diagram. Do this for every shot in the match, colour the result by density, and that scatter is your heatmap. The full five-model pipeline is written up plainly at [/how-it-works](/how-it-works). The practical takeaway: the heatmap is a chain. Court detection feeds homography feeds bounce mapping. A weakness early in the chain shows up as a confidently-drawn, quietly-wrong picture at the end. ## Why accuracy decides whether the heatmap is signal or decoration This is the section that separates a useful heatmap from a decorative one, and it is the reason I push UNFORCE to publish numbers most competitors do not. If court detection is off, every bounce is placed on a court that is itself in the wrong position. The picture still looks authoritative. It is just measuring the wrong reference frame. So the honest question to ask any tennis court heatmap generator app is not "does it have a heatmap" but "how accurate is the court model, and how accurate is the bounce point". Here are UNFORCE's published figures. Court keypoint detection is measured as the share of frames where all six keypoints land within ±15 pixels of human-labelled ground truth: >99% on hard court, ~97% on clay, ~96% indoor. Bounce localisation median error is ~22 cm on hard and ~38 cm on clay. Court zones are typically 2 to 4 metres deep, so a sub-50 cm error does not flip which zone a shot belongs to. That is the whole argument: the resolution is comfortably enough for zone-level pattern reading, and nowhere near enough for line calls. We do not pretend otherwise. The behaviour when detection fails matters just as much as the headline number. When UNFORCE cannot lock the court confidently, it skips the heatmap and the bounce map rather than fabricate a court geometry, and still returns the camera-relative stroke-quality report. I would rather ship a partial report than a confident lie. Every number here, plus the failure modes, is at [/accuracy](/accuracy). ## How to read one heatmap week over week A single heatmap is a snapshot. The real value shows up when you stack them, and the thing to watch is **drift**. **Depth drift.** Pull up your return cluster from last week and this week, against opponents of similar level. Is it creeping forward, toward the service line, which means shorter and more defensive? Or is it sitting deeper? A cluster sliding forward over three sessions is an early warning that shows up on the map weeks before it shows up in your results. **Serve-mix drift.** Track your T-versus-wide split on first serves across matches. If the map shows you drifting toward all-T, you are becoming predictable, and a returner who has seen you twice will start cheating that way. The heatmap is the only place a club player can actually see that mix change over time. One caveat that keeps this honest: the heatmap is not normalised for opponent strength, so only compare matches against similar opponents. Comparing a session against a pusher with one against a hard hitter tells you about them, not about your drift. ## How to film so the court model locks on Because the whole chain starts with court detection, filming is not a nice-to-have. It is the input the model lives or dies on. The setup that keeps the homography stable: - **Behind the baseline, 5 to 10 ft high, whole court in frame.** From this angle all six keypoints are visible cleanly. Hip-height behind the fence occludes the far corners and the solver gets unstable. - **Stationary camera.** Hand-held footage drifts the homography frame to frame and widens every confidence interval. A fence clip or tripod fixes this. - **Main 1x lens, not ultrawide.** Ultrawide and fish-eye modes add barrel distortion the homography does not fully correct. - **30fps or higher, 1080p or better.** Below 30fps the ball trajectory through a fast serve cannot be reconstructed, and low resolution blurs the court lines the keypoint model needs. The failure that trips people up most: if a sideline is just out of frame, bounces in that strip are never tracked, and the heatmap looks like you never hit there. Absence on the map is not the same as absence on the court. The full setup walk-through is at [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match). ## Honest limits A short, real list, because a heatmap oversold is a heatmap distrusted: - **Not a line-call tool.** Sub-50 cm error is excellent for zones and useless for lines. Do not argue calls with it. - **Not a tactical analyzer.** It shows where shots landed, not whether they were the right shots. - **Worn or obscured lines shift the reference frame.** On heavily kicked-up clay or faded lines, the detected court can be off by 30 to 80 cm. Relative patterns, your forehand cluster versus your backhand cluster, stay useful. Treat the absolute zone labels with skepticism, and watch for the low-confidence warning. - **Doubles is beta.** The court assumption and per-player attribution are less reliable than singles. ## How to try it On UNFORCE the heatmap is included on every tier, including the free tier: 3 analyses a month, no card, the same heatmap at the same accuracy as the paid tiers. The free tier is rate-limited, not feature-limited, on purpose. The fastest way to judge any of this is to generate a heatmap from one of your own matches and check whether the clusters match what you thought your game looked like. They usually do not, and that gap is the whole point. --- **Read next:** [The court heatmap feature in full](/features/court-heatmap) · [Accuracy methodology and numbers](/accuracy) · [A sample post-match report](/sample-report) · [How UNFORCE works](/how-it-works) --- ### The full equipment list for filming a tennis match in 2026 URL: https://unforce.io/blog/tennis-match-filming-equipment-2026 Markdown twin: https://unforce.io/blog/tennis-match-filming-equipment-2026.md If you've recorded a tennis match before, you know that the "good enough" gear list is shorter than the "ideal" gear list and longer than the "minimum" one. This post is the actual list, what you need, what's nice to have, what to skip, for filming a singles or doubles match in 2026 well enough that any tennis AI tool (UNFORCE, SwingVision, PB Vision, take your pick) gets clean data to work with. Specific models, current price ranges, and the failure modes I see in our user uploads when the gear is wrong. The Talk Tennis thread "[What equipment do I need to film my tennis matches?](https://tt.tennis-warehouse.com/index.php?threads/what-equipment-do-i-need-to-film-my-tennis-matches.610151/)" and the Quora question "[good camera to use that I could just hook to a fence?](https://www.quora.com/I-want-to-film-my-full-tennis-matches-What-would-be-a-good-camera-to-use-that-I-could-just-hook-to-a-fence-cheaper-the-better)" both cover this terrain, this is the consolidated, opinionated 2026 version. ## TL;DR - **Phone** you already own (iPhone 11+ / Pixel 5+ / Galaxy S10+). - **Fence-mount clamp** ($35) *or* **tripod** ($35-$120) depending on the court. - **Power bank** ($25) for matches over 75 minutes. - **Foam windscreen** ($1) if it's windy. - **Spare phone storage**, clear 6 GB before recording. - **Optional:** monopod ($30) for solo serve practice, SD card / iPhone external drive ($30) for transfer convenience. Total minimum: ~$60 + a phone you have. Comfortable setup: ~$120. ## The phone This is the core component. Don't skimp here, but don't buy a new one for UNFORCE either. Use the phone you have if it qualifies (see [the minimum phone post](/blog/minimum-phone-for-tennis-ai) for the floor). Specifically: - **iOS:** iPhone 11 or newer. - **Android:** Pixel 5+, Galaxy S10+, OnePlus 8+, similar era flagships. - **Recording resolution:** 1080p at 30 fps. If you're between two phones in your household, take the one with better battery and OIS (optical image stabilization). A stable, locked frame is more important than chip generation. ## The mount: tripod vs fence-mount Two paths, picked based on the court you play on. ### Path A: The court has a fence (most public/club courts) Use a fence-mount clamp. The pattern most users converge on: - **Square Jellyfish Spring Tripod Mount** ($35), universal phone holder + spring-loaded clamp. Clamps to the top rail of any chain-link fence. Foundational kit. - **Ulanzi or generic equivalent** ($25), slightly cheaper, similar build. Mount on the top of the fence, dead center behind one baseline, lens facing the far court. The fence top puts you at ~10 feet, which is the right height for ball tracking and court visibility. **Failure mode:** mounting on the side fence (next to the doubles alley) instead of behind the baseline. That gives you a profile view of the players, which AI shot classification hates. Always behind the baseline. ### Path B: No fence (clay clubs, indoor, public parks) You need a tall tripod. The shortlist: - **Joby GorillaPod 5K** ($115), flexible legs let you wrap around a net post or an awkward edge if you can't stand on flat ground. Best Swiss-army option. - **Ulanzi MT-44** ($35), extends to about 4 feet. *Too short* for ideal height; you'd want it on a bench or stair to bring it up. Budget option. - **Manfrotto Compact Action** ($80), extends to about 5'2". Stable. The right answer if you don't need to wrap around anything. - **Generic 9-foot photography tripod** ($60-$100), search "9 ft phone tripod" on Amazon. These exist, are cheap, and work. Less rigid than a Manfrotto but tall enough. **Failure mode:** a 4-foot tripod for a court without a fence. The camera at 4 feet shows you the near baseline well and almost nothing of the far court. Get height or get a fence. ### Path C: A pole / monopod For solo serve practice (no opponent, just you serving), a monopod stuck into a tennis-bag stand or driven into a clay court works. **K&F Concept SA254M** ($30) is solid. Don't try to film a match this way, monopods can't stand alone for 90 minutes. ## Power: the power bank For matches under 75 minutes on a recent flagship, you're probably fine without one. For anything longer, or if your phone is older, get a power bank. - **Anker PowerCore 10,000** ($25), small, light, enough for 2-3 full phone charges. Velcro it to a tripod leg or fence rail. - **Cable:** 1-foot USB-C or Lightning cable, NOT a 3-foot one. Long cables flap in the wind and pull the phone. **Failure mode:** forgetting to bring the power bank but bringing the cable, or vice versa. Pack them together; never separately. ## Storage A 90-minute 1080p video is roughly 4-6 GB. Make sure your phone has 6 GB free *before* you press record. Easy way to verify on iOS: Settings → General → iPhone Storage. On Android: Settings → Storage. If you record more than once a week: - **iOS:** AirDrop completed sessions to a Mac or back them up to iCloud Drive, then delete from the phone. - **Android:** Files by Google → SD card or USB-C drive. A SanDisk Ultra Dual Drive USB-C ($25, 128 GB) plugs straight into a modern Android. **Failure mode:** the recording stops at minute 38 because storage filled up. Always-always-always check before you press record. ## Wind, weather, and edge cases Outdoor tennis means weather. The cheap fixes: - **Foam windscreen for the phone mic** ($1, eBay). Wraps around the bottom of the phone. Eliminates wind howl. - **Lens wipe** (microfiber, free with most phone cases). A smudge on the lens at 9 feet up is invisible to you and ruinous to ball tracking. - **Plastic bag for unexpected drizzle.** I'm not joking. A clear ziplock with a hole for the lens has saved more than one of my own recordings. For cold weather, your phone's battery drains faster. Add 20% to your battery budget. Don't leave the phone in the car overnight in winter, cold-soaked batteries report incorrectly and may shut off mid-record. ## Optional extras A short list of things that help, ordered by usefulness: - **Quick-release plate for the tripod** ($10). Lets you swap phone-on/phone-off in 2 seconds instead of unscrewing. - **Bluetooth remote shutter** ($8). Start/stop recording without touching the phone (so you don't bump the framing). Most don't trigger video on iOS, check before buying. - **External battery / camera grip** ($30, e.g., Moment grip). Adds a shutter button and a tripod thread to the phone. Mostly useful for handheld serve recording. - **Spare microSD / Lightning drive** ($25-$35). Faster to offload to an external drive than to wait for cloud sync. - **A second cheap phone, just for recording** ($150 used Pixel 6a). Some power-users keep a "tennis phone" so the personal phone isn't tied up courtside. Overkill for most. ## Things you don't need Some commonly recommended gear that's overkill or counterproductive for tennis AI: - **4K-capable phone settings.** 1080p is the right call for analysis. Save the 4K for when you're filming a highlight reel. - **GoPro chest mount.** First-person tennis footage doesn't help AI analysis, court geometry isn't visible. Cool for personal review; useless for the AI. - **Auto-tracking phone holder.** Sounds smart; works against you. The AI wants a fixed wide shot. - **A pricey gimbal.** Tripods don't move. Gimbals are for moving cameras. - **Studio lighting.** Outdoor courts have the sun. Indoor courts have ceiling lights. You're not lighting a film set. ## A complete shopping list, two budgets **Budget A, minimum ($60 + phone you own):** - Phone (have) - Square Jellyfish Spring Tripod Mount: $35 - Anker PowerCore 10,000: $25 **Budget B, comfortable ($170 + phone you own):** - Phone (have) - Manfrotto Compact Action tripod: $80 - Square Jellyfish phone clamp adapter: $20 (yes, you still want it for fence days) - Anker PowerCore: $25 - 1-foot USB-C cable: $8 - Bluetooth remote: $8 - Foam windscreen + microfiber: $5 - 128 GB SanDisk Ultra Dual: $25 This setup works for tennis AI on any platform, UNFORCE, SwingVision, PB Vision, OnForm. The gear is sport-agnostic. The differences between apps live downstream of the camera. ## Now you have the gear: how to film Setup matters as much as gear. Two short rules: 1. **Behind the baseline, dead center, locked.** That's the entire camera-position rule. 2. **Press record before you walk on, stop after you walk off.** Trim later. Never "save effort" by stopping between sets, the time-stamps tangle. The longer how-to is in our [how to film your match](/how-to/film-your-tennis-match), the recording rules transfer to any tennis-AI app, including UNFORCE. ## What I'd buy if I were starting today If I had to set up a friend with a phone they already own and $120 in their pocket: - Square Jellyfish Spring Tripod Mount, $35 - Manfrotto Compact Action tripod, $80 (for the days the court has no fence) - Anker 10K power bank, $25 (slightly over budget; worth it) - Foam windscreen, $1 Prices are US retail; the same kit lands in a similar range in euros or pounds. That's it. They could film any match for the next three years with that gear. The phone in their pocket does the rest. ## Related reading - [What's the minimum phone for AI tennis analysis?](/blog/minimum-phone-for-tennis-ai), phone specs. - [how to film your match](/how-to/film-your-tennis-match), once gear is sorted, what you do with it. - [How UNFORCE's pipeline works](/how-it-works), what the camera feeds into on the backend. --- ### First time using UNFORCE? The 5-minute starter guide URL: https://unforce.io/blog/unforce-5-minute-starter-guide Markdown twin: https://unforce.io/blog/unforce-5-minute-starter-guide.md # First time using UNFORCE? The 5-minute starter guide Short answer: record 20-30 minutes of a hitting session with the phone in landscape on a tripod above net height, upload it, and read the report in this order, heatmap first, shot-mix second, one stroke-quality breakdown third. Don't try to read the whole report. Don't compare to anyone. Don't change your strokes after one report. The first session is calibration; sessions two and three are where the pattern shows up. This post is the longer version. If you've just signed up, this is the one to bookmark. ## TL;DR: the actual 5-minute checklist 1. **Minute 0-2:** Phone in landscape on a tripod, 6-10 ft behind the baseline, above net height. Press record. 2. **Minute 3-25:** Play tennis. Don't film the warm-up. Do film at least 20 minutes of actual rallies or sets. 3. **Minute 26-28:** Stop recording, open UNFORCE, hit "Upload video". Wi-Fi recommended for first upload. 4. **Minute 29:** Pipeline runs. You can close the app, push notification when ready. 5. **Minute 30 (or whenever the report's done):** Open the report. Read the heatmap, then the shot mix, then one stroke-quality breakdown. Stop there. ## Why a starter guide exists in the first place The "first time using" problem is real and well-documented. There's a [r/10s thread literally titled "First time using SwingVision"](https://www.reddit.com/r/10s/comments/17e2i1x/) where the user is asking what to do with the report they just generated. There's a [follow-up thread "Tips when using SwingVision"](https://www.reddit.com/r/10s/comments/1d0gm94/) asking the same thing in a different phrasing. The common pattern: a player generates their first report, sees a wall of statistics and per-shot breakdowns, and bounces off because they don't know which numbers matter. This post is the page we wish those users had had on the way in. It's not specific to UNFORCE, most of the advice is "what do you do when an AI tennis tool produces a report", but the workflow assumes you're using UNFORCE. ## What to film For your first session, **don't film a full league match.** Film a hitting session, one set of practice tennis, or 30 minutes of structured rally drills. The reason: a full match has too much going on for a calibration session. You want a short, predictable clip so you can compare what you remember of the session to what the report says. Specifically: - **20-30 minutes is the sweet spot.** Long enough to give the AI a sample, short enough to upload over normal Wi-Fi without you waiting around. - **Singles, not doubles.** UNFORCE's heatmap is calibrated to a singles court layout; doubles works for shot detection but the heatmap is less useful. - **Either you on one side, or you focused on one side.** If you and a partner are both filmed, the report will analyse both, that's fine, but for your first calibration it's easier to focus on one player's data. - **Hard or clay surface.** Both work. Clay is slightly noisier (we cover that in [filming on clay courts](/blog/tennis-ai-clay-courts)). Indoor works too, with one frame-rate adjustment ([the indoor post](/blog/indoor-tennis-ai-analysis) covers it). ## Where to put the camera This is the bit most first-time users get wrong, and it's the single biggest determinant of whether your first report will be useful or frustrating. The non-negotiables: - **Landscape orientation.** Lock it before you press record. Portrait crops out the sidelines and breaks court detection. - **Behind one baseline, centred on the court's lengthwise axis.** Not on the side fence, not at the net post, not in the corner. Behind the baseline. - **6-10 ft (1.8-3 m) above the surface.** Above the net cord, looking slightly down at the court. Below net height = bad framing. - **6-10 ft behind the baseline.** Far enough back to see the whole court in frame; close enough to resolve player pose. The [filming guide](/how-to/film-your-tennis-match) has the full breakdown with diagrams. For your first session, "tripod with phone clip, 6 ft tall, weighted at the base, behind the baseline" gets you 95% of the way there. If you don't have a tripod, [the no-fence post](/blog/tennis-camera-no-fence) covers the alternatives. ## How to upload 1. Open the UNFORCE app. (UNFORCE runs on iOS and Android.) 2. Tap "New Session" or "Upload video", wording varies by app version. 3. Select the video from your phone's gallery. UNFORCE will show you the file size and an estimated upload time. 4. Wi-Fi recommended. A 30-minute 1080p clip is roughly 3-4 GB; on home Wi-Fi, that's 3-7 minutes to upload. On 5G it's faster but uses your data. 5. Once the upload finishes, you can close the app. The pipeline runs server-side. You'll get a push notification when the report is ready, usually a few minutes for a short clip like this (typically 3 to 7 minutes for a 60-minute match, longer for long videos or under load). There's no "wait, what does this button do?" moment. The upload flow is the upload flow. ## How to read your first report This is the part most first-time users skip and then complain about. The report is several pages long. **Don't read the whole thing on session one.** Read these three things in this order, and stop. ### Page 1: the court heatmap (read this first) The heatmap shows where your shots actually bounced, broken down by shot type. It's the single most useful page in the report, and the one your eye should land on first. What you're looking for, on session one: **does the heatmap pattern match what you remember of the session?** If you remember spraying backhands wide, do you see a cluster of backhand bounces wide? If you remember hitting deep cross-court forehands, is there a cluster in the deep cross-court zone? If the heatmap matches your memory, the report is reliable for you. Move on to the next read. If the heatmap *doesn't* match your memory, for instance, the report shows backhands going deep when you remember them all going short, the most likely cause is camera position, not AI failure. Check that the phone was above net height in landscape behind the baseline. If it was, then your memory is the unreliable one (which is exactly why video review works). ### Page 2: the shot-mix summary (read this second) This is where session one earns its keep. Look at the shot counts: how many forehands, backhands, serves, volleys did you hit? The single most common pattern at NTRP 3.0-4.0 is a **3:1 forehand-to-backhand ratio.** Most players genuinely don't know they're running away from their backhand. If your report shows that ratio (or worse), congratulations, you've just identified the highest-leverage single fix in your game. Your opponent figured it out by game three; now you know too. Don't try to fix it on session one. Just notice it. ### One stroke-quality breakdown (read this third) Pick one shot type, your forehand or your serve, and read the stroke-quality breakdown. UNFORCE scores stroke quality across preparation, contact, and follow-through, with sub-scores for kinetic-chain components (legs, hips, shoulders, racquet). For session one, you're not trying to fix anything. You're trying to **calibrate your eye to what the scores mean**. A 7.2/10 forehand prep score: is that good? Is it bad? On session one, you don't know. You'll know after session three, when you have three reports to compare. Don't read every shot type's breakdown. Don't compare to anyone else. Pick one shot, read the breakdown, close the report. ## What to ignore on session one - **The week-over-week comparison panel.** You don't have a week-over-week yet. It'll be empty. - **The report insights beyond the headline.** Read the headline tip; ignore the rest until session three. - **The opponent analysis.** Useful for match charting, not useful for calibration. - **Speed and spin numbers in absolute terms.** They're directionally useful (your serve is faster than your second serve) but the absolute number requires comparison data to mean anything. Don't get hung up on whether your serve is "really" 95 mph. - **The doubles report (if you accidentally filmed doubles).** Singles is the supported path; doubles works partially. ## What changes on session two and three Session two, you record again, same court if possible, similar opponent tier, same camera position. Now the report has a comparison column. Are your shot counts shifting? Is the heatmap creeping deeper? Did your forehand stroke-quality score move? Session three is where the *trend* shows up. Three data points is the minimum to call something a pattern instead of noise. By session three, you'll know: is my forehand actually getting more consistent, or am I chasing variance? This is also when most players start noticing one specific thing the report keeps surfacing, usually a shot-mix imbalance or a placement leak, and start working on it. That's the [4-week self-coaching loop](/use-cases/club-players) earning its keep. ## What if my report has obvious errors? Three common ones, in order of how often we see them: 1. **Shot count is too low.** Almost always a camera position issue. Check landscape, height, framing. Re-shoot. 2. **Heatmap looks rotated or stretched.** Court detection failure. Almost always a camera position issue (too low, off-axis, or framing missing the back baseline). 3. **Stroke-quality scores look weirdly low across the board.** Check that the camera resolved the player's full body in the frame, if you're cropped at the head or feet, pose detection degrades. Camera position fixes 80% of "weird first report" issues. The remaining 20% is genuine model error, which we surface on the [accuracy page](/accuracy) along with the failure modes we know about. ## After session three: read the rest of the report Once the heatmap, shot mix, and stroke-quality breakdown are familiar, *then* read the rest. The opponent analysis becomes useful when you've played the same opponent twice. The week-over-week panel earns its keep at session three. The full report insights become readable once you have a baseline. If you're a coach setting players up with this workflow for the first time, the [junior coaches page](/use-cases/junior-coaches) has the between-lessons version of this loop. If you're a parent of a junior tournament player, [the parent guide](/blog/unforce-for-parents-of-juniors) covers the supportive (not coachy) version. For everything else, give it three sessions. The pattern shows up. --- ### UNFORCE for adult returners: how 4 sessions surface your old habits URL: https://unforce.io/blog/unforce-for-adult-returners Markdown twin: https://unforce.io/blog/unforce-for-adult-returners.md # UNFORCE for adult returners: how 4 sessions surface your old habits Short answer: if you haven't played tennis in five-plus years and you're easing back in, your old technique is muscle memory, and *not all of it is good*. The first UNFORCE report shows you what's still there, what's decayed, and what was always shaky. Four sessions in (a month of weekly recordings), the trend is clear enough to know what to rebuild and what to leave alone. Do it before the comeback re-cements the bad habits along with the good ones. This post is the longer version of that loop. There's a [club-player workflow](/blog/unforce-for-club-players) that covers the once-a-week diagnostic loop in general. This post is the returner-specific version, what's different about it, and why session one is going to feel weird. ## TL;DR: the 4-session arc | Session | Focus | Realistic outcome | |---|---|---| | 1 | Calibration. Film a hitting session, generate the first report. | Surfaces what's left of your old technique. Some of it is great. Some of it has aged badly. | | 2 | Repeat the same session, same court. Compare. | Your fitness shifted, the report did too. Don't over-read; you're still calibrating. | | 3 | The pattern stabilises. | Now you can tell what's a habit (consistent across reports) vs what's match-day noise. | | 4 | The plan. | One specific thing to rebuild deliberately. The rest of the comeback is fitness and reps. | Total time: four weeks, ~20 minutes of phone work per week. By the end of week four, you have a clear answer to "should I rebuild my serve from scratch or just oil the chain?" ## The returner moment You played tennis in your twenties. You played in college, or at a club, or at a regular Sunday social. Then life happened, work, kids, knees, geography, and you stopped. Five years passed, or fifteen. Now you're back. Maybe you joined a club for the new social circle. Maybe a friend handed you a racquet. Maybe a doctor mentioned cardio. Whatever brought you back, you're standing at a baseline holding a racquet that feels both familiar and foreign, and you've just realised three things at once: 1. Your strokes are still in there. Your body remembers. 2. Your fitness is not. You're already winded after one set. 3. Some of what your body remembers is *not* what you wish it remembered. The third one is the UNFORCE problem. The technique your body kept is the technique you developed in your twenties, including the bits that were already wrong. Without a tool that shows you what's there now, your comeback re-cements all of it: the good, the bad, the compromised. Six months in, the bad bits are back to where they were before, and harder to fix than they would have been at session one. The four-session UNFORCE arc is designed for this exact moment. ## Session 1: the honest mirror Film a 30-minute hitting session, ideally with a hitting partner of similar level. Same camera setup as any UNFORCE session: phone in landscape, behind the baseline, above net height. [The filming guide](/how-to/film-your-tennis-match) has the details. Don't film a competitive match for session one. Comebacks have an emotional layer; competitive nerves at session one will produce a report that surfaces more nerves than technique. A relaxed hitting session is the right calibration. What the first report will probably show: - **Your shot-mix is still there.** If you were a forehand-dominant player at 32, you're a forehand-dominant player at 47. The patterns persist. - **Your stroke-quality scores look lower than you'd expect.** This is mostly footwork and weight transfer, both of which are the first thing to decay with time off. The arms remember; the legs forget. The kinetic-chain breakdown will show this clearly. - **Your serve toss has drifted.** This is very common. Returners often have a toss that's moved 20-40 cm from where it used to live, usually because of shoulder mobility changes. The pose-overlay in the report makes this immediately visible. - **One or two strokes look strangely intact.** The shot you hit ten thousand times in your twenties is still good. Often this is a backhand slice or a forehand approach, the unfussy, repetitive shots tend to survive time off better than the more athletic strokes. Don't act on any of this at session one. You're calibrating. Read the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) for the right read order; the same order works for returners. ## Session 2: the noise floor Same court, same hitting partner, same time of day, one week later. Film, upload, compare. The honest thing about session two is **most of what you see is noise, not signal.** Your fitness will be different. Your shoulder will be looser or tighter than last week. The report's numbers will move up and down, and at session two you don't yet have enough data to know whether the moves are meaningful. This is the stage where adult returners most often quit UNFORCE. The report contradicts what they remember of last week, the numbers don't make sense, they think the tool is broken. It isn't. It just needs a third data point before any pattern emerges. The discipline at session two: **don't change anything yet.** Don't try to fix the toss. Don't try to deepen the forehand. Just film, upload, and add the report to the pile. ## Session 3: the pattern This is where it gets useful. By the third session, you have three reports. Now you can start asking the right question, which is not *"is my forehand good?"* but *"is the same thing showing up across all three reports, or is it bouncing around?"* Things that show up across three reports are habits. Things that bounce around are state, fitness on the day, opponent style, weather, mood. For most adult returners we've seen, three or four real habits show up by session three: - A consistent shot-mix tilt (almost always toward the dominant side). - A specific technical issue that's reproducible (the toss drift, a wide swing path, late prep). - A heatmap leak (shots clustering short, or pulling cross-court when you wanted down-the-line). - A serve-quality gap (first serve looking fine, second serve looking like a beginner). Pick one of those to work on for sessions four onward. Not all four. **One.** ## Session 4: the plan By session four, you have a tracked baseline and one identified problem. This is the moment when UNFORCE earns its keep most clearly for a returner: the report has told you what to focus on, and you can spend the next three months working on it instead of working on everything. For an adult returner, the highest-leverage candidates are usually: - **Footwork rebuild** if the kinetic-chain leg score is consistently low. Single best fix: a coach lesson focused on split-step and recovery. - **Toss reset** if the serve toss has visibly drifted. Single best fix: 50-toss-no-hit drill twice a week, with the UNFORCE pose overlay as the feedback. - **Backhand rebuild** if the score is consistently low and the heatmap shows you avoiding it. Single best fix: structured practice that forces backhand reps, with weekly UNFORCE as the measurement. - **Second-serve rebuild** if the report shows first-serve quality at 7+ but second-serve at 4-5. Single best fix: serve-only practice block, twice a week, 50 second serves per session. This is also the moment to decide whether you want a coach. We do the cost math in [the honest cost of tennis coaching vs an AI app](/blog/tennis-coaching-cost-vs-app). For an adult returner, the most efficient pattern we've seen is: one lesson a month, weekly UNFORCE reports, six months of structured rebuilding. ## What's different about returners vs new players A new adult player and an adult returner produce different reports, even at the same NTRP level. The differences worth knowing: - **Returners have higher ceilings on technique scores but lower floors on fitness scores.** Your forehand can be technically excellent and your footwork still 4/10 because you haven't moved that way in a decade. - **Returners' shot-mix preferences are sticky.** A first-time adult player can be coached into a balanced shot mix from the start; a returner has the muscle memory of avoiding their backhand from twenty years ago, and the report will show it. - **Returners often plateau faster, then jump.** Comebacks are non-linear. The first six weeks of rebuilding, the report doesn't move much. Around week eight or ten, the fitness gain compounds with the technique work and the scores jump. Don't quit at week six. - **Returners benefit more from the heatmap than from stroke-quality.** Tactical patterns are easier to shift than technical ones, and the heatmap is the page that shows tactical patterns most clearly. ## The risk: re-cementing the wrong thing The reason this loop matters specifically for returners is the cement-rate. Most coaches will tell you that once you're back playing regularly, old habits re-groove fast, and the older you are, the more deliberate you have to be to catch them before they set. If you come back and play three matches a week for three months without paying attention to what your body has remembered, your old bad habits become your new bad habits, and they're harder to undo than they would have been if you'd caught them at session one. We've watched this play out enough times to be confident in the framing. The returners who thrive in their second tennis era are the ones who treated the comeback as a deliberate rebuild rather than a recovery of the past. UNFORCE's job in that rebuild is to surface what's actually there, accurately, week by week, so the rebuild is informed, not nostalgic. ## A note on injury caution Adult returners are at higher injury risk than continuous players, especially in the first three months. UNFORCE is not a clinical or biomechanical assessment tool, the stroke-quality scores are technical, not medical. If something the report surfaces worries you (a persistent low contact-point score, say, that points to a mechanical inefficiency worth showing a coach or physio), get a professional to look at it. The pose overlay can be useful as a *conversation* starter with a coach or physio, but not as a diagnostic. The good news: avoiding the obvious overuse traps in the first three months is mostly about volume management, not technique correction. Don't go from zero to four sessions a week in your first month back, regardless of what the report says. ## What about the alternatives? For adult returners specifically: - **SwingVision** works similarly on iOS at roughly $15 to $40 per month as of mid-2026 (check [swing.vision](https://swing.vision) for current pricing). The Android exclusion bites a lot of returners, adults coming back to tennis tend to skew toward whichever phone they bought five years ago, which is often Android. [The SwingVision comparison](/compare/swingvision) covers this. - **TopCourt** ($180/yr per a 2020 [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify current pricing) is instructional content, useful for the "how do I rebuild a backhand" question once UNFORCE has flagged the rebuild target. Complements rather than competes. - **OnForm** is generic multi-sport video, useful if you want to do your own clipping. Different loop and a slower one. - **A monthly lesson with a coach** is the highest-impact spend if the budget allows. UNFORCE plus monthly coaching is the combination most adult returners we know land on after six months. ## The four-session promise If you record four hitting sessions over four weeks, in the same conditions, with the same camera setup, the UNFORCE reports will tell you, with published error bars ([/accuracy](/accuracy)) and without sentiment, what's still there from your old tennis and what isn't. That's worth doing once, deliberately, before the comeback gets ahead of you. Start with [the 5-minute starter guide](/blog/unforce-5-minute-starter-guide) for session one. Compare the four reports at the end of the month. Pick one thing to rebuild. Get a coach for that one thing. The rest of the comeback is reps and patience. You're not the player you were. That's actually the point. --- ### UNFORCE for club players: the once-a-week diagnostic loop URL: https://unforce.io/blog/unforce-for-club-players Markdown twin: https://unforce.io/blog/unforce-for-club-players.md # UNFORCE for club players: the once-a-week diagnostic loop Short answer: pick one match a week, your league night or your standing Tuesday hit, record it, upload it, read the report on the drive home, fix one thing the next week. Over six weeks, that's, in my (admittedly biased) view, about the most efficient self-coaching loop available to a club player. Once a week is the sweet spot. Less than that and you lose the thread; more than that and you're chasing noise. This post is the longer version. There's a [companion use-case page](/use-cases/club-players) that's the evergreen overview of who this is for. This post is the deeper workflow walkthrough, what to actually do each Tuesday. ## TL;DR: the weekly loop | Day | Action | Time | |---|---|---| | Tuesday (league night) | Set up phone behind baseline before warm-up. Record. | 2 min | | Tuesday post-match | Upload from the car. Pipeline runs. | 5 min | | Tuesday evening | Read report: heatmap, shot-mix, one stroke-quality breakdown. | 10 min | | Wednesday-Sunday | Pick one thing to work on at the weekend hit. | - | | Following Tuesday | Same court, same opponent tier. Repeat. | - | Total weekly time investment: **~20 minutes**. That's it. Six weeks of that loop is about four hours of structured self-review, for the cost of a phone, a tripod, and a Pro subscription. Treat the four-hours figure as illustrative arithmetic, not a claim that it equals four hours of one-to-one coaching. ## Who this loop is for If most of these are true, this post is for you: - You play league tennis or social club tennis **once or twice a week**. - You're somewhere between **NTRP 3.0 and 4.5**, comfortable rallying, working on a second serve you can trust. - You have a **clear sense that something is leaking points**, but you can't tell what. - Your group lessons are €50-€100 each and you do **one a month, or none**. - You're frustrated by feeling like you've stopped improving. If that's not you, for instance, you're a tournament-ranked junior, a 5.0+ player, or you're already getting weekly one-to-ones, this post isn't aimed at you. The [junior coach workflow](/use-cases/junior-coaches) is closer to the right page if you're working with a coach, and the [stroke analysis app comparison](/blog/best-stroke-analysis-apps-2026) covers the higher-end side. ## The loop, in detail ### Day 1: Tuesday: film one match, not all of them There's a [r/10s thread](https://www.reddit.com/r/10s/comments/18xu4ph/) titled *"SwingVision users, do you record everything?"* The thread is mostly people admitting they don't, and the players who *do* get value from video review describe a regular slot, not a film-everything habit. That's the pattern. **Pick one regular match.** Your league night, your standing Tuesday hit, your Sunday club ladder. Same court if possible, similar opponent tier, similar time of day. That keeps the comparison clean from week to week. **Set up before the warm-up, not during.** The phone goes behind the baseline, on a tripod, above net height, in landscape. Two minutes of work before warm-up is enough, start the recording, hit the court, forget it's there. We cover the camera positioning in detail in [the filming guide](/how-to/film-your-tennis-match); for fence-less courts, [the no-fence post](/blog/tennis-camera-no-fence) has the alternatives. **Don't film the warm-up itself.** A warm-up is 8 minutes of casual mini-tennis, not representative of your real game, but it eats upload time and dilutes the report's averages. Either trim it later or just hit record once you start the first set. ### Day 1: Tuesday post-match: upload immediately The single biggest reason this loop fails: people get home, eat dinner, get into bed, and never upload. By Friday it feels like too much trouble. By the next Tuesday, last week's match is overwritten in their memory and the report has nothing to anchor against. **Upload from the car** (passenger seat, please don't film and drive) or from the bench right after the match. The UNFORCE upload runs over 5G or Wi-Fi; a 90-minute match is roughly 8-10 GB and takes 5-15 minutes depending on connection. By the time you've showered, the report is in your inbox. The pipeline that runs in the meantime: TrackNet finds the ball frame-by-frame, court detection locks the keypoints, MediaPipe does pose, the bounce/shot classifier tags every event, the report PDF assembles. That's the [how it works](/how-it-works) page if you're curious about the internals. ### Day 1: Tuesday evening: read the report in the right order Don't open the report and scroll. **Read it in this order**, and the rest follows: 1. **The court heatmap.** This is the page that earns its keep for club players. Where did your shots actually bounce? Most NTRP 3.5 players think they're hitting cross-court; the heatmap shows half their shots bouncing in the middle third. That's a four-week project right there. 2. **The shot-mix counts.** Forehand-to-backhand ratio. Most club players run 3:1 forehand to backhand and don't realise it. The opponent figured it out by game three. 3. **One stroke-quality breakdown.** Pick one shot type, your forehand or your serve. Look at the kinetic-chain breakdown (legs, hips, shoulders, racquet). On session one this is calibration; by session three it's diagnostic. Stop there. Don't read every report insight beyond the headline. Don't dig into per-game stats. The whole point of the loop is to surface *one* thing to work on, not ten. ### Day 2-7: Wednesday-Sunday: fix the one thing This is the bit most players skip. The report tells you something. You nod. You file the PDF. Next week you record another match. Nothing changes. The fix: **pick the one thing the report flagged**, and integrate it into your between-match practice. Not all of it. One thing. Common patterns we see at NTRP 3.0-4.5: - **Shot-mix imbalance.** Heatmap and counts show you're hiding from your backhand. Fix: open every weekend hit with 50 backhand-only rallies. Force the count up. - **Short ball pattern.** Heatmap shows your shots clustering in the middle third. Fix: practice depth as a target, aim for the gap between the service line and the baseline, not "deep" as an abstract concept. - **Late prep on backhand.** Stroke quality breakdown shows low prep score on backhand specifically. Fix: shadow swings between points; deliberately set the racquet back as soon as the ball crosses the net. - **Drop in second serve quality.** Stroke quality shows first serve at 7.5, second serve at 4.2. Fix: serve-only practice block; 50 second serves to a target. You're not trying to fix all four. Fix one. The next report will tell you whether it landed. ### Day 8: next Tuesday: repeat Same court, same opponent tier, same camera position. Upload, read in the same order, compare to last week. By week three, you have three data points. That's the minimum to distinguish signal from noise. By week six, you have a real curve. ## What you'll see in 6 weeks (realistically) - **Week 1-2:** calibration. The report doesn't feel actionable yet, you're learning what the numbers mean. This is fine. - **Week 3-4:** the first real fix. Usually a shot-mix or placement issue (because those are the most actionable for a club player without a coach). Heatmap shows the change. - **Week 5-6:** stroke-quality begins to move. Slower-moving signal because technique changes lag behind tactical changes, but by week six the trend shows up. - **Beyond week 6:** the pattern stabilises. You'll plateau on whatever you fixed and the report starts surfacing the next thing. We've seen this loop coincide with a half-NTRP-level improvement over a winter season for some committed players. It's not guaranteed, and it's not the loop alone, it's what self-coaching with structure can produce when the player does the between-session work, with the AI as the structure provider. ## What this loop is *not* good for Honest things this doesn't replace: - **One-to-one drilling.** You still need to hit balls with a feeder for stroke mechanics. The report tells you *what* to work on; you still need court time to work on it. - **Mental and tactical coaching.** A coach who watches you live picks up things the report can't, body language, between-point routines, pattern adjustments mid-match. - **Match-day coaching.** The loop is async. It surfaces patterns over weeks, not adjustments mid-match. If you have access to a coach for one of those things, UNFORCE doesn't replace them, it makes the lesson denser, because you arrive with a question and a video instead of "how was Saturday?" The pricing comparison post, [the honest cost of tennis coaching vs an AI app](/blog/tennis-coaching-cost-vs-app), covers when UNFORCE replaces vs supplements a coach. ## What about other tools? For the club-player loop specifically: - **SwingVision** does the same kind of analysis on iOS. It distributes features across tiers, with the analysis-heavy ones sitting in the upper tiers, per their published tier list (roughly $15 to $40 per month as of mid-2026 (check [swing.vision](https://swing.vision) for current pricing)). And if you're on Android, you're locked out entirely. Our [SwingVision comparison](/compare/swingvision) covers the differences. - **OnForm** is a generic multi-sport video tool, useful, but you do the analysis yourself, frame by frame. That's a different loop and a slower one. - **TopCourt** is instructional video ($180/yr per [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review)), great for technique input, but it's not analysis of *your* tennis, so it complements rather than replaces this loop. ## The loop is the product If you take one thing from this post: **the loop is the product, not the report.** A single UNFORCE report is an interesting artefact. Six reports in six weeks is a coaching curriculum. The discipline is in the regular slot, same Tuesday, same camera position, same read order. Get that right and the [shot detection](/features/shot-detection) does the heavy lifting; you do the work between sessions. If you're new to UNFORCE and haven't generated your first report yet, start with [the 5-minute starter guide](/blog/unforce-5-minute-starter-guide). If you're trying to decide whether the once-a-week loop justifies a Pro subscription, [the cost-of-coaching post](/blog/tennis-coaching-cost-vs-app) does the math. Six weeks. One match a week. Read in order, fix one thing, repeat. --- ### UNFORCE for junior coaches: async homework between lessons URL: https://unforce.io/blog/unforce-for-junior-coaches Markdown twin: https://unforce.io/blog/unforce-for-junior-coaches.md # UNFORCE for junior coaches: async homework between lessons Short answer: have your players record one tournament match a week, upload it, and review the report against a one-paragraph homework prompt you send them. Then they bring three time-coded clips to the next lesson with a question. You walked into the lesson having done zero clipping; the player did the work; the lesson stays for the things only you can do. Six weeks of that loop is denser than 12 weeks of "remind me what we worked on" lessons. This post is the workflow walkthrough. There's a [companion use-case page](/use-cases/junior-coaches) that's the evergreen overview. This post is what to actually do, week by week. ## TL;DR: the loop 1. **Player records one tournament match per weekend.** Phone on a tripod, behind the baseline. They (or their parent) upload from the car. 2. **You send a one-paragraph homework prompt** before or right after the upload, what specifically to look for in the report. 3. **Player reads the report and answers the prompt.** They bring three time-coded clips and a written observation to the next lesson. 4. **Your lesson hour goes to feeding, repping, on-court correction.** Not to "remind me what happened on Saturday." 5. **You archive the PDF in a Drive folder.** By month three, you have the longitudinal view no junior coach has historically had at this price point. ## Who this loop is for If you coach **U12-U18 ranked juniors** at a club, academy, or as an independent, and you have somewhere between 4 and 20 players on your roster, this is for you. The post is also useful for parent-coaches who effectively *are* the junior's coach in practice. If you're at a top academy with hard-wired video, sports-science staff, and full-time match analysts, this post is below your tooling level. If you only coach adults, [the club-player workflow](/blog/unforce-for-club-players) is the closer match. The persona check that makes this work: - Your players (or their parents) **pay for one to three lessons a week** plus tournament travel. - You don't have a SmartCourt at your facility, and your phone is your only filming tool. - You're constantly fielding *"can you look at my match from Saturday?"* and you don't have time to clip and review every video by hand. - You'd like the player to **do the watching themselves**, with structure, between lessons. The Talk Tennis [Coaches/Parents, match tracking & statistics app?](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/) thread is the evidence base for this persona. The thread is full of coaches and parents specifically asking for an async match-tracking workflow that doesn't require facility hardware. That's what this loop is. ## The loop in detail ### Step 1: the player records one tournament match per week Junior tournaments produce 1-3 matches a weekend. Your player picks one, usually the most competitive, not the easiest win. They record from a tripod behind the baseline (or their parent does). Three to five minutes of upload time. By the time the parent has driven home, the report is ready. You don't need to be at the tournament. You don't need to film. The player and parent handle the recording. Your involvement starts at step 2. The camera setup details are in [the filming guide](/how-to/film-your-tennis-match), share that link with parents in their welcome email if you're rolling this out across your roster. Most parents over-engineer the setup the first time and under-engineer it the third; the guide is the consistent reference. ### Step 2: you send a one-paragraph homework prompt The single biggest unlock here is *what* the player is asked to look at. You're the coach, you know what they're working on. Send them a prompt before or right after the upload, something like: > *"Look at the cross-court backhand heatmap from Saturday's match. Compare it to last week's report. Are you getting deeper, or is it still landing in the middle third? Bring me three forehands and three backhands you want to talk about on Tuesday."* That's the prompt. It does three things: 1. Tells the player **what to look at** in a long report. Without the prompt, juniors either read the whole thing (too long, not actionable) or skim and bounce (no learning). 2. Makes the report **comparative**, not absolute. The interesting question isn't "is my backhand 7.2/10", it's "is it better or worse than last week, and why?" 3. Gives them a **structured deliverable** for the lesson. They show up with three clips and a question, not "remind me what we did." WhatsApp / text / email, whichever channel they're on. One paragraph. Don't write essays. ### Step 3: the player reads the report and answers the prompt They open the PDF, find the bit you asked about, scrub the video to the time-codes for three clips, and write a one-sentence observation. Total time investment for the player: 15-20 minutes. Less than half a TikTok scroll session. The reading order we recommend for juniors is the same as for adults: heatmap first, shot mix second, then the stroke-quality breakdown of whichever shot you flagged. [The 5-minute starter guide](/blog/unforce-5-minute-starter-guide) has the player-facing version of this, share it with new juniors on day one. ### Step 4: the lesson stays for what only you can do Feeding, rep work, the actual on-court correction. The lesson hour doesn't get spent on "remind me what happened on Saturday", that's what the report is for. Your hour gets denser. The player gets faster reps on the things they can't see themselves. Specifically: at the start of the lesson, the player tells you the homework answer in 30 seconds, plays you the three clips on their phone, you watch the clips for 90 seconds, and now the next 50 minutes are yours. You're not pulling out your laptop, you're not scrubbing match footage, you're not playing back-and-forth on what the player is supposed to remember from three days ago. This is the part that compounds. By week four, the player walks in with a question and a clip and a hypothesis. That's the lesson density that elite academies have always had access to. UNFORCE gives it to a one-coach-with-a-phone setup. ### Step 5: archive the PDF The [coaching report PDF](/features/coaching-report) is the artefact that survives the season. Save them in the player's Drive folder, named by date and tournament. By month three, you have a longitudinal view that junior coaches have not historically had at this price point, without a SmartCourt, without a sports-science budget. That archive is also exactly what a parent wants to see when they're deciding whether to keep paying for lessons. *"Look, here's where Maya was in October, here's where she is now"*, the PDF makes the conversation about evidence, not vibes. ## What the report does well for juniors specifically Juniors at U12-U16 are at the level where small technical changes compound. The report's three useful surfaces, in priority order: 1. **The heatmap** is the strongest signal. Junior tactical patterns are remarkably consistent, they have a favourite shot and a hidden weakness, and the heatmap shows both within one match. Almost every junior we've worked with has a backhand cross-court they're avoiding; the heatmap surfaces it. 2. **The shot-mix counts** show the avoid-the-backhand pattern in raw numbers. A junior running 4:1 forehand-to-backhand needs that count brought to their attention; the lesson then becomes about repetition. 3. **The stroke-quality breakdown** is the slowest-moving signal, useful for picking out specific kinetic-chain issues, less useful as a week-to-week trend tracker. Use it once a month, not every report. ## What to watch out for A few honest cautions: - **Don't let the player chase the technique score.** If the report says their forehand prep is 6.8/10, that's a discussion starter, not a target. The player who tries to "fix the score" mid-match plays worse for two weeks. Keep the score conversation in the rep-block context, not the match-play context. - **Don't let parents drift into coaching.** The supportive parent who reads every report and starts feedback from the sideline is a known antipattern. We wrote [the parent-of-juniors post](/blog/unforce-for-parents-of-juniors) specifically to keep that boundary clear. Share it with parents on the way in. - **Calibrate the player's expectations on accuracy.** UNFORCE is good but not perfect. On clean hard-court footage, shot-detection F1 runs from about 0.92 on forehands down to 0.78 on volleys; on clay or in a noisy indoor hall, a few points lower. We publish the per-shot numbers on [the accuracy page](/accuracy). If a junior fixates on the one shot the report missed, you'll lose them. Set the calibration at week one. - **Don't review every report yourself.** The whole point of the loop is the player does the reading. If you're spending 30 minutes per junior per week reading their reports, you've recreated the bottleneck the loop was supposed to solve. ## The competitor landscape for coaches Honest summary of what else is out there for the junior-coach use case: - **SwingVision** has good iOS support and an active community of coaches, but no Android (which means half your roster's parents can't use it on their phones). Pricing runs roughly $15 to $40 per month as of mid-2026 (check [swing.vision](https://swing.vision) for current pricing), with the analysis-heavy features gated to the upper tiers. The [SwingVision comparison](/compare/swingvision) covers this in detail. - **OnForm** is a generic multi-sport tool. Coaches who want to do their own clipping use it; if you're already in this loop manually, OnForm is the cleaner version of that. UNFORCE replaces the manual clipping; OnForm doesn't. - **TopCourt** is instructional content ($180/yr per [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review)), great for sending players technique videos. Complements UNFORCE rather than competing. - **Hand-clipping in iMovie or CapCut** is what most independent coaches actually do today. It works, it's free, and it's the option you're choosing against when you adopt UNFORCE. The trade is your time vs the player's reading time. ## Six weeks in: what changes Realistic curve for a once-a-week-recording, twice-a-week-lesson junior: - **Week 1:** First report. Coach and player calibrate on what the scores mean. The player is mildly horrified at their second-serve toss height. (Universal experience.) - **Week 2:** First *between-lesson* fix lands. Usually a shot-mix or a placement issue. - **Week 3:** Coach starts noticing they're spending less time *re-explaining* and more time *progressing*. This is the real ROI for the coach. - **Week 4:** The player has built the habit. They show up with three clips, a question, and an answer they want to talk about. The lesson density doubles. - **Week 6:** The PDF archive is now a real season-long record. You can show the parent a curve. - **Week 12:** The next thing the report flags is something the player wouldn't have seen on their own, a kinetic-chain issue, a tactical bias under pressure. The loop has matured into actual coaching. The lesson hour gets the time you'd have spent on remembering what happened. You spend it on the things only you can do. That's the loop. If you're starting fresh with a roster, the [5-minute starter guide](/blog/unforce-5-minute-starter-guide) is what to send your players first. If you're a parent reading this on behalf of your kid's coach, [the parent-of-juniors post](/blog/unforce-for-parents-of-juniors) is your version. --- ### UNFORCE for parents of juniors: tracking progress without being 'that parent' URL: https://unforce.io/blog/unforce-for-parents-of-juniors Markdown twin: https://unforce.io/blog/unforce-for-parents-of-juniors.md # UNFORCE for parents of juniors: tracking progress without being 'that parent' Short answer: be the upload helper, not the report reader. Drive your kid to the tournament, set up the tripod, hit record, drive home, upload from the passenger seat. Stop there. Let the coach prompt the player on what to look at. Let the player be the one who reads the report. Show up to the lesson with the petrol money, not with the analysis. That's how the UNFORCE workflow actually serves a junior tournament player without making tennis the parental project. This post is the longer version of that boundary. There's a [companion junior-coach post](/blog/unforce-for-junior-coaches) with the coach-side workflow; this is the parent-side version, which is materially different in practice. ## TL;DR: the parent's job | Action | Frequency | Time | |---|---|---| | Drive to tournament, set up phone on tripod behind baseline | Per match | 5 min | | Press record before warm-up, stop after match | Per match | 30 sec | | Upload from the car (passenger seat) | Per match | 5-10 min | | Forward PDF to coach if the coach has asked for it | Per match | 30 sec | | Read one report a month to see the trend | Monthly | 10 min | | **Coach the kid from the report** | **Never** | **0 min** | That's it. The whole job is logistics and one monthly trend-check. The reading and the coaching belong to the player and the coach. ## The antipattern this post exists to prevent There's a well-known persona in junior tennis: the parent who watches every match, films every match, narrates every error, and turns every car ride home into a coaching session. The kid hates tennis by 14. The parent doesn't understand why. Tennis Twitter and the Tennis Warehouse forums are full of versions of this story. The [Coaches/Parents, match tracking & statistics app?](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/) thread on Talk Tennis is a good window into it, coaches and parents asking for analysis tools, with replies from other coaches warning about parents who "weaponise" the data. This post exists because UNFORCE, used wrong, makes that pattern *worse*, not better. A parent with a 47-page PDF report on their kid's match has 47 new things to be "constructive" about on the drive home. The kid has nowhere to hide. The way UNFORCE should work for a parent: it's the kid's report. The parent's job is to make the report exist. That's a meaningful job, without you, the upload doesn't happen, but it stops there. ## What you actually do ### Driving and logistics Most junior tournaments are 30-90 minutes from home. The phone, tripod, sandbag, charger, and clip live in the car. You're already going to the tournament; the additional work is two minutes of setup before the warm-up. The setup is the same as any UNFORCE recording: phone in landscape on a tripod, 6-10 ft behind one baseline, above net height, ballasted at the base. [The filming guide](/how-to/film-your-tennis-match) covers this; [the no-fence post](/blog/tennis-camera-no-fence) covers what to do at clubs without a fence to clip against. Most junior tournament sites have decent infrastructure; you'll generally find a way to mount. Press record before the warm-up. Stop it after the handshake. Done. ### The upload This is where parents add the most genuine value. The kid is exhausted, hungry, and either pumped up or upset depending on the result. They're not going to upload the video. You are. From the passenger seat (please don't drive and upload), open the UNFORCE app, select the video, hit upload. 5G or Wi-Fi works; the upload runs in the background while the kid eats the post-match snack. By the time you're home, the report is ready. Send the PDF to the coach if the coach has asked for it. Send it to the kid if the kid has asked for it. Don't open it yourself. ### What you don't do Specifically and emphatically: - **Don't read the report on the drive home.** The kid is in the same car. If you're scrolling the report, the kid knows. The kid will ask what you saw. You'll start coaching. Don't. - **Don't volunteer observations.** "Your forehand looked rushed in set two" is the kind of sentence that ruins tennis for kids. Even if it's true, even if the report agrees, that's not your job. The coach has it. - **Don't compare to last week.** The week-over-week panel in the report is for the player and coach. If you find yourself mentally tracking "their forehand quality dropped 0.4 points this week", close the report and go for a walk. - **Don't show the report to other parents.** Tennis parent groups are not a peer-review forum. The report is the kid's data, not yours. The discipline is straightforward: **the report exists because of you, but the report is not for you.** ## When you can engage There are three legitimate moments to engage with the report as a parent: 1. **Once a month, look at the trend.** Open last month's report and this month's, side by side. Are the heatmap zones drifting deeper? Is the shot-mix balance evening out? Is the stroke-quality trend up or flat? *Don't tell the kid what you see.* You're checking the trend so you know whether to keep paying for lessons. That's it. 2. **If the coach asks for your observation.** Some coaches will ask. Most won't. If they do, give them one observation, sourced from the report, attributed to the report, not to you. *"The October reports show the backhand quality moving up about half a point"*, that's a useful sentence. *"I think she's really pulling her head up on the forehand"*, that's not. 3. **If the kid wants to talk about it.** Sometimes a junior wants to show the parent something they're proud of in the report. Engage warmly, ask one curious question, and stop. Don't turn it into a coaching moment. If they want a coaching moment, they have a coach. ## What about the kid who *wants* the parent involved? It happens. Some U12-U14 juniors genuinely want their parent to read the report and discuss it. If your kid is one of those, here are the safe rails: - **Ask before you open it each time.** "Do you want to look at this together, or do you want to look on your own first?" Let them choose. - **Read the heatmap, not the technique scores.** The heatmap is unambiguous, where the shots went. The stroke-quality scores invite over-interpretation. If you stick to "the heatmap shows this", you stay in the role of co-spectator rather than co-coach. - **Don't translate it into a practice plan yourself.** That's the coach's job. If your kid wants to go practice based on the report, ask them what they think they should work on, listen, and book the next coaching slot. For most parents, even with cooperative kids, the safer default is still "drive, mount, upload, hand off." The cost of getting it wrong is high; the upside of getting it right is small. ## How this is different from filming the match yourself Lots of junior tennis parents film matches on their phone already. UNFORCE changes one thing about that: the report. Without UNFORCE, you have a 90-minute video on your phone that nobody watches. With UNFORCE, you have a 90-minute video plus a structured report that the kid and coach can act on. That's a real upgrade, but it's an upgrade that *flows to the kid and coach*, not to you. Your job in the new flow is the same as in the old flow: film, get home. The report is what's new, and the report belongs to the people who do the tennis. ## Pricing reality For a junior who plays one tournament a weekend and has one to two lessons a week, the UNFORCE Pro plan is roughly the cost of one extra hour of coaching per month. We do the full math in [the honest cost of tennis coaching vs an AI app](/blog/tennis-coaching-cost-vs-app). For most parents, the answer is: it's cheaper than another hour of coaching, and it makes the existing hours of coaching denser. That's the case for the spend. It's not a replacement for the coach; it's a force multiplier on the coach. ## What "not being that parent" actually looks like Concretely, in our experience watching this loop work: - The parent sets up the phone before the warm-up and disappears to their seat for the rest of the match. - The drive home talks about the post-match snack, not the match. - The PDF goes to the coach (if requested) and to the player. The parent doesn't open it that day. - The next morning, the parent asks one supportive question, "How did it feel?", and listens. - A month in, the parent privately notices the trend on their own and is quietly relieved or quietly concerned. They don't share that with the kid. - If the trend is concerning, the parent raises it with the coach, not with the kid. That's the workflow. It's deliberately boring. It's also the one that produces juniors who keep playing tennis at 18. ## A note on AI tennis tools generally If you're a parent considering UNFORCE vs alternatives: - **SwingVision** does similar analysis on iOS. Pricing runs roughly $15 to $40 per month as of mid-2026 (check [swing.vision](https://swing.vision) for current pricing). If you and your junior are both on iPhone, it's a real option. If either of you is on Android, you're stuck, see [the SwingVision comparison](/compare/swingvision). - **TopCourt** is instructional content ($180/yr per a 2020 [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify current pricing), useful for technique videos to share with the junior. Complements UNFORCE rather than competing. - **Filming on your phone with no analysis** is the free baseline. Works fine, gives you a video archive, but the coach has to do all the clipping. For most junior tournament parents, UNFORCE (or its closest equivalent) is the pragmatic middle: more useful than raw filming, less expensive than another lesson, less dangerous than parent-as-coach. The trick is staying in the parent role. [Set up](/how-to/film-your-tennis-match), [press record](/blog/unforce-5-minute-starter-guide), [hand off](/use-cases/junior-coaches). That's the whole job. The kid and the coach do the rest. --- ### UNFORCE vs Baseline Vision: phone vs €1,800 hardware camera URL: https://unforce.io/blog/unforce-vs-baseline-vision Markdown twin: https://unforce.io/blog/unforce-vs-baseline-vision.md # UNFORCE vs Baseline Vision: phone vs €1,800 hardware camera The honest answer: **UNFORCE and Baseline Vision are different categories.** UNFORCE runs on a phone you already own; Baseline Vision is a roughly €1,800 dedicated hardware unit you mount court-side ([TennisLeo review](https://www.tennisleo.com/baseline-vision-review/)). They both produce tennis analysis. They're built for different buyers, at different price points, with different setup constraints. This post is for the player or club deciding between "buy hardware" and "use my phone." I'm Akshay Sarode, founder of UNFORCE; the comparisons are sourced where possible. ## Bottom line up front - **Baseline Vision is hardware-first.** ~€1,800 for the unit ([source](https://www.tennisleo.com/baseline-vision-review/)). Permanent installation. Consistent fixed-angle output. - **UNFORCE is software-first.** Free tier on the phone you already own. No hardware purchase. Setup is a fence clip and a recording app. - **Baseline Vision wins** for clubs, academies, and players who want a permanent court-side install with no per-match setup overhead. - **UNFORCE wins** for individual amateur players who don't want to spend €1,800 before their first analysis. ## TL;DR comparison table | | UNFORCE | Baseline Vision | |---|---|---| | **Form factor** | Phone app | Dedicated hardware unit | | **Up-front cost** | €0 (free tier) | ~€1,800 ([source](https://www.tennisleo.com/baseline-vision-review/)) | | **Recurring cost** | Optional Pro subscription | Possible service fees depending on config | | **Setup per match** | Clip phone to fence | None (permanent install) | | **Portability** | Court-to-court | Fixed installation | | **Buyer** | Individual player | Club / academy / serious individual | | **Platform** | iOS + Android | Hardware + companion app | | **Free tier** | Yes | No | ## Why this comparison exists People searching "UNFORCE vs Baseline Vision" or "SwingVision vs Baseline Vision" are usually one of three buyers: 1. **A player at a club where Baseline Vision is being considered for installation.** They want to know if a phone-app alternative would serve them personally. 2. **A serious individual player** weighing a one-time hardware purchase vs ongoing software subscription. 3. **A coach or club operator** doing the math on per-court installation cost. This post addresses all three. ## What Baseline Vision does well Be fair to the competition. - **Permanent installation, zero per-match setup.** Walk on, play, walk off. The system records continuously. For clubs running back-to-back lessons, this is a real productivity gain. - **Consistent fixed-angle footage.** When the camera is bolted in place, framing is predictable. Court detection works well because the court geometry never changes between recordings. - **Hardware can be optimised for the use case.** Better sensors, better optics, better mounting than a phone clipped to a fence. - **Multi-court installations scale.** A club can install on 4-8 courts and get consistent output across the whole facility. ## What UNFORCE does well in this comparison Three wedges that matter for individual amateur players: 1. **Zero up-front cost.** Free tier, phone you already own. €1,800 is roughly 36 hours of in-person coaching at €50/hour, a real opportunity cost. 2. **Portability.** Play at multiple clubs, on holiday, on a public park court, UNFORCE works anywhere there's a fence to clip a phone to. 3. **Software updates.** Models retrained, new features shipped, accuracy improvements pushed automatically. Hardware improvements require buying new hardware. ## Where each tool wins, by buyer ### Club or academy **Baseline Vision** is the right pick for: - A facility installing a permanent recording system. - Multi-court setups where consistent framing across courts matters. - A high-volume operation where per-match setup time is a real cost. **UNFORCE** is the right pick for: - A facility that wants players to record their own sessions on their phones and share reports with coaches. - Coaches who travel between facilities and don't have permanent hardware everywhere. - Lower up-front capital expenditure. ### Serious individual player (NTRP 4.5+) **Baseline Vision** if: - You play almost exclusively at one home court. - You want zero-friction permanent setup. - You can amortise €1,800 over years of weekly use. - You can install hardware at your court (not all clubs allow this). **UNFORCE** if: - You play at multiple courts. - You want to keep upfront cost low. - You want to test the analysis workflow before committing money. ### Amateur player (NTRP 3.0-4.5): UNFORCE's primary segment For this player, the math is straightforward. €1,800 is a year of coaching, two new rackets, two stringings, several weekend tournaments, and a tennis bag. UNFORCE's free tier delivers per-shot analysis from a phone-recorded video, the same diagnostic loop, at €0 entry cost. There's no rational case for hardware at this level unless your club already has it installed. ## When Baseline Vision is the right choice The non-negotiable section for every comparison post. - **You're a club, academy, or facility operator** installing hardware on multiple courts. - **You play almost exclusively at one home court** where you can install hardware permanently. - **Per-match setup time is a real cost** in your operation. - **You want fixed-angle, consistent framing** across many recordings without thinking about phone placement each time. - **You have €1,800 of capital expenditure** budget allocated to tennis tools. ## When UNFORCE is the right choice - **You're an individual amateur player** weighing the cost of analysis tools. - **You play at multiple courts** (home club, public courts, tournaments, on holiday). - **You want to start free** and decide later whether to upgrade. - **You want software updates over hardware updates**, newer models retrained on more data, deployed automatically. - **You want cross-platform support** (iOS and Android both, no proprietary device). ## Pricing comparison | | UNFORCE | Baseline Vision | |---|---|---| | Up-front | €0 (free tier) | ~€1,800 ([source](https://www.tennisleo.com/baseline-vision-review/)) | | Year 1 (free tier) | €0 | €1,800+ | | Year 1 (Pro tier) | EU-friendly Pro pricing | €1,800 + possible service | | Year 5 total | Pro × 5 | €1,800 + possible service × 5 | Even at five years of Pro UNFORCE, the total cost is well under one Baseline Vision purchase. The hardware buyer is paying for permanence and zero setup, not better analysis. ## Real example: a club deciding for 2026 Imagine a 4-court tennis club with 80 members, doing the 2026 budget. **Option A, Baseline Vision on all 4 courts.** ~€7,200 capital expenditure. Full year of always-on recording. Members pull their match footage from the club system. Excellent for the highest-engagement members; less useful for the weekend-only player who records once a month. **Option B, Promote UNFORCE free tier.** €0 capital expenditure. Members record their own sessions on their own phones. Club provides a one-page setup guide and recommends fence clips at €25/each. The 20% of members who care most use it heavily; the 80% who would never have used the hardware anyway are unaffected. **Option C, Hybrid.** Baseline Vision on 1 show court for events / leagues / tournaments. UNFORCE for everyone's individual practice. Best of both, capital cost €1,800 instead of €7,200. There isn't one right answer. There is a real budget conversation, and UNFORCE exists at the cheap end of it. ## Setup constraints Both products have requirements. **Baseline Vision:** professional installation, court-side mounting, power supply, possibly internet connectivity at the court. The hardware solves placement; you still need infrastructure. **UNFORCE:** chest-height phone mount behind the baseline, centred. 1080p at 30fps minimum. A fence clip works; a small tripod works. We've documented this in [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match). ## How to decide in 60 seconds - **Club / academy / facility:** Baseline Vision. - **Individual amateur player:** UNFORCE. - **Serious player at one home court with hardware budget:** Baseline Vision. - **Anyone unsure:** start with UNFORCE free tier. Hardware can come later. ## FAQ **How much does Baseline Vision cost?** Roughly €1,800 for the hardware unit, per [TennisLeo's review](https://www.tennisleo.com/baseline-vision-review/). **Do I need Baseline Vision hardware to analyse my tennis matches?** No. UNFORCE produces a post-match report from a phone-recorded video. **Is Baseline Vision more accurate than UNFORCE?** Hardware can offer higher consistency in fixed installations. UNFORCE publishes its accuracy methodology so you can verify per-shot F1, ball-speed error, and per-surface court detection. **Who is Baseline Vision built for?** Clubs, academies, and serious players who want a permanent court-side installation. UNFORCE is built for amateur players who want analysis without a hardware purchase. --- *Read next: [UNFORCE vs PlaySight: facility hardware vs your phone](/blog/unforce-vs-playsight) · [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### UNFORCE vs OnForm: tennis-specific AI vs generic video tool URL: https://unforce.io/blog/unforce-vs-onform Markdown twin: https://unforce.io/blog/unforce-vs-onform.md # UNFORCE vs OnForm: tennis-specific AI vs generic video tool The honest answer: **UNFORCE and OnForm are different tools for different jobs.** UNFORCE is tennis-specific AI, it auto-detects shots, tracks the ball, classifies strokes, and produces a post-match report. OnForm is a generic multi-sport video annotation platform, coaches and athletes upload clips and annotate them manually with drawings, voiceovers, and side-by-side comparisons. If you want automation, you want UNFORCE. If you want a shared workspace with your coach, you want OnForm. Often, players want both. I'm Akshay Sarode, founder of UNFORCE. ## Bottom line up front - **OnForm** is a generic video annotation platform across many sports. Pricing per [OnForm](https://onform.com/pricing/): Coach $19.99-$59.99/mo, Athlete $9.99-$14.99/mo. - **UNFORCE** is tennis-specific AI: ball tracking, shot detection, court heatmap, stroke quality, PDF report. - **OnForm wins** for coach-led manual annotation, side-by-side comparison, voiceover commentary. - **UNFORCE wins** for automated tennis analysis where you don't need a human to mark up the video. - **Many players use both.** UNFORCE for the automated diagnostic; OnForm for the coach conversation. ## TL;DR comparison table | | UNFORCE | OnForm | |---|---|---| | **Sport focus** | Tennis-specific | Multi-sport (generic) | | **Auto shot detection** | Yes | No (manual) | | **Ball tracking** | Yes (TrackNet-style) | No (manual) | | **Court heatmap** | Yes | No | | **Stroke quality scoring** | Yes (pose-feature) | Manual coach feedback | | **Side-by-side video comparison** | Limited | Yes (core feature) | | **Voiceover annotation** | No | Yes | | **Coach + athlete shared workspace** | No (PDF sharing) | Yes (core feature) | | **Pricing** | Free tier + Pro | $9.99-$59.99/mo ([source](https://onform.com/pricing/)) | | **Platforms** | iOS + Android | iOS + Android | ## What OnForm does well OnForm is a serious product with real coaching workflows. Its strengths: - **Multi-sport.** Tennis, golf, baseball, swimming, coaches with multiple sports use one tool across all of them. - **Side-by-side comparison.** Put two clips next to each other, sync them, compare technique frame-by-frame. This is excellent for "you vs the pro" coaching. - **Voiceover annotation.** Coach records a voiceover walking through what they see. Athlete plays it back later. - **Drawing tools.** Lines, arrows, angles directly on the video. The coach's whiteboard, on video. - **Shared workspace.** Coach uploads, athlete reviews, comments back, coach replies. Async coaching done well. - **Cross-platform.** iOS and Android. ## What UNFORCE does well in this comparison UNFORCE doesn't do what OnForm does. UNFORCE does the part OnForm doesn't: 1. **Automated shot detection.** Every shot tagged: forehand, backhand, serve, volley. No human annotation required. 2. **Ball tracking.** Trajectory, bounce location, speed estimation. 3. **Court keypoint detection.** Court coordinates, heatmap, zone analysis. 4. **Stroke quality scoring.** Pose-feature breakdown at contact, shoulder rotation, knee bend, contact point. 5. **PDF coaching report.** Generated automatically after every session. OnForm is the canvas. UNFORCE is the auto-fill. ## The real workflow: UNFORCE + OnForm together This is the part most comparison posts miss. For players already working with a coach, the two tools are complementary, not competitive. **Sunday match recorded on the phone.** 1. Upload to UNFORCE. Get the automated report: 184 shots tagged, court heatmap, stroke-quality flags. 2. Identify the 3-5 shots where the model flagged a technique issue (low shoulder rotation on second serve, late contact on backhand cross-court). 3. Upload those specific clips to OnForm. 4. Coach reviews in OnForm, draws on the video, voiceovers commentary. 5. Tuesday lesson uses the OnForm annotations as the agenda. OnForm alone forces the coach to find the bad clips themselves, which takes time and costs you money. UNFORCE alone gives you the diagnostic but no coach conversation. Together, they're cheaper than either premium tier alone (depending on the math) and they cover the whole loop. ## When OnForm is the right choice The non-negotiable section. - **Your coach already uses OnForm** with their other students. Joining their workspace is the path of least resistance. - **You play multiple sports** and want one annotation tool across all of them. - **You want manual side-by-side comparison** of your shot vs a pro's reference clip. - **You want voiceover commentary** as the primary feedback format. - **You want a shared workspace** where your coach and you exchange comments on clips over weeks. - **Automated tennis analysis isn't a priority**, you'd rather have your coach do the work. ## When UNFORCE is the right choice - **You don't have a coach** but want analysis anyway. - **You want automation.** Hundreds of shots tagged in minutes, not over a coaching call. - **You want tennis-specific analysis**, court heatmap, ball tracking, stroke quality, not a blank video canvas. - **You're price-sensitive**, UNFORCE's free tier exposes the full pipeline. - **You want a PDF report** to email to your coach (who can use whatever tool they want to review it). ## Pricing breakdown Per [OnForm](https://onform.com/pricing/): | Plan | Price | |---|---| | Athlete | $9.99-$14.99/mo | | Coach | $19.99-$59.99/mo | UNFORCE: | Plan | Price | |---|---| | Free | €0 (full pipeline, 3 match analyses per month) | | Pro | EU-friendly Pro pricing | The two products price for different buyers, OnForm Coach plans target the coach who runs a roster; UNFORCE Pro targets the individual player. There isn't a single "UNFORCE vs OnForm at the same price" cell on the matrix because the products do different things. ## A note on the "tennis-specific AI" wedge OnForm is a great video tool. It is not a tennis AI. The closest comparison to UNFORCE in the OnForm category is *zero*, you'd have to add manual annotation work to get to anything that resembles UNFORCE's automated output. This is why "OnForm for tennis" search queries often resolve to disappointment. The product is excellent, but it doesn't auto-detect tennis shots because it isn't trying to. A coach who uses OnForm for tennis is doing the analysis themselves; the tool is the canvas. ## Real example: the player + coach working together Imagine an NTRP 3.5 player working with a part-time coach. The coach charges €40/30-minute lesson. The player wants to get the most out of each lesson. **Without either tool:** the coach spends the first 10 minutes of every lesson asking "how was your week?" and trying to figure out what to work on. €13 of every €40 lesson is overhead. **With OnForm only:** the player uploads weekend clips, the coach reviews and annotates between lessons (paid hourly or included in package). Better, but the coach still has to *find* the clips that matter. **With UNFORCE only:** the player gets an automated weekend report. The lesson agenda is set before the lesson starts. The coach focuses on coaching, not diagnosing. **With both:** the player runs UNFORCE after the weekend match. The 3-5 flagged clips go to OnForm. The coach annotates in OnForm. The lesson agenda is automated *and* the coach commentary is captured for review later. The third workflow gets the most out of every €40 lesson. That's the case for using them together. ## How to decide in 60 seconds - **You want automated tennis analysis:** UNFORCE. - **You want coach-led video annotation:** OnForm. - **You have a coach and you want both:** start with UNFORCE free, layer OnForm in if your coach uses it. - **You play multiple sports:** OnForm. - **Tennis is your only sport and you want depth:** UNFORCE. ## FAQ **Is OnForm a tennis app?** No. OnForm is multi-sport. It works with tennis video but doesn't auto-detect shots, track the ball, or score stroke quality. **How much does OnForm cost?** Per [OnForm](https://onform.com/pricing/): Coach plans $19.99-$59.99/mo, Athlete plans $9.99-$14.99/mo. **Can OnForm replace UNFORCE?** No, different categories. OnForm is manual annotation. UNFORCE is automated tennis analysis. **Should I use UNFORCE or OnForm with my coach?** Often both. UNFORCE for the automated report; OnForm for the coach conversation about specific clips. --- *Read next: [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [Best tennis video analysis app for Android in 2026](/blog/best-tennis-video-analysis-app-android-2026) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### UNFORCE vs PB Vision: different sports, different priorities URL: https://unforce.io/blog/unforce-vs-pb-vision Markdown twin: https://unforce.io/blog/unforce-vs-pb-vision.md # UNFORCE vs PB Vision: different sports, different priorities The honest answer: PB Vision and UNFORCE appear to use the same family of AI techniques, ball tracking, court detection, pose-based shot classification, but they're tuned for different sports. **PB Vision is pickleball-first** with tennis as a secondary surface. **UNFORCE is tennis first**, full stop. If you play both, this post helps you decide which one to lead with. If you play only one, the answer is short: pick the app whose primary sport matches yours. I'm Akshay Sarode, founder of UNFORCE; the comparisons below are sourced where possible. ## Bottom line up front - **PB Vision wins** if your primary sport is pickleball and tennis is the secondary one. - **UNFORCE wins** for tennis players. Tennis-tuned court detection, tennis-tuned shot vocabulary, tennis-tuned stroke quality. - Both are **cross-platform (iOS + Android)**, no platform lock-in either way. - Both have **specific recording setup requirements** ([PB Vision framing guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines)). Get the camera placement wrong and either app degrades. ## TL;DR comparison table | | UNFORCE | PB Vision | |---|---|---| | **Primary sport** | Tennis | Pickleball | | **Tennis support** | Native, tuned, deep | Secondary surface | | **Platforms** | iOS + Android | iOS + Android | | **Ball tracking** | TrackNet-style, tennis-trained | Adapted for pickleball physics | | **Court detection** | Tennis-specific, all surfaces | Pickleball-specific primary | | **Shot vocabulary** | Forehand, backhand, serve, volley, lob, smash | Pickleball-specific shots primarily | | **Stroke quality** | Pose-feature breakdown | Stat-led | | **Free tier** | Yes, full pipeline | Yes, capped | | **Setup constraints** | Chest height, baseline-centred | [Documented guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines) | ## Why this comparison even comes up PB Vision and UNFORCE look alike from the outside. Both: - Take a phone-recorded video as input. - Run a deep-learning ball tracker. - Detect court keypoints to map shots into court coordinates. - Use pose to classify shots. - Output a stat report after analysis. The architecture is similar because the *problem* is similar. But sport-specific tuning matters more than architecture. A tennis ball is heavier, faster, and bounces differently than a pickleball. A tennis court is bigger and has different line geometry. A tennis forehand is a different motion than a pickleball forehand. A model trained primarily on one sport's data and adapted to the other will lose accuracy. That's the core of this comparison. ## What PB Vision is good at I'm not in their primary market, but I want to be fair. - **Pickleball-specific ball physics.** The ball is slower, the court is smaller, and the analysis pipeline is genuinely tuned for it. PB Vision is the strongest tool in that category. - **Documented setup.** Their [framing and court alignment guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines) are clear and worth reading even if you use a different app, most of the principles transfer. - **Cross-platform.** iOS and Android, like UNFORCE. - **Active product team.** They ship features regularly. ## What UNFORCE is good at for tennis Five tennis-specific things that matter for amateur players: 1. **Tennis-trained court detection.** Hard, clay, indoor, all evaluated and published in our accuracy methodology. 2. **Tennis shot vocabulary.** Forehand, backhand, serve (first and second), volley, lob, smash, and the classifier is trained on tennis-specific pose data. 3. **Tennis ball physics.** Faster, smaller-pixel, heavier, with different bounce dynamics. The TrackNet-style tracker is tuned for that. 4. **Tennis stroke quality.** Shoulder rotation at contact, knee bend, contact-point relative to body, the things a tennis coach actually flags. 5. **Tennis-specific failure modes documented.** We tell you where the model breaks (clay, low light, fast first serves above 110 mph) instead of pretending it's solved. See [/features/shot-detection](/features/shot-detection) for the methodology. ## Where each tool wins, by sport If your primary sport is pickleball: - Use **PB Vision**. Its tennis surface is fine but not the focus. If your primary sport is tennis: - Use **UNFORCE**. PB Vision can record tennis but the analysis isn't tennis-tuned. If you play both equally: - The honest answer is you're rare. Most players have a primary. If you genuinely split your time, run both apps for a month, compare the per-sport output quality on your own video, and pick the one whose primary sport is also your primary. ## When PB Vision is the right choice This is the non-negotiable section every comparison post needs. - **Your primary sport is pickleball.** Full stop. - **You want the tool with the deepest pickleball-specific stat dashboard.** PB Vision's roadmap is paddle-first. - **You're already invested in PB Vision's ecosystem**, match history, leagues, community. - **You play tennis only as a secondary sport** and the tennis output, even if shallower, is good enough for your needs. If most of those describe you, stop reading. PB Vision is the right pick. ## When UNFORCE is the right choice - **Your primary sport is tennis.** - **You want stroke quality with pose-feature depth**, shoulder rotation, knee bend, contact point. - **You want published accuracy methodology**, per-shot F1, per-surface court detection accuracy, ball-speed error vs radar. - **You want a free tier with the full pipeline** (3 match analyses per month). - **You play on multiple surfaces** (hard, clay, indoor) and want a tool that documents per-surface degradation. ## Real example: the same player, two sports, two apps Imagine a player who plays tennis on Saturdays and pickleball on Sundays. They could try to run one app for both. They probably shouldn't. Here's why. **Saturday tennis match in UNFORCE:** - 90 minutes recorded at 1080p. - 184 shots tagged: forehand 76, backhand 58, serve 38, volley 12. - Heatmap shows forehand cross-court bouncing 60cm shorter than expected. - Stroke-quality flag: left-shoulder rotation low on second serve. **Sunday pickleball match in PB Vision:** - Match recorded at the recommended setup ([framing guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines)). - Pickleball-specific shot vocabulary, pickleball-specific stat dashboard. - The output is built around pickleball. Two apps, two outputs, both accurate to their sport. Trying to use one app for both means accepting reduced accuracy on at least one of them. ## Pricing Both apps have tiered pricing with a free tier. Specifics: - **PB Vision:** subscription model, free tier with capped usage. Pricing as published on their site. - **UNFORCE:** EU-friendly tiered pricing, free tier with the full pipeline (3 match analyses per month). Details at [/pricing](/pricing). Neither is in the SwingVision-Max territory (a top tier around $40/mo as of mid-2026; check [swing.vision](https://swing.vision)). ## Setup matters more than app choice A note for both products. Per PB Vision's [own framing guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines), camera position is the single biggest factor in analysis accuracy. The same is true for UNFORCE. The rules: 1. **Camera height: chest level**, not on the ground. 2. **Position: behind the baseline (or pickleball equivalent), centred.** 3. **Resolution: 1080p+ at 30fps.** If you're getting bad output from either app, fix the recording setup before blaming the model. ## How to decide in 60 seconds - **Primary sport = pickleball:** PB Vision. - **Primary sport = tennis:** UNFORCE. - **Both equally (rare):** run both for a month, compare on your own video, pick the per-sport winner. ## FAQ **Is PB Vision better than UNFORCE for tennis?** That's our claim, not an independent verdict. PB Vision markets itself paddle-first; UNFORCE is built tennis-first. We publish our tennis accuracy at [/accuracy](/accuracy); PB Vision doesn't publish tennis numbers we can compare against, so test both on your own video. **Can I use PB Vision for tennis?** Yes. It markets itself paddle-first, though, and UNFORCE is built tennis-first with published tennis accuracy at [/accuracy](/accuracy). For tennis-only use we think UNFORCE fits better. **Is PB Vision available on Android?** Yes, both iOS and Android. UNFORCE is also cross-platform. **What's the setup for PB Vision?** Camera height, position, and framing matter. PB Vision has [official guidelines](https://help.pb.vision/articles/1108176-framing-and-court-alignment-guidelines). UNFORCE has similar requirements. --- *Read next: [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [Best tennis video analysis app for Android in 2026](/blog/best-tennis-video-analysis-app-android-2026) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### UNFORCE vs PlaySight: facility hardware vs your phone URL: https://unforce.io/blog/unforce-vs-playsight Markdown twin: https://unforce.io/blog/unforce-vs-playsight.md # UNFORCE vs PlaySight: facility hardware vs your phone The honest answer: **UNFORCE and PlaySight are different categories.** PlaySight is a multi-camera facility-installed system, you can only use it at venues that have installed PlaySight's SmartCourt hardware ([PlaySight](https://playsight.com/the-playsight-app/)). UNFORCE is a phone-app analysis tool that runs on a video you record yourself. If you have a PlaySight court at your home club, this comparison is about deciding which tool to use *for what*. If you don't, UNFORCE is the right choice by default. I'm Akshay Sarode, founder of UNFORCE. ## Bottom line up front - **PlaySight is facility-only.** You need a partner venue with installed hardware ([PlaySight app page](https://playsight.com/the-playsight-app/)). - **UNFORCE runs on your phone.** Anywhere there's a fence to clip a phone to. - **PlaySight wins** if your home club has it installed and you play primarily there. - **UNFORCE wins** for everybody else, Android players, players at facilities without PlaySight, players who travel between courts. ## TL;DR comparison table | | UNFORCE | PlaySight | |---|---|---| | **Form factor** | Phone app | Facility hardware (SmartCourt) | | **Where you can use it** | Anywhere with a phone | Only at PlaySight-equipped venues | | **Up-front cost** | €0 (free tier) | None for the player; venue paid for installation | | **Per-session cost** | €0 / Pro subscription | Often a per-session fee at the venue | | **Multi-camera production** | No | Yes (multiple court angles) | | **Live streaming / broadcast** | No | Yes | | **Per-shot AI analysis** | Yes | Yes | | **Portability** | Travels with the player | Fixed to facility | | **Buyer of the system** | Individual player | Facility / venue | ## What PlaySight does well PlaySight is built for a different problem than UNFORCE. It's a venue-grade system, not a personal app, and it's genuinely good at what it does. - **Multi-camera production.** Several fixed cameras around the court give you angles you can't get from one phone. - **Live streaming.** Match streams for tournaments, leagues, and remote viewing. - **Match replays at venue level.** Players walking off the court can watch their points immediately on facility screens. - **Tournament infrastructure.** PlaySight has been deployed in stadiums and high-end clubs because it integrates with broadcast workflows. - **Always-on recording.** No per-match setup; the system records continuously. If your home club has PlaySight installed and you're playing seriously there, *use PlaySight.* It's the right tool for that environment. ## What UNFORCE does well in this comparison The wedges for the player who doesn't have PlaySight at their home court: 1. **Works anywhere.** Public park, holiday court, second club, tournament venue without a SmartCourt installation. 2. **Free tier.** No facility fee, no membership, no installed hardware. 3. **Travels with you.** PlaySight stays at the facility. UNFORCE is in your pocket. 4. **Cross-platform.** iOS and Android. PlaySight's companion app supports both, but the analysis only happens at PlaySight venues. 5. **Per-shot pose-feature stroke quality.** PlaySight's strength is multi-camera production; UNFORCE's strength is the technique-led stroke breakdown. ## Where each tool wins, by buyer ### Player at a PlaySight-equipped club You should be using PlaySight for your matches at that club, full stop. The multi-camera angles and venue replay system are real value the phone can't match. You should *also* consider UNFORCE for: - Matches at other venues without PlaySight - Practice sessions where the venue doesn't activate PlaySight - Holidays and travel - Lessons at other coaches' courts The two tools coexist comfortably. ### Player at a club without PlaySight UNFORCE is the right tool. You can't use PlaySight without the facility hardware, so the comparison is mostly academic, your real comparison is UNFORCE vs SwingVision (see [/blog/unforce-vs-swingvision-amateur-players](/blog/unforce-vs-swingvision-amateur-players)) or UNFORCE vs other phone-app competitors. ### Coach traveling between facilities PlaySight can't follow you. UNFORCE can. For a coach running students across multiple courts and clubs, the phone-app workflow is the only one that actually fits the job. ### Tournament organiser PlaySight is the right answer if you want broadcast-quality multi-camera production, live streaming, and replay screens. UNFORCE doesn't compete in this category. ## When PlaySight is the right choice The non-negotiable section. - **Your home club has PlaySight installed** and you play primarily there. - **You want multi-camera angles** (front, side, behind-the-baseline) on the same point. - **You want live streaming** for tournaments or leagues. - **You want venue-grade replay**, the kind that plays on screens at the facility immediately after a match. - **You're at a venue paying for PlaySight as part of your membership**, using what you've already paid for makes sense. ## When UNFORCE is the right choice - **Your club doesn't have PlaySight.** - **You play at multiple courts** including ones without facility hardware. - **You're an Android player.** - **You want per-shot AI analysis** without depending on facility infrastructure. - **You want a free tier** with the full pipeline (3 match analyses per month). - **You want EU pricing and EU-region data hosting.** ## How to find a PlaySight court near you A caveat first: PlaySight's business has been through well-publicized changes in recent years, and facility availability shifts with it. As of this writing, confirm a given venue still runs an active PlaySight installation before counting on it. Don't assume a court listed a few years ago is still live. PlaySight has historically published a list of partner facilities. Coverage is concentrated in major tennis markets (US, parts of Europe, parts of Asia). Outside those markets, PlaySight courts are rare. If you can't find one near you, your real comparison isn't UNFORCE vs PlaySight, it's UNFORCE vs other phone-app tools. ## Real example: a player who travels Lucia plays Saturday matches at her home club in Madrid (which has PlaySight on the show court but not on practice courts), Sunday matches at a friend's club without PlaySight, and a fortnight of holiday tennis in Greece each summer at venues that don't have it. - **Saturday show-court match:** PlaySight. Multi-camera, replay screens, live stream for her family. The right tool for the venue. - **Saturday practice on a non-PlaySight court:** UNFORCE. Phone clipped to fence, free tier, per-shot report. - **Sunday match at the friend's club:** UNFORCE. PlaySight isn't an option. - **Holiday tennis in Greece:** UNFORCE. PlaySight isn't an option. Three out of four use cases, UNFORCE is the right pick. The fourth is the right pick for PlaySight. The two tools are not in competition; they're in different layers. ## Pricing PlaySight pricing is venue-paid, not player-paid for the installation; players often pay a per-session or per-month fee at the venue on top of their court fees. Prices vary heavily. UNFORCE: - **Free tier:** €0, full pipeline, 3 match analyses per month. - **Pro:** EU-friendly transparent pricing. ## How to decide in 60 seconds - **Your home club has PlaySight, you play there mostly:** PlaySight (and UNFORCE for non-PlaySight courts). - **No PlaySight at your usual courts:** UNFORCE. - **Travel a lot or play at multiple venues:** UNFORCE. - **You're a tournament organiser:** PlaySight (different category). ## FAQ **Can I use PlaySight at home?** No. PlaySight is a facility-installed system. You can only use it at clubs, academies, and venues that have installed PlaySight SmartCourt hardware. **How do I find a PlaySight court near me?** PlaySight publishes a partner-facility list. Availability varies heavily by country. **Is UNFORCE as good as PlaySight?** Different categories. PlaySight is multi-camera facility hardware. UNFORCE is a phone-app analysis tool. UNFORCE isn't trying to replace PlaySight's facility installations. **Does PlaySight cost extra to use as a player?** Most PlaySight venues charge a per-session or per-month fee on top of the venue's regular court fees. --- *Read next: [UNFORCE vs Baseline Vision: phone vs €1,800 hardware camera](/blog/unforce-vs-baseline-vision) · [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### UNFORCE vs SwingVision: side-by-side for amateur players URL: https://unforce.io/blog/unforce-vs-swingvision-amateur-players Markdown twin: https://unforce.io/blog/unforce-vs-swingvision-amateur-players.md # UNFORCE vs SwingVision: side-by-side for amateur players If you already have SwingVision, this post tells you when UNFORCE is worth a look, and when it isn't. If you don't have either yet, this post tells you which to start with based on your phone, your budget, and what you actually want out of a tennis video analysis app. I'm Akshay Sarode, founder of UNFORCE, so I'll mark every place I'm taking sides; everything else is sourced. This is for amateur players in the NTRP 3.0-4.5 range, the segment both products are actually built for, despite the marketing. ## Bottom line up front - **SwingVision wins** for iPhone + Apple Watch owners who want **real-time line calling** during the match, and who are fine with its iOS subscription pricing. - **UNFORCE wins** for **Android players**, EU players, anyone who wants **published accuracy methodology**, and players who'd rather pay less for the per-shot coaching loop without the Apple Watch dependency. - Both products do **shot detection, ball tracking, court heatmaps, and stroke analysis.** The honest differences are platform, pricing transparency, and what each is most polished at. - A recurring SwingVision complaint in player discussions ([r/10s](https://www.reddit.com/r/10s/comments/179dsjz/swingvision_is_it_worth_400/)) is that the features people most want sit behind its top tier. ## TL;DR comparison table | | UNFORCE | SwingVision | |---|---|---| | **Platforms** | iOS + Android | iOS only as of this writing ([swing.vision](https://swing.vision)) | | **Price (mid)** | EU-friendly Pro tier | ~$15/mo entry tier* | | **Price (top)** | Pro covers full pipeline | ~$40/mo top tier* | | **Free tier** | Yes, full pipeline, 3 analyses/mo | Limited | | **Shot detection** | Yes (CatBoost + pose) | Yes | | **Ball tracking** | Yes (TrackNet-style) | Yes | | **Court heatmap** | Yes | Yes | | **Stroke quality** | Pose-feature breakdown | Stroke analytics | | **Apple Watch line calling** | No | Yes | | **Real-time on-court overlays** | No | Yes | | **Published accuracy** | Yes (regression suite) | No | | **PDF coaching report** | Yes | iPad-style review | | **EU pricing / GDPR posture** | Yes (europe-west1) | USD-first | *SwingVision pricing as of mid-2026; check swing.vision for current tiers. ## When SwingVision is the right choice I want to put this section first because every comparison post should. SwingVision is not "the bad one" in this comparison. It's the category leader for a reason. Pick SwingVision if: - You own an **iPhone and an Apple Watch** and want a **buzz-on-call-out** experience during the match. - You want a **mature iPad review surface** for slow-mo stroke-by-stroke playback. - You play **paddle-racket sports** alongside tennis. SwingVision's coverage there appears ahead of ours. - You're **already deep in SwingVision's ecosystem** with multi-year session history you don't want to migrate. - You're **happy with USD billing** across its subscription tiers and don't need EU-region data hosting. If most of the above describes you: stay on SwingVision. The next sections are for the player it leaves behind. ## When UNFORCE is the right choice Pick UNFORCE if any of the following apply: - You own an **Android phone**. SwingVision doesn't ship there, full stop. - You're an **EU player** who wants transparent EUR pricing and EU-region data hosting. - You want a **published accuracy methodology** before you trust an app's claims. - You want a **free tier you can actually use** to evaluate the pipeline before paying. - You'd rather have a **shareable PDF coaching report** than a polished in-app review surface. - You don't want an Apple Watch dependency. ## Feature-by-feature ### Shot detection Both products auto-classify shots. Forehand, backhand, serve, volley, lob, smash. UNFORCE's classifier is a CatBoost model on MediaPipe pose features, ball-trajectory features, and bounce timing, retrained on hand-annotated data from the desktop annotation tool we use internally to label training video. Read the methodology at [/features/shot-detection](/features/shot-detection). SwingVision runs on-device on iOS, per their public materials. They don't publish their classifier architecture or accuracy. App Store reviewers have flagged misclassification ([App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) include *"misreads shots"*). **Honest call:** comparable on hard courts, with both products getting the standard shots right most of the time. Neither is perfect on volleys at the net, where pose features are noisier. ### Ball tracking Both use the same family of techniques (TrackNet-derived heatmap regression for the small fast-moving target). UNFORCE's tracker is openly described at [/features/ball-tracking](/features/ball-tracking). SwingVision's is proprietary. **Honest call:** comparable in good lighting at 1080p+. Both struggle with low-light indoor courts, fast first serves above 110 mph (the ball can be sub-pixel between frames), and shadows on clay. ### Court detection Court keypoint detection, finding the four court corners and the singles/doubles lines, is where most tennis AI breaks. SwingVision App Store reviewers have specifically flagged clay courts: *"doesn't understand where the lines of the court are."* UNFORCE has a court detection model retrained on a dataset that includes clay, and we publish the per-surface accuracy (it's lower on clay than hard, like everyone's). We don't pretend clay is solved. **Honest call:** this is where UNFORCE's transparency wedge matters most. We tell you what the model can and can't do per surface. SwingVision doesn't. ### Stroke quality This is the part most amateur players genuinely cannot self-diagnose. Both products score stroke quality, but they mean different things by it. - **SwingVision** scores in the iPad review chrome, with stat-led summaries (consistency, depth, etc.). - **UNFORCE** outputs a **per-shot pose-feature breakdown**: shoulder rotation at contact, knee bend, contact-point relative to body, hip rotation. The output is closer to what a human coach would flag. **Honest call:** if you want stat-led "how consistent is my forehand," SwingVision's chrome is more polished. If you want technique-led "what is my body actually doing on the bad ones," UNFORCE's pose breakdown is deeper. ### Serve speed Worth a paragraph because it's the most-asked accuracy question. Two of the most-read Reddit threads about SwingVision are titled *"How accurate is Swingvision? Am I really serving 130mph?"* ([r/10s](https://www.reddit.com/r/10s/comments/xc2xc0/)) and *"Is this swing vision MPH accurate, my hardest serve only 66 mph?"* ([r/10s](https://www.reddit.com/r/10s/comments/17c8ozf/)). Phone-only serve speed (no radar) is hard. Sub-pixel ball motion at 30fps gives roughly ±5-10 mph error in good conditions and worse in bad ones. UNFORCE publishes its serve-speed error histogram against radar ground truth. SwingVision does not publish equivalent error bars. ### Line calling **SwingVision wins this category outright.** Their Apple Watch in-the-moment line calling is real, works during the match, and is the iPhone player's reason to stay. UNFORCE doesn't ship live line calling, we do post-match analysis only. If live line calling is the feature you need, this is where you stop reading and stay on SwingVision. ### Doubles support Both struggle. Doubles requires player-association across the net (telling the model which player took which shot), and neither product handles it as cleanly as singles. UNFORCE supports doubles in the pipeline but with lower per-shot confidence than singles. SwingVision works for doubles but App Store reviews have flagged inconsistencies. ### Clay and indoor support Clay is hard for everyone. Indoor is hard for everyone. Both UNFORCE and SwingVision degrade on these surfaces; UNFORCE publishes per-surface numbers and SwingVision doesn't. Neither is solved. ## Pricing comparison in plain English As of mid-2026, SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision for current pricing. Player discussions echo a recurring frustration that the features people most want sit behind its top tier ([r/10s](https://www.reddit.com/r/10s/comments/179dsjz/swingvision_is_it_worth_400/)). UNFORCE pricing structure (in EUR): - **Free tier:** full pipeline, 3 match analyses per month. Real, usable. - **Pro:** EU-friendly transparent pricing. For SwingVision's current tiers, see [their own site](https://swing.vision). ## Accuracy: what's published vs what isn't This is the section I want to be brutally honest in. **SwingVision** does not publish per-shot accuracy numbers, F1 scores, or ball-speed error vs radar ground truth. **UNFORCE** publishes: - Per-shot F1 scores by shot type - Ball-speed error histogram vs radar - Court detection accuracy by surface (hard / clay / indoor) - A regression suite we run on every release against hand-annotated test data - Known failure modes, written down on the page, not hidden You can verify ours. You can't verify SwingVision's. That's a meaningful difference. ## User complaints, with attribution For balance, one example: some individual App Store reviewers have flagged accuracy, for instance *"misreads shots"* ([App Store](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)). Read that as an individual user review, not a measured comparison. We don't publish SwingVision's numbers because there aren't measured ones to cite; we publish our own instead. ## Real example: the same Saturday match Same setup, two outputs. **SwingVision (iPhone 15 Pro):** - Records the match locally to the phone. - Apple Watch buzzes during the match on close calls. - After the match: iPad review with stroke-by-stroke navigation, stat dashboards, optional sharing. - Year-one cost (assuming you already own the iPhone): a SwingVision subscription, on the order of a few hundred USD depending on tier. **UNFORCE (Pixel 8):** - Records the match to the phone. - No on-court overlay (this is the trade). - Upload at the end of the match. Processing typically takes 3 to 7 minutes for a 60-minute match, longer under load. - Output: per-shot PDF coaching report, court heatmap, stroke-quality breakdown with pose features at contact. - Year-one cost (assuming you use the free tier or upgrade to Pro): €0 on the free tier, or €190 for a year of Pro. Both work. Different shapes. ## Migration: how to switch If you're moving from SwingVision to UNFORCE, the migration is mostly behavioural: 1. Stop the SwingVision subscription at next renewal (or keep both during a trial month). 2. Install UNFORCE on the phone you already use. 3. Record one match with both apps running simultaneously if you want a real side-by-side. 4. Compare the outputs on your own video. The accuracy claims either hold or they don't, your video is the test. We've walked through this in [I tried UNFORCE and SwingVision on the same match](/blog/swingvision-android-alternative). ## How to decide in 60 seconds - **iPhone + Apple Watch + want live line calling:** SwingVision. - **Android, or EU, or want published accuracy, or want a free tier:** UNFORCE. - **Want both:** start with UNFORCE free, see whether SwingVision's iOS-exclusive features are worth the upgrade. ## FAQ **Which is better for amateur players, UNFORCE or SwingVision?** Depends on platform and budget. SwingVision for iPhone + Apple Watch users who want live line calling. UNFORCE for Android, EU, or accuracy-transparency-first players. **Is SwingVision worth $400 a year?** For most NTRP 3.0-4.5 players, no. The features that move your tennis, shot detection, ball tracking, stroke quality, are available on UNFORCE at a fraction of the cost. **How much is SwingVision a year?** As of mid-2026, SwingVision lists tiers from roughly $15 to $40 per month; check swing.vision for current pricing. **Does SwingVision work on Android?** No. iOS-only as of this writing (mid-2026); check their site. **How accurate is SwingVision?** Not publicly published. Players have flagged accuracy issues on the App Store and Reddit. UNFORCE publishes its methodology so you can verify. --- *Read next: [The SwingVision Android alternative, explained](/blog/swingvision-android-alternative) · SwingVision's current tier lineup on [their own site](https://swing.vision) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### UNFORCE vs TopCourt: instruction vs analysis (use both) URL: https://unforce.io/blog/unforce-vs-topcourt Markdown twin: https://unforce.io/blog/unforce-vs-topcourt.md # UNFORCE vs TopCourt: instruction vs analysis (use both) The honest answer: **UNFORCE and TopCourt do different things.** TopCourt is an instructional streaming platform, pro players teach tennis on video, like a tennis-specific version of Masterclass ([My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review)). UNFORCE is an analysis tool, it tells you what you're actually doing on the court so you know what to work on. They complement each other. Most amateur players who care about improving benefit from both, not either. I'm Akshay Sarode, founder of UNFORCE. ## Bottom line up front - **TopCourt** was annual-only at $180/yr per a 2020 [review](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify current pricing. It teaches tennis via pro-led video lessons. - **UNFORCE** analyses your tennis, shot detection, ball tracking, court heatmap, stroke quality, PDF report. - **TopCourt wins** if you want to *learn* tennis from world-class instructors. - **UNFORCE wins** if you want to *measure* your tennis and identify what to work on. - **The right answer is both.** UNFORCE diagnoses, TopCourt instructs. ## TL;DR comparison table | | UNFORCE | TopCourt | |---|---|---| | **Category** | Analysis | Instruction | | **What it does** | Tells you what you're doing | Teaches you what to do | | **Pricing** | Free tier + Pro | $180/yr per a 2020 [source](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify | | **Billing** | Monthly or annual | Annual-only | | **Free tier** | Yes (3 match analyses per month, full pipeline) | No | | **Content type** | Auto-generated per-shot report on your video | Pro-led lessons on video | | **Personalisation** | Per-shot, on your matches | None, same lessons for everyone | | **Platforms** | iOS + Android | iOS-first (verify current platform support) | | **Best for** | Diagnosis | Learning | ## Why this comparison even exists People compare these two because they share keywords ("tennis app," "tennis pro," "improve my tennis"). They're not actually competitors. A more honest framing: they're two halves of the improvement loop. - **TopCourt teaches you what a good forehand looks like.** - **UNFORCE tells you that yours has low shoulder rotation on the second backhand cross-court.** You need both. The TopCourt lesson is wasted if you can't see your own gap; the UNFORCE diagnostic is incomplete if you don't know what to do about the gap. ## What TopCourt does well I'm not in their category, but I've used the product. Strengths: - **Pro-led instruction.** ATP and WTA tour players teaching the techniques they actually use. - **Production quality.** Multi-camera, slow-motion, clean editing. It looks like a documentary, not a YouTube hobbyist clip. - **Structured curriculum.** Lessons are organised so you can progress through a stroke or strategy systematically. - **Platform reach.** iOS-first; verify current platform support before assuming Android or web. - **Annual subscription that doesn't bait-and-switch.** $180/yr, full library access, no tiers, per a 2020 [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify current pricing. ## What UNFORCE does well in this comparison - **Personalisation.** TopCourt teaches general technique; UNFORCE shows what *your* technique is doing on *your* video. - **Diagnosis at session level.** Every match you record produces a per-shot report. The diagnostic is fresh, not stale. - **Free tier.** $0 entry vs $180 annual at TopCourt. - **Cross-platform on phone.** UNFORCE runs on both iOS and Android. - **Coach-shareable output.** PDF reports go to your coach as evidence of what to work on. ## Where each tool wins ### TopCourt wins for - **Players who don't know how to hit a slice backhand** (or any specific shot) and want to learn from a pro. - **Players returning to tennis** after years away who need a structured refresh. - **Beginners who don't have a coach** and want competent instruction at a low cost. - **Players preparing for a specific situation** (clay-court tennis, volleys, doubles strategy) who want curated lessons. ### UNFORCE wins for - **Players who know how to hit but don't know what they're doing wrong.** This is most amateur players. - **Players already taking lessons** who want better data going into each lesson. - **Players whose coach is far away or expensive** and async report-based feedback would help. - **Players competing in club leagues or tournaments** who want match-level diagnostic data. ## When TopCourt is the right choice - **You want curated pro instruction** more than you want personalised analysis. - **You're a beginner or returner** and need to learn the strokes themselves. - **You don't have a coach** and want a structured curriculum at low cost. - **You're committed to a year-long subscription** and the $180 annual is in budget. - **You learn well from video lessons**, some people do, some don't. ## When UNFORCE is the right choice - **You can hit the strokes** but you can't see what you're doing wrong. - **You play matches** that you want diagnostic feedback on. - **You have a coach** and want better data going into each lesson. - **You want a free tier** before committing money. - **You're an Android player.** ## The combined workflow that actually works Here is how an NTRP 3.5 player with a coach uses both products in 2026. **Sunday morning match.** - Record on phone, clip to fence. - Upload to UNFORCE. - Report ready in under 5 minutes: 184 shots tagged, forehand cross-court bouncing 60cm short of the baseline, second-serve shoulder rotation flagged. **Sunday evening.** - Search TopCourt for "second serve" lessons. - Watch the relevant pro lesson, say, a 12-minute breakdown of second-serve shoulder rotation. - Pause, replay, take notes. **Monday on-court practice.** - Apply the TopCourt lesson on the court. - Record practice on phone for the next UNFORCE diagnostic. **Tuesday lesson with coach.** - Bring the UNFORCE report. Bring the TopCourt-derived correction. - Coach has a head-start: they know what's broken and what you've been trying. - Lesson is more productive because the diagnostic and the instruction were already done. This loop is cheaper than either premium tier alone for many players, and more effective than the standard "show up to lessons and figure it out together." ## Pricing math | Combination | Year-one cost | What you get | |---|---|---| | UNFORCE free + TopCourt | $180 | Auto diagnostic + pro instruction | | UNFORCE Pro + TopCourt | €19/mo + $180 | Full no-cap diagnostic + pro instruction | | UNFORCE Pro only | €19/mo | Diagnostic only | | TopCourt only | $180 | Instruction only | | In-person coaching only | €2,000+ at €40/lesson × 50 weeks | Personalised but expensive | | SwingVision Max only | top tier ~$480/yr as of mid-2026 (check [swing.vision](https://swing.vision)) | Diagnostic only, iOS only | The UNFORCE + TopCourt combo at $180 + free is the best value for diagnostic + instruction together. ## Real example: the off-season improvement plan A club player decides they want to add a slice backhand by next spring. The plan: 1. **UNFORCE Free Tier (December-January).** Record 4 practice sessions trying the slice. The pose-feature breakdown shows contact-point and racket-face angle. 2. **TopCourt subscription ($180, December).** Watch the slice-backhand lesson series. Pause, replay, drill solo against a wall. 3. **UNFORCE again (February).** Record. The pose-feature breakdown now shows improved contact-point. 4. **Coaching lesson (March).** Bring the UNFORCE diagnostic showing the improvement and the persistent flaws. Coach focuses lesson on the persistent flaws only. 5. **Spring season (April).** Slice backhand is in the match toolkit. Cost: $180 (TopCourt) + free UNFORCE + 1 lesson (€40) = ~€220 to add a working slice backhand. Compare to ~€800 of weekly lessons over five months covering the same ground. ## How to decide in 60 seconds - **You want to learn tennis from pros:** TopCourt. - **You want to know what you're doing wrong:** UNFORCE. - **You want to actually improve:** both. - **You're starting completely from zero:** TopCourt first, then UNFORCE once you can hit reliably. - **You're already an intermediate player:** UNFORCE first, then TopCourt for specific gaps. ## FAQ **Is TopCourt a tennis analysis app?** No. TopCourt is an instructional streaming platform, pro players teach tennis lessons on video. **How much does TopCourt cost?** $180/yr, annual-only, per a 2020 [source](https://mytennislessons.com/tennis-blog/2020-topcourt-review); verify current pricing. **Can TopCourt replace UNFORCE?** No. Different categories. TopCourt teaches you what to do; UNFORCE tells you what you're doing. **Which should I get first, TopCourt or UNFORCE?** UNFORCE first if you're already an intermediate player. TopCourt first if you're a beginner who needs to learn the strokes themselves. --- *Read next: [UNFORCE vs OnForm: tennis-specific AI vs generic video tool](/blog/unforce-vs-onform) · [UNFORCE vs SwingVision: side-by-side for amateur players](/blog/unforce-vs-swingvision-amateur-players) · [How UNFORCE's shot detection works](/features/shot-detection).* --- ### Wimbledon's electronic line calling, explained URL: https://unforce.io/blog/wimbledon-electronic-line-calling-explained Markdown twin: https://unforce.io/blog/wimbledon-electronic-line-calling-explained.md # Wimbledon's electronic line calling, explained In 2025, Wimbledon retired its line judges. The line-judge teams, around 300 officials in recent years per press reports, who'd called lines on the Championships' courts since the 1870s were replaced by Hawk-Eye Live, an electronic line calling (ELC) system that's been on the men's tour for years and was already universal at the US Open and the Australian Open. The change made every front page. Two questions are being asked about this on Google right now (Google PAA on the [AI line calling SERP](https://www.google.com/search?q=ai+tennis+line+calling)): 1. *"Are the line calls at Wimbledon AI generated?"* 2. *"How does AI line calling work in tennis?"* Both deserve real answers, not headline answers. And both are worth understanding if you're using a phone-based tennis AI app, because the gap between what Wimbledon has and what a phone can do is the gap that defines what an amateur tool can honestly claim. ## TL;DR - Wimbledon uses **Hawk-Eye Live**, 10+ high-frame-rate calibrated cameras per court, 3D triangulation, deterministic geometric line-call decision. - It's "AI" only in the loose sense. There's no neural network deciding the call. It's computer vision plus geometry. - Widely reported accuracy: roughly **3.6 mm mean error**. That's a stadium-grade number that no single-camera phone app can match, or should claim. - Phone-based AI line calling for amateurs is *useful* (15-30 cm tolerance is enough to settle most disputes) but is not on the same scale. ## What Hawk-Eye Live actually does Hawk-Eye, the company, has been building ball-tracking systems for cricket and tennis since 2001. The "Live" variant, used for real-time, in-game line calls without challenge protocols, has a specific architecture: **Cameras.** 10-12 high-frame-rate cameras (typically 340+ fps) mounted around the court at fixed, calibrated positions. The Australian Open and US Open use Hawk-Eye Live across all courts; Wimbledon adopted it across all courts in 2025. **Triangulation.** Each camera sees the ball as a 2D pixel. With 10+ cameras at known positions, the system triangulates the ball's 3D position to a measured precision. The widely reported accuracy is around 3.6 mm. **Geometric decision.** Once you have the 3D ball position over time, and the 3D court geometry (which is known and measured to the millimetre), an in/out call is just trigonometry. No machine-learning judgement. The ball is either inside the line plane or outside. **Real-time audio.** A calibrated voice plays "out" or "fault" within a fraction of a second of the bounce. The chair umpire still presides; ELC replaces the linesperson role. This is not "AI" in the way a Google product manager might use the word. There's no transformer. There's no LLM. There's not even a deep neural net doing the line call itself. The ball-detection step within each camera frame is computer vision (which has had ML components since the 2010s), but the actual line call is pure geometry. The "AI generated" framing in headlines reflects how loosely the public uses the term. Worth understanding the distinction if you care about the tech. ## Why this isn't reproducible on a phone A phone has one camera. Hawk-Eye has ten. Multi-camera triangulation is fundamentally a different problem from monocular inference. You can do a lot with one camera (we've built a whole product on it), but you cannot do *Hawk-Eye accuracy* with one camera, and any phone app that implies otherwise is selling a vibe, not a measurement. The math is straightforward: - **Stereo / multi-view triangulation:** depth error scales linearly with the inverse of camera baseline. More baseline, more cameras, less error. Hawk-Eye's setup gets to millimetres. - **Monocular + scene geometry:** depth is *inferred* from the known geometry of the court, not measured. Inference adds a structural error that no software improvement collapses to zero. We talked about this exact mechanic in the context of [serve speed estimation](/blog/serve-speed-reading-explained), same root cause. Single-camera setups have a structural error band that's bigger than Hawk-Eye's by an order of magnitude, and the honest move is to be explicit about it. ## What phone-based AI line calling can do (honestly) In our pipeline ([explained here](/blog/how-ai-tennis-shot-detection-works)), bounce detection runs on a single phone camera with court keypoint detection providing the geometric scaffold. Under good filming conditions, phone on the centre line, behind the baseline, 30 fps minimum, bounce position error is typically **under 30 cm**. Thirty centimetres is bad for officiating a Slam. It's also fine for resolving most amateur arguments. A bounce 5 cm in or 5 cm out is something humans get wrong all the time too, that's why Hawk-Eye exists at the pro level. A bounce 50 cm in is something even your skeptical doubles partner will accept. So phone AI line calling for amateurs has a real use case, *settling close calls in social play*, where the alternative is "we both think it was in / out and we replay the point." It does not have a use case as an officiating system, and any app implying otherwise is overselling. ## Why Wimbledon held out Until 2025, Wimbledon kept its line judges while every other Slam moved to ELC. The reasons were partly tradition (Wimbledon does tradition) and partly that Hawk-Eye Live had only been used as a *supplement* to humans for challenge calls; the full replacement use case was newer. Once the US Open's 2020 deployment held up across multiple tournaments, and the Australian Open's 2021 follow-up confirmed the operational stability, the case for Wimbledon's hold-out got thinner each year. The 2025 announcement was the inevitable closure of that gap. The era of the human linesperson is over at the top of the sport. ## What this means for the future of amateur AI line calling A few things follow from where the technology is now: 1. **Hawk-Eye-grade ELC won't come to amateur courts soon.** The hardware cost is six-figures per court. Public parks will not get this in our lifetimes. 2. **Phone-based amateur line calling will keep improving** as court-keypoint models get better and as more amateurs film at 60 fps (frame rate is a structural lever on accuracy that doesn't depend on hardware cost). 3. **The sweet spot for phone tools is post-match analysis, not real-time officiating.** Looking at where bounces clustered over a match is way more useful at the amateur level than calling individual lines, and the accuracy needed for clusters is much more forgiving than the accuracy needed for individual calls. This is why UNFORCE's product surface emphasises [court heatmaps](/features/court-heatmap), [shot patterns](/features/shot-detection), and [stroke quality](/features/stroke-quality) over real-time line calling. We can do the post-match analysis well; we can't do Hawk-Eye-grade live calling and we won't pretend we can. ## A footnote on terminology Watch the language. "AI line calling" is sloppy shorthand for what's actually happening at Wimbledon, which is computer vision plus geometric inference plus calibrated multi-camera hardware. The phrase "AI" is doing a lot of work, most of it inaccurate. The same is true in the amateur space. A tennis app that says it does "AI line calls" is either using the phrase very loosely or claiming something it can't deliver. Ask: how many cameras, what frame rate, what court-keypoint detection, what published accuracy? If a vendor can't answer, the system isn't measured the way Hawk-Eye is measured. That's a useful filter as the AI-tennis space gets noisier through 2026. --- **Related reading:** [How AI tennis shot detection actually works](/blog/how-ai-tennis-shot-detection-works) explains the UNFORCE pipeline (which is *not* the Wimbledon pipeline). [How accurate is UNFORCE?](/blog/how-accurate-is-unforce) covers our methodology, and where it sits on the accuracy spectrum vs Hawk-Eye. Or read [/how-it-works](/how-it-works) for the visual product version. --- ### Camera guide: where the phone goes URL: https://unforce.io/camera-guide Markdown twin: https://unforce.io/camera-guide.md ## Tennis, padel, pickleball and badminton Behind the baseline, centred, about head height or a little above. Keep the whole court in frame, including the far baseline - that line is the one we measure everything against. Wedge the phone against a fence post or use a clamp. A friend's hands are the most common reason a session fails. ## Table tennis Film side-on, level with the table, two to three metres back. From the end you lose the bounce. ## Before you film The camera screen shows the court guide live. When all four corners go green and the badge says `LINES LOCKED`, you are set. If the corners go clay, the guide tells you which way to move before you waste a recording. **Next:** [Film a session](/get) · [Read a real debrief](/sample-report) --- ### What changed URL: https://unforce.io/changelog Markdown twin: https://unforce.io/changelog.md Model versions are changelog entries because claims must be reproducible. ## 04 AUG ### Interpreting model updated `vlm 2.4 · prompt 31 · eval 94.1` Claims name the stroke more precisely in doubles. Sessions from before today keep their original wording - we do not rewrite history. ## 28 JUL ### Upload survives app close Chunked and resumable. Filming three matches and driving home now works the way you expected it to. ## 21 JUL ### Badminton clears tracked above the lights High clears that left frame briefly are now followed through. 4% of badminton shots were affected; they were counted, not placed, and their sessions said so. **See also:** [What is coming](/roadmap) · [What we can measure](/accuracy) --- ### UNFORCE vs Baseline Vision: phone vs €1,800 hardware URL: https://unforce.io/compare/baseline-vision Markdown twin: https://unforce.io/compare/baseline-vision.md # UNFORCE vs Baseline Vision: phone vs €1,800 hardware This is a comparison between two different categories. UNFORCE is a phone app. Baseline Vision is a hardware camera (~€1,800) that ships with software. Both produce automated tennis match analysis. Which one is right for you depends almost entirely on **how often you play and how fixed your court is.** ## TL;DR | | UNFORCE | Baseline Vision | |---|---|---| | **Category** | Phone app | Hardware camera + app | | **Hardware cost** | €0 (use your phone) | ~€1,800 ([TennisLeo](https://www.tennisleo.com/baseline-vision-review/)) | | **Subscription** | Free tier; Pro €19/mo; Team €49/mo | Hardware + ongoing subscription | | **Install** | Tripod, 90 seconds | Fence-mount, mains power, network | | **Court compatibility** | Any court you can film | The court the unit is installed on | | **Mobility** | Move between courts freely | Fixed install | | **Connection reliability** | None required (post-video upload) | Phone-to-camera connection can drop ([TennisLeo](https://www.tennisleo.com/baseline-vision-review/)) | | **iOS / Android** | Both | Check vendor | | **EU data residency** | Yes, `europe-west1` | Vendor-specific | ## When Baseline Vision is the right choice - **You run a tennis club, academy, or development program.** A fixed camera on a fixed court that records every session for every member is genuinely valuable. €1,800 amortises across hundreds of matches a season. - **You play 4+ times a week on the same court** and you want zero friction at recording time. With a fixed install, you walk on, hit a button, and play. No tripod setup, no phone-mount adjustment. - **You want a controlled, repeatable optical setup.** A known camera, known lens, known angle removes a lot of variance from the AI pipeline. If you're benchmarking a junior player's progression over months, that consistency matters. - **You record doubles regularly.** Multi-player tracking is harder; a fixed wide-angle camera helps. ## When UNFORCE is the right choice - **You play 1-3 times a week, on different courts.** A fixed install you can't take with you doesn't help. UNFORCE moves with the phone. - **You don't have €1,800 to spend.** UNFORCE free tier and €19/mo Pro is the same problem-solving budget as a single coaching lesson. - **Your courts vary**, public park, club court, indoor in winter, clay in summer. UNFORCE doesn't care which surface, which court, or which city. - **You want to record practice as well as matches.** Hardware cameras pay off on full-match volume; for one-bucket-of-serves practice video, the phone is fine. - **You don't want to depend on a phone-to-camera live connection.** TennisLeo flagged this in their review: > "if the phone gets too far from the camera, the connection drops" > [TennisLeo](https://www.tennisleo.com/baseline-vision-review/) UNFORCE uploads after the fact. There's no live connection to drop. ## Feature-by-feature | Feature | UNFORCE | Baseline Vision | |---|---|---| | **Shot detection** | Yes | Yes | | **Ball tracking** | TrackNet on phone video | Hardware-camera-fed | | **Court heatmap** | Yes | Yes | | **Stroke quality scoring** | Yes, pose-based | Yes | | **Live in-match feedback** | No (post-video) | Yes, when connection holds | | **Doubles support** | Yes (caveats, see /accuracy) | Yes | | **Clay support** | Yes | Yes | | **Indoor support** | Yes | Yes, install permitting | | **Multi-court support** | Any court you film | The installed court | | **Mobility** | Phone | Fixed install | | **Hardware required** | Phone | €1,800 unit + tripod-equivalent mount | | **iOS** | Yes | Yes | | **Android** | Yes | Check vendor | ## Pricing in plain English **Baseline Vision** ([TennisLeo review](https://www.tennisleo.com/baseline-vision-review/)): - Hardware: **~€1,800** one-time. - Subscription: ongoing, vendor-specific tier, confirm at purchase. - Install: fence mount, mains power, network access. **UNFORCE:** - Free tier, €0. - Pro, **€19/mo** or **€190/yr**. - Team, **€49/mo**. The five-year cost comparison for an individual player: | | UNFORCE Pro | Baseline Vision | |---|---|---| | Year 1 | €190 on annual billing | ~€1,800 + sub | | Year 5 | €1,140 | €1,800 + 5 yrs sub | For a club with 200 members, the math inverts, Baseline Vision pays for itself in member-fee value within a season. ## Court compatibility | Surface / setting | UNFORCE | Baseline Vision | |---|---|---| | Hard court (any) | Yes | Where unit is installed | | Clay (any) | Yes | Where unit is installed | | Indoor (any) | Yes | Where unit is installed | | Public park (no fence) | Yes (tripod) | Cannot install | | Travel / away matches | Yes | No | | Multi-court use | Yes | One unit per court | The mobility difference is the single biggest practical factor. If your tennis happens at one court, and only that court, Baseline Vision is a reasonable choice. If your tennis happens at any other court, it doesn't help that day. ## Platform support UNFORCE runs on iOS and Android, same per-shot pipeline on both. Baseline Vision's app integration is iOS-leaning; check vendor for current Android status. The iOS-only pattern is common in tennis-AI tooling and is one of the consistent rec-player frustrations: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) ## Multi-camera vs single-camera context Baseline Vision uses a single fixed camera with a controlled lens and angle. That's better than an arbitrary phone setup because you eliminate camera-quality variance, the model knows the optics. It's worse than a true multi-camera install (PlaySight-style) because you still have one viewpoint and the same occlusion/triangulation limits. UNFORCE is single-camera too, by definition (one phone). We close the gap with model robustness, the pipeline is trained on phone footage at varied angles, heights, and lighting, and with honest disclosure of where it fails on `/accuracy`. The takeaway: Baseline Vision is a "controlled single camera" compared to UNFORCE's "any single camera." For most rec players the realistic question is whether €1,800 worth of hardware control beats the flexibility of using whatever camera you have today. ## Doubles, indoor, and edge cases | Edge case | UNFORCE | Baseline Vision | |---|---|---| | Doubles | Yes (caveats, see /accuracy) | Yes, fixed wide angle helps | | Indoor courts | Yes | Yes, install permitting | | Low light | Documented failure modes on /accuracy | Hardware can be set up for it | | Bright sunlight | Yes | Yes | | Very small ball-against-line contrast | Documented failure mode | Hardware sensor can mitigate | ## What real users say The TennisLeo review is the most-cited public Baseline Vision evaluation. Two recurring themes: > "if the phone gets too far from the camera, the connection drops" > [TennisLeo](https://www.tennisleo.com/baseline-vision-review/) > hardware cost approximately **€1,800** > [TennisLeo](https://www.tennisleo.com/baseline-vision-review/) The connection-drop point matters because Baseline Vision's value is highest when in-match analysis is live. If the connection drops mid-match, you're paying premium hardware prices for the post-video workflow you'd get from a phone app. ## Migration / decision If you've bought Baseline Vision and it works for your club: keep it. The two products aren't substitutes. UNFORCE complements it for: away matches, traveling tournaments, off-club practice, and any player who wants to record outside the club's installed-camera court. If you're considering Baseline Vision for personal use: try UNFORCE free first. If you find yourself wanting analysis on more than 5 matches a week on a single fixed court, then the hardware investment makes sense. Below that, the phone is the right answer. ## FAQ **How much does Baseline Vision cost?** ~€1,800 hardware ([TennisLeo](https://www.tennisleo.com/baseline-vision-review/)) plus subscription. **Why does Baseline Vision need a camera?** To remove camera-quality variance from the analysis pipeline. The tradeoff is cost and install. **Is Baseline Vision more accurate?** On a known-good install, sometimes. Cost-adjusted, UNFORCE wins for individuals. **Who should buy Baseline Vision?** Clubs, academies, junior programs. **Can UNFORCE work without a fence?** Yes, phone-on-tripod from any angle. --- **Try UNFORCE free on iOS and Android.** No €1,800 commitment. If you outgrow it, you'll know. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [Pricing](/pricing) · [vs SwingVision](/compare/swingvision) · [vs PlaySight](/compare/playsight) --- ### UNFORCE vs OnForm: tennis-specific AI vs generic video tool URL: https://unforce.io/compare/onform Markdown twin: https://unforce.io/compare/onform.md # UNFORCE vs OnForm: tennis-specific AI vs generic video tool These products solve different problems and they are often miscompared. **OnForm is a video coaching platform.** A coach watches your video, draws on it, talks over it, and sends it back. **UNFORCE is an AI analysis app.** It detects shots, tracks the ball, scores stroke quality, and produces a report, automatically, without a human coach in the loop. If you have a great coach who'll review your video, OnForm gives them excellent tools. If you don't, UNFORCE gives you analysis anyway. ## TL;DR | | UNFORCE | OnForm | |---|---|---| | **Category** | AI analysis (automated) | Video coaching platform (human) | | **Sport-specific** | Tennis only | Multi-sport (tennis included) | | **Auto shot detection** | Yes | No | | **Auto ball tracking** | Yes | No | | **Auto stroke quality** | Yes | No (coach gives qualitative feedback) | | **Coach annotation tools** | Async share + comment | Industry-leading drawing/voice-over | | **Side-by-side video comparison** | Limited | Yes, strong feature | | **Slow-motion review** | Yes | Yes, strong feature | | **Price** | Free / €19 / €49 | Coach $19.99-$59.99, Athlete $9.99-$14.99 ([onform.com](https://onform.com/pricing/)) | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | ## When OnForm is the right choice - **You have a coach you actively work with.** OnForm is the coach's toolset. If your coach uses it (or will use it), the coach-athlete loop is what you're paying for. - **You want voice-over feedback on your strokes.** OnForm's voice-over and drawing tools are mature. - **You play multiple sports.** OnForm covers golf, baseball, gymnastics, swim, etc. UNFORCE is tennis-only. - **You want side-by-side: you vs Federer.** OnForm is built for that comparison workflow. - **Your coach already has an OnForm account and you're an existing athlete tier user.** Don't disrupt the workflow. ## When UNFORCE is the right choice - **You want automated analysis, not human commentary.** UNFORCE produces a per-shot report without anyone watching the video. Shot detection, ball tracking, court heatmap, stroke quality, all automatic. - **You don't have a coach (yet).** OnForm without a coach is a video editor with extra steps. UNFORCE without a coach is a coaching report. Different value prop. - **You're tennis-specific.** Tennis ball physics, tennis court keypoints, tennis shot taxonomy. OnForm's tennis support is "tennis works as a tagged sport"; it isn't tennis-AI. - **You want measurements, not vibes.** OnForm tells you "your hip rotation looks closed" because your coach said so. UNFORCE tells you "12% of your forehands are short, here are the timestamps." Different tools for different questions. - **You're on a budget.** UNFORCE Pro at €19/mo includes the AI analysis. OnForm Coach starts at $19.99/mo for coach tools, then you also pay your coach's hourly rate to use them. ## Feature-by-feature | Feature | UNFORCE | OnForm | |---|---|---| | **Auto shot detection** | Yes, CatBoost classifier | No | | **Auto ball tracking** | Yes, TrackNet | No | | **Auto stroke quality scoring** | Yes, pose-based | No (manual coach input) | | **Court keypoint detection** | Yes, hard / clay / indoor | No | | **Court heatmap** | Yes | No | | **Coach drawing tools** | Limited | Yes, strong | | **Voice-over feedback** | No (text comment only) | Yes, strong | | **Slow-mo playback** | Yes | Yes | | **Side-by-side video** | Limited | Yes, strong | | **Async coach review** | Yes, single-tap link | Yes, full coach workflow | | **Multi-sport** | No (tennis only) | Yes | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | | **EU data residency** | Yes, `europe-west1` | No | ## Pricing in plain English **OnForm** ([onform.com/pricing](https://onform.com/pricing/)): - Coach Solo, **$19.99/mo**. - Coach Pro / Team, up to **$59.99/mo**. - Athlete, **$9.99-$14.99/mo**. The OnForm pricing model assumes a coach is paying for the coach plan and athletes pay a smaller subscription on top. If you're an athlete with no coach, you're paying for tools without the loop that makes them valuable. **UNFORCE:** - Free, full per-shot report on short videos. - Pro, **€19/mo**. Unlimited videos, full feature set. - Team, **€49/mo**. Multi-coach seats. UNFORCE's value is in the AI report itself, regardless of whether a coach is in the loop. If your coach wants to review your UNFORCE report and add commentary, the Team plan supports that workflow. ## When you should use both Common pattern for serious players: - **UNFORCE** runs on every match and practice video. It produces the per-shot data: which shots were short, which were out, where bounces clustered, what your forehand-vs-backhand split was. - **OnForm** is what your coach uses to give you targeted feedback on the 3-5 shots UNFORCE flagged as worst. The AI surfaces the problem. The coach explains the fix. Neither replaces the other. ## Migration / "I already have OnForm" If you have OnForm and a coach: keep OnForm. If you have OnForm and *no* active coach: UNFORCE gives you more value than OnForm in solo mode. The athlete tier of OnForm without a coach in the loop is essentially a video editor + storage. UNFORCE gives you actual analysis. Three steps to add UNFORCE: 1. Sign up free at [unforce.io](/). 2. Upload one match video, same files you'd put into OnForm. 3. If the report is more useful than your last coach-less OnForm session, switch the analysis workflow over. ## Doubles, court compatibility, and edge cases Tennis-specificity matters at the edges. UNFORCE's models have been trained against tennis singles and doubles footage; OnForm has no tennis-specific behaviour at all because it's sport-agnostic. | Edge case | UNFORCE | OnForm | |---|---|---| | Singles | Yes, full pipeline | Generic video tools | | Doubles | Yes (caveats, see /accuracy) | Generic video tools | | Hard court | Yes | Generic | | Clay court | Yes | Generic | | Indoor | Yes | Generic | | Outdoor low light | Documented failure modes on /accuracy | N/A, no analysis | | Serve-only practice | Yes (single-clip mode) | Yes, generic slow-mo | | Side-by-side comparison | Limited | Best-in-class | The pattern: UNFORCE knows it's looking at tennis. OnForm doesn't. ## Line calling UNFORCE does post-video line review based on detected court keypoints and ball trajectory. OnForm doesn't do line calling at all, there's no ball detection. If line calls are part of why you'd want video review, OnForm isn't the tool; UNFORCE or SwingVision (on iOS) are the candidates. ## Serve speed UNFORCE estimates serve speed and publishes the methodology and error bars on `/accuracy`. OnForm doesn't measure speed, there's no tracking. If you want to know how fast you serve, OnForm can show you the video at 0.25× speed; UNFORCE gives you a number. ## Platform support Both apps ship on iOS and Android. That's a meaningful win for OnForm against the iOS-only tennis-AI alternatives: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) OnForm has Android. UNFORCE has Android. SwingVision doesn't. If platform support is your dealbreaker and you're choosing between OnForm and UNFORCE, both pass the test, and the question becomes "do I want generic video tools or tennis-specific analysis?" ## What real users say OnForm's user base is mostly coaches and the athletes those coaches work with. Public reviews are largely positive about the coach-side toolset. Critical comments tend to come from athletes who didn't realise the platform's value depends on the coach loop. For the AI-analysis category that UNFORCE competes in, the relevant complaints are about iOS-only competitors: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) OnForm doesn't have that gap (it's cross-platform), but it doesn't have AI analysis either. ## FAQ **Is OnForm a tennis app?** Not specifically, multi-sport. **Does OnForm do auto shot detection?** No. Human review only. **How much is OnForm?** Coach $19.99-$59.99/mo, Athlete $9.99-$14.99/mo ([onform.com](https://onform.com/pricing/)). **Can I use OnForm solo?** You can. The value drops without a coach loop. **Does UNFORCE replace my coach?** No. It replaces the generic video tool between sessions. --- **Try UNFORCE free on iOS and Android.** If your coach uses OnForm, use both. If not, UNFORCE alone goes further than OnForm alone. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [The OnForm alternative for tennis](/alternatives/onform) · [vs SwingVision](/compare/swingvision) --- ### UNFORCE vs PB Vision: 2026 honest comparison URL: https://unforce.io/compare/pb-vision Markdown twin: https://unforce.io/compare/pb-vision.md # UNFORCE vs PB Vision: tennis vs the smaller paddle sport Short version: **PB Vision is for the smaller paddle sport. UNFORCE is for tennis.** This page exists because Google search keeps surfacing one as an "alternative" to the other, and that suggestion is wrong in both directions. If you play both sports, and a lot of rec players do, you'll want both apps. Neither is a substitute for the other, and the underlying AI models are tuned for different ball physics and different court geometry. ## TL;DR | | UNFORCE | PB Vision | |---|---|---| | **Sport** | Tennis | The smaller paddle sport | | **Court size** | 78×27 ft singles / 36 ft doubles | 20×44 ft | | **Shot taxonomy** | Forehand, backhand, serve, volley, slice, lob | Dink, drive, drop, third-shot, volley | | **Ball physics** | Felt tennis ball, fast topspin, high bounces | Plastic perforated ball, low arc | | **iOS** | Yes | Yes | | **Android** | Yes | Check pb.vision | | **Free tier** | Yes | Yes, limited | | **Court detection on clay** | Yes | N/A (sport not played on clay) | | **EU hosting** | Yes, `europe-west1` | US-hosted | ## When PB Vision is the right choice Non-negotiable section: - **You play the smaller paddle sport.** That is the entire reason this product exists. The dink classifier, the third-shot-drop labelling, the kitchen-line awareness, none of those exist in a tennis-AI product, including UNFORCE. - **You play both sports and need a paddle-sport tool.** UNFORCE isn't going to do paddle-sport analysis well. PB Vision is the right tool. - **Your group is on PB Vision.** Network effects in a small-community sport matter more than feature parity. ## When UNFORCE is the right choice - **You play tennis.** The whole pipeline, TrackNet ball detection, court keypoints, MediaPipe pose, CatBoost shot/bounce classifier, is tuned on tennis data. Tennis ball flight is faster, arcs higher, bounces differently; tennis courts have a different geometry; tennis shot taxonomy is different. - **You're on Android.** UNFORCE is mobile-first on both stores. - **You want clay-court support.** Clay isn't a paddle-sport surface, so PB Vision has no reason to support it. Tennis-AI products that cite "clay-court issues", like SwingVision, [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac), leave a real gap. UNFORCE's court model is trained on hard, clay, and indoor. ## Feature-by-feature | Feature | UNFORCE (tennis) | PB Vision (paddle sport) | |---|---|---| | **Sport-specific ball model** | TrackNet, tennis-trained | Yes, sport-specific | | **Sport-specific court model** | Tennis lines (singles/doubles) | The smaller court layout | | **Shot classifier** | Forehand / backhand / serve / volley / slice / lob | Dink / drive / drop / third-shot / volley | | **Stroke quality scoring** | Yes, pose-based, tennis-specific | Limited | | **Court heatmap** | Yes, per-shot, per-bounce | Yes, sport-appropriate | | **Serve speed** | Yes (with [methodology](/accuracy)) | Less relevant, different sport mechanics | | **iOS** | Yes | Yes | | **Android** | Yes | Check vendor | | **EU data residency** | Yes | No | ## Pricing in plain English PB Vision pricing changes frequently, check [pb.vision](https://pb.vision) directly. Both apps offer a free tier that's enough to try. **UNFORCE:** - Free, full per-shot report on short videos. - Pro, **€19/mo**. Unlimited match length. - Team, **€49/mo**. Multi-coach, async review. ## "Can I use one for the other sport?" Technically, yes. Practically, no. - **UNFORCE on a paddle-sport video:** the upload succeeds; the court detector tries to fit tennis lines onto a much smaller court; the shot classifier returns nonsense ("forehand" for a dink, "serve" for a third-shot drop). Shot count will be roughly right; everything else will be off. - **PB Vision on a tennis video:** the inverse. The court detector expects a 20×44-foot court and the ball physics differ enough that the tracker drops more frames. These are not bugs. The vendors specialised on purpose. If you film both sports, use both tools. ## Migration / dual use If you came here from PB Vision because you also play tennis: you don't migrate, you add. Keep PB Vision for paddle-sport days. Add UNFORCE for tennis days. Different folder for each set of videos in your phone library is the simplest workflow. ## Why specialisation matters more than people think A common assumption is "AI is AI, same model, different sport, just retrain." It's not that simple. Here's what actually changes between a tennis pipeline and a paddle-sport pipeline: **Ball physics.** A tennis ball is felt-covered, ~57 grams, leaves the racket at up to 200+ kph for pro serves. The smaller paddle sport's ball is plastic and perforated, slow, low-arc. The tracking model's frame-to-frame motion priors differ. A model trained on one will lose ball position on the other. **Court geometry.** Tennis courts are 78×27 ft (singles) or 78×36 ft (doubles), with very specific keypoints, baseline corners, T-line, service line intersections, doubles tramlines. The smaller paddle sport's court is 20×44 ft with completely different lines (kitchen / non-volley zone). The keypoint detector that's been trained on tennis will mis-fit on the smaller sport's court. **Shot taxonomy.** Forehand, backhand, serve, volley, slice, lob, these are tennis labels. Dink, drive, drop, third-shot, those are the smaller paddle sport's labels. The shot classifier is a multi-class problem; the labels themselves differ. A tennis-trained classifier doesn't have "dink" as a category, full stop. **Player positioning patterns.** Tennis players cover a 78-foot court; the smaller paddle sport players play a much shorter court with kitchen-zone constraints. Heatmap clustering, court-coverage stats, and player-position-aware scoring all assume one or the other. That's why "use the wrong tool for the wrong sport" produces nonsense. The vendors specialise on purpose. We did, and so did PB Vision. ## Court compatibility | Surface | UNFORCE | PB Vision | |---|---|---| | Tennis hard | Yes | Wrong sport | | Tennis clay | Yes | Wrong sport / N/A | | Tennis indoor | Yes | Wrong sport | | Smaller paddle sport indoor | Wrong sport | Yes | | Smaller paddle sport outdoor | Wrong sport | Yes | ## Platform support Both products ship on iOS. Android availability differs by vendor and changes over time. UNFORCE is on both stores; check [pb.vision](https://pb.vision) for their current Android status. ## What real users say PB Vision's user base is happy on the smaller paddle sport. The complaint pattern is mostly "I want this for tennis", which is exactly why UNFORCE exists. We don't have a single representative public complaint thread we can point at because the product is younger and the discussion is mostly inside a small paddle-sport community. For tennis, the relevant complaints are about iOS-only competitors: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "Genuinely thinking of getting a iPhone just for the swing[vision]" > [r/10s](https://www.reddit.com/r/10s/comments/151g2cy/) That's the gap UNFORCE fills on the tennis side. The tennis-AI category had iOS dominance and no Android answer; PB Vision's iOS-first launch reinforced the same pattern. UNFORCE is mobile-first on both stores. ## Migration / dual-sport workflow For players who genuinely play both sports, a clean workflow: 1. **Folder per sport in your phone library.** Tennis videos in one, smaller-sport videos in another. 2. **UNFORCE for the tennis folder.** Per-shot analysis, court heatmap, stroke quality. 3. **PB Vision for the smaller-sport folder.** Sport-specific shot taxonomy, kitchen-aware positioning. 4. **One report per sport, separately.** Don't try to merge, they measure different things. You're not "switching" between products; you're using both, each for what it's built for. The players who get the most out of cross-sport analysis treat them as separate pipelines. ## Pricing context UNFORCE pricing: free tier, €19/mo Pro, €49/mo Team. PB Vision pricing varies, confirm at [pb.vision](https://pb.vision). Comparing the two on price misses the point because they aren't substitutes; you'd pay each one for its specific sport, not pick between them on cost. ## FAQ **Is PB Vision for tennis?** No, built for the smaller paddle sport. **Is UNFORCE for the paddle sport?** No, tennis only. **Are they the same company?** No. Separate companies. **Does PB Vision work on Android?** Check pb.vision for current platform status. **Can I use UNFORCE for the paddle sport?** Not usefully. Use a sport-specific tool. --- **Try UNFORCE free on iOS and Android**, for tennis. If you also need a paddle-sport tool, PB Vision is a reasonable choice for that sport. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [Read the accuracy methodology](/accuracy) · [vs SwingVision](/compare/swingvision) --- ### UNFORCE vs PlaySight: facility hardware vs your phone URL: https://unforce.io/compare/playsight Markdown twin: https://unforce.io/compare/playsight.md # UNFORCE vs PlaySight: facility hardware vs your phone PlaySight is a facility-class tennis intelligence system. Multiple fixed cameras, court installation, club-level subscriptions, used by federations and academies. It's a different category from UNFORCE. This comparison exists because some players hear about PlaySight from their club and wonder whether UNFORCE is "the same thing on a phone." It isn't, and it doesn't pretend to be. But for **any court that doesn't have a SmartCourt installed**, UNFORCE is the practical answer. ## TL;DR | | UNFORCE | PlaySight | |---|---|---| | **Category** | Phone app | Facility-installed system | | **Hardware** | Your phone | Multiple fixed cameras + install | | **Where it works** | Any court | Only on SmartCourt-installed courts | | **Customer** | The player | The facility / club / federation | | **Cost to player** | €0 free, €19/mo Pro | Depends on facility membership | | **Accuracy ceiling** | Phone-quality, single-angle | Multi-camera, higher ceiling | | **Setup time** | 90 seconds, tripod | Permanent install | | **Mobility** | Goes with the phone | Doesn't move | | **Pickup-game friendly** | Yes | Only at SmartCourt clubs | ## When PlaySight is the right choice Honest list: - **You're at a club, academy, or federation that has SmartCourt installed.** Use it. The multi-camera setup is genuinely more accurate than any single-phone setup, and the cost is bundled into your membership or session fee. - **You're a pro or near-pro player.** PlaySight is one of the standard pro-development tools. You're already in venues that have it. - **You're an academy director.** PlaySight + facility access is a real product offering for serious junior development. Don't try to substitute that with a phone. - **You want broadcast-quality match streaming.** PlaySight's facility offering goes well beyond AI analysis into live streaming and stat overlays. ## When UNFORCE is the right choice - **Your court doesn't have SmartCourt.** That's most courts. PlaySight only exists where it's been installed; the installations are concentrated at premium clubs and federations. - **You travel between courts.** A phone moves; a SmartCourt doesn't. - **You play public-park, school, or non-academy courts.** The realistic alternative isn't PlaySight, it's no analysis at all. UNFORCE is the gap-filler. - **You want analysis you control.** Your phone, your video, your data, EU-hosted in `europe-west1`. With PlaySight, the facility owns the recording infrastructure. - **The economics are individual, not institutional.** PlaySight's pricing model is built around facilities buying multi-court packages. As an individual, you can't buy PlaySight directly, you can only access it where someone else has paid for it. ## Feature-by-feature | Feature | UNFORCE | PlaySight | |---|---|---| | **Shot detection** | Yes, phone video, single angle | Yes, multi-camera | | **Ball tracking** | TrackNet | Multi-camera triangulation | | **Court heatmap** | Yes | Yes | | **Stroke quality** | Pose-based per-component | Multi-angle pose | | **Serve speed** | Yes (with [methodology](/accuracy)) | Yes, radar option at top installs | | **Line calling** | Post-video | Real-time at top installs | | **Multi-camera** | No (phone single-angle) | Yes | | **Live streaming** | No | Yes, facility offering | | **Setup** | Tripod, 90s | Permanent install | | **iOS** | Yes | Vendor app | | **Android** | Yes | Check vendor | | **Where you can use it** | Any court | SmartCourt-installed courts only | ## Pricing in plain English **PlaySight:** facility-customer pricing, not standardised for individuals. Some clubs bundle it into membership; some charge per-session. If you want PlaySight, you join a facility that has it. **UNFORCE:** - Free, full per-shot report on short videos. - Pro, **€19/mo**. - Team, **€49/mo**. If you're paying €X/month for a club membership specifically because it includes PlaySight, that's a perfectly reasonable choice. If your club doesn't have it, UNFORCE is the practical equivalent for the player tier. ## The "any court, any phone" angle The reason UNFORCE's wedge isn't "we beat PlaySight" is because we don't. PlaySight has more cameras, better triangulation, and a higher ceiling on accuracy when the install is right. The wedge is **availability**. The court you played on this Tuesday almost certainly doesn't have a SmartCourt. Your child's junior tournament court doesn't. The clay court at the public park doesn't. The school gym you play indoor at doesn't. UNFORCE works on all of them, because it works on whatever your phone can record. ## Court compatibility | Surface / setting | UNFORCE | PlaySight | |---|---|---| | Hard court (any) | Yes | Only on installed courts | | Clay (any) | Yes | Only on installed courts | | Indoor (any) | Yes | Only on installed courts | | Public park court | Yes | No | | School / club without install | Yes | No | | PlaySight-equipped academy | Yes | Yes | The pattern: UNFORCE works on every court a phone can record. PlaySight works only where someone installed it. Those installations are concentrated at premium clubs, federations, and elite academies, a small fraction of where amateur tennis is actually played. ## Why facility-only is a real constraint PlaySight's facility model has genuine technical advantages, multi-camera triangulation, controlled lighting, persistent installation, professional-grade hardware. But it has a customer-acquisition problem: as a player, you can't decide to use PlaySight unless your venue decided it first. For an NTRP 3.0-4.5 amateur, the practical question is: "where do I play, and what works there?" Most rec tennis happens at: - Public park courts (no installation). - Mid-tier clubs with no facility hardware. - School and university courts. - Private home courts. - Travel / tournament venues that change weekly. PlaySight covers approximately none of these. That's not a knock on PlaySight, they aren't trying to. It's a description of what the realistic alternative is for the player tier. ## Multi-camera vs single-camera tradeoff PlaySight's multi-camera setup at top installs has a higher accuracy ceiling than any single-phone setup. We won't pretend otherwise. The reasons: - **Triangulated ball position.** Two or more cameras let you reconstruct true 3D ball position. A single phone can only estimate it. - **Occlusion handling.** When a player blocks the ball from one angle, another angle still has it. - **Controlled optics.** Known lens, known sensor, known angle, fewer unknowns to handle in the AI pipeline. UNFORCE closes part of that gap with a published methodology and known failure-mode disclosure on `/accuracy`. We're explicit about what a single-phone system can and can't do. The realistic comparison isn't UNFORCE vs an ideal multi-camera install, it's UNFORCE vs no analysis at all on the courts that don't have multi-camera installs. ## Platform and hardware PlaySight's player-facing app runs on iOS; check [playsight.com](https://playsight.com) for current Android support. The bigger story is that the experience requires the venue's hardware to function, without the SmartCourt install, the app doesn't have a video source. UNFORCE uses your phone camera; same phone you record a vacation video on, same camera, no special setup beyond a tripod. ## What real users say PlaySight reviews tend to come from facility administrators and pros, not rec players. There's no equivalent of the SwingVision App Store accuracy thread to quote here, because the typical PlaySight user isn't on the App Store leaving consumer-tier reviews. The relevant data point: most rec tennis players never get to use PlaySight at all. That's the problem UNFORCE solves. For the comparable category, phone-based tennis-AI, the most cited gaps are around platform support and accuracy: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) That gap is what UNFORCE addresses on the consumer side. PlaySight occupies a different rung, pros, federations, elite academies, and the comparison rarely involves the same buyer. ## Migration / dual use If your club has PlaySight, use both: - **PlaySight** for matches at your club. - **UNFORCE** for everything else, away matches, tournaments, public-court practice, pro lessons at venues without PlaySight, vacation tennis. Different tool, different context. They don't compete for the same use case in any practical sense. ## FAQ **Is PlaySight available for individual players?** Not directly, only at installed facilities. **Can I use PlaySight at any court?** No, SmartCourt installs only. **How much does PlaySight cost me?** Whatever your facility charges, if anything. **Is PlaySight more accurate than UNFORCE?** At top-tier installs, yes. At the courts you actually play on, the comparison usually doesn't apply because PlaySight isn't there. **Can pros use UNFORCE?** For practice and away-from-facility work, yes. For their primary training, they use facility hardware. --- **Try UNFORCE free on iOS and Android**, at any court, on any phone. PlaySight when you can; UNFORCE when you can't. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [vs SwingVision](/compare/swingvision) · [vs Baseline Vision](/compare/baseline-vision) --- ### Tennis AI app pricing 2026: full vendor comparison grid URL: https://unforce.io/compare/pricing-grid Markdown twin: https://unforce.io/compare/pricing-grid.md # Tennis AI app pricing in 2026: full vendor grid Tennis-AI pricing in 2026 is a mess. Different billing units (monthly, annual, hardware-plus-subscription), different currencies, different "what's actually included on this tier." This page is the cleanest side-by-side we could build, with a source URL on every number. Updated with each pricing change. ## TL;DR: the headline grid | Vendor | Free tier | Entry paid | Top tier | Annual top | Source | |---|---|---|---|---|---| | **UNFORCE** | Yes | €19/mo Pro | €49/mo Team | €190/yr Pro | This site | | **SwingVision** | Limited | from ~$15/mo | up to ~$40/mo | ~$400+/yr top tier | [swing.vision](https://swing.vision), mid-2026, [Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) | | **OnForm** | No | $9.99/mo Athlete | $59.99/mo Coach | - | [onform.com](https://onform.com/pricing/) | | **TopCourt** | No | - (annual-only) | $180/yr | $180/yr | [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) | | **Baseline Vision** | No | Hardware + sub | Hardware + sub | ~€1,800 hw | [TennisLeo](https://www.tennisleo.com/baseline-vision-review/) | | **PB Vision** | Yes | Vendor-specific | Vendor-specific | - | [pb.vision](https://pb.vision) | Currency note: SwingVision and OnForm bill USD. UNFORCE bills EUR. TopCourt bills USD. Baseline Vision is European-priced (EUR). ## UNFORCE pricing in plain English - **Free**, €0. Full per-shot report on short videos (under a few minutes). One court at a time. No credit card. - **Pro**, **€19/mo** or **€190/yr**. Unlimited match length, full feature set, async coach share. - **Team**, **€49/mo** or **€490/yr**. Multi-coach seats, async review workflow, team dashboards. The same shot detection, ball tracking, court heatmap, and stroke-quality scoring runs on every tier. Free is rate-limited by video length, not by feature. ## SwingVision pricing in plain English Sources: [Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702). - **Plus**, **$14.99/mo** or **$95.99/yr** (≈$8/mo annualised). HD recording. - **Pro**, **$24.99/mo**. More cloud storage, more features. - **Max**, **$39.99/mo** (≈$400/yr). 4K capture, top-tier line calling. The Tennisnerd review's specific quote: > "the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually" > [Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) The implication for buyers: the entry tier is *not* the full product. If you're price-comparing UNFORCE Pro (€19/mo) against SwingVision, it's worth knowing what tier of SwingVision delivers what UNFORCE delivers at €19/mo. ## OnForm pricing in plain English Source: [onform.com/pricing](https://onform.com/pricing/). - **Athlete**, **$9.99-$14.99/mo**. Receiving coach feedback. - **Coach Solo**, **$19.99/mo**. Single-coach toolset. - **Coach Pro / Team**, up to **$59.99/mo**. Multi-coach, full analytics. OnForm's economic model: the coach pays the coach plan, athletes pay athlete-tier on top. If you don't have a coach, the athlete tier is cheap but the value is limited because the coach loop is what the platform optimises for. See the full [OnForm comparison](/compare/onform). ## TopCourt pricing in plain English Source: [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review). - **$180/year, annual billing only.** No monthly option. Reviewer's complaint: > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) Different category, TopCourt is instructional video, not match analysis. See the [TopCourt comparison](/compare/topcourt). ## Baseline Vision pricing in plain English Source: [TennisLeo review](https://www.tennisleo.com/baseline-vision-review/). - **Hardware**: ~**€1,800** one-time. - **Subscription**: ongoing, vendor-specific tier. - **Install**: fence mount, mains power, network access. Different category, hardware-and-software, not a phone app. See the [Baseline Vision comparison](/compare/baseline-vision). ## PB Vision pricing in plain English PB Vision pricing changes frequently, confirm current figures at [pb.vision](https://pb.vision). It is the smaller paddle sport's analog of SwingVision; not a tennis tool. See the [PB Vision comparison](/compare/pb-vision). ## Five-year cost (individual amateur player) If you'll keep using one of these for five years, here's the rough total: | Vendor | 5-year cost | Note | |---|---|---| | **UNFORCE free** | €0 | If short-video tier is enough | | **UNFORCE Pro €19/mo** | €1,140 | Cancel any time | | **SwingVision Plus annual** | $480 | $95.99/yr × 5 | | **SwingVision Max annual** | ~$2,000 | If you want the full tier | | **OnForm Athlete** | $720 | $12/mo × 60, no coach loop | | **TopCourt** | $900 | $180/yr × 5 | | **Baseline Vision** | €1,800+ | Plus 5 years subscription | These aren't apples-to-apples, TopCourt is instruction, Baseline Vision is hardware, OnForm needs a coach to be useful, but it's the simplest framing of "what's the lifetime cost of this decision." ## What the pricing tells you about the products A few patterns are worth naming: - **Tier-stacking** (SwingVision). The "best" feature is on the most expensive tier. You can't price-compare the entry tier against single-tier competitors because you're not buying the same product. - **Annual lock-in** (TopCourt). Annual-only billing transfers risk to the buyer. If TopCourt's content doesn't fit you, you've already paid. - **Hardware capex** (Baseline Vision). Front-loaded cost makes sense for high-volume users (clubs); painful for individuals. - **Coach-dependency** (OnForm). The athlete tier is cheap because the platform's value depends on someone else paying for the coach plan. - **Single-tier feature parity** (UNFORCE). Same AI on every tier. The tier divides volume and team features, not "the AI we'd give you if you paid more." You can decide for yourself whether tier-stacking, annual lock-in, hardware capex, coach-dependency, or single-tier-flat is the model you want to buy into. ## Hidden costs to watch for Sticker price is the start, not the end. A few line items that show up in real billing: - **Tier upgrades for features you didn't expect to need.** SwingVision's 4K capture and "more accurate line calling" sit on the Max tier ([Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)). If you start on Plus and want those, the upgrade path is real money. - **Coach-plan dependency.** OnForm's athlete tier value depends on a coach having a coach plan. If your coach drops OnForm, your athlete subscription becomes much less useful. - **Hardware add-ons.** Baseline Vision is hardware-first; the camera is the line item, but mounts, network, and install labour can add to the real total. - **Annual lock-in.** TopCourt's $180/yr can't be tested with a single month. If the content doesn't fit your learning style, you've paid for a year before knowing. - **FX and currency.** Most competitors bill USD. EU buyers pay FX margin on every monthly charge. UNFORCE bills EUR, no FX layer for EU customers. ## Free-tier honest comparison A "free tier" only counts if you can actually use the product on it. | Vendor | Free tier | What's included | What's not | |---|---|---|---| | **UNFORCE** | Yes | Full per-shot report on short videos, all features, no card | Long full-match videos require Pro | | **SwingVision** | Limited | Some video imports, basic features | Most analysis features paywalled | | **PB Vision** | Yes (paddle sport) | Sport-specific limited tier | - | | **OnForm** | Trial only | - | Coach plan needed for full value | | **TopCourt** | No | - | Annual subscription required | | **Baseline Vision** | No | - | Hardware purchase required | If "I want to try this without committing" is your starting filter, UNFORCE or PB Vision (depending on sport) are the cleanest free-tier options. SwingVision's free tier exists but is limited enough that most users describe it as a trial. ## Currency, billing, and EU specifics EU buyers face friction with USD-billed competitors: - **FX margin.** Card networks add 1-3% on USD charges to EUR cards. On a $400/yr SwingVision Max plan that's an extra $4-12/yr you don't see in the price tag. - **VAT handling.** Some vendors collect EU VAT, others don't. If your card statement shows the gross USD amount, work out whether you've actually paid VAT. - **Data residency.** Most US-billed competitors host in the US. UNFORCE hosts in `europe-west1` (GDPR-friendly, EU data residency). - **Receipt language.** EU bookkeepers prefer EUR receipts. For an EU player, the "real" cost of a $14.99/mo SwingVision Plus plan is closer to €15-€16/mo after FX and any uncovered VAT. UNFORCE Pro at €19/mo is a flat number. ## What real users complain about **SwingVision pricing tiers:** > "the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually" > [Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) **TopCourt billing model:** > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) **Baseline Vision hardware connection:** > "if the phone gets too far from the camera, the connection drops" > [TennisLeo](https://www.tennisleo.com/baseline-vision-review/) These are not gotcha quotes, they're the real friction points buyers describe. We're sharing them because the pricing decision is rarely just about the price tag; it's about what you actually get for it. ## FAQ **Cheapest free tier?** UNFORCE, full per-shot report on short videos, no card. **Is annual always cheaper?** Usually monthly-to-annual saves ~30-40%. TopCourt forces annual. **Cheapest way to try AI tennis analysis?** UNFORCE free tier. **Why is SwingVision so much more expensive?** Tier-stacking, the features are split across three tiers. **Why include Baseline Vision at €1,800?** Because it's a real consideration for clubs and serious players. --- **Try UNFORCE free on iOS and Android.** Full per-shot report on your first match. If you don't see the difference vs the alternatives, the cheapest option (€0) was also the right one. [Try UNFORCE free →](/) · [Pricing](/pricing) · [vs SwingVision](/compare/swingvision) · [vs OnForm](/compare/onform) · [vs TopCourt](/compare/topcourt) · [vs Baseline Vision](/compare/baseline-vision) --- ### UNFORCE vs SwingVision: 2026 honest comparison URL: https://unforce.io/compare/swingvision Markdown twin: https://unforce.io/compare/swingvision.md # UNFORCE vs SwingVision: the honest 2026 comparison If you're already on SwingVision and it works for you, this page tells you when UNFORCE is worth a look, and when it isn't. If you're on Android, the answer is shorter: SwingVision still doesn't run on your phone, and UNFORCE does. We're not here to bash a competitor. SwingVision is the most polished iOS tennis-analysis app on the market, and the team built a category. But there are three places it loses people consistently: Android exclusion, opaque pricing tiers, and accuracy complaints on serve speed and clay-court line calling. UNFORCE was built around those three. ## TL;DR | | UNFORCE | SwingVision | |---|---|---| | **iOS** | Yes | Yes | | **Android** | Yes | No (iOS-only as of April 2026, [source](https://swing.vision/newsletters/android-update)) | | **Apple Watch required** | No | Required for real-time line calling | | **Free tier** | Yes, full per-shot report on short videos | Limited free tier | | **Entry paid tier** | €19/mo Pro | from ~$15/mo as of mid-2026 ([swing.vision](https://swing.vision)) | | **Top tier** | €49/mo Team | up to ~$40/mo as of mid-2026 ([swing.vision](https://swing.vision)) | | **Annual top tier** | Pro €190/yr | $400/yr at top tier ([Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)) | | **Hosted in EU** | EU-pinned storage/DB; GPU in EU regions where available | US-hosted | | **Published accuracy methodology** | Yes, `/accuracy` page | No | | **Hardware required** | Phone only | Phone + Apple Watch (recommended) | | **Paddle sport mode** | No (tennis only) | Yes | | **Clay-court detection** | Yes | Mixed, App Store reviews report failures | ## When SwingVision is the right choice This section is non-negotiable. If you're in any of these buckets, stop reading and use SwingVision: - **You're on iOS, you have an Apple Watch, and you want real-time line calling during your match.** That workflow is SwingVision's signature feature and UNFORCE doesn't replicate it. UNFORCE does its line-related work post-recording, against the video. If you want the umpire-on-your-wrist experience, SwingVision is the one. - **You play the smaller paddle sport.** SwingVision supports it as a first-class sport; UNFORCE does not. - **You want a mature, large-community product.** SwingVision has been live since ~2019, has thousands of App Store reviews, an established Discord, and a long bug-fix history. UNFORCE is younger. - **You record in 4K and want the highest line-call accuracy SwingVision offers.** That's the Max tier ($39.99/mo, ≈$400/yr). It is genuinely better than their lower tiers for pure line-call work. - **Your circle is on SwingVision.** If your hitting partners and coach already share SwingVision report links, the network effect matters. If none of those describe you, keep reading. ## When UNFORCE is the right choice The differentiation comes from four wedges: ### 1. You're on Android SwingVision has been iOS-only since launch. The team has publicly acknowledged Android demand on its [Android update page](https://swing.vision/newsletters/android-update); a private alpha has been mentioned; no public release exists as of April 2026. The forums are full of the same question: - *"Will SwingVision still work with an Android?"*, [Talk Tennis thread](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) - *"Genuinely thinking of getting a iPhone just for the swing[vision]"*, [r/10s thread](https://www.reddit.com/r/10s/comments/151g2cy/) If you're on a Pixel, Samsung, or OnePlus, UNFORCE is the answer. Same shot detection, same court keypoints, same per-shot report. We didn't bolt Android on, we built mobile-first for both stores. ### 2. EU-friendly, transparent pricing SwingVision lists tiers from roughly $15 to $40 per month as of mid-2026 (check [swing.vision](https://swing.vision) for current pricing). The Tennisnerd review puts it bluntly: *"the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually"* ([Tennisnerd](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)). UNFORCE pricing: - **Free**, full per-shot report on short videos, single court. - **Pro €19/mo**, unlimited videos, full match length, all features. - **Team €49/mo**, multi-coach seats, async review workflow. EU pricing is in EUR, billed in EUR, with storage and database pinned to `europe-west1`. No surprise paywalls between tiers, no "the feature you want is one tier higher than the one you bought." ### 3. Published accuracy methodology This is the wedge no other tennis-AI vendor competes on. UNFORCE maintains a public regression suite, `compare_events.py`, that scores shot/bounce/event detection against hand-annotated ground truth. The numbers, the test set composition, the failure modes, and the per-shot-type F1 are all on `/accuracy`. Why does this matter? Because the loudest SwingVision complaints are accuracy complaints: - *"The advertised 'AI scoring' is never correct"*, [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) - *"on clay it doesn't understand where the lines of the court are"*, [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) - *"Is this swing vision MPH accurate, my hardest serve only 66 mph?"*, [r/10s](https://www.reddit.com/r/10s/comments/17c8ozf/) When a vendor doesn't publish a methodology, you have to take their word for the marketing number. We'd rather you take the test set. ### 4. No hardware lock-in SwingVision's full line-call workflow assumes an Apple Watch. UNFORCE doesn't. If you don't own a watch, don't want to buy one, or don't want to wear one, UNFORCE gives you the same per-shot output from a tripod-mounted phone. ## Feature-by-feature | Feature | UNFORCE | SwingVision | |---|---|---| | **Shot detection** (forehand / backhand / serve / volley) | Yes, CatBoost + MediaPipe pose | Yes | | **Ball tracking** | Yes, TrackNet, frame-by-frame | Yes | | **Court keypoint detection** | Yes, works on hard, clay, indoor | Yes, clay reports of failure ([App Store](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac)) | | **Court heatmap** | Yes, per-shot, per-bounce, per-zone | Yes | | **Stroke quality scoring** | Yes, pose-based per-component | Limited, basic technique flags | | **Serve speed** | Yes, published error vs radar on `/accuracy` | Yes, accuracy disputed in user threads | | **Real-time line calling** | No (post-video only) | Yes, Apple Watch tier | | **Doubles support** | Yes (with caveats, see `/accuracy`) | Yes, more mature | | **Clay courts** | Yes | Mixed, see complaints above | | **Indoor courts** | Yes | Yes | | **iOS** | Yes | Yes | | **Android** | Yes | No | | **Apple Watch** | Optional / not used | Required for real-time line calls | | **PDF report** | Yes, automatic per match | Limited | | **Async coach share** | Yes, single-tap link | Yes | | **EU data residency** | EU-pinned storage/DB; GPU in EU regions where available | No (US-hosted) | | **Paddle-sport mode** | No | Yes | ## Pricing in plain English **SwingVision** ([Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702)): - Plus, **$14.99/mo** or **$95.99/yr** (≈$8/mo annualised). HD recording, basic shot detection. - Pro, **$24.99/mo**. More features, more cloud storage. - Max, **$39.99/mo** (≈$400/yr). 4K capture, top-tier line-call accuracy. The Tennisnerd quote is worth re-reading: *"the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually."* In other words, the feature you probably want is not on the tier you'd reasonably start at. **UNFORCE:** - Free, full per-shot report on short videos, no credit card. - Pro, **€19/mo**. Unlimited match length, full feature set. - Team, **€49/mo**. Multi-coach, async review workflow. No 4K paywall. Same shot-detection accuracy on every tier. EU billing, EU-pinned storage. ## What real users complain about Buying decisions live or die on the negative reviews. Here are the verifiable ones: **SwingVision, accuracy:** > "The advertised 'AI scoring' is never correct." > [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) **SwingVision, clay courts:** > "on clay it doesn't understand where the lines of the court are." > [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) **SwingVision, pricing tiers:** > "the $150/year plan gets you HD recording, but 4K and more accurate line calling require paying $400 annually." > [Tennisnerd review](https://www.tennisnerd.net/tennis-tools/swingvision-review-and-interview/25702) **SwingVision, Android:** > "Will Swingvision still work with an Android?" > [Talk Tennis thread](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "Genuinely thinking of getting a iPhone just for the swing[vision]" > [r/10s thread](https://www.reddit.com/r/10s/comments/151g2cy/) **SwingVision, serve speed plausibility:** > "Is this swing vision MPH accurate, my hardest serve only 66 mph?" > [r/10s](https://www.reddit.com/r/10s/comments/17c8ozf/) > "How accurate is Swingvision? Am I really serving 130mph?" > [r/10s](https://www.reddit.com/r/10s/comments/xc2xc0/) We address each of these on `/accuracy` with a published number, a test-set description, and a known-failure section. ## How to switch from SwingVision to UNFORCE Three steps: 1. **Export your existing SwingVision videos.** They live in your Photos library if you record in-app, open the SwingVision match, tap share, save video. You don't lose anything; SwingVision keeps your account. 2. **Sign up for UNFORCE free** at [unforce.io](/) on iOS or Android. No card. 3. **Upload one match.** Same camera angle works (back-of-court, head-height, full court visible). The UNFORCE report drops into your inbox in a few minutes. Run both reports side-by-side on the same match. That's the comparison that actually matters, your video, both apps, real numbers. If SwingVision wins on your data, stay. If UNFORCE wins, switch. ## When you should use both A non-trivial number of players keep both. Reasonable workflow: - **SwingVision** for live match days when you have your Apple Watch and want real-time calls. - **UNFORCE** for everything else, Android phone matches, practice video, async coach review, deep stroke-quality work, anything on clay. This isn't a "us vs them", it's a "what does this video need." If you have iOS + watch + a hard court, both work. If any of those is missing, UNFORCE is the practical answer. ## FAQ **Is SwingVision available on Android?** No. As of April 2026, SwingVision is iOS-only ([Android update page](https://swing.vision/newsletters/android-update)). Rec players have been asking since 2019. **Does UNFORCE need an Apple Watch?** No. The full per-shot pipeline runs against your phone video. **Is SwingVision worth $400 a year?** Only if you specifically want 4K capture and the highest line-call accuracy SwingVision offers. For shot detection, stats, and heatmaps the lower tiers cover it, and UNFORCE's free tier covers a lot of the same ground. **How accurate is SwingVision compared to UNFORCE?** Both apps make claims. UNFORCE [publishes its methodology](/accuracy). SwingVision's accuracy is debated in [App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) and [r/10s threads](https://www.reddit.com/r/10s/comments/xc2xc0/), judge from the receipts. **Will my SwingVision videos work in UNFORCE?** Yes. Any phone-recorded MP4 imports. **Does UNFORCE support the smaller paddle sport?** Not yet. SwingVision does. --- **Try UNFORCE free on iOS and Android.** Upload one match, get a per-shot report. If it doesn't tell you something useful about your game in five minutes, the comparison answers itself. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [Read the accuracy methodology](/accuracy) · [Pricing](/pricing) · [The SwingVision Android alternative](/alternatives/swingvision) --- ### UNFORCE vs TopCourt: instruction vs analysis (use both) URL: https://unforce.io/compare/topcourt Markdown twin: https://unforce.io/compare/topcourt.md # UNFORCE vs TopCourt: instruction vs analysis (use both) This page is unusual in our compare hub because **TopCourt is not an UNFORCE competitor.** It's a different product category. TopCourt is instructional streaming, short pro-coached videos on technique, strategy, and drills. UNFORCE is automated analysis of your own video. The two solve different problems. We're including this page because the question "TopCourt or UNFORCE?" comes up in search, and the honest answer is: **most rec players benefit from both.** Watch the technique. Test it on your video. Iterate. ## TL;DR | | UNFORCE | TopCourt | |---|---|---| | **Category** | Automated AI analysis of *your* video | Pro instructional streaming | | **Content source** | Your match recordings | Pro players + coaches | | **What it tells you** | What *you* did | What pros do | | **Price** | Free / €19/mo / €49/mo | $180/yr annual-only ([source](https://mytennislessons.com/tennis-blog/2020-topcourt-review)) | | **Monthly billing** | Yes | No, annual only ([source](https://mytennislessons.com/tennis-blog/2020-topcourt-review)) | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | | **Time commitment to get value** | Upload one match, ~5 min report | Watch lessons regularly | | **Personalised** | Yes, based on your data | No, same content for all subscribers | ## When TopCourt is the right choice - **You learn well from watching technique.** TopCourt's content library is pros showing how things should look. If you're an "I need to see it before I can do it" learner, this format works. - **You're between coaches and want structured content.** TopCourt fills the role a coaching curriculum would. - **You can commit to a year.** TopCourt is **annual-only**, confirmed in the review: > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review) - **$180/yr is comfortable in your tennis budget.** Some players treat it as the equivalent of one in-person lesson. - **You're working on something specific** that TopCourt has a lesson series for (kick serve, transition game, doubles strategy). ## When UNFORCE is the right choice - **You want feedback on *your* tennis, not pro tennis.** TopCourt teaches what should happen. UNFORCE tells you what actually happens in your matches. Different question. - **You don't want to commit to annual billing.** TopCourt is annual-only. UNFORCE Pro is €19/mo, cancellable any time. - **You learn by reviewing your own matches.** Watching pros only gets you so far. The skill-development literature (and most coaches) say self-video review is one of the highest-leverage activities. UNFORCE automates the review. - **You play often enough that "watch lessons" isn't realistic.** If you're playing 2-4 times a week, the bottleneck isn't more instruction, it's diagnosis of what to fix. - **You want measurable progress.** TopCourt has no metric of your improvement. UNFORCE tracks shot-quality scores over time. ## Feature-by-feature | Feature | UNFORCE | TopCourt | |---|---|---| | **Personalised analysis** | Yes, your matches | No, same content for all | | **Shot detection** | Yes | N/A | | **Ball tracking** | Yes | N/A | | **Court heatmap** | Yes | N/A | | **Stroke quality** | Yes, measured | Discussed in pro lessons, not measured | | **Pro coaching content** | No | Yes, extensive library | | **Drill library** | No | Yes | | **Strategy lessons** | No | Yes | | **Annual commitment** | No (monthly cancel) | Yes, $180/yr only | | **iOS** | Yes | Yes | | **Android** | Yes | Yes | ## Pricing in plain English **TopCourt** ([My Tennis Lessons review](https://mytennislessons.com/tennis-blog/2020-topcourt-review)): - **$180/year, annual billing only.** - No monthly tier. - Reviewer's specific complaint: > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) **UNFORCE:** - Free, full per-shot report on short videos. - Pro, **€19/mo** or **€190/yr**. - Team, **€49/mo**. If you're price-sensitive and want to try both: UNFORCE free + TopCourt $180/yr is one practical bundle. UNFORCE Pro + TopCourt $180/yr is roughly €40/month total, less than a single in-person coaching lesson in most EU cities. ## "Use both": the recommended workflow This is genuinely the right answer for most players who can afford it. **Cycle:** 1. **Record a match.** Phone on tripod, back-of-court angle. 2. **Run UNFORCE analysis.** Get the per-shot report. Identify the worst shot category, say, second-serve return. 3. **Find the matching TopCourt lesson.** Watch a pro break down second-serve returns. 4. **Drill it.** Either at practice or in your next match. 5. **Re-record the next match.** UNFORCE will tell you whether the lesson stuck. This loop, diagnose, instruct, drill, re-measure, is the workflow most coaches use with their athletes. UNFORCE + TopCourt approximates it without a coach. ## Migration / dual use There's nothing to migrate, they don't overlap. If you already pay for TopCourt and you came here wondering if UNFORCE is "the same thing": no, but it's the missing complement. ## Court compatibility (and why it doesn't really apply) TopCourt isn't court-aware, the lessons are pre-recorded studio video. You watch them anywhere, on any device, regardless of where you actually play. UNFORCE, by contrast, processes the court you film on: | Aspect | UNFORCE | TopCourt | |---|---|---| | Hard / clay / indoor support | Yes, court-detected | N/A (lessons, not analysis) | | Doubles support | Yes (caveats, see /accuracy) | Lessons cover doubles strategy | | Singles support | Yes | Yes, singles-focused content | The category mismatch matters here: there's no court compatibility question for TopCourt because TopCourt doesn't analyse court action. The question is "does the lesson library include topics relevant to me?", and TopCourt's library is broad. ## Platform and access Both apps ship on iOS and Android. TopCourt's content streams from their CDN; you need a connection to watch. UNFORCE uploads your video to `europe-west1` for processing and returns the report; you need a connection at upload time but the report is then cached on your device. ## Where the analysis vs instruction divide actually lands It's worth being precise about what each one tells you: **TopCourt tells you what *should* happen.** A pro demonstrates the kick serve. A coach explains weight transfer on the forehand. The content is unambiguous about correct technique because it's pre-produced by experts. **UNFORCE tells you what *did* happen.** The AI labels each shot, measures the contact point, scores the stroke quality, and flags the worst categories. The content is empirically derived from your video. Both are useful. Neither is a substitute. If you only do "should happen" without ever measuring "did happen," you'll plateau. If you only do "did happen" without ever learning "should happen," you'll know your weaknesses but not how to fix them. The pairing is what most coaches actually do with their athletes, diagnose, instruct, drill, re-measure. UNFORCE and TopCourt approximate that loop without a coach. You can also pair UNFORCE with free YouTube technique videos for the cheapest setup. ## What real users say **TopCourt, annual-only billing:** > "you can't pay monthly, but need to commit to a year" > [My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review) This is the most consistent friction point in TopCourt reviews. The content quality isn't the problem; the commitment model is. If you'd rather try a tennis-improvement product month-to-month, UNFORCE fits, and you can keep the TopCourt option open for when you're ready to commit. For the analysis category specifically, the comparable complaints are about iOS-only competitors: > "Will Swingvision still work with an Android?" > [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/will-swingvision-still-work-with-an-android.760414/) > "The advertised 'AI scoring' is never correct" > [SwingVision App Store reviews](https://apps.apple.com/us/app/swingvision-tennis-pickleball/id989461317?see-all=reviews&platform=mac) UNFORCE addresses both, Android availability and a published methodology, and complements TopCourt rather than competing with it. ## FAQ **Is TopCourt the same as SwingVision or UNFORCE?** No, different category. Instruction, not analysis. **Can you pay for TopCourt monthly?** No. Annual-only ([My Tennis Lessons](https://mytennislessons.com/tennis-blog/2020-topcourt-review)). **How much does TopCourt cost?** $180/yr ([source](https://mytennislessons.com/tennis-blog/2020-topcourt-review)). **Should I use TopCourt or UNFORCE?** Both, if you can. They solve different problems. **Does TopCourt analyse my video?** No. --- **Try UNFORCE free on iOS and Android.** If you already love TopCourt, UNFORCE is the missing half, measurement of your own play. [Try UNFORCE free →](/) · [How UNFORCE works](/how-it-works) · [The TopCourt alternative for analysis](/alternatives/topcourt) · [Pricing](/pricing) --- ### UNFORCE Examples: Sample Coaching Reports and Analyses URL: https://unforce.io/examples Markdown twin: https://unforce.io/examples.md # Examples The fastest way to evaluate UNFORCE is to run it on your own footage on the [free tier](/pricing). If you want the canonical artifact first, start with the [sample post-match report](/sample-report). The examples below add six de-identified match and serve-session scenarios. Each example below describes the session, summarises what the report surfaced, and calls out the specific insight that made it useful. None of these are dressed up, they're the kind of "one specific thing to fix" outcomes that the product is supposed to produce. --- ## Example 1: NTRP 3.5 singles, hard court, club tournament **Session:** 2-set match, hard court, outdoor, late-morning sun. Recorded with a Pixel 8 fence-clip-mounted at 8 ft behind the baseline. 1080p / 60fps, 47 minutes total. **Player profile:** right-handed, two-handed backhand, NTRP 3.5, lost the match 6-3 6-4. **What the report showed:** - 187 shots detected, classified across forehand (38%), backhand (29%), serve (24%), volley (5%), slice (4%). - Forehand stroke-quality score: 71/100 (component breakdown: trunk rotation 78, contact-point variance 82, racquet acceleration 58, follow-through 66). - Backhand stroke-quality score: 79/100. - Serve: average first-serve speed 142 km/h, second-serve 96 km/h. - Heatmap: clear bias toward forehand corner of the court on rallies, with the deuce-side service box receiving 64% of returnable serves. **The insight that mattered:** the racquet-acceleration component on forehand was the lowest in the report at 58/100. Specifically, the player was decelerating into the contact point on deep forehands rather than accelerating through. The "top three things to work on" auto-summary led with: *"Forehand: maintain or accelerate racquet head through contact on deep balls; current pattern shows deceleration on shots beyond ¾ court depth."* That's a precise, actionable cue for the next practice session, and it's the kind of thing a coach watching from the side might miss across a 47-minute match because the deceleration pattern only showed up clearly on the deeper forehands. --- ## Example 2: NTRP 4.0 singles, red clay, friendly match **Session:** 1-set match, red clay outdoor, mid-afternoon. Recorded with iPhone 14 Pro on a 7 ft tripod behind the baseline (no fence available). 1080p / 60fps, 38 minutes. **Player profile:** left-handed, one-handed backhand, NTRP 4.0, dropped the match 6-4. **What the report showed:** - 142 shots, including 8 slices (high one-handed-backhand share by category). - Slice F1 detection on this match: ran cleanly through the regression check; 7 of 8 slices correctly classified, 1 confused with a flat backhand. - Stroke quality on slice: 84/100, the player's strongest stroke by component scoring. - Ball tracking degraded slightly on three rallies where the clay had been heavily kicked up; bounce-localisation confidence dropped on those specific bounces (flagged in the report). **The insight that mattered:** the report surfaced that the player won 78% of points where the rally exceeded 6 shots, but lost 64% of points where the rally was 3 shots or fewer. The shot-mix breakdown showed an over-reliance on aggressive first-strikes after the serve that landed in the net. The auto-summary recommended building one extra shot before going for the winner, a tactical insight, not a mechanical one. This kind of pattern is hard to see while you're playing. It's also the type of thing a coach picks up after watching three or four matches; UNFORCE surfaced it on one. --- ## Example 3: Solo serve practice, 32 first serves **Session:** Solo serve practice on hard court. Tripod at 6 ft, 8 ft behind the deuce-side baseline, slightly off-centre. iPhone 15 at 120fps. 14 minutes. **Player profile:** right-handed, NTRP 3.5, working on first-serve consistency. **What the report showed:** - 32 first serves analysed. - Average speed: 128 km/h. Max: 142 km/h. Min: 112 km/h. Standard deviation: 7.2 km/h. - Toss-height variance: ~24 cm peak-to-peak, flagged as high. - Contact-point variance: roughly 35 cm peak-to-peak, also flagged as high. - Trunk-rotation arc: consistent (low variance). - Per-serve stroke quality ranged from 62 to 86, mean 74. **The insight that mattered:** the report found a strong correlation between toss height and stroke-quality score for this session, high tosses (above the player's mean) consistently scored 4-8 points lower than median tosses. The auto-summary led with: *"Lower-than-median toss height correlates with higher-quality contact for this session. Try toning the toss down by ~10 cm and tracking whether quality improves."* A specific, testable hypothesis from a 14-minute practice video. --- ## Example 4: Indoor doubles, mixed-level club night **Session:** Doubles match, indoor LED-lit hard court, evening. Galaxy S23 fence-clip at 9 ft. 1080p / 60fps, 52 minutes. **Player profile:** mixed pair, NTRP ~3.5 average. Two of four players right-handed; one player left-handed at the net. **What the report showed:** - Aggregate shot detection: 268 shots detected at the match level. - Per-player attribution: reliable for both baseliners (right-handed and left-handed) at 92% accuracy. Net players' attribution dropped to ~78% on rapid net exchanges, flagged in the report's beta-feature warning banner. - Heatmap: showed the doubles team's collective coverage gap in the deuce-side mid-court, both players tended to drift toward the alleys on returns. - Stroke quality ran cleanly for the two baseliners; net-player quality scoring was attached to the partial attribution and flagged as preliminary. **The insight that mattered:** the heatmap revealed a coverage gap that neither player on the team had noticed. The simple fix, one player covers the centre on returns, the other guards the alley, came directly from looking at the bounce-density map. This example is also a deliberate showcase of where UNFORCE currently has [doubles support in beta](/changelog), we're transparent about what works and what doesn't. --- ## Example 5: NTRP 4.5 returner, hard court, training session **Session:** Practice match against a stronger sparring partner. Hard court outdoor, partly cloudy. Pixel 9 Pro at 60fps, fence-clip 8 ft. 35 minutes. **Player profile:** right-handed, two-handed backhand, NTRP 4.5, focused on return-of-serve. **What the report showed:** - 156 shots, of which 47 were returns of serve. - Return stroke quality: forehand return 83/100, backhand return 87/100. - Return depth heatmap: ~60% of returns landing inside the service line (i.e. short). - The auto-summary flagged: *"Return depth significantly biased short. Strong stroke quality but low court penetration on returns; consider adjusting contact point further back on the toss-arrival axis."* **The insight that mattered:** stroke quality was good, but the player was costing themselves court position by playing returns short. This is a different category of insight from "fix your forehand", it's a tactical gap that high-stroke-quality scores might otherwise hide. --- ## Example 6: NTRP 3.0 returner, public-park court, no fence **Session:** Match on a public park court with no perimeter fence. Tripod at 6 ft, 8 ft behind the baseline, sandbag-weighted base. iPhone 13 at 30fps (older phone, no 60fps option). 41 minutes. **Player profile:** right-handed, two-handed backhand, NTRP 3.0, returning to tennis after a long break. **What the report showed:** - 134 shots, slightly fewer than typical for the duration because of longer between-point pauses. - 30fps input flagged at upload; the system warned that ball-tracking confidence on serves would be reduced. - Bounce localisation worked normally; serve-speed estimates flagged as ±15 km/h confidence interval rather than the usual ±6. - Stroke quality scored cleanly across the match (the pose pipeline doesn't depend on frame rate as heavily as ball tracking does). **The insight that mattered:** the player's serve fault rate was 38% on first serves, high. The report's auto-summary cross-referenced this with toss-position variance and identified a left-side toss drift correlated with faults. Practical fix: tone down toss-arm reach across the body. This example is also a demonstration that UNFORCE produces a useful report on a no-fence public court with a sub-recommended frame rate. We're explicit about the confidence-interval degradation rather than papering over it. --- ## What's not in these examples We deliberately chose representative-not-best examples. The reports above are real (de-identified). They are not "the best report we've ever seen." Three things you would also see if you used UNFORCE yourself: 1. **Failure modes are flagged in-report.** When the system has low confidence on a stretch of footage, it says so on the output. We don't pretend perfection; the [accuracy methodology](/accuracy) page documents every known failure mode. 2. **Reports get more useful over time.** Session 4 of a player's history is more useful than session 1, because the timeline view shows what's improving and what's regressing. 3. **The "top three things to work on" auto-summary is opinionated.** It picks three. Sometimes you'll disagree. Coaches will too, that's part of the value of the [coach-share workflow](/how-to/share-report-with-coach), where the coach reads the auto-summary and tells you whether they agree or not. ## Generate your own example The fastest way to understand what UNFORCE produces is to run it on your own footage. Your first two complete sessions are free with no card. Film one match by following the [camera guide](/camera-guide), upload it, and the app will notify you when the same debrief structure is ready. --- **Read next:** [How UNFORCE works](/how-it-works) · [Accuracy methodology](/accuracy) · [Filming guide](/how-to/film-your-tennis-match) · [Pricing](/pricing) · [FAQ](/faq) --- ### UNFORCE questions, answered plainly URL: https://unforce.io/faq Markdown twin: https://unforce.io/faq.md The short answers first. Every claim below follows the same rule as a debrief: say what is known, and name what is not. ## Which sports does UNFORCE support? Tennis, padel, pickleball, badminton and table tennis. Only the court and the sport's stroke vocabulary change; the claim structure, colour semantics and confidence rules stay the same. ## What does a debrief contain? One honest fix, three clips that prove it, every measured number traceable to a frame, and a named reason for anything the footage could not support. ## What if nothing stood out? The debrief says **“Nothing stood out this session.”** UNFORCE never invents a fix to fill the slot. ## Where does the phone go? For tennis, padel, pickleball and badminton: behind the baseline, centred, around head height, with the whole court in frame. Table tennis is the exception: side-on, level with the table, two to three metres back. ## Can UNFORCE measure spin from phone footage? No. It says **not measurable** and gives the reason. A number nobody can check is worse than no number at all. ## Do you train on my footage? Not by default. Training requires explicit consent for that session. Consent is revocable. Delete means deleted. ## Can my coach read the debrief? Yes. Shared debriefs cost the coach nothing to read and annotate. Shared links expire and can be revoked, even after they have been opened. ## What does UNFORCE cost? The first two complete sessions are free with no card. After that, choose Pro or Team; the app shows your store's localized price before purchase. Reading a shared debrief stays free for coaches. **Read next:** [Where the phone goes](/help) · [Pricing](/pricing) · [The footage pledge](/privacy) --- ### Tennis Ball Tracking on a Phone: Yes, Really URL: https://unforce.io/features/ball-tracking Markdown twin: https://unforce.io/features/ball-tracking.md # Tennis ball tracking on a phone: yes, really In plain English: ball tracking is the part of UNFORCE that finds the tennis ball in every frame of your video and reconstructs its trajectory through the air. Where it bounces, how fast it's moving, what curve it took to get there, that's all derived from ball tracking. Without it, the [court heatmap](/features/court-heatmap) is empty, the speed numbers don't exist, and shot-classification's accuracy drops sharply because it can't use ball trajectory as a feature. This page is what ball tracking actually does, how good it is, and the angles where it falls over. ## What it does, in one paragraph UNFORCE uses a TrackNet-derived ball detector, TrackNet is the open-source approach the racket-sports computer-vision community converged on for tracking small fast objects through partial occlusion. The model takes consecutive video frames as input and produces a per-frame ball position. From that, the pipeline reconstructs the 3D trajectory using the court-keypoint scale (so we know how big the court is in pixels), estimates the bounce points (where the trajectory's z-coordinate crosses the court plane), and feeds the trajectory into shot classification, the heatmap, and the speed calculation. The full pipeline is documented at [/how-it-works](/how-it-works); this page is the ball-tracking layer specifically. ## How accurate it is Honest answer: - **Per-frame ball detection:** in the high 90s on well-lit, behind-baseline phone footage at 1080p. The ball is a 5-15 pixel yellow object, TrackNet was literally designed for this. - **Trajectory reconstruction:** the model misses some frames during fast serves (the ball can travel more than its own width per frame), and it interpolates. Bounce-point accuracy is typically within 30-50 cm of the true bounce on the heatmap, good enough to tell you "your forehand is landing in the middle third" with confidence, not good enough to call lines. - **Speed estimation:** within 5-10% on serves and groundstrokes shot from the recommended camera angle. We don't quote sub-mph numbers and we're explicit when the speed is a low-confidence estimate (e.g. very short rally, heavy occlusion). Full methodology, including how we measure these against hand-annotated ground truth, is on the [/accuracy](/accuracy) page. We publish the regression suite results, no other consumer tennis app does, and the [serve-speed disbelief threads on Reddit](https://www.reddit.com/r/10s/comments/17c8ozf/) are exactly the reason. If you've ever wondered whether your tennis app's "130 mph serve" reading was real, the answer is: maybe, but the methodology was never published. Ours is. The deep methodology piece is at [/blog/how-accurate-is-unforce](/blog/how-accurate-is-unforce). Read it before you trust any number. ## Where it fails Three real failure modes: ### 1. Heavy backlight or low-contrast lighting If you film at sunset with the sun behind the player, the ball can blow out into the highlights or get lost in shadow. TrackNet's per-frame detection rate drops, the trajectory reconstruction interpolates more, and bounce-point estimation degrades. The fix is the same as for any phone video: don't shoot directly into the sun. Indoor floodlit courts and morning/midday sun are fine. Late-afternoon backlight is the killer. ### 2. Very low resolution or heavily compressed video The ball is small. If your phone records at 480p, or if the video has been re-compressed by a messaging app before upload, the ball can drop below the resolution threshold the model needs. Upload from your phone's native gallery, not from WhatsApp or Telegram (which re-encode aggressively). 1080p at 30 fps is the comfortable floor; 4K is fine; below 720p, accuracy drops noticeably. ### 3. Net-cord skim and the moment of bounce When the ball clips the net cord and changes direction sharply, the trajectory reconstructor sometimes misses the inflection. The bounce-point estimation can land on the wrong side of the net for a few cases. Similarly, the moment of bounce itself, when the ball hits the court, is occasionally estimated 1-2 frames late, which translates to a few centimetres of bounce-position error on the heatmap. This is a known limitation; we mark these shots as low-confidence in the report. There are smaller failure modes (a second ball in frame from the next court over, a player wearing a yellow shirt, a recently-mowed pollen-yellow court surface) that can spike false detections. These are rare in real club tennis but they exist. ## Why this is the right framing for an amateur player Here's the thing about ball tracking for an amateur player: **you don't need Hawk-Eye accuracy. You need *honest* accuracy.** A 30 cm error on a bounce point doesn't matter when the question is "do my forehands land in the middle third or the back third?", those zones are 4 metres deep. A 7% error on a serve speed reading doesn't matter when the question is "is my second serve 20 mph slower than my first?", that gap is 30 mph. What matters is the trustworthiness of the *direction* the numbers move. If your serve speed reading goes up across four weeks of practice, that's a real change, both serves are subject to the same systematic error, so the *delta* is reliable even when the absolute number isn't. The same is true for bounce-zone consistency, rally-shot speed, and trajectory shape. This is the framing competing apps haven't gotten right. They market the giant "139 MPH SERVE" number, the player goes to Reddit and posts ["Am I really serving 130mph?"](https://www.reddit.com/r/10s/comments/xc2xc0/), and trust collapses. We market the *deltas* and the *zones*, the things you can actually use to improve, and we publish the methodology so you can audit us. The downstream features that consume ball tracking, the [court heatmap](/features/court-heatmap) (where the bounces land) and [shot detection](/features/shot-detection) (which uses the trajectory shape as a feature), are calibrated to the same accuracy band. ## Walkthrough: one serve, end-to-end You hit a flat first serve down the T. Here's what ball tracking is doing: 1. **Frames -90 to -10 (relative to contact):** TrackNet sees you and the ball in your hand during the toss. Detection per frame. 2. **Frames -10 to -1:** Toss apex, then contact. The ball's velocity vector inverts at apex (z-direction). At contact, it accelerates sharply forward. 3. **Frames 0 to ~5:** The ball is moving very fast (the ball moves more than its own width per frame at 110+ mph at 30 fps). Detection rate drops; trajectory is reconstructed by fitting a parabola to the surrounding frames. 4. **Frame ~6 (bounce):** The ball hits the court. The z-coordinate of the trajectory crosses zero. This is the bounce point that goes on the heatmap. 5. **Speed calculation:** Distance from contact-point to bounce-point, divided by elapsed time, scaled by the court-keypoint calibration. That's your serve speed. The error band is reported in the long-form report. The whole thing runs once per shot and feeds the report. You see "first serve, 92 mph, T-zone, deep", and that's a synthesis of every layer of the pipeline working together. ## What it doesn't do Important to be clear: - **Not line-calling.** We don't tell you whether your serve was in or out. Hawk-Eye does that with multi-camera triangulation and we don't pretend to match it. Don't argue line calls with your hitting partner using UNFORCE. - **Not spin estimation from a phone camera, today.** Spin requires either much higher frame rate than a phone records or a multi-camera setup. We mention spin in our marketing only as a feature on the roadmap, not a current capability, we don't want to be the app that ships an unreliable number and then deals with the trust fallout. - **Not your fault when the ball isn't visible.** If you stand in front of the camera between bounces, ball tracking can't see what it can't see. ## Pricing Ball tracking is included in both complete free sessions and every paid plan. The accuracy is the same on every plan; there is no premium ball-tracking model. Paid plans increase volume, video length, and collaboration limits. Every hosted session uses the same 30-day rolling retention window. Full pricing is at [/pricing](/pricing). --- **Ready to see it on your own video?** [Upload a match free](/) and look at the trajectory overlays in the report. Or read [the methodology page](/accuracy) first if you want to know the error bands before you trust the speed numbers. Ball tracking feeds the [court heatmap](/features/court-heatmap) and [shot detection](/features/shot-detection); the three together are the foundation of the report. --- ### The Post-Match Tennis Report That Survives the Drive Home URL: https://unforce.io/features/coaching-report Markdown twin: https://unforce.io/features/coaching-report.md # The post-match tennis report that survives the drive home In plain English: the UNFORCE report is a PDF that turns your tennis video into a readable match document. Summary page, heatmap, stroke quality, per-shot table, work-on-this. It's the artefact that makes the rest of UNFORCE useful, without it, the analysis lives only in the app. With it, you can email it to your coach, save it in a folder, look at it again three months from now, and compare. This page is what's in the report and why the format matters more than the features. ## What it does, in one paragraph After [shot detection](/features/shot-detection), [ball tracking](/features/ball-tracking), the [court heatmap](/features/court-heatmap), and [stroke quality](/features/stroke-quality) all run, the pipeline assembles their outputs into a single PDF. The structure is fixed, summary first, then heatmap, then stroke-quality, then per-shot detail, because consistency across reports lets you compare week-over-week without hunting for sections. The PDF is paired with a linked, timestamped video that lets you click into any specific shot from the report. The full backend pipeline is documented at [/how-it-works](/how-it-works); this page is the report-output layer. ## How accurate it is Accuracy of the report itself is the composite of every layer feeding it. The summary numbers are as reliable as their underlying features: - **Shot counts:** as reliable as [shot detection](/features/shot-detection), F1 in the high-80s to low-90s depending on shot type. - **Heatmap zones:** as reliable as the [court heatmap](/features/court-heatmap), within 30-50 cm bounce-position accuracy. - **Speed numbers:** as reliable as [ball tracking](/features/ball-tracking), 5-10% error band on serves and groundstrokes. - **Stroke quality scores:** as reliable as [pose-based scoring](/features/stroke-quality), per-shot noisy, per-match-average stable. The full methodology for every layer is published at [/accuracy](/accuracy). The report doesn't manufacture accuracy; it presents what the pipeline produced. Where a number is low-confidence, the report flags it. ## Where it fails Three failure modes specific to the report layer: ### 1. The "work on this" section is generic The coaching translation at the end of the report is rule-based. It looks at your per-component scores, finds the lowest one, and outputs a generic recommendation ("forehand follow-through is short, try the over-the-shoulder finish drill"). It's not a bespoke coach; it's a guide-rail. For specific, high-trust coaching feedback, send the report to a human coach (see [/use-cases/coaches-async-review](/use-cases/coaches-async-review)). The report is the *substrate* for coaching, not the coaching itself. ### 2. Per-shot table can be overwhelming A 60-minute match produces 200+ shots. The per-shot table lists them all. Most amateur players don't need this level of detail, the summary page is the read-it-first artefact. We're working on a "smart highlights" view that surfaces only the 10-15 most informative shots. Today, the per-shot table is comprehensive but dense. ### 3. Cross-match comparison is manual We don't yet auto-compare this week's report against last week's. You can do it visually by opening both PDFs, but a longitudinal "your forehand-depth trend over 8 weeks" view is on the 2026 roadmap. Today, the artefact is per-match. ## Why this is the right framing for an amateur player Here's the structural argument, which is more important than the feature list: **the report exists because the analysis has to leave the app to be useful.** Almost every tennis-AI app today keeps the analysis trapped in their interface. You open the app, you scroll through stats, you can't easily share it, you can't reference it offline, you can't send it to a coach. The "report" is a screen, not a document. That's a structural mistake for amateur players for three reasons: 1. **Coaches don't have your app.** You can't expect your coach (in-person or remote) to install the same tool you use, learn its UI, and look at your data through your interface. They want a PDF in their inbox they can mark up. The [parents-junior-tennis use case](/use-cases/parents-junior-tennis) is built entirely around this, the parent sends the report to the coach, who reads it in 30 seconds. 2. **Memory is short.** What you saw in the app last Tuesday is gone by next Sunday's match. A PDF saved in a folder is the only thing that survives the week. Three months in, the folder of PDFs is a longitudinal record nothing else gives you. 3. **You don't trust the app's interpretation, you want the data.** The summary page is a presentation, not a database. The PDF lets you scroll past the parts the app emphasised and find the bits that matter to you. This is also why the [async-coach use case](/use-cases/coaches-async-review) is built around the PDF specifically. The report is the coach's pre-process. Without it, the coach scrubs video for 30 minutes per student. With it, the coach reads the summary in 2 minutes and goes straight to the time-coded shots that need attention. ## Walkthrough: one report, end-to-end You play a singles match Sunday morning. You upload at 11:42. The report arrives at 11:48. Here's what you do with it: ### Page 1: Summary You read this in 60 seconds. It tells you: - 124 shots total. 73 forehands, 38 backhands, 13 serves (you served 4 games). - Headline pattern: "Backhand placement clusters short and middle, depth dropped 18% versus last week's report." - Work on this: "Backhand preparation flagged in 41% of shots. Try shoulder-rotation drill: rally cross-court backhands, focus on shoulder loaded before the ball bounces on your side." ### Page 2: Heatmap You filter to backhands. The cluster confirms the summary, three quarters of your backhands landed in the middle third, not the back third. You filter to forehands. Cleaner pattern, deeper, cross-court-favoured. You filter to serves, then 1st serves only, wide on the deuce side is your money serve. 2nd serves are short and middle, which is the leak. ### Page 3: Stroke quality Backhand preparation: 62. Backhand contact: 71. Backhand follow-through: 79. The leak is in preparation. (Matches the summary, these pages don't contradict each other.) Forehand: all components in the 72-80 band. Serve: 1st serves are 75 average, 2nd serves drop to 64, same gap the heatmap showed. ### Page 4: Per-shot table You skim it. You spot two backhands marked low-confidence (stroke-quality score under 50). You click into the linked video at those timestamps. You watch them. You can see the early shoulder opening, same thing the model flagged. ### Page 5: Save and share You save the PDF to your Drive folder ("UNFORCE reports"). You email it to your coach with one sentence: *"backhand prep, same issue as last month, hasn't stuck. Can we drill it Tuesday?"* Total time: 8 minutes from upload to coach. Total time on actual review: 6 minutes. That's the loop. ## What it doesn't do Be clear: - **Not a coach.** The work-on-this items are generic. The PDF is a substrate; pair it with a coach for the trust layer. - **Not a stats database.** The per-shot table is in PDF, not CSV. Power users wanting raw data export should email us, we'll find a way today, native CSV export is on the roadmap. - **Not personalised to your goals.** The report is calibrated to a generic NTRP 3.0-4.5 player. If you have specific weight-on-court issues, an extreme grip, or a recovering injury, the report doesn't know, it shows you what the data shows. You bring the context. ## Pricing The PDF report is included in both complete free sessions and every paid plan; there is no “premium report.” Pro includes 20 analyses per month, up to 30 minutes per video, 30 days of session history, and private coach connections. Team expands the analysis and collaboration limits for a shared coaching room. Full pricing is at [/pricing](/pricing). --- **Ready to get your own report?** [Upload a session free](/) and UNFORCE will notify you when the PDF is ready. Or read [the methodology page](/accuracy) first to know what the numbers mean before you trust them. The report combines [shot detection](/features/shot-detection), [ball tracking](/features/ball-tracking), the [court heatmap](/features/court-heatmap), and [stroke quality](/features/stroke-quality). --- ### The Tennis Court Heatmap That Shows Where You Actually Play URL: https://unforce.io/features/court-heatmap Markdown twin: https://unforce.io/features/court-heatmap.md # The court heatmap that shows where you actually play In plain English: the UNFORCE heatmap is a picture of your tennis court with coloured dots showing where every one of your shots bounced during the match. Forehands cluster one way, backhands another, serves another. Look at the heatmap for two minutes and you'll know more about your patterns than your hitting partner has ever noticed about you. It's the single most underestimated feature in the report. This page is why. ## What it does, in one paragraph UNFORCE's pipeline detects the court (using keypoint detection on the visible court lines), tracks the ball ([TrackNet-based ball tracking](/features/ball-tracking)), classifies every shot ([shot detection](/features/shot-detection)), and computes the bounce point of each shot's trajectory. The bounce points are projected onto a top-down court diagram, that's the heatmap. You can filter by shot type, by player, by serve number (1st vs 2nd), or by point outcome (won vs lost). The full pipeline is at [/how-it-works](/how-it-works); this page is the heatmap-specific view. ## How accurate it is Honest answer: - **Bounce position:** within ~30-50 cm of the true bounce on a phone video shot from the recommended camera angle (behind the baseline, 1m+ height, court visible end-to-end). - **Court keypoint localization:** sub-pixel on a clean court. Errors come from worn lines, glare, or partial court visibility, see the failure modes section. - **Bounce-point projection (3D-to-2D):** the trajectory is reconstructed in 3D using the court scale, and the bounce point is where the z-coordinate crosses zero. The error stacks: ball-detection error + trajectory-fitting error + court-projection error. Net result is the 30-50 cm band above. For zone-level analysis, which is what amateur players actually need, this is more than enough resolution. Zones on a tennis court are typically 2-4 metres deep, so a 50 cm error doesn't change your zone classification. For line-call decisions, this is dramatically not enough resolution and we don't pretend otherwise. The full methodology is at [/accuracy](/accuracy). ## Where it fails Three failure modes you should know about: ### 1. Heavily worn or partially obscured court lines Court keypoint detection depends on visible lines. On clay courts that haven't been re-lined in weeks, on courts with heavy chalk-line wear, or on courts with partial leaf cover or shadow, the keypoints can drift. The heatmap then becomes accurate *relative to the detected court* but the detected court itself can be off by 30-80 cm. We flag these in the report, if you see a "low court-detection confidence" warning, treat the absolute zone labels with skepticism. Relative patterns (your forehand cluster vs your backhand cluster) are still useful. ### 2. Shots out of camera frame If your court isn't fully visible in the video, for example, your phone is mounted at an angle and the deuce sideline is just out of frame, bounces in that area won't be tracked. The heatmap will look like you never hit there, which is not the same as never having hit there. The fix is camera placement; the [filming guide](/how-to/film-your-tennis-match) covers it. ### 3. Net-cord let serves and unusual bounces If the ball clips the net cord and changes direction, or if a ball lands on a worn court divot and takes an unexpected bounce, the bounce point is computed where the trajectory model expected it, not where the ball actually went. This is rare but real, the report marks net-cord events when it can detect them, and you should treat the bounce as advisory in those cases. Smaller failure modes: doubles play (court size assumption breaks if the heatmap is calibrated for singles), and very-low-resolution video where the court lines aren't crisp enough for keypoint detection. ## Why this is the right framing for an amateur player Here's why the heatmap is the feature that *most* changes the way an NTRP 3.0-4.5 player thinks about their tennis: **Amateur players have a strong sense of their technique and a weak sense of their placement.** You know, or you think you know, what your forehand looks like. You can describe your follow-through. You've watched yourself in a mirror. What you cannot do, without external data, is tell where the ball *actually went*. You think you hit deep cross-court forehands. The heatmap, after one match, says: half of them landed in the middle third, and a quarter landed in the deuce service box. That's a 4-week project right there. You didn't need a coach to tell you. You needed the picture. The other reason heatmaps matter at this level: **they make patterns visible to the player that were already visible to the opponent**. Your hitting partner figured out by game three of last week's match that you go cross-court 80% of the time on your forehand return. They've been queuing up to that side ever since. You haven't noticed because you don't have a top-down view of your own play. The heatmap is that top-down view. This is why the heatmap is the feature we recommend most heavily for the [club-player use case](/use-cases/club-players). It's the highest-leverage single image in the entire report. ## Walkthrough: one match, what to look for You record a singles match against a regular hitting partner. The report comes back. Open the heatmap. Here's the order to read it in: ### 1. Filter to forehand only Look at the cluster. Where is the densest area? For a typical NTRP 3.5 right-hander, you'll see a heavy cluster in the deuce-side middle third, with a tail toward the cross-court corner. The question to ask: does the cluster match what you *think* your forehand pattern is? ### 2. Filter to backhand only Smaller cluster (because you hit fewer backhands). Often shifted toward the centre, most amateur backhands don't have the angle a good forehand does. The question to ask: are your backhands clustering anywhere near your forehands? If yes, your court geometry is collapsed and your opponent has no respect for one side over the other. ### 3. Filter to serves, then 1st serves only, then 2nd serves only Compare. The 1st-serve cluster should be near the lines (T, body, wide). The 2nd-serve cluster will be more conservative, but how much more? If your 2nd serves are 4 metres deep into the box and 3 metres from the centreline (i.e. floating sitters), the heatmap will show it as a tight cluster in the middle of the service box. That's a return-of-serve invitation. ### 4. Filter to "points won" vs "points lost" This is the unlock. Where do your *winning* shots land vs your *losing* shots? You'll often see a clear pattern, winners cluster deep cross-court, losses cluster mid-court middle. Now you have a target zone, not just a vibe. This is the workflow [club players](/use-cases/club-players) and [adult returners](/use-cases/adult-returners) get the most out of. Junior coaches use the heatmap differently, for them it's a between-lessons assignment ("look at last weekend's heatmap and bring me three observations"), described on [/use-cases/junior-coaches](/use-cases/junior-coaches). ## What it doesn't do Be clear: - **Not a line-call tool.** 30-50 cm error is great for zones, terrible for lines. Don't argue calls. - **Not a tactical analyzer.** The heatmap shows *where* shots landed, not *whether they were the right shot to hit*. Tactical reasoning is your coach's job. - **Not normalised for opponent strength.** A heatmap against a 2.5 hitter looks different from one against a 4.0 hitter. Don't compare matches across opponent levels, compare yourself across matches against similar opponents. ## Pricing The heatmap is included in both complete free sessions and every paid plan. There is no premium “high-resolution heatmap”; the model and accuracy are the same. Paid plans increase volume, video length, and collaboration limits. Every hosted session uses the same 30-day rolling retention window. Full pricing is at [/pricing](/pricing). --- **Ready to see your own heatmap?** [Upload a match free](/) and look at it before you read anything else. Or check [the methodology page](/accuracy) first if you want to know the error bands. The heatmap consumes [ball tracking](/features/ball-tracking) and [shot detection](/features/shot-detection), the three features together are the report's spatial layer. --- ### Tennis Shot Detection That Actually Keeps Up URL: https://unforce.io/features/shot-detection Markdown twin: https://unforce.io/features/shot-detection.md # Tennis shot detection that actually keeps up In plain English: shot detection is the part of UNFORCE that watches your video, finds every moment you hit the ball, and labels the shot, forehand, backhand, serve, volley, overhead. Every report you get out of UNFORCE is built on top of these labels. The court heatmap, the stroke-quality breakdown, the shot-mix counts, none of it exists without shot detection working underneath. It's the unglamorous foundation. This page is how it works, how accurate it is, and where it breaks. ## What it does, in one paragraph UNFORCE's pipeline finds the player using a person-detection model, runs MediaPipe pose to extract the skeleton, tracks the ball with a TrackNet-derived ball detector, and uses a CatBoost classifier to combine pose, ball trajectory, and timing into a per-shot label. For every shot in the match, you get: a timestamp, a shot-type label, the bounce point of the resulting ball trajectory, and the per-component pose score that feeds the [stroke-quality feature](/features/stroke-quality). The full pipeline is documented at [/how-it-works](/how-it-works); this page is specifically about the labelling step. ## How accurate it is Honest answer: it depends on the shot, the camera angle, and the player. In our internal benchmark against hand-annotated club-level matches at NTRP 3.0-4.5, recorded with a phone behind the baseline, court visible end-to-end, daylight or even floodlight, we see roughly: - **Forehand:** F1 in the low-90s. The dominant training class; the cleanest pose pattern. - **Backhand (one- and two-handed):** F1 high-80s. Confusion mostly with slice forehands at certain stance angles. - **Serve:** F1 mid-to-high 80s. Confused with overheads at angles where the camera doesn't see the toss clearly. - **Volley:** F1 mid-80s. Less training data; pose is more variable; sometimes labelled as a hard groundstroke at the baseline. - **Overhead:** F1 low-80s. Smallest class; gets pulled toward 'serve' by the model. These are not numbers we want to overclaim. The full methodology, how we annotate, how we benchmark, what splits we use, is on the [/accuracy](/accuracy) page. We publish the regression suite output. We are explicit about where the numbers come from. This is the bar SwingVision and competitors haven't met publicly, and it's the one we hold ourselves to. For comparison-page context: if you've seen forum complaints like ["Am I really serving 130mph"](https://www.reddit.com/r/10s/comments/xc2xc0/) or ["my hardest serve only 66 mph"](https://www.reddit.com/r/10s/comments/17c8ozf/) about competing apps, the underlying issue is exactly this, opaque accuracy on the shot-by-shot layer that everything else is built on. Our answer is to make the methodology auditable. See [/blog/how-ai-tennis-shot-detection-works](/blog/how-ai-tennis-shot-detection-works) for the long-form explainer. ## Where it fails Three failure modes you should know about: ### 1. Overhead vs serve confusion at low camera angles If your phone is mounted at hip-height instead of net-height, the toss for a serve and the contact for an overhead look similar in pose space. The model tends to call overheads serves, because the serve class has more training data. Mount the phone higher (3 feet / 1m or above) and this drops out. ### 2. Volleys at the baseline A hard half-volley at the baseline, taken on the rise, no real net approach, sometimes gets labelled as a forehand or backhand. The pose is genuinely ambiguous. The model is calibrated for net-volleys with the player inside the service line. ### 3. Player loss in doubles or fast-moving rally The pre-step before classification is finding the player. In doubles, when both players cross paths near the net, the model can briefly track the wrong person, meaning you'll get a "shot" labelled for the wrong player, or a missed shot. Singles is the supported path; doubles works in practice but is not benchmarked. Aim for singles for the most reliable counts. There are smaller failure modes, shadowy courts at sunset, heavily-compressed video shot in 480p, players in similar-coloured kits to the court surface, that can degrade the player-detection layer underneath classification. These aren't shot-detection bugs per se; they're upstream issues that propagate. If your video is in the failure modes covered on the [accuracy](/accuracy) page, the shot-detection numbers above don't apply to your specific upload. ## Why this is the right framing for an amateur player Here's where shot detection earns its keep for an NTRP 3.0-4.5 player: **you cannot self-coach without it**. Watch a match of yourself without per-shot labels and you'll come away with vibes. *I think I hit more forehands than backhands. I think my backhand was off. I think I served well.* Vibes lose tennis matches. Numbers tell you what you actually did. A typical first UNFORCE report for a club player surfaces: - **Shot mix is more imbalanced than you thought.** 3:1 forehand-to-backhand is common. The opponent figured this out by game three; you figured it out from the report. - **Your "weak side" is fine; your "strong side" is the leak.** Most players assume their backhand is the problem. The report often shows the forehand placement is what's actually losing points. - **Your serve isn't your serve.** First serves and second serves get separated in the report, most players have a wider gap than they realised. None of this is visible without shot detection running first. The heatmap, the stroke-quality score, the work-on-this items, all of them are built on the per-shot labels. Get the labels right and the rest of the report is trustworthy. Get the labels wrong and the report is junk. This is also why we write so much about it: the [ball tracking](/features/ball-tracking), [court heatmap](/features/court-heatmap), and [stroke quality](/features/stroke-quality) features all consume shot-detection output. They're downstream of the same labels. ## Walkthrough: one rally, end-to-end You hit a cross-court forehand. Here's what happens: 1. **Frame-level person detection** finds you in the video and bounds you. 2. **MediaPipe pose** extracts your skeleton, wrists, elbows, shoulders, hips. 3. **TrackNet ball detection** is running every frame; just before your contact, it has the ball trajectory. 4. **The contact event** is detected by a combination of ball-trajectory inflection and your wrist-position dynamics. 5. **The CatBoost classifier** takes the pose features at contact, the ball-trajectory direction in and out, and the timing relative to the previous shot, and outputs a label distribution: 87% forehand, 10% slice forehand, 3% volley. 6. **The label "forehand" goes into the report** with its timestamp, its bounce point (next time the ball touches the court, that's the heatmap input), and its pose-quality breakdown (preparation, contact, follow-through, that's the stroke-quality input). That whole sequence happens in milliseconds of compute time per shot, on a serverless GPU. By the time you've made dinner, the entire match has been processed shot-by-shot. ## What it doesn't do Be clear-eyed: shot detection isn't a coach. It tells you *what* you hit and *roughly how well*. It doesn't tell you what you should have hit instead, that's a coach's job, an opponent-aware tactical decision the model doesn't have visibility into. The work-on-this items in the report are based on outcome patterns (where the ball landed, how the technique scored), not on tactical match-context. Treat shot detection as the foundation of the data; treat coaching as a separate skill the report supports but doesn't replace. ## Pricing Shot detection is included in both complete free sessions and every paid plan. There is no premium “more accurate detection”; every plan runs the same model. Paid plans increase volume, video length, and collaboration limits. Every hosted session uses the same 30-day rolling retention window. Full pricing is at [/pricing](/pricing). --- **Ready to see it on your own video?** [Upload a match free](/) and look at the per-shot table in the report. Or read [the methodology page](/accuracy) first if you want to know the benchmark numbers before you trust them. The labels are only as good as the upstream pipeline, see [ball tracking](/features/ball-tracking) and the [court heatmap](/features/court-heatmap) for the other halves of the puzzle. --- ### Tennis Stroke Quality Scores: Beyond Stats, Into Technique URL: https://unforce.io/features/stroke-quality Markdown twin: https://unforce.io/features/stroke-quality.md # Stroke quality scores: beyond stats, into technique In plain English: stroke quality is the part of UNFORCE that scores how close your *form* is to a broad pro-level technical baseline, for every shot in your match. Not "did the ball land in", not "how fast was it", but how the *swing itself* looked, broken into preparation, contact, and follow-through. It's the technique layer of the report. And it's the most underused feature in tennis AI. This page is what stroke quality does, why nobody else markets it well, and how to use it without overinterpreting it. ## What it does, in one paragraph For every shot detected by [shot detection](/features/shot-detection), UNFORCE runs MediaPipe pose extraction across the relevant frames (typically 8-15 frames spanning preparation, contact, and follow-through). It then computes a set of geometric features, joint angles, segment timings, kinetic-chain ordering, contact-point position relative to the body, and scores each feature against a reference distribution drawn from professionally-annotated ATP/WTA footage. The result is a 0-100 score per component, plus an aggregate per shot, plus a per-match summary that flags the components where your scores cluster low. The full pipeline is at [/how-it-works](/how-it-works); this page is the technique-scoring layer. ## How accurate it is Two layers of accuracy to discuss separately: ### Pose extraction (the input layer) MediaPipe pose, running on phone-quality 1080p video at 30 fps, gives joint positions accurate to a few pixels per frame. That's well within what we need for the geometric features above, joint *angles* are derived, and small position errors average out. ### Component scores (the output layer) The component scores have meaningfully higher variance than the pose extraction itself. A single shot's score might be ±10 points around the "true" value of your form on that shot, because the model is aggregating across a small number of frames and there's genuine biological variation between consecutive shots. The per-match average is the number to trust. Across 50+ shots, the per-component averages stabilise, and that's the number that goes in the report's headline. For benchmark numbers, see [/accuracy](/accuracy). We test against hand-rated ground truth from coaches across NTRP 3.0-4.5, and report the agreement rates publicly. No competitor publishes equivalent benchmarks for stroke quality scoring, this is one of the [Talk Tennis "best stroke analysis app"](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/) demands the field hasn't met. ## Where it fails Three failure modes you should know about: ### 1. Non-canonical technical styles The model is calibrated against a broad pro baseline, but "broad" is not "everyone." If you have a deliberately extreme grip, an unusual stance, or a one-handed backhand with non-classical preparation, the model will mark you down. **This isn't necessarily wrong** (your style might genuinely depart from optimal mechanics) and it isn't necessarily right (you and your coach may have chosen this for principled reasons). Read the component breakdown, decide what's a deliberate choice, override accordingly. The score is a *prompt for analysis*, not a verdict. ### 2. Heavy occlusion of the player If the player is partially blocked (by a fence post, a crossing player in doubles, or extreme camera angles where the body is foreshortened), the pose extraction degrades. We flag low-confidence frames and downweight those shots in the aggregate, but a video where the player is consistently occluded will produce noisier scores than one where they're cleanly visible. ### 3. Very short rallies and limited shot count Per-shot scores are noisy; per-match averages stabilise around 50+ shots. A practice session with 30 shots in 15 minutes will produce a less reliable per-component summary than a full match with 200+ shots. The report annotates this, if your sample is too small, the headline number comes with a low-confidence flag. Smaller issues: very tall or very short players (the model's body-segment proportions assume average adult human proportions and are slightly off for outliers), and players in unusual kit (long flowing skirts, heavy jackets) where MediaPipe segmentation has more trouble. ## Why this is the right framing for an amateur player: the underused angle Here's the thing about stroke-quality for an NTRP 3.0-4.5 player: **everybody else in tennis AI is selling you stats**. Most competitor apps ship with serve speed (which players don't trust, see the [r/10s "is this MPH accurate" thread](https://www.reddit.com/r/10s/comments/17c8ozf/)), shot counts (vibes-feeling stats that don't tell you what to do), and rally length (interesting once, useless ten times). The [Talk Tennis "best stroke analysis app" thread](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/) shows what amateur players actually want: someone to tell them, in concrete terms, what their *technique* looks like. That demand is real and largely unserved. The reason is honest: pose-based technique scoring is hard to do well. It requires a working pose model (we use MediaPipe), a reference distribution of pro form (we built one from annotated footage), and a way to convert the pose features into actionable component scores (the bit that takes a lot of model-tuning work). Most apps skipped it. We didn't, because for the personas we care about, [club players](/use-cases/club-players), [adult returners](/use-cases/adult-returners), [junior coaches](/use-cases/junior-coaches), technique feedback is the bottleneck, not stats. A 3.5 player with consistent placement (the [heatmap](/features/court-heatmap) feature) and trustworthy contact mechanics improves faster than one with stats they don't trust. The deeper version of this argument is at [/blog/how-ai-tennis-shot-detection-works](/blog/how-ai-tennis-shot-detection-works), and the reputability concern is at [Talk Tennis "reputable online stroke analysis"](https://tt.tennis-warehouse.com/index.php?threads/reputable-online-stroke-analysis.610095/), coaches reviewing video manually for $30-$100 a clip is the human version of this market. UNFORCE doesn't replace those coaches; it gives them and their students the per-shot data layer underneath. ## Walkthrough: one forehand, end-to-end You hit a cross-court forehand. Here's what stroke quality is doing: 1. **Frames -10 to -5 (preparation):** MediaPipe pose extracts your skeleton. The model measures: shoulder rotation angle (loaded vs flat), racket-arm position (above/below shoulder, in front of/behind body), non-dominant arm position, hip rotation onset. 2. **Frames -5 to 0 (contact):** It measures contact-point height (relative to your shoulder), contact-point distance from body (in front/even/behind), wrist angle at contact, hip-to-shoulder rotation phase. 3. **Frames 0 to +8 (follow-through):** It measures follow-through arc, finishing-position of the dominant arm (over the shoulder, by the side, half-way), and balance recovery. 4. **Component scores:** Each phase produces a score against the pro reference distribution. Preparation: 72. Contact: 68. Follow-through: 81. 5. **Aggregate score:** 74. Mediocre by pro standards, totally normal at NTRP 3.5, and the *contact* component is where the leak is, your contact point is consistently behind the front foot, which the model picks up across most of the match's forehands. 6. **Coaching translation:** The report's "work on this" section turns the contact-component finding into a sentence: *"Forehand contact point is consistently behind your front foot, try the take-the-ball-on-the-rise drill."* Where it gets useful is across many shots. One forehand at 74 means little. 50 forehands averaging 74, with contact at 68 across all of them, that's a pattern, and that's actionable. ## What it doesn't do Be clear: - **Not a coach.** The score tells you what the form looks like; a coach tells you what to do about it. The "work on this" sentence is generic. Pair the score with a coach (in person or [async](/use-cases/coaches-async-review)) for the highest-value loop. - **Not personalised to your peak form.** It compares against a pro baseline, not against your own historical best. We're working on a personalised "vs your previous self" view; today, the absolute score is the one you get. - **Not a verdict on whether you can play tennis.** A 60 forehand can win a 4.0 match against a 75 forehand if the rest of your game is better. Tennis is more than form. The score is one input. ## Pricing Stroke quality is included in both complete free sessions and every paid plan. Paid plans increase volume, video length, and collaboration limits rather than changing the model. Every hosted session uses the same 30-day rolling retention window. Full pricing is at [/pricing](/pricing). --- **Ready to see your own form scored?** [Upload a match free](/) and look at the per-component breakdown for your weakest shot type, that's where the leverage is. Or read [how the pipeline works](/how-it-works) before you trust the numbers. Stroke quality consumes [shot detection](/features/shot-detection) and produces input for the [coaching report](/features/coaching-report), they're the technique side of the report. --- ### About the Founder URL: https://unforce.io/founder Markdown twin: https://unforce.io/founder.md

Akshay Sarode

Gothenburg, Sweden

Creative Technologist & Roboticist

Mechanical engineer turned roboticist based in Sweden. He builds computer vision systems, embedded solutions, and interactive software that connects physical motion with intelligent tracking.

Akshay built the first version of UNFORCE in 2024-2025 after spending too many evenings filming his own tennis matches on a phone propped against a backpack and getting nothing useful out of the footage. The project merged his technical expertise in tracking physical movement with his love for tennis.

His founding observation was simple: amateur tennis players pay significant fees for coaching they only receive once or twice a week, and have no feedback loop during independent play. Chaining open-source tracking models like TrackNet for ball detection, MediaPipe for pose tracking, and CatBoost for temporal hit classification, he engineered a platform that turns standard phone footage into per-shot analysis, with the accuracy of each component measured and published on the [accuracy page](/accuracy) rather than described with adjectives.

## Current Focus Akshay is focusing full-time on expanding the computer vision capabilities of UNFORCE. This includes adding junior court layouts, public benchmark datasets, and deeper player-biomechanics analysis to make measured movement tracking accessible directly from standard match footage. ## Core Expertise
Robotics
Computer Vision
XR / VR / AR
Embedded Systems
IoT
Three.js
Unity
--- ### Where the phone goes URL: https://unforce.io/help Markdown twin: https://unforce.io/help.md Behind the baseline, centred, about head height or a little above. The whole court in frame, including the far baseline - that line is the one we measure everything against. Wedge the phone against a fence post or use a clamp; a friend's hands are the most common reason a session fails. > Table tennis is the exception - film side-on, level with the table, two to three metres back. From the end you lose the bounce. The camera screen shows the court guide live. When all four corners go green and the badge says `LINES LOCKED`, you are set. If the corners go clay, the guide tells you which way to move before you waste a recording. ## Filming - Where the phone goes - Why the whole court matters - Doubles framing - 60fps and what it changes ## Reading a debrief - What Clean Score counts - Why a metric says “not measurable” - “Nothing stood out” sessions **Next:** [Film a session](/get) · [Read a real debrief](/sample-report) --- ### How UNFORCE works URL: https://unforce.io/how-it-works Markdown twin: https://unforce.io/how-it-works.md ## 01 · Film it One phone, behind the baseline. Table tennis is the side-on exception. ## 02 · Walk away We tell you when it will be ready. ## Where the job actually runs 1. `requestUploadPath` creates `jobs/{jobId}` with `status = pending` and grants a user-scoped upload under `videos/{uid}/{sessionId}/…`. 2. Finalizing that object fires `processVideoOnUpload` in Firebase `europe-west1`. After validation, the job moves through `uploaded` to `processing` and the function enqueues the `dispatchGpuJob` Cloud Task. 3. The task remints a short-lived download URL. Production policy selects only the Lambda adapter, which writes a queued record to Firestore `gpuQueue/{queueId}`. 4. The live `unforce-gpu-worker` control plane scales and recovers the pool; self-hosted workers currently run in Lambda Cloud regions `us-east-1`, `us-south-2`, and `us-southeast-1`. A worker claims the queue record and the `unforce-gpu-backend` pipeline processes the video. 5. The worker uploads the canonical output under `results/{uid}/{sessionId}/…`. Firebase `onResultUploaded` treats that upload as the completion authority and sets `jobs/{jobId}.status = done`. There is also an active parallel analysis path. When the job becomes `processing`, `analyzeVideoOnProcessing` submits the full uploaded video by `gs://` reference to Gemini on Google Vertex AI's `global` endpoint and writes a separate report to `jobs.videoAnalysis`. It does not block, fail, or advance the canonical GPU job status. RunPod is not fallback or standby capacity. Its historic adapter remains disabled and receives no production traffic. See the [privacy policy](/privacy.html) for the current processor and transfer disclosure. ## 03 · Read one sentence Then the clips, then everything. Exactly one fix reaches a ready debrief. Zero is legal: some sessions are clean. ## 04 · Send it to your coach Free for them to read. ## Every claim is traceable Every number traces to a frame of your footage. When something cannot be measured - spin on a phone, landings with a cropped court - it is named, with the reason. No predicted ratings. No estimated anything. “Went middle 9 times” opens 9 moments of footage. Accurate to one frame. Argue with the video, not with us. ## Some sessions are clean “Nothing stood out” is an answer we actually give. A product that finds a flaw every week is inventing them. Improvement is only claimed once it survives a second session. “It held” is the best thing we will ever say to you. **Next:** [Where the phone goes](/help) · [Read a real debrief](/sample-report) · [Film a session](/get) --- ### How to Film Your Tennis Match for AI Analysis (2026 Guide) URL: https://unforce.io/how-to/film-your-tennis-match Markdown twin: https://unforce.io/how-to/film-your-tennis-match.md # How to Film Your Tennis Match for AI Analysis If your video is bad, no AI tool can save it. I learned this the hard way the first time I tried to analyse my own forehand: my phone was on the bench five feet inside the fence at hip height, half the court was off-screen, and the ball was a single grey pixel. The pipeline produced exactly what you'd expect, nothing useful. This is the page I wish I'd had then. It's the guide we send to UNFORCE beta players in their welcome email, and it works for any AI tennis app, not just ours. Get the recording right and the analysis takes care of itself. The recording target is simple: produce footage good enough for a useful [post-match sample report](/sample-report), not a cinematic highlight reel. ## TL;DR: the 90-second checklist 1. **Phone in landscape.** Lock orientation before you press record. 2. **1080p at 60fps.** Anything higher is wasted; anything lower hurts ball tracking. 3. **Height: 5 ft minimum, 8-10 ft ideal.** Above the net cord, looking slightly down. 4. **Position: directly behind one baseline**, centred on the court's lengthwise axis. 5. **Frame the whole court**, both baselines, both sidelines, both service lines visible. 6. **Mount it.** Fence clip, sturdy tripod, or court-side ladder rung. Hand-held doesn't work. 7. **Wi-Fi before upload.** A 30-minute 1080p clip is roughly 3-4 GB. If you only do those seven things, UNFORCE's pipeline will pick up >95% of shots in normal conditions. The rest of this guide is the *why* behind each one, plus the edge cases, clay, indoor, public-park courts with no fence. ## Why phone position matters more than phone quality The biggest myth in AI tennis filming is that you need an expensive camera. You don't. A 2021 Pixel and a £15 fence clip will out-perform a £400 GoPro shot from the wrong angle every single time. Here's why. Every AI tennis app, UNFORCE, SwingVision, PB Vision, runs roughly the same first three steps: 1. **Detect the court** (the four sidelines and two baselines, plus the centre service line). 2. **Detect the ball** as it moves frame to frame. 3. **Detect the players** as 2D bounding boxes plus a pose skeleton. All three of those steps assume a *consistent, broadly top-down-ish view of the entire court*. If your camera is at hip height behind the fence, the court compresses into a flat line, the back baseline is occluded by the player's torso, and the ball passes in front of and behind body landmarks that should be on the same plane. Court detection misfires. Ball tracking has nothing to anchor against. Pose features go haywire. Your "AI report" comes back with 40% of the shots and a heatmap that looks like static. Get the camera **above the net** and **looking slightly down**, and every one of those steps suddenly works. The product feels twice as smart for the price of a £15 mount. ## The seven settings, one by one ### 1. Landscape orientation Always. Lock it before you start. Portrait is the single most common mistake we see in submitted videos, players film a phone-call-shaped clip, the sidelines disappear, and the court detector can't find the corners. Both iOS and Android camera apps have an orientation lock. On iOS, swipe down from the top-right and tap the orientation lock toggle. On Android, the lock is usually in the camera app's quick settings. ### 2. Resolution and frame rate: 1080p / 60fps This is where amateur filmers over-think it. Don't shoot 4K. Don't shoot 8K. 1080p at 60fps is the sweet spot for tennis AI for three concrete reasons: - **Ball tracking** improves with frame rate, not resolution. At 30fps a fast serve travels ~2 metres between frames; the tracker has to interpolate, and on tight angles it loses the ball at the bounce. 60fps roughly halves the gap. 120fps helps marginally for serves but doubles the file size. - **Shot classification** uses pose features at the moment of contact. 1080p resolves the racquet head, the wrist, and the shoulder cleanly; 4K adds nothing the model can use. - **Upload time and storage**. A 30-minute 4K clip is 12-20 GB. Most beta players give up before it finishes uploading. 1080p/60 is 3-4 GB and uploads over a normal home Wi-Fi in under five minutes. If your phone can't do 60fps at 1080p, default to 30fps at 1080p. We'd rather have lower frame rate than lower resolution, a 30fps 1080p clip still produces a good [shot detection](/features/shot-detection) report. ### 3. Height: 5 ft minimum, 8-10 ft ideal This is the single biggest lever. Every foot of height you add above the net cord meaningfully improves court detection and ball-bounce localisation. - **5 ft (1.5 m):** the floor. Roughly eye-level. Court keypoints work, but the back baseline is partly occluded by the near player. - **6-8 ft (1.8-2.4 m):** the sweet spot. Above the net, players don't occlude each other from the camera's perspective, and bounces near the back baseline are visible. - **8-10 ft (2.4-3 m):** ideal. This is roughly the angle SwingVision recommends, and what most facility cameras use. Any higher and you start losing pose detail on the far player. Inside a typical tennis-fence enclosure, the fence is usually 10-12 ft tall, so a clip-on phone mount on the top rail puts you exactly in the sweet spot. This is why fence-mount filming is the most-shared advice on tennis forums, a [Quora question titled *"What would be a good camera to use, that I could just hook to a fence"*](https://www.quora.com/I-want-to-film-my-full-tennis-matches-What-would-be-a-good-camera-to-use-that-I-could-just-hook-to-a-fence-cheaper-the-better) gets it right by accident: clipping to the fence solves both height and stability. ### 4. Position: behind the baseline, centred Stand on the court, walk to the centre mark of one baseline, walk straight back another 6-10 feet, and place the camera there. That's it. Why centred and not corner-mounted? Two reasons: - **Court keypoint detection** assumes left/right symmetry. Off-axis cameras still work, but the model has to undo the perspective skew, and that introduces small errors in where each line is drawn, which compounds in the bounce-localisation step. - **Player pose tracking** is more accurate for the near player than the far player; centring keeps both players roughly equidistant. If the court has no convenient fence behind one baseline (rare but happens, see below), the next-best option is to mount the camera on the side fence at the *centre line*, looking across the court. This is what most TV broadcasts use. UNFORCE handles this view correctly, but you'll lose some serve-direction detail. ### 5. Framing: the whole court You should see, in the recorded frame: - Both baselines (back and near) - Both singles sidelines - Both service lines and the centre service line - The net cord across the middle If any one of those is cut off, the court detector will flag it and the report will warn you. Walk further back if needed. It's better to have empty space above the back baseline than to crop the back baseline out. ### 6. Mounting options There are basically three: **Fence clip mount.** A spring-loaded clamp with a phone holder on top, costs £12-25 on Amazon. Search "phone fence clamp" or "Magnus tennis mount." This is what 80% of our beta players use. Works on any standard tennis-court fence, takes 30 seconds to attach, and puts you at the right height automatically. **Tripod.** Use a 6-7 ft tripod with a phone adaptor. £40-80 for one that won't blow over. This is the default for [solo serve practice](/how-to/record-your-serve) where there's no fence to clip to. Weight the base, a sandbag, water bottle, or backpack hung from the centre post works. **Improvised.** Top of a coaching basket, top of a folded ladder, court-side bench. Acceptable for one-off filming if it's high enough and stable. Anything below 5 ft, don't bother. The forum thread *"What equipment do I need to film my tennis matches"* on [Talk Tennis](https://tt.tennis-warehouse.com/index.php?threads/what-equipment-do-i-need-to-film-my-tennis-matches.610151/) covers basically the same ground from the player perspective. The conclusion in the thread matches ours: phone + fence clip is the cheapest setup that produces analysable footage. ### 7. Wi-Fi before upload A 30-minute 1080p/60 video is roughly 3-4 GB. Uploading that over 4G is slow, expensive on metered data, and tends to fail halfway. We strongly recommend uploading from home Wi-Fi after your session. The UNFORCE app caches the video locally and resumes interrupted uploads automatically, but you'll get the report faster on Wi-Fi. ## Edge cases ### "My court has no fence" (public parks, hard-court community courts) Public-park and municipal courts often don't have a perimeter fence at one or both ends. You have three options: 1. **Bring a 6-7 ft tripod.** This is the cleanest solution. Place it 6-10 feet behind the baseline, weight it, and you're done. 2. **Use the side fence.** If there's a fence on the long side of the court, mount centrally and accept the side-on view. UNFORCE handles this; SwingVision tends to also. 3. **A friend, or a court-side bench at sufficient height.** Less reliable but workable for one session. What does *not* work: phone on the ground, phone leaning against a water bottle, phone on a 3 ft mini-tripod. The angle is wrong and you'll get a barely-usable report. ### Clay courts Clay courts are harder for AI tennis tools because the colour contrast between ball, court, and dust kicked up after bounces is much lower than on hard courts. The ball briefly disappears into the dust on each bounce, and TrackNet has to interpolate through a few frames of low-confidence detections. UNFORCE handles standard EU red clay at acceptable accuracy in our current build; we publish honest numbers on the [accuracy methodology page](/accuracy). Two filming tips that help: - Film at the highest frame rate your phone supports (60fps minimum, 120fps if available). More frames = the dust cloud occludes fewer of them. - Avoid filming directly into the sun's path on clay, where the dust catches light and washes out the ball further. ### Indoor courts and floodlights Indoor courts vary wildly. Bright, high-CRI lighting (most modern indoor tennis halls) works fine. Older halls with mixed metal-halide and fluorescent lighting flicker at 50/60Hz, which can show up on phone cameras as banding, and that banding can confuse ball detection on fast shots. Mitigations: - Set your phone's shutter speed manually if it supports it (1/120s for 60Hz mains, 1/100s for 50Hz). Most native camera apps don't expose this; apps like FiLMiC Pro or Open Camera (Android) do. - Increase ISO so the image is bright but not blown out; the AI tolerates a slightly noisier image far better than a dimly lit one. ### Doubles Doubles is harder than singles for any AI tennis tool because there are four players to track, and at the net both teams' players occlude each other on volleys. UNFORCE's doubles support is [in beta](/changelog), the singles pipeline runs and produces a usable report, but per-player attribution can drift on net exchanges. We're explicit about this on the [accuracy page](/accuracy). For doubles filming, the camera position rules above are unchanged, height matters more, not less. ## What to do once you've filmed 1. **Open the UNFORCE app**, sign in, tap *New Session*. 2. **Pick the video** from your camera roll. The app will validate it (orientation, resolution, length) and warn you if anything's off. 3. **Tag the session.** Singles or doubles, court type (hard / clay / indoor), your side. Helps the model with priors and makes your dashboard searchable. 4. **Upload over Wi-Fi.** Most 30-minute matches finish processing in 3-7 minutes on Pro. 5. **Read the report.** Shot mix, stroke quality scores per stroke type, court heatmap, and the per-shot timeline. Then either fix one thing in your next session, or [share it with your coach](/how-to/share-report-with-coach). ## Common mistakes (from 50 beta players) - **Too low.** Below 5 ft = bad results. Don't film from a court-side bench. - **Too close.** If the camera is on the back fence two feet behind the baseline, the perspective is too steep. Stand back 6-10 ft. - **Sun behind the camera.** Don't shoot into the sun. Wait an hour or switch ends. - **Auto-focus hunting.** Tap to focus on the court before you press record, then lock the focus (long-press on most phones). - **Stopping mid-rally.** Don't pause. Let the recording run end-to-end. The pipeline handles change-overs and breaks fine. Once you've got a good first recording, you'll never go back. The five-minute setup is the difference between a report that gives you one specific thing to fix and a heatmap of static. Try it on your next match, and if you want the AI side handled, [start free with UNFORCE](/pricing). --- **See also:** [How to record your serve solo](/how-to/record-your-serve) · [How to share your report with your coach](/how-to/share-report-with-coach) · [How UNFORCE's shot detection works](/features/shot-detection) · [Pricing](/pricing) · [Accuracy methodology](/accuracy) --- ### How to Record Your Tennis Serve Solo (No Helper Needed) URL: https://unforce.io/how-to/record-your-serve Markdown twin: https://unforce.io/how-to/record-your-serve.md # How to Record Your Tennis Serve Solo Solo serve practice is the highest-leverage thing an amateur tennis player can do, and recording it doubles the leverage. You hit a basket of balls, you film it, you watch the report, you find the one thing that's leaking power or accuracy, and you fix it next session. That's it, that's the whole loop. But people stall on step one: where the hell does the camera go when you're alone on the court? This guide answers that, plus the small mechanical things that make the difference between footage that's useful for AI analysis and footage that isn't. ## The 60-second setup 1. **Tripod 6-10 ft behind your baseline**, slightly off-centre toward the deuce side. 2. **Phone in landscape**, locked orientation. 3. **1080p at 60fps minimum** (120fps if your phone supports it for serves specifically). 4. **Height 5-7 ft.** Above your shoulder at contact, not below it. 5. **Frame your whole serving motion + the service box on the far side.** 6. **Lock focus on the baseline before you press record.** 7. **Hit 20-40 serves**, then upload to UNFORCE. That's the whole thing. The rest of this guide is the *why* and the edge cases. ## Why solo recording is harder than match recording When you film a match, both players are in roughly the same plane (give or take 24 metres of court depth) and the camera can sit centred behind one baseline at fence-clip height. Easy. Serves are different. Three things change: 1. **You're stationary.** The whole motion happens in a 2-metre cube around the baseline T-zone. The camera needs to capture that cube *and* the ball flying away from it. 2. **The contact point is high.** Your racquet at full extension is somewhere between 2.5 and 3 metres above the court. Low cameras lose it against the sky or the lights. 3. **The ball moves fast and away from the camera.** If the camera is too close, the ball is in frame for ~3 frames before it leaves; if the camera is too far, the ball is too small at contact. The fix for all three is the same: **camera 6-10 ft behind the baseline, 5-7 ft high, framed wide enough that the service box on the far side is just visible at the bottom of the frame.** Quora's *"What would be the best way to record myself while I practice my tennis serve?" thread* thread has the same answer, written from the human-coach perspective: tripod behind the baseline, slightly off-centre, above shoulder height. The AI version has the same constraints because the AI is trying to do roughly what a coach's eye is trying to do, get a clean view of toss, trunk rotation, contact, and ball flight. ## The exact tripod position Imagine you're standing on the deuce-side of the centre mark, ready to serve. The camera goes: - **Behind you** (between 6 and 10 feet, closer to 6 if your tripod is short, closer to 10 if it's tall). - **Slightly to your left** (if you're a right-handed server) by about 2-3 feet from the centre line. This gives the camera a "side-rear" angle that captures your tossing arm, your trunk rotation, and the racquet path on the upward swing all in the same frame. A pure dead-behind-you angle hides the toss behind your body. - **At a height of 5-7 feet.** Above shoulder at contact. If you have a 5 ft tripod, extend it fully. If you have a 7 ft tripod, you have room to play with. If you're a left-handed server, mirror the off-centre position to your right. This is the same angle that produces useful match-play footage too, see the [main filming guide](/how-to/film-your-tennis-match), but for serves the off-centre angle matters more. ## Frame rate: 60fps is the floor for serves, 120fps is nice A first-serve trajectory at 90 mph (~145 km/h) covers roughly 6.5 cm per millisecond. At 30fps, the ball moves about 2.2 metres between frames. That's enough that the ball-tracking model has to interpolate through three or four "guesses" between confident detections, and on serves specifically that hurts the contact-point localisation step that stroke-quality scoring depends on. At 60fps the gap halves to ~1.1 m, fine. At 120fps it's ~55 cm, which is where the tracker is fully comfortable. If your phone supports 120fps at 1080p (most modern iPhones and Pixels do), use it for serve sessions. For full match filming, stick with 60fps to keep file sizes reasonable. ## What UNFORCE actually scores on a serve It's worth knowing what the AI is looking at, because it determines what you can fix next session. The pipeline extracts, per serve: - **Toss height and trajectory.** Estimated from ball detection during the toss phase. - **Contact point.** Where in space the racquet meets the ball, 2D in the frame, 3D-estimated using court geometry. - **Trunk rotation arc.** From MediaPipe pose features; the angle your hips and shoulders rotate through, and whether they uncoil in the right sequence. - **Racquet head speed at contact.** Estimated from wrist-and-racquet pose features in the 4-6 frames around contact. - **Ball speed.** Estimated from the trajectory before the bounce. - **Placement.** Where it lands relative to the service box (T, body, wide). The output ([sample on the examples page](/examples)) is a stroke-quality score per serve plus a per-component breakdown, toss consistency, trunk rotation efficiency, contact-point variance, racquet acceleration. Most amateur players see the same one or two patterns repeat across 20+ serves; that's the thing to fix. ## The "ball machine" mode If you're really trying to drill, say 50+ serves on the same target, film the first 30 and then turn the recording off. You don't gain useful signal from filming serves 31-100; the model learns the same pattern from the first 30, and the report becomes harder to scan. Worse, late-set fatigue creeps in and the model finds technique drift that's noise from being tired, not your real motion. ## Indoor practice walls Some clubs have an indoor serve wall with target lines painted on. UNFORCE can handle this *if* the camera also captures part of the actual court markings (centre line, service line, baseline), the court detector needs at least three keypoints to triangulate. Pure-wall footage with no court reference will get a partial report (stroke quality works, placement and speed don't). If your wall has no court markings visible from your filming angle, the workflow we recommend is: film a 5-minute warmup on the actual court, then film the wall session. The first clip gives the report a court reference; the second clip gives you the volume of serves to analyse. ## Common mistakes **Phone behind the baseline at hip height.** Too low. Contact point goes off-screen and pose features fail at the apex of the motion. **Phone on a fence clip at the side of the court.** Works for matches, doesn't work for solo serves, you can't see the ball flight after contact and you lose half the trunk rotation. **Filming only the toss, then the bounce.** Skipping the contact point destroys stroke-quality scoring. The model needs the full motion. **60+ serves in one clip.** Not harmful but diminishing returns. Split into baskets of 20-30. **Auto-exposure.** Outdoor sessions with the sun moving cause the camera to constantly re-expose; this can briefly white out the ball at contact. Lock exposure on a tap-to-meter point on the court before you press record. ## What to do with the report The point of solo serve filming isn't to admire the analysis. It's to find one mechanical change to try in the next session. The report is most useful if you: 1. **Read the *consistency* metrics first.** Toss-height variance, contact-point variance. These tell you where the noise in your motion is. 2. **Then read the *quality* score breakdown.** Trunk rotation, racquet acceleration, contact angle. The lowest-scoring component is your highest-leverage fix. 3. **Pick exactly one thing.** Don't try to fix three things at once. Hit another basket the next day with that one cue. 4. **Compare reports week to week.** UNFORCE's session timeline shows component scores trending over time, which is the real value of the loop. If you have a coach, the report is also the easiest thing in the world to share, see the [coach handoff workflow](/how-to/share-report-with-coach). One PDF link, no playback platform required. --- **See also:** [How to film your tennis match](/how-to/film-your-tennis-match) · [How to share your report with your coach](/how-to/share-report-with-coach) · [Stroke-quality scoring](/features/stroke-quality) · [UNFORCE pricing](/pricing) --- ### How to Share Your UNFORCE Report with Your Coach URL: https://unforce.io/how-to/share-report-with-coach Markdown twin: https://unforce.io/how-to/share-report-with-coach.md # How to Share Your UNFORCE Report with Your Coach The single most-asked question on tennis-coaching forums is some variant of: *"how do I get my coach to actually look at my video?"* The Talk Tennis thread *["Coaches/Parents, match tracking & statistics app?"](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/)* is full of well-meaning parents who recorded matches, sent the raw video to the coach, and got nothing back, because the raw video is a 30-minute file the coach has to scrub through to find anything useful, and most coaches are running back-to-back lessons all day. The fix isn't more video. It's *less video*, replaced with a one-page report the coach can read in 90 seconds between students, with the option to dive deeper if a specific thing catches their eye. That's what UNFORCE's coach-share workflow is built for. Here's how to use it. ## The 30-second workflow 1. After your match analyses, open the report in the UNFORCE app. 2. Tap **Export PDF**, then download the finished report. 3. Open your phone's share sheet. 4. Send the PDF file by WhatsApp, iMessage, email, AirDrop, or wherever you usually message your coach. 5. Your coach opens the file with no UNFORCE login. That's it. No platform to install and no account to create on the coach's side. The PDF is a normal file: it does not expire, and UNFORCE cannot revoke a copy after the recipient downloads it. Share it as deliberately as any other personal document. ## What to actually share The default report has six sections: 1. **Match summary**, score, duration, shot count, errors. 2. **Shot mix**, forehand / backhand / serve / volley breakdown with strengths and weaknesses called out. 3. **Court heatmap**, where you played from, where you bounced the ball, where rallies ended. 4. **Stroke-quality scoring**, per stroke type, with the lowest-scoring component highlighted. 5. **Per-shot timeline**, every shot with the timestamp needed to locate the moment in your footage. 6. **Top three things to work on**, the AI's auto-summary; honestly, this section is the one most coaches read first. For most fortnightly check-ins, shipping the whole report is fine. For first-time sharing with a new coach, **clip it down to sections 4 and 6**: stroke-quality scores plus the "top three things." That's the smallest signal that gives the coach something useful to react to without forcing them to absorb the whole context. ## Don't ship the raw video Resist the urge. Coaches don't have time to scrub through a 30-minute video; that's the whole reason async coaching has been broken for years. The report is the abstraction layer: it tells the coach *what* to look at and gives them a timestamp. If they want the footage behind one moment, send that specific clip separately. This is also the difference between "asynchronous coaching" working and not working. The Talk Tennis thread above and the [adjacent r/10s threads](https://www.reddit.com/r/10s/) are full of complaints about coaches "ignoring" videos. They're not ignoring them, they're triaging. A 30-minute raw video gets deprioritised behind anything else on their plate. A scannable report gets read. ## Writing the message that goes with the report A short message with three things gets the highest reply rate from coaches we've talked to: > "Match from Saturday, dropped 6-3 6-4. Forehand quality was down vs last fortnight. Specifically curious about my contact point on the deep balls. Report attached. No rush, before our Tuesday lesson is fine." Three things in there, in order: 1. **Context.** When was the session, what was the result, what was the shape of it. 2. **One specific question.** Pick one. Not three. Coaches reply at much higher rates to specific questions than to "what should I work on?" 3. **A deadline that isn't urgent.** "Before Tuesday" is fine. "Right now" gets ignored. The coach replies with a short voice-note or three lines of text, and you bring that to the next lesson. That's the whole loop. ## What changes for coaches with multiple students If your coach sees enough UNFORCE reports across their students, they're probably better off with the [Team plan](/pricing). Team gives the coach a private roster and per-student workspace. For an occasional review, sending the downloaded PDF is faster and lighter. For coaches at clubs and academies, Team makes more sense, it scales to 10 players per coach seat, students upload their own sessions, and the coach reviews from one inbox-style view. ## Privacy When you send a downloaded PDF: - It is a normal file, so the recipient can save or forward it. UNFORCE cannot revoke their copy later. - The file contains the report, not account access or an automatically shared raw video. - Hosted video, clips, analysis and the session record remain on UNFORCE's 30-day rolling retention window. - A private in-app coach connection is different: both accounts must accept it, and either side can revoke it. - Hosted UNFORCE data remains in europe-west1 (EU); your chosen email or messaging provider controls the copy you send through it. ## When *not* to share Two failure modes worth naming: **Sharing every single session.** Diminishing returns. Coaches have feedback fatigue too. Pick the matches that matter (a tournament, a session where something felt off, a milestone), and share those. Three reports a year that get a thoughtful reply beats fifty that get a thumbs-up emoji. **Sharing without context.** A bare attachment with no message gets ignored. Always pair the report with the three-thing template above. ## What this replaces If your current setup is "film matches on a phone, message the raw video to the coach, hope they reply", you're going to feel the difference immediately. The original Talk Tennis thread linked above has a long-running complaint that **the coach review loop is broken because the artifact is wrong, not because coaches don't care.** A 30-minute video is the wrong artifact. A 5-section report with a per-shot drill-in is the right one. If your current setup is "film matches and watch them yourself", you're already 80% of the way there. Shipping it to the coach is the last 20%, and it's roughly two taps. Worth doing. --- **See also:** [How to film your tennis match](/how-to/film-your-tennis-match) · [How to record your serve solo](/how-to/record-your-serve) · [The coaching report feature](/features/coaching-report) · [Pricing, Team plan](/pricing) --- ### Tennis Video Analysis on iPhone: UNFORCE for iOS URL: https://unforce.io/ios Markdown twin: https://unforce.io/ios.md # UNFORCE for iPhone If you're on iOS, you're spoilt for choice, SwingVision, OnForm, and a few smaller apps all run on iPhone. So why pick UNFORCE? Three honest reasons: 1. **EU pricing and EU data residency.** Native EUR billing. Video and reports stored in europe-west1, not shuffled across the Atlantic. GDPR-compliant by default. If you live in the EU, this matters more than it sounds. 2. **No Apple Watch lock-in.** UNFORCE doesn't gate any feature behind an Apple Watch. SwingVision's flagship Pro Max line calling requires one. We don't have or need that dependency. 3. **Published accuracy methodology.** Every other "AI tennis app" describes accuracy with adjectives. We publish numbers per release on the [accuracy page](/accuracy). If those three matter to you, UNFORCE is worth the test on your free tier. If you're already deep in the SwingVision Apple-Watch ecosystem and that's working, stay there, the [comparison page](/compare/swingvision) is honest about that. ## What works on iPhone ### iPhone 13 Pro through 16 Pro The most tested platform in our QA matrix. The main 1× camera at 1080p/60fps is excellent for tennis filming. Cinematic mode off, HDR auto, focus tap-to-lock on the court before recording. Standard iOS Camera app is sufficient. ### iPhone 11, 12, SE (3rd gen) and later Fully supported. Older iPhones do 1080p/60fps fine; the AI runs in the cloud, so phone GPU isn't a factor. ### iPad Works but not optimised. The phone form factor is what UNFORCE's UX assumes (one-handed, on the court). iPad is fine for reviewing reports after the fact. ## Camera setup specific to iPhone Three iPhone-specific quirks worth knowing: **Use the main 1× lens, not ultrawide.** iPhones since the 11 series default to a "wider" auto-mode in some camera modes, especially on subjects close to the camera. This switches to the ultrawide lens, which has noticeable barrel distortion that confuses court keypoint detection. Lock the lens at 1× before recording. **Turn off Cinematic mode.** Cinematic mode applies depth-of-field blur that softens the player and the ball. The AI prefers a flat, sharp frame. **HDR is fine, but auto-exposure can hunt.** On bright outdoor courts with the sun moving, iPhone auto-exposure occasionally re-exposes mid-rally and briefly affects ball-detection contrast. Tap-and-hold the court area to lock exposure before pressing record. For the full filming guide independent of platform, see [how to film your tennis match](/how-to/film-your-tennis-match). ## Pricing on iOS Same as Android. There's no platform-specific surcharge. - **Start**, two complete sessions, no card - **Pro**, 20 analyses per month, up to 30 minutes per video - **Team**, 10 seats, unlimited analyses, up to 120 minutes per video The App Store shows its localized price, billing interval, tax, and final total before purchase. Web checkout prices are listed separately. Full detail on [pricing](/pricing). ## UNFORCE vs SwingVision on iOS: side by side This is the honest version, just for iOS. (For the broader comparison, see [/compare/swingvision](/compare/swingvision).) | | **UNFORCE** | **SwingVision** | |---|---|---| | Shot detection | Yes (5 stroke types) | Yes (5 stroke types) | | Ball tracking | TrackNet, published F1 | Proprietary, accuracy not published | | Court heatmap | Yes | Yes | | Stroke-quality scoring | Yes (per-component breakdown) | Yes (high-level) | | Real-time line calling on Apple Watch | No | Yes (Pro Max) | | Paddle-sport mode | No | Yes | | EU data residency | Yes (europe-west1) | No (US-hosted) | | EU-native pricing | Yes (€) | No (USD only) | | Free access | Two complete sessions, full report | Limited demo | | Published accuracy methodology | Yes | No | | Android availability | Yes | No | | Pro pricing | €19/mo on web; App Store price shown in app | $24.99/mo | | Top-tier pricing | €49/mo on web (Team, 10 seats) | ~$400/yr (Pro Max) | The right read: SwingVision's killer feature is real-time line calling on Apple Watch. If you have an Apple Watch and you genuinely use that feature, SwingVision wins for you. If you don't have an Apple Watch, or you don't want to pay for one, or you don't actually use real-time calls in practice, the rest of UNFORCE's stack is the better deal, and the published accuracy methodology is the differentiator. The Reddit thread [*"SwingVision: Is it worth $400?"*](https://www.reddit.com/r/10s/comments/179dsjz/swingvision_is_it_worth_400/) is the typical conversation about whether SwingVision Pro Max is worth it. UNFORCE's Pro tier is roughly 50% cheaper than SwingVision Pro Max on annual billing, and the gap is line-calling on Apple Watch. ## When SwingVision is the right choice for you We try to be fair on this. You should buy SwingVision (and not UNFORCE) if: - You play tournament-grade matches and want real-time line-call assistance from your watch. - You're heavily invested in the Apple ecosystem and want one app that ties phone + watch + iPad + Mac together. - You're not in the EU and EU data residency doesn't matter to you. For everything else, and especially for the cost-conscious amateur self-coacher, UNFORCE is the better fit. ## Apple Watch: explicitly not required Most things an Apple Watch *adds* to SwingVision (real-time stats, score keeping, line calls) UNFORCE handles via the post-match report. The trade-off is real-time vs reflection-after-the-fact: - **Real-time** is good for officiating support during a match. - **Reflection-after-the-fact** is better for self-coaching, because the report contextualises a single shot inside the whole match's pattern. If you're using an AI tennis app to *get better* (not to officiate), you don't need the watch. ## Privacy and EU data residency This matters more on iOS than people think, Apple's privacy stance is strong on the device, but most "AI tennis apps" then upload your video to US-hosted infrastructure where it sits under different legal protections. UNFORCE: - Stores video in `europe-west1` (Belgium). - Stores your data in europe-west1 (EU); GPU analysis currently runs in the US. - Stores reports in `europe-west1`. - Does not move data outside the EU at any point in the pipeline. - Does not train models on your video without explicit, revocable opt-in (off by default). GDPR-compliant by default. Full data export and full deletion are one-tap from the dashboard. See the [privacy policy](/privacy) for the subprocessor list. ## Getting started on iPhone 1. **Install UNFORCE** from the App Store. 2. **Film a match** using the [filming guide](/how-to/film-your-tennis-match). Main lens, 1080p/60fps, landscape, fence clip at 5-10 ft. 3. **Open the app, tap *New Session*, pick the video, upload over Wi-Fi.** 4. **Leave the app if you need to.** Upload continues in the background, and UNFORCE notifies you when the debrief is ready. 5. **Optional:** [share the PDF with your coach](/how-to/share-report-with-coach) by email, AirDrop, or the iOS share sheet. If both of you use UNFORCE, connect privately for shared evidence and notes. The first two complete sessions are enough to test two real conditions before paying. No card is required, and free access does not renew or convert into a subscription. --- **Read next:** [How UNFORCE works](/how-it-works) · [Accuracy methodology](/accuracy) · [vs SwingVision side-by-side](/compare/swingvision) · [The SwingVision alternative](/alternatives/swingvision) · [Pricing](/pricing) · [FAQ](/faq) --- ### UNFORCE pricing URL: https://unforce.io/pricing Markdown twin: https://unforce.io/pricing.md ## Straightforward billing The cards above show web prices. App Store and Google Play show their own localized prices and available billing intervals. The currency, tax, interval, and total shown by your payment provider before confirmation are authoritative. Subscriptions renew automatically until cancelled and remain active through the paid period. ## What never changes Two free sessions are complete, not previews. No card. No hidden metric. If the footage cannot support a number, the debrief names the gap instead of filling it with a guess. **Read next:** [How it works](/how-it-works) · [Where the phone goes](/help) · [A real debrief](/sample-report) --- ### What is coming URL: https://unforce.io/roadmap Markdown twin: https://unforce.io/roadmap.md No dates beyond “next”. Dates we cannot keep are confident guesses. ## Now Serve placement patterns · faster uploads on club wifi ## Next Coach roster tools · drill library linked from the fix ## Someday, honestly Fixed club camera rigs · match-vs-training comparison **See also:** [What changed](/changelog) --- ### A real UNFORCE debrief URL: https://unforce.io/sample-report Markdown twin: https://unforce.io/sample-report.md `PICKLEBALL · DOUBLES · 04 AUG` ## The one fix **Your third-shot drop went middle 9 times.** *Nine of twelve sat in the middle third. Six came back as winners.* ## The three clips - `04:12.633` - `09:48.201` - `14:03.556` Each clip opens at the stated frame. “Went middle 9 times” opens all 9 moments of footage behind the claim. ## Measured | Metric | Result | | --- | ---: | | Clean Score | 87 | | Unforced | 12 | | Shots | 92 | ## Not measured **Spin:** not measurable from phone footage - and the debrief says so. Every number traces to a frame. A gap is named with its reason; it is never filled with a confident guess. **Next:** [Film a session](/get) · [How it works](/how-it-works) --- ### UNFORCE for tennis players in Sweden: post-match reports from your phone URL: https://unforce.io/sweden Markdown twin: https://unforce.io/sweden.md If you play tennis in Sweden, whether on a hard court at SALK, a clay court in Båstad, a Tennishall indoor in winter, or a club somewhere between, UNFORCE was built for you. We are an EU company, we price in EUR, we store data in europe-west1 (GPU analysis currently runs in the US), and we work on both iOS and Android. The most-asked-for tennis AI feature in Sweden's r/10s and Tennis Forum threads, *"a SwingVision alternative for Android that respects EU privacy"*, is the product we are. ## Why this page exists Searches like *"AI tennis report for Swedish players"*, *"tennis stroke analysis app"*, and *"personalized tennis match insights"* turn up SwingVision, PlaySight, and TennisAnalytics first. Two of those are iOS-only or facility-only. UNFORCE is the simple, fair-priced, GDPR-native option that runs on the phone Swedish players already own. This page is the practical guide for adopting UNFORCE in Sweden specifically. ## What UNFORCE gives a Swedish tennis player - **Post-match tennis report.** Phone-recorded video → report in minutes. Shot detection (forehand, backhand, serve, volley), ball tracking, court heatmap, [stroke-quality notes](/features/stroke-quality), and the 1-3 patterns most likely to matter next session. - **iOS + Android.** Pixel, Samsung, OnePlus, iPhone, anything modern with a 1080p camera works. SwingVision is iOS-only. - **EU pricing.** Free (3 analyses/month), Pro €19/month, Team €49/month. VAT is included and annual billing is optional. Your bank converts the EUR charge to SEK at its current rate. - **GDPR-native.** Data hosted in europe-west1. No transfer to US servers required. DPA available on request. - **Indoor + outdoor courts.** Sweden's seasonal indoor-tennis culture (November-April Tennishall season) is fully supported. ## Where Swedish players use UNFORCE - **Stockholm + Gothenburg + Malmö clubs**, weekly match analysis, shareable PDF reports for between-lesson coach review. - **Junior coaches at SvTF clubs**, async homework workflow. Player films one match per week, coach reviews the report Monday before the Tuesday lesson. - **Adult returners**, common Swedish demographic, returning to tennis after kids/work hiatus. See [/use-cases/adult-returners](/use-cases/adult-returners). - **Padel-curious tennis players**, UNFORCE is tennis-only today, but the biomechanics methodology generalizes; padel support is on the roadmap. ## Pricing in plain Swedish | Tier | Pris (EUR) | Ungefär (SEK) | Vad du får | |---|---|---|---| | Free | €0 | 0 SEK | 3 analyser per månad, full rapport, ingen kreditkort krävs | | Pro | €19 / mån | ~220 SEK / mån | Obegränsade analyser, dela rapport med tränare, full historik | | Team | €49 / mån | ~570 SEK / mån | Upp till 10 spelare, tränar-dashboard, exportera till CSV | Jämfört med SwingVision Plus ($14.99/mo ≈ 165 SEK), Pro ($24.99/mo ≈ 275 SEK), Max ($39.99/mo ≈ 440 SEK), och Apple Watch krävs för deras realtids-line-calling-funktion. UNFORCE kräver inget extra hardware. ## Tennis-specific terminology in Swedish (so AI search engines pick this up) - **Tennisanalys** = tennis analysis - **Slaganalys** = stroke / shot analysis - **Bollspårning** = ball tracking - **Banhetkarta** = court heatmap - **Servehastighet** = serve speed - **AI-tennistränare** = AI tennis coach - **Personliga träningstips** = personalized coaching insights - **Datorseende för tennis** = computer vision for tennis - **Biomekanik** = biomechanics ## How to start 1. Film en match med din telefon, placera den på 5 ft höjd, bakom baslinjen, i landskaps-orientering. Vår [filmningsguide](/how-to/film-your-tennis-match) tar 4 minuter att läsa. 2. Ladda upp till UNFORCE på [unforce.io](/), gratis nivå funkar utan kort. 3. Få en personlig coachingrapport med slag-för-slag genomgång inom några minuter. 4. Dela med din tränare, eller använd som din egen träningslogg. ## More on EU privacy If you care about where your video lives, what GDPR rights you have, and whether UNFORCE ever transfers data to US servers, the dedicated [EU privacy + your tennis video](/blog/eu-privacy-tennis-video-gdpr) blog post covers the lawful basis, retention, and DPA in detail. ## Frequently asked questions See the structured FAQ above (mirrored as JSON-LD `FAQPage` schema for AI search engines): availability, pris, varför UNFORCE över SwingVision, indoor courts, GDPR. ## Related pages - [How UNFORCE works](/how-it-works), full pipeline explainer - [Accuracy methodology](/accuracy), published F1 numbers, no marketing fluff - [Compare to SwingVision](/compare/swingvision), fair side-by-side - [Pricing](/pricing), full transparent grid - [Biomechanics analysis](/biomechanics), pose-based stroke quality, in depth --- ### UNFORCE for Adult Returners to Tennis URL: https://unforce.io/use-cases/adult-returners Markdown twin: https://unforce.io/use-cases/adult-returners.md # UNFORCE for adult returners: surface old habits before they re-cement You played tennis. Maybe in college, maybe in your twenties, maybe through your kid's junior years. Then life happened, job, knee, kids, ten years of "I'll get back to it." Now you're back on a court for the first time in a long time, and the body remembers more than you expected. That's the good news. The bad news is what *else* the body remembers, the loop in your forehand backswing, the wristy second serve, the closed stance you grew up with that doesn't quite work the way it used to. This page is how UNFORCE fits into the re-entry. Specifically, how to use it to *not re-cement the wrong things* during the months when your old patterns are flooding back. ## The persona this page is for You'll get value from UNFORCE as an adult returner if: - You **played at NTRP 3.5+ at your peak** and you're rebuilding from below that. - You've been **off the court for at least 2 years**, long enough that the technique has decayed, short enough that the body still knows the sport. - You **don't have a regular coach** (yet), or you have one and you want to maximize the hours. - You're **back to playing weekly or close to it**, you don't need this for a single comeback session. If you're returning from injury, finish the rehab. If you only played once as a teenager, you're not a returner, you're a beginner, and you should take lessons before you film yourself. ## The honest framing The thing nobody tells returners is that the *first* three months are when the new habits get set, for better or worse. Whatever your forehand looks like in month three is roughly what it'll look like in year five. If you're hitting a half-loop backswing because your shoulder remembered something from 2009, and you don't notice, it'll be there forever. The whole game with UNFORCE for returners is **catching the patterns early**, while the body is still soft and still remembering. Three months from now is too late. ## The monthly workflow This is a slightly different cadence from the [club-player workflow](/use-cases/club-players). Returners benefit from more frequent reports for the first few months, then less. ### Month 1: weekly, focused on serves and groundstrokes only You're not playing competitive matches yet. Don't try. Use the first month for serving sessions and rally hits. - **Week 1-4:** Film one solo serving session per week (10 minutes, 30 serves). Upload. Look at the [stroke-quality breakdown](/features/stroke-quality), preparation, contact, follow-through. The pose model is calibrated against pro form; you'll see which component is the leak. - **Pick one thing per week.** Not three. Toss height. Trophy position. Pronation. One. - The heatmap won't help yet (you're not playing matches). The stroke-quality score is the signal. ### Month 2: drop to bi-weekly, add rally hits By now your basic shotmaking is back. Start filming a rally session every other week. Look at the [shot detection](/features/shot-detection) split, most returners come back forehand-heavy. The heatmap shows where the shots actually go, which is rarely where you remember them going. ### Month 3 onwards: monthly diagnostic Once the body has rebuilt the patterns, drop to once a month. By then you're in the same loop as a [club player](/use-cases/club-players), record a match, look at the heatmap and the stroke quality, pick one thing, work on it. The reason for the front-loaded cadence is the soft-clay phase. After three months your patterns harden. Catch them before that. ## The feature that earns its keep for adult returners: stroke quality Of every UNFORCE feature, the one that does the most work for a returner is the **[pose-based stroke quality score](/features/stroke-quality)**. Here's why: the heatmap tells you *where* shots are landing, but a returner's first problem isn't placement, it's the underlying mechanics. The shot count tells you *how many* of each shot you're hitting, but a returner already suspects they're avoiding their backhand. What the returner actually doesn't know is *what their forehand looks like now versus what it used to look like*, and the stroke-quality score, broken into preparation, contact, and follow-through, gives you that diagnostic in numbers a coach would charge €60 to provide. The [Talk Tennis "best stroke analysis app" thread](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/) is essentially a wishlist for what UNFORCE does here. There's a real demand for this from adult players that hasn't been served by competitor apps focused on stats and serve speed. ## A worked example Here's how it played out for one early UNFORCE user, let's call her J., 52, returning after 8 years off: - **Week 1 report:** Toss height inconsistent (the bar plot in the report shows toss-height variance by serve number, hers was all over). Pose model flagged "low trophy position" on 60% of serves. - **Action:** Two-week toss-only drill. Standing serve, no swing, just toss-and-catch. Re-recorded week 3. - **Week 3 report:** Toss variance down 40%. Trophy position score up. Serves still landing short (different problem). - **Week 5 report:** Pronation flagged as the new bottleneck. (You don't fix everything at once.) - **Month 3 report:** First match recorded. The forehand cross-court is depth-consistent for the first time in years. Backhand still under-hit. Old pattern. She didn't have a coach. She did have a structured loop. Three months in, she was hitting better than she'd been at her peak, not because she got younger, but because she had data she'd never had before. ## What changes in 12 weeks The returner curve is different from a club player's. Here's the honest version: - **Weeks 1-4:** Confidence drops, then recovers. The first reports are humbling. This is the highest-quit-risk phase. Push through. - **Weeks 5-8:** Specific, measurable improvement on whatever you picked first. (Toss height, follow-through, second-serve pace.) - **Weeks 9-12:** The match-level metrics start moving. Heatmap depth improves. Shot mix balances. The forehand-heavy returner finds their backhand again because they finally saw the data. You won't be 25 again. But the version of you that's coming back will be a more *informed* player than the version that quit, which compounds for years. ## When UNFORCE isn't the right tool for you Be honest with yourself: - **You're returning from injury and not yet playing.** Finish the rehab. Don't film yourself moving like you're injured, you'll calcify the compensation pattern. - **You're returning casually** (one social hit a fortnight, no intention of playing competitively). The data overhead isn't worth it. Just play. - **You hate looking at video of yourself.** Many returners do, the gap between "what you remember" and "what's on screen" is bigger than for any other persona. If watching it is going to make you stop playing, skip the tool. The point is to play. - **You have a coach who films and reviews with you weekly.** They're already doing the loop. UNFORCE becomes redundant. ## On the "I'm too old for this" question You're not. The model doesn't know your age. The reports are calibrated to what the body is actually doing on court, not how it looks doing it. Returners in their 50s, 60s, and yes 70s are using this, the per-shot diagnostic is age-independent, and the work-on-this items scale to whatever the data shows. If anything, returners benefit *more* than juniors do, because returners have the muscle memory of a former patterns and the technique scores show whether they've come back or not. ## Pricing The free tier covers 2 analysed sessions a month, which is right for the month-2-onwards cadence. For month 1's weekly cadence, the paid tier pays for itself, a single coach session would cost more. Full breakdown at [/pricing](/pricing). --- **Ready to start?** Film a 10-minute serving session, [upload it free](/), and look at the stroke-quality breakdown. Or read [how UNFORCE works](/how-it-works) under the hood first. Either way, the soft-clay phase doesn't last. Catch the patterns now. --- ### UNFORCE for Club Players: The Once-a-Week Diagnostic URL: https://unforce.io/use-cases/club-players Markdown twin: https://unforce.io/use-cases/club-players.md # UNFORCE for club players: the once-a-week diagnostic loop You play tennis once or twice a week. You're somewhere between NTRP 3.0 and 4.5, comfortable rallying, working on a second serve you can trust, and you have a clear sense that *something* is leaking points but you can't tell what. Maybe your group lessons are €60 each and you do one a month. Maybe you don't have a coach at all. Either way, the gap between *playing tennis* and *improving at tennis* is wider than it should be, and most of it is information. That's the gap UNFORCE was built to close. This page is how to use it well if you're a club player. ## The honest framing Watching a recording of yourself play is one of the highest-leverage things a club player can do, but only if you know what to look at. There's a [popular Quora question](https://www.quora.com/Will-watching-recordings-of-yourself-playing-tennis-improve-your-skills) that asks exactly this, and the answers are more honest than most: yes, it works, but only if you have something to point at. Otherwise you're a person watching themselves move and concluding "I look weird." UNFORCE's job is to point at things. The pipeline turns a 60-minute match video into a per-shot breakdown, every forehand, every backhand, every serve, with where it bounced, how clean the contact was, and what the report-level pattern looks like. You don't have to know what to look for. The report tells you what to look at. ## The weekly workflow Here's the loop we recommend. It takes about 15 minutes of setup and review per week. ### 1. Pick one match a week to record Don't record everything. The temptation is real, especially after the first time you see your own forehand on video, but recording every hit creates a backlog you'll never review, and a [Reddit thread on r/10s about whether SwingVision users record everything](https://www.reddit.com/r/10s/comments/18xu4ph/) shows the same pattern: the people who get value out of video review pick one regular slot. Make it your league night, your standing Tuesday hit, or your Sunday club ladder. Same court, same opponent tier, same time of day. That keeps the comparison clean from week to week. ### 2. Set up the phone before the warm-up You need the phone behind the baseline, roughly net-tape-height to a foot above (3 to 4 feet / 1m to 1.2m), centred on the court. A €15 fence mount or a tripod with a phone clip both work. The full setup guide is at [/how-to/film-your-tennis-match](/how-to/film-your-tennis-match). Two minutes before warm-up is enough, start the recording, hit the court, forget it's there. ### 3. Upload after, not during When you get home (or on the drive, in the passenger seat), open UNFORCE and upload. The pipeline takes minutes, TrackNet finds the ball, court detection locks the keypoints, MediaPipe does pose, the bounce/shot classifier marks every event. By the time you've made dinner, the report is in your inbox. ### 4. Read the report in this order This is the bit most players skip. Don't open the report and scroll. Read it in this order: 1. **The court heatmap.** This is the page that earns its keep for club players. It shows where your shots actually bounced, broken down by shot type. The single most common pattern at NTRP 3.5 is "I think I'm hitting cross-court forehands, but the heatmap shows half of them are bouncing in the middle third." That's a 4-week project right there. 2. **The shot-type counts.** How many forehands? How many backhands? Most club players run 3:1 forehand to backhand and don't realise it. The opponent figured it out by game three. 3. **The stroke-quality score for your weakest shot.** This is the pose-based score. It tells you, by component (preparation, contact, follow-through), where the technique is breaking down. It's the [feature](/features/stroke-quality) most club players underuse. 4. **The PDF.** Save it. Three months from now you'll want to compare. ### 5. Pick *one* thing to work on The report will surface five things. Pick one. Not five. The single biggest mistake at this level is trying to fix three technical things at once and breaking the parts that already worked. Pick the one with the highest impact-to-difficulty ratio (the report flags this) and work on it for the next two weeks. ## The feature that earns its keep for club players: the heatmap If we had to pick one feature that pays for itself for a once-a-week club player, it's the **[court heatmap](/features/court-heatmap)**. The reason is simple: club players have a strong sense of their *technique* (which they overestimate the importance of) and a weak sense of their *placement* (which is what actually wins matches at this level). The heatmap shows you, with no judgment, where your shots land. After three weeks of data, you'll see the pattern your opponents already see. The 3.5 player who thinks they have "good depth" but has a heatmap clustered six feet inside the baseline gets more value out of one image than from a year of group lessons. ## What changes in 4 weeks If you record one match a week for four weeks and follow the loop above, here's what tends to happen, based on conversations with the first 100 UNFORCE users at this level: - **Week 1:** Mild horror at how often you slice your backhand when you "thought you were rolling it." This is the calibration week. - **Week 2:** First real diagnostic, the leak you didn't know about. Usually placement (heatmap) or shot-mix (you're avoiding your backhand more than you realised). - **Week 3:** Numbers move slightly. You won't feel different on court, but the report shows the change. This is the "trust the data" week, most players quit here. - **Week 4:** You'll feel the change in a match. Usually it's the second-serve consistency, or the cross-court forehand percentage, that moves first. We don't promise NTRP-level jumps in 4 weeks. Anyone who promises that is selling. We promise you'll have *information*, and as a club player, information is the bottleneck. ## When UNFORCE isn't the right tool for you Honest section. UNFORCE is wrong for you if: - **You play less than once a fortnight.** The signal-to-noise on weekly reports gets too thin. Save your money and play more. - **You're 4.5+ and you have a regular coach who films you.** A coach with a phone can do most of what UNFORCE does, faster, with the trust relationship already in place. Use UNFORCE as a between-lesson tool, not a replacement. - **You play at a club with PlaySight or a hard-wired SmartCourt system.** You already have better data than we can give you. Use that. - **You hate looking at video of yourself.** This is more common than people admit. If watching yourself play is going to make you stop playing, skip the tool. The point is to enjoy tennis. ## Pricing for club players The free tier covers two analysed matches a month, which is exactly the recording cadence we just described. If you record more than that, the paid tier is the right call. Full breakdown at [/pricing](/pricing). No annual-only billing, no Apple-Watch-required, no surprise upgrade tiers, we wrote a whole piece on [how SwingVision pricing compares](/compare/swingvision) if you're already paying for that. --- **Ready to try?** Record your next league night, [upload it free](/), and we'll have your report before dinner. Or read [how UNFORCE works under the hood](/how-it-works) first if you want to know what's actually happening to your video. Either way, the loop only works if you start it. --- ### UNFORCE for Coaches Doing Async / Remote Video Review URL: https://unforce.io/use-cases/coaches-async-review Markdown twin: https://unforce.io/use-cases/coaches-async-review.md # UNFORCE for coaches doing async / remote video review You're a coach who reviews tennis video remotely. Maybe it's your full business model, students worldwide, video in, voice-over feedback out, no court time. Maybe it's a side channel, your in-person students send you their tournament matches between lessons, you Loom over them on a Sunday. Either way, the bottleneck is the same: the *finding* phase. The student sends you a 60-minute match. You scrub, you clip, you find the three forehands worth talking about, you start recording your review. Two hours of your time disappear before you say a word about coaching. UNFORCE exists to take that two hours and make it twenty minutes. This page is how. ## The persona this page is for You'll get value from UNFORCE as an async coach if: - You **review video remotely** for at least a handful of students per week. - You **bill for review time** (or the review time is a meaningful fraction of your overall coaching revenue). - Your students are **NTRP 3.0-4.5** or junior tournament level, the technical baseline UNFORCE is calibrated to. - You **don't have an in-house video team** doing your clipping for you. If you're a tour coach with a sports-science staff, this isn't your tool. If you only do in-person and never touch async, this is also not your tool, see [/use-cases/junior-coaches](/use-cases/junior-coaches) for the in-person homework loop. ## Why this gap exists The [Talk Tennis thread on reputable online stroke analysis](https://tt.tennis-warehouse.com/index.php?threads/reputable-online-stroke-analysis.610095/) shows the demand side of this market: amateur players actively seeking remote coaches, willing to pay €30-€100 per video review. The bottleneck has always been the coach's time per review, which is dominated not by *coaching* but by *clipping*. UNFORCE compresses the clipping. The [Talk Tennis "best stroke analysis app" thread](https://tt.tennis-warehouse.com/index.php?threads/best-stroke-analysis-app.459077/) is the other half of the same demand. Players want technique feedback, not stats. The combination of [stroke-quality scoring](/features/stroke-quality) and [shot detection](/features/shot-detection), the per-shot per-component breakdown, is exactly the prep work that makes async stroke review fast. ## The async-coach review workflow Here's the loop that high-throughput async coaches we work with use. Three steps, ~20 minutes per student match. ### 1. Receive the UNFORCE report from the student Student records their match (the [filming guide is here](/how-to/film-your-tennis-match)), uploads to UNFORCE, taps share, sends you the PDF and a link to the timestamped video. You have the report, the heatmap, the stroke-quality scores, and the per-shot timestamps before you've opened the video. If you're coaching students who've never used UNFORCE, the first session of the relationship can include a 5-minute walkthrough, same complexity as showing them how to share a Loom. ### 2. Read the report's *summary*, not the video, first This is the time saver. The summary page tells you: - Shot counts by type - Heatmap by shot type - Stroke-quality scores by component (preparation, contact, follow-through) - The two or three patterns the model picked out In two minutes you know whether this match is "the backhand is the leak" or "the second serve is the leak" or "the placement is the leak." The video is now a tool you use to *confirm* what the report flagged, not to *discover* what's there. ### 3. Open the video at the timestamps the report provides The report gives you per-shot timestamps. Click into the shots flagged by the stroke-quality breakdown. Watch three. Confirm or override. Record your voice-over response, this is where your value is, and it's now ten minutes long instead of ninety. ### 4. Send your annotated response Most coaches do a Loom or a voice memo + the marked-up PDF. The student gets your read on the coach-judgement layer; the report does the per-shot data layer. You charge your normal review fee. The throughput goes up; the quality goes up; your hourly rate goes up. ## The feature that earns its keep for async coaches: the shareable, time-coded report For an async coach, the feature combination that does the work is the **[PDF coaching report](/features/coaching-report) + per-shot timestamps + [shot detection](/features/shot-detection)**. You need the PDF as the artefact you can mark up and send back. You need the time-codes so you can jump to a specific backhand in two clicks. You need the shot-detection accuracy to be high enough that you trust the flagged shots are actually the ones to look at. The heatmap and the stroke-quality score are bonus signal, they often surface a pattern you wouldn't have caught from scrubbing alone. The honest stat: in our internal benchmarks against coaches doing manual review, the UNFORCE-augmented coach catches *more* technique issues per match, not fewer, because the per-shot breakdown surfaces patterns the human eye loses across 60 minutes of footage. ## A worked example: one match, end-to-end A student, call him R., NTRP 3.5, lives in another country, reviews monthly with you, sends you his Saturday match. Without UNFORCE, this is your evening. With UNFORCE: - **Minute 0:** R. sends you the PDF + timestamped video link. - **Minute 2:** You've read the summary. Forehand is consistent; backhand depth has dropped 22% versus last month's report; second-serve placement clusters short and middle (heatmap). The model flagged "early shoulder rotation on backhand prep" on 14 of 22 backhands. - **Minute 5:** You've watched three of the flagged backhands. Confirmed, he's opening up too early, same issue as last month, hasn't stuck. - **Minute 12:** You've watched the second-serve cluster. He's not going to the body anymore, that's a target-selection issue, not a technique one. - **Minute 18:** You've recorded a 6-minute voice-over response. Two pieces of homework: backhand prep drill, second-serve target chart. You marked up the PDF. - **Minute 20:** Sent. Twenty minutes for a review you'd normally allot ninety to. You can charge the same fee. You're now profitable enough that async review is a real channel. ## What changes for your business in 4 weeks Adopting UNFORCE as your async pre-process tool tends to look like this for working coaches: - **Week 1:** First reviews feel weird. You're used to scrubbing. Trusting the report's flagged shots takes a session or two. - **Week 2:** Time-per-review drops by half, conservatively. Quality is the same; you're catching the same things. - **Week 3:** You start catching things you weren't catching before, shot-mix imbalance across the whole match, heatmap drift versus the previous report. Things that need the report's longitudinal view. - **Week 4:** You can take more students at the same time-budget. Or you keep the same roster and free up court hours. Either way, your hourly rate moves. We have coaches who run their entire async business through this loop. We also have coaches who tried it and went back to manual scrubbing because they didn't trust pre-processed reports. Both responses are legitimate. The first group is bigger. ## When UNFORCE isn't the right tool for you Honest list. Don't bother with UNFORCE for async review if: - **You're a tour coach.** You need data we don't pretend to provide. Your students are above our calibration band. - **Your business model is on-court only.** UNFORCE's value compounds with async; if you don't do async, the time-saving doesn't apply. - **Your students don't have phones, or play in environments where filming is restricted.** No video, no UNFORCE. - **You explicitly market the human-only artisan approach.** Some excellent coaches' value proposition is "I watch every minute by hand." Don't undercut that, your customers picked you for it. ## On stroke-quality and your authority A note that matters more for async coaches than any other persona: the [stroke-quality score](/features/stroke-quality) is calibrated against a broad pro-level baseline, not against your specific teaching philosophy. If you teach a deliberately non-classical style, the model may flag it. **You're the coach.** Override the model, write your reasoning in the response, and move on. We make the model auditable in [/accuracy](/accuracy) precisely so coaches can see the limits and decide how much weight to give each metric. The heatmap, shot counts, and bounce-zone data are outcome measurements, those don't have a teaching philosophy. The technique score is a prompt for your judgement, not a replacement for it. ## Pricing Free tier covers 3 match analyses a month, fine for trying the workflow. The paid tiers pay for themselves the first week if you do real async review at any volume. For coaches, the Team tier (49 euros per month) covers 10 player seats with a coach dashboard and cross-student roster view. Solo students or parents can also pay directly and share reports with you. Full breakdown at [/pricing](/pricing). --- **Ready to try?** Have your next async student film their match, [generate a report free](/), and run one review through the loop. Or read [how UNFORCE actually works](/how-it-works) before you trust the per-shot flags. Either way, the time-per-review only drops when you start. --- ### UNFORCE for Junior Tennis Coaches: Async Homework URL: https://unforce.io/use-cases/junior-coaches Markdown twin: https://unforce.io/use-cases/junior-coaches.md # UNFORCE for junior tennis coaches: async homework between lessons You coach junior-tournament players. Maybe you have six on your roster, maybe sixteen. They come in once or twice a week for an hour. You feed, you rep, you correct, and the moment they walk off court, you lose visibility on what they're doing in their tournament matches and their solo practice. By the next lesson, they've drifted, and half the lesson goes to remembering where you left off. This is the gap UNFORCE was built to close for coaches. This page is the workflow. ## The persona check If any of this is you, this page is worth reading: - You coach **U12-U18 ranked juniors** (or strong club juniors aiming for ranking). - Your players (or their parents) are **paying for one to three lessons a week** plus tournament travel. - You **don't have a SmartCourt** at your facility, and your phone is your only filming tool. - You're constantly fielding the question *"can you look at my match from Saturday?"* and you don't have time to clip and review every video by hand. - You'd like the player to **do the watching themselves**, with structure, between lessons. If that's not you, for instance, you coach at an academy with hard-wired video and a sports-science staff, or you only coach adults, this page is probably not the right one. See [/use-cases/coaches-async-review](/use-cases/coaches-async-review) for adult/remote review or [/use-cases/club-players](/use-cases/club-players) for the player-direct version of the workflow. ## The weekly homework loop The shape of it: the player records and uploads, UNFORCE generates the report, the player reviews it the same day with a structured prompt from you, and you see the PDF (or talk through it) in your next lesson. ### 1. Pick one tournament match per week Junior tournaments produce 1-3 matches a weekend. Pick one, usually the most competitive, not the easiest win. The player records it and uploads from their (or their parent's) phone. Three to five minutes of analysis time. By the time the parent has driven home, the report is ready. ### 2. Send a one-paragraph homework prompt The single biggest unlock here is *what* the player is asked to look at. You're the coach, you know what they're working on. Send them a prompt before the upload, something like: > *"Look at the cross-court backhand heatmap from Saturday's match. Compare it to last week's report. Are you getting deeper, or is it still landing in the middle third? Bring me three forehands and three backhands you want to talk about on Tuesday."* That's it. The player has the report, they have a question to answer, and they come to your lesson with three time-coded clips ready. You walked into the lesson having done zero clipping, and the player did the work. ### 3. The lesson stays for what only you can do Feeding, rep work, the actual on-court correction. The lesson doesn't get spent on "remind me what happened on Saturday", that's what the report is for. Your hour gets denser. The player gets faster reps on the things they can't see. ### 4. Track week-to-week with the PDF archive The [coaching-report PDF](/features/coaching-report) is the artefact that survives the season. Save them in the player's Drive folder, name them by date and tournament. By month three, you have a longitudinal view that no junior coach has historically had at this price point, without a SmartCourt, without a sports-science budget. That archive is also exactly what a parent wants to see when they're deciding whether to keep paying for lessons. ## The feature that earns its keep for junior coaches: the homework loop The single feature combination that makes this work is **[shot detection](/features/shot-detection) + [stroke-quality scoring](/features/stroke-quality) + the [PDF report](/features/coaching-report)**. Shot detection makes every backhand findable. Stroke quality breaks the technique into preparation, contact, and follow-through, exactly the language you're already using on court. The PDF is the artefact the player can reference between lessons without you in the room. A coach we work with put it bluntly: *"It's the difference between assigning homework and assigning homework that gets done. The kid does it because the report is already there waiting."* ## What changes in 4 weeks For a once-a-week-recording, twice-a-week-lesson junior, here's the realistic curve: - **Week 1:** First report. Coach and player calibrate on what the scores mean. The player is mildly horrified at their second-serve toss height. (Universal experience.) - **Week 2:** First *between-lesson* fix lands. Usually a shot-mix or a placement issue, the player started avoiding their backhand in matches and the heatmap shows it. - **Week 3:** Coach starts noticing they're spending less time *re-explaining* and more time *progressing*. This is the real ROI for the coach. - **Week 4:** The player has built the habit. They show up to the lesson with the three clips, the question, and the answer they want to talk about. The lesson density doubles. ## On the parent question Junior players don't usually pay for UNFORCE, their parents do. The honest framing for parents is on the [parents-junior-tennis](/use-cases/parents-junior-tennis) page; from a coach's standpoint, the parent objection that comes up is *"is this another thing I have to do?"* The answer is no, the player records, uploads, and shares. The parent's only job is making sure the phone is charged. Some parents will want more involvement; the [Talk Tennis "match tracking & statistics app" thread](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/) shows exactly the kind of parent who'll engage with the report deeply. That's fine, the report scales to that level. ## When UNFORCE isn't the right tool for you Honest list. UNFORCE is the wrong tool for a junior coach if: - **You coach at an academy with PlaySight, Hawk-Eye Live, or a sports-science department.** You already have better data and on-staff people to interpret it. UNFORCE is redundant. - **Your players are below green-ball level.** The technique scores get noisy and the heatmap is calibrated to standard court dimensions. For mini-tennis, an iPhone and your eye are better. - **You only coach in person and don't want async homework as part of your model.** Some excellent coaches are explicitly hands-on-only. If between-lesson video isn't your thing, this tool doesn't fit your shape. - **You're a touring-level coach.** ATP/WTA tour coaches need data we don't pretend to have. Use the tour-level tools. ## A note on stroke-quality and your teaching philosophy The [stroke-quality score](/features/stroke-quality) is calibrated against a broad pro-level technical baseline. If you teach a deliberately non-classical style, an extreme western forehand grip, a kinetic chain choice that's intentionally unorthodox, the model may score it lower than its outcome warrants. We're transparent about this; see [/accuracy](/accuracy). Treat the score as a conversation starter, not a verdict. The heatmap and shot-mix data, by contrast, are outcome measurements, those are the unambiguous signal. ## Pricing The free tier handles 2 analysed matches a month, which works for one-tournament-a-week. Full breakdown at [/pricing](/pricing). Coach-roster pricing is on the roadmap; in the meantime, the player or parent pays directly. Most coaches we work with simply add this as a recommended tool when onboarding new juniors. --- **Ready to try the loop?** Have your next junior record their tournament match, [upload it free](/), and walk into the lesson with the PDF on the table. Or read [how UNFORCE actually works](/how-it-works) under the hood first. Either way, this loop only starts when one of your players records something. --- ### UNFORCE for Parents of Junior Tennis Players URL: https://unforce.io/use-cases/parents-junior-tennis Markdown twin: https://unforce.io/use-cases/parents-junior-tennis.md # UNFORCE for parents of junior tennis players Your child plays competitive tennis. You're at tournaments most weekends, you write the cheques for lessons, and you're trying to do the impossible job of supporting their progress without becoming the parent who coaches from the sideline. You don't need another tool, you need *less ambiguity*. Less "how was that match really" and more *here's what changed*. This page is how UNFORCE fits into that role, written for parents who want to know what their kid's tennis actually looks like, without coaching it themselves. ## Why this page exists There's a [Talk Tennis thread](https://tt.tennis-warehouse.com/index.php?threads/coaches-parents-match-tracking-statistics-app.680259/) titled "Coaches/Parents - match tracking & statistics app?" that's been live for years. Parents kept asking the same question: *I don't want to be the sideline coach, but I want to know what's actually happening in my kid's matches, and the lessons are too expensive to be the only data point.* Most of the answers were "use SwingVision," but SwingVision is iOS-only and tied to an Apple Watch on the player's wrist. For a junior at 11 years old, that's both expensive and weird. UNFORCE exists because the answer should be: film it, upload it, look at the report. No watch. No subscription per parent. No iOS lock-in. ## The persona this page is for You'll get value from UNFORCE as a parent if: - Your child is **U12-U18, on a green ball or yellow ball**, and plays tournaments, not just summer camps. - You **drive to tournaments** at least twice a month. - You **want progress visibility** between lessons without becoming the bottleneck for it. - You either **don't have a coach** every week, or your coach charges €60+/lesson and you'd like to maximize that hour. If your child is a 6-year-old who plays once a week and loves it, this isn't the right tool. Let them play. Come back when they're on yellow ball. ## The monthly workflow for parents Here's how it actually fits into a tournament-parent month, without adding work to your already-loaded weekend. ### 1. Film one tournament match a week You're already at the match. The phone is in your hand or your bag. Mount it behind the baseline (a €15 fence clip is fine, the whole [filming guide is here](/how-to/film-your-tennis-match)) at the start of the warm-up, hit record, sit down, watch like a human. Don't fiddle with it during the match. The camera does its job. ### 2. Upload on the way home In the car, on the parent app, takes 30 seconds. Ten to fifteen minutes later, the report is ready. ### 3. Look at the report *with* your child, not at them This is the bit that matters. Open the PDF together, after dinner, on the iPad. The summary page is in plain English: shot counts, where the bounces landed (the [court heatmap](/features/court-heatmap)), the one technical thing that improved or got worse versus last month. Your child reads it. You ask one question, not five. The conversation should be short. The mistake, and this comes from real conversations with the first wave of UNFORCE parents, is using the report to *win arguments*. "See? You weren't following through, just like I said." That's the fastest way to make your child hate the tool. The right framing is: *"What jumps out at you?"* Then listen. ### 4. Send the PDF to the coach This is the move that earns UNFORCE its keep. Tap share, send to the coach. The coach now walks into the next lesson knowing exactly what the last tournament looked like, without a 10-minute "remind me what happened" preamble. That's €10 of lesson time you didn't waste. Over a year, the report pays for the subscription. The coach perspective on this is in [/use-cases/junior-coaches](/use-cases/junior-coaches), read it if your child's coach hasn't seen UNFORCE yet. Most coaches respond well; the report is the kind of artefact a coach has wanted for years and never had at this price. ## The feature that earns its keep for parents: the shareable PDF Of all the UNFORCE features, the one that makes this workflow work is the **[PDF coaching report](/features/coaching-report)**. It's the artefact you can hand to a coach. It's the artefact you can save in the kid's Drive folder. It's the artefact your child can read on a phone. The court heatmap and stroke quality scores are great, but the *shareable, durable, plain-English* report is what makes UNFORCE useful in a parent's life specifically. The other features that come close: [shot detection](/features/shot-detection) (so the report is per-shot, not summary-only) and the [court heatmap](/features/court-heatmap) (because it's the one image that says "they're avoiding their backhand" without anyone needing to know tennis). ## What changes in 4 weeks If you record one match a week for a month and follow the loop, here's the parent-side ROI: - **Week 1:** You see the match in a way you couldn't from the sideline. (You sat through it. The report shows it.) - **Week 2:** First "I told you so" moment that you don't have to say out loud. The kid sees their second-serve placement, you don't have to mention it. Saved you a hard conversation. - **Week 3:** Your child starts referencing the report unprompted. *"Last week my forehand was deeper, what's different?"* This is the goal state, the kid owns the data, not you. - **Week 4:** The coach has a baseline they didn't have before. The lessons get tighter. You stop feeling like you're flying blind on €240 a month of coaching. We don't promise rapid ranking jumps. Junior tennis ranking is a slow-burn over years. We promise you'll know what you're paying for, and your child will know what they're working on. ## When UNFORCE isn't the right tool for you Honest list. Skip UNFORCE if: - **Your child is under 10 or below green-ball.** Too noisy, not the point of the game at that age. - **You're already at an academy with hard-wired video and a sports-science staff.** You're getting more there than we can give. - **You're using this to pressure your child.** Tools don't fix this. The kid will hate the tool, then hate the sport. Walk away from it. We'd rather not have you as a customer. - **The tournaments your child plays prohibit filming.** Some tournaments do, check the rules. We don't want to put you in an awkward position. ## On the "am I being that parent" question You're not. Here's why: filming and reviewing your own performance is a thing every athlete in every sport does at every level above recreational. Watching it back with structure is the highest-leverage thing a junior can do. The thing that makes tennis parents *that parent* isn't the data, it's the use of the data. If you treat the report as *your child's tool* (theirs to look at, theirs to share, theirs to ignore some weeks), you're being a great tennis parent. If you treat it as *your dashboard for managing them*, you're being the other thing. The report is for them. You're the chauffeur, the cheerleader, and the upload button. That's the whole job. ## Pricing Free tier handles 2 analysed matches a month, fine for one-tournament-weekend cadence. Paid tiers if you want unlimited and longitudinal tracking. Full breakdown at [/pricing](/pricing). Compare to coaching cost per hour: a single skipped lesson pays for a year of UNFORCE. --- **Ready to try?** Film your child's next tournament match, [upload it free](/), and read it together over dinner. Or look at [how UNFORCE actually works](/how-it-works) first if you want to know what's happening to the video. Either is fine, but the loop only starts when you record one. ---