The Tennis Court Heatmap That Shows Where You Actually Play
Bounce-location heatmap that breaks your match down by shot type, zone, and pattern. The single image that tells you what your opponent already noticed.
In plain English: the AceSense 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
AceSense's pipeline detects the court (using keypoint detection on the visible court lines), tracks the ball (TrackNet-based ball tracking), classifies every shot (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; 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.
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 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. 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 and 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.
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 on every tier, including free. There's no premium "high-resolution heatmap" — same heatmap on every tier, same accuracy. Free tier limits matches-per-month, not features. Full pricing at /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 first if you want to know the error bands. The heatmap consumes ball tracking and shot detection — the three features together are the report's spatial layer.
Frequently asked questions
- What's a tennis heatmap, exactly?
- It's a visualization of where your shots bounced on the court. AceSense colours every bounce by frequency — dark zones are where most shots land, light zones are where few or no shots land. Filterable by shot type (forehand, backhand, serve), so you can see exactly where your forehands cluster versus where your backhands go.
- How accurate is the bounce position?
- Within roughly 30–50 cm of true bounce position on a phone video filmed from the recommended angle. Court keypoint detection localizes the playing area, and the ball-tracking trajectory tells us where the z-coordinate crosses the court plane. Good enough for zone-level analysis (which third of the court? cross-court vs down-the-line?) — not good enough for line calls. See /accuracy for the full error breakdown.
- Can it show me my opponent's heatmap too?
- On the same upload, yes — the player-detection model finds both players, and the heatmap can be filtered to either. The opponent's heatmap is often more useful than your own, because it shows where they're feeding you, which lets you reason about the patterns you got into.
- Does it work on clay courts?
- Yes — the bounce point detection is colour-agnostic. The bottleneck is court-keypoint detection, which can struggle on heavily-worn clay courts where the lines are partially erased. On a well-maintained clay court, accuracy is the same as on hard.
- Why heatmap and not just a stats table?
- Because the visual is the point. A table with '37% of forehands landed in zone B2' is harder to act on than a single image where the dark cluster is in the middle third instead of the back third. Heatmaps are the format that maps directly to your spatial intuition of the court.