Skip to content
CricketTaken

Analysis

NBA tracking data explained: what the cameras actually see

NBA tracking data explained properly: how SportVU became Second Spectrum and then Hawk-Eye, what optical tracking records, and what stays private.

By CricketTaken EditorialPublished Analysis18 min read

How this is written and checkedReport an error

A broadcast graphic appears in the third quarter saying a player has covered 2.4 miles. Nobody ever explains where that comes from, and the honest answer is more interesting than the number. It comes from cameras in the roof of the building recording that player's position twenty-five times every second, a piece of software deciding which blob of pixels is him and which is the man guarding him, a second piece of software converting a sequence of positions into a distance in feet, and a third dividing by 5,280 because that is how many feet there are in a mile.

Four decisions, all made by software, none of them visible. That is what NBA tracking data is: not a measurement of the game but a reconstruction of it, produced by a chain of systems each of which could have been built differently and would then have produced a different number.

Understanding that chain is what separates using tracking data from repeating it. The definitions are published, the sampling rate is published, and almost nothing else is. So the sensible approach is to learn exactly what the league says its numbers mean, and to be precise about where the published record stops.

Three generations of cameras in a little over a decade

The NBA's optical tracking has been rebuilt twice, and each rebuild changed what could be asked of the data.

SportVU, from the 2013-14 season. In September 2013 the league announced an expanded partnership with STATS LLC to install SportVU player tracking in every NBA arena, six cameras per building, covering all 30 clubs from that season. The system tracked all players and the ball, and the categories it produced were the ones still recognisable today: speed, distance, player separation and ball possession. In January 2016 the league and STATS widened access, pushing data that had been used by clubs for scouting and player development out to media worldwide.

That first generation established the shape of the whole enterprise. Cameras, not sensors. Nothing worn by a player, nothing embedded in the ball, no chips. An optical system watching from above and inferring everything.

Second Spectrum. The league's own statistics documentation describes tracking captured by cameras installed in the catwalks of every NBA arena, processed by Second Spectrum software, recording positions 25 times per second. That documentation is the source for the sampling rate every analyst quotes, and the public description of it is startlingly thin: one short passage, on a help page, for the system underpinning an entire analytical industry.

Hawk-Eye, from the 2023-24 season. In March 2023 the NBA announced a partnership with Sony's Hawk-Eye Innovations to deploy three-dimensional optical tracking, described as capturing the game in real time in three dimensions, including the movement of every player and the ball, at sub-second latency. The announcement said the system captures pose data, and that the technology had been through proof-of-concept work since 2019, tested at Summer League and in six NBA arenas. Sportradar, the league's exclusive data provider, was named as working alongside it to generate tracking data and automated event detection.

Read the three announcements in sequence and the trajectory is clear. Generation one answered where. Generation three answers where, in three dimensions, and in what posture, fast enough to use while the play is still happening.

One caution about the public record. The league's own help pages have not always kept pace with its vendor arrangements, so a documentation page naming one provider and a press release naming another can both be current in their own terms. Where this article quotes a figure, it quotes the document that published it and the year it was published, and does not attempt to say which system produced any particular season's numbers.

What a camera has to solve before it can count anything

Optical tracking looks like a solved problem from the outside and is not. Every frame requires four things to go right in sequence, and the difficulty rises at each step.

Detection. Find the people and the ball in a two-dimensional image. Straightforward when bodies are separated, hard in a rebound scrum where six people occupy the same few square feet.

Association. Decide which detection in this frame is the same object as which detection in the last frame. This is the identity problem, and it is where optical systems historically failed. Two players of similar build crossing near the baseline can swap identities, and once swapped, every statistic downstream is attributed to the wrong man until something corrects it.

Reconstruction. Combine the two-dimensional views from several cameras into a position in three-dimensional space. This needs the cameras to be calibrated to the building and to each other, which is why installation is a per-arena job rather than a shipment of hardware.

Occlusion handling. Decide what to do when an object cannot be seen at all. The ball, being small and frequently hidden by hands and bodies, is the hardest object on the floor to track, and it is also the one everything else depends on.

The move to skeletal tracking makes the first three problems harder and the fourth much easier. A system that models a human as a set of connected joints can infer where an occluded limb must be from the position of the ones it can see, in a way that a system modelling a human as a single point cannot. The gain is not just richer data. It is stability.

What skeletal tracking adds that a dot on a floor plan cannot

The older mental model of tracking data is a floor plan with ten dots and a ball moving across it. That model supports a large family of useful questions: spacing, distance, speed, who was nearest to whom.

Pose data supports a different family, and the difference is qualitative.

A dot tells you a shooter was 24 feet from the rim. A skeleton tells you where his feet were relative to the line at the moment he left the floor, where his gather began, whether the defender's hand was inside his shooting window or merely near his body, and whether he was balanced. A dot tells you a defender was 3.5 feet away. A skeleton tells you whether the arm was up.

That distinction runs straight into officiating. The Hawk-Eye announcement was explicit that the data would be used to improve officiating accuracy and game speed, with future applications including automated calls on out-of-bounds and goaltending. Both are geometry problems. Did any part of the player touch the floor outside the line while in contact with the ball, and was the ball on its downward flight when it was touched. A system that knows where a foot is and where a ball is, in three dimensions, at sub-second latency, can answer both without anybody walking to a monitor. The current rules on which calls get reviewed and by whom still route those questions through people; the tracking system is the reason that will not always be true.

There is a limit worth stating early. Skeletal tracking captures posture, not intent, not force and not contact pressure. It can see that two bodies converged. It cannot tell you how hard.

The sampling rate, and the pile of numbers it produces

Twenty-five times a second sounds modest. Multiply it out.

Position records generated by a single regulation game
One tracked object, one game72k
Ten players and the ball, one game792k

Arithmetic performed on the sampling rate the league publishes, not a figure anyone has published. Forty-eight minutes of game clock, eleven tracked objects, ten players and the ball. Stoppages are not deducted, so read this as the clock-time ceiling.

Show the numbers
Position records generated by a single regulation game
ItemValue
One tracked object, one game72k
Ten players and the ball, one game792k

Three quarters of a million position records for one match, before any derived event is computed and before any of the extra records that pose data implies. A skeleton with a dozen or more joints per person multiplies that again.

This is the reason tracking data does not reach the public as tracking data. It is not secrecy alone. A season's raw positional record is an infrastructure problem rather than a file, and the useful form for almost everybody is a table of derived numbers on a web page. That form is what the league publishes, and it is why the definitions matter far more than the technology.

The published rules of arithmetic behind the tracking numbers
  • 25Times per second the floor is sampled
  • 1Dribbles a receiver may take for the pass to count as a potential assist
  • 1Seconds within which an earlier pass counts as a secondary assist
  • 5280Feet used to convert distance travelled into miles

Each of these is a figure in the league's own statistical definitions. Change any one and a whole family of published statistics changes with it.

Every tracking statistic is a threshold, not a measurement

This is the single most useful thing to understand about the public data, and it is the thing most confidently ignored.

A tracking statistic is not a physical quantity. It is a rule applied to a stream of positions, and every rule contains a number somebody chose.

A contested shot, in the tracking data, is any shot where the closest defender is within 3.5 feet. Not 3, not 4. A contested defensive rebound is one collected while an opponent is within 3.5 feet. A close touch is a touch received within 5 feet of the basket. A potential assist is any pass to a teammate who shoots within one dribble of receiving it. A secondary assist goes to a player who passed to the man who recorded the assist, within one second and without dribbling.

The distances the public definitions are built on
Closest defender, for a shot to count as contested3.5ft
Opponent proximity, for a defensive rebound to count as contested3.5ft
Distance from the basket, for a touch to count as a close touch5ft

Every one of these is a published NBA definition rather than an estimate. A defender at 3.6 feet has not contested the shot as far as the data is concerned.

Show the numbers
The distances the public definitions are built on
ItemValue
Closest defender, for a shot to count as contested3.5ft
Opponent proximity, for a defensive rebound to count as contested3.5ft
Distance from the basket, for a touch to count as a close touch5ft

The consequences are not subtle. A defender who consistently closes to four feet and gets a hand up records zero contested shots. A defender who stands three feet away with his arms down records a contest on everything. The metric is measuring proximity, and it is widely read as measuring effort.

None of this makes the numbers bad. Thresholds are how you turn continuous space into countable events, and there is no way to avoid them. The error is treating the resulting count as though it described the basketball rather than the rule.

The drive definition is the one to read twice

Of all the published definitions, the one for a drive does the most hidden work.

A drive is recorded when a player attacks the basket off the dribble in the halfcourt offence. Then come three exclusions: it does not include situations where the player starts close to the basket, where he catches the ball on the move, or where he is immediately cut off on the perimeter.

Each exclusion is a judgment, encoded. "Starts close to the basket" requires a distance threshold. "Catches on the move" requires a velocity threshold at the moment of the catch. "Immediately gets cut off" requires both a time window and a definition of being cut off, which means a spatial relationship between the ball handler, the defender and the rim, evaluated continuously.

So a statistic that presents itself as a simple count of a recognisable basketball action is in fact the output of a small model with several parameters, none of which is published. Two analysts working from the same footage and the same written definition would not produce the same drive count, because the written definition is not sufficient to determine the answer.

That is not a criticism of the league. It is the nature of converting a fluid sport into discrete events, and every tracking-derived event statistic in every sport has the same property. It does mean that comparing drive counts across eras, across vendors or across leagues is much less meaningful than it looks, because the model behind the count is part of the number.

Speed and distance are the most quoted and the least useful

Distance covered is the statistic that reaches the largest audience and carries the least information.

The published definition of distance in miles is feet travelled divided by 5,280. Average speed is the average, in miles per hour, of all movement by a player while on the court, and the definition is explicit that this includes sprinting, jogging, standing and walking. The league also splits both by offence and defence.

Two problems follow immediately.

Distance covered is dominated by minutes played. A starter who plays 36 minutes will nearly always cover more ground than a reserve who plays 18, and the comparison tells you about the rotation rather than the players. Any use of the raw figure as a proxy for work rate is measuring availability.

Average speed, meanwhile, is dragged down by standing still, which basketball players do a great deal of. A team that walks the ball up and plays through a post will post lower average speeds than one that runs, and neither number says anything about how hard anybody tried. Speed splits by offence and defence are more interesting, because the gap between a player's offensive and defensive average is at least a comparison within the same person on the same night.

The useful versions of these numbers are almost always ratios and differences rather than totals. Distance per minute. Offensive speed minus defensive speed. Speed on possessions of a given type. The totals are for graphics.

Touches describe a role better than a box score ever has

The touch family is the part of the public data that repays attention most, and almost nobody uses it.

A touch is counted each time a player touches and possesses the ball. Time of possession is the total minutes he controls it. Alongside those sit two ratios that are more revealing than either: average seconds per touch and average dribbles per touch. The league also publishes frontcourt touches separately, and a set of location-specific touches with shooting and scoring attached to each: a close touch received within 5 feet of the basket, a paint touch inside the three-second lane, an elbow touch near the free throw line, and post touches.

Take seconds per touch and dribbles per touch together and you have the closest thing public data offers to a role fingerprint. Two players can score identically and sit at opposite ends of both. A high figure on each describes somebody who receives the ball and then decides what the possession will be: a primary creator, holding, probing, generating advantage from a live dribble. A low figure on each describes a connector, catching and moving it on inside a second, whose contribution is invisible in a box score and substantial on the floor.

The pairing also exposes a specific and common misreading. A player with high usage and low dribbles per touch is not the same animal as a player with high usage and high dribbles per touch, even if their scoring rates match. The first is being served; the second is serving himself. Front offices care about the distinction because it predicts what happens when the surrounding cast changes, and the two figures needed to make it are on a public page.

Location touches do similar work for big men. Paint touches, close touches, elbow touches and post touches with the shooting percentages beside them describe how a player is actually being used near the basket, which is something no counting statistic has ever separated from how often he happened to score.

Rebound chances fixed the wrong denominator

Rebounding was, for most of the sport's statistical history, measured without a denominator. A player collected a number of rebounds; nobody recorded how many were available to him.

Tracking supplied the missing half. A rebound chance is recorded when a player is the closest to the ball at any point between the ball crossing below the rim and the rebound being completed. The chances split into offensive and defensive, and they split again by whether an opponent was within 3.5 feet, giving contested and uncontested versions.

That single definition changes the question from how many boards a player took to what share of the ones near him he converted. A big man on a team whose guards crash the defensive glass will show fewer rebounds and may show an identical conversion rate, and only the second figure says anything about him.

The family also contains a small piece of honesty that most statistics lack: deferred rebound chances, counting the occasions on which a player let a teammate take one. A centre who secures the area, boxes out, and allows a guard to collect an uncontested ball so the break can start faster has done his job and lost a rebound. Deferred chances are the data's admission that the obvious count was punishing correct play.

The passing statistics carry the same logic. A potential assist is any pass to a teammate who shoots within one dribble of receiving it, which converts assists from a count into a rate: how many of the passes that should have produced a shot actually produced a made one. Assist to pass percentage carries that further, and secondary assists and free throw assists capture the two contributions the traditional definition throws away, the pass before the pass and the pass that drew the foul instead of the shot.

Every one of these is a denominator that did not exist before the cameras. That, more than any individual metric, is what tracking gave public basketball analysis.

The defensive numbers, and the assignment problem underneath them

Tracking's most valuable contribution to public basketball analysis is that it gave defence something to count, and its most persistent weakness is the assumption it has to make to do so.

Defended field goal percentage is the shooting percentage on shots where a given player is defending the shot. DIFF% compares that to the opponent's normal shooting percentage, producing an estimate of how much worse or better shooters are against him. Deflections counts the times a defensive player gets a hand on the ball on a non-shot attempt. Contested shots, as above, is a proximity count.

Defended field goal percentage requires the system to nominate one defender per shot. Basketball does not work that way. A shot taken over a closing wing after a switch, with a big man stepping up from the weak side, has been influenced by at least two players and arguably four. The data assigns it to one, usually the nearest, and the two who did the work of forcing the shot into that position get nothing.

The result is a systematic bias that anyone reading defensive tracking numbers should hold in mind: schemes that funnel shooters towards a designated contester flatter the contester. A rim protector playing conservative pick-and-roll coverage accumulates a superb defended percentage at the rim partly because the scheme is delivering him shots that were already bad. The tactical logic of that particular coverage is worth reading alongside any number attributed to the man playing it.

Deflections are the cleanest of the defensive tracking numbers, because a hand on a ball is close to a physical fact and the definition contains only one qualifier. They are also the least influenced by scheme, which is precisely why they travel better between teams than defended percentage does.

Hustle statistics have their own definitions, and one of them collides

The hustle family is where the league's definitions get closest to human judgment, and where a genuine trap lurks.

Boxouts, charges drawn, screen assists, loose balls recovered and contested shots make up the group. A screen assist is a screen that directly leads to a made basket. A loose ball recovered is when a player or team gains sole possession of a live ball that neither side controlled.

And here is the collision. In the hustle statistics, a contested shot is counted when a defensive player closes out and raises a hand to contest the shot before it is released. In the tracking statistics, a contested shot is any shot where the closest defender is within 3.5 feet.

They are different definitions of the same phrase, both published by the same league on the same site. One requires an arm; the other requires only proximity. A defender who closes hard and contests without arriving inside 3.5 feet scores on one and not the other. A defender who stands nearby with his hands down scores on the other and not the one.

Anybody quoting a contested shot number without saying which family it came from is quoting an ambiguous figure, and both figures are on the public site. This is the sort of thing that makes reading the glossary before using the data less optional than it sounds.

How a frame becomes a number you can read

The chain between a camera in the roof and a figure on a stats page
  1. Cameras capture the floorMultiple synchronised views of the same court, calibrated to the building. Nothing is worn by a player and nothing is embedded in the ball; everything is inferred from images.
  2. Objects are detected in each frameBodies and the ball are separated from the background and from each other. The ball is the hardest object in the building, being small and frequently hidden.
  3. Identities are held across framesEach detection is matched to the object it was a fiftieth of a second earlier. Crossings, screens and rebound scrums are where this fails, and a failure here corrupts everything downstream.
  4. Positions are reconstructed in three dimensionsThe two-dimensional views are combined into coordinates, and with skeletal tracking, into a set of joint positions per person rather than a single point.
  5. Events are classified against written rulesA pass, a drive, a touch, a contest. Every classification applies a threshold somebody chose: 3.5 feet, one dribble, one second.
  6. Events are aggregated into statisticsCounts, percentages and rates per player, per team, per lineup, per game. This is the first stage anybody outside the league or a club sees.
  7. A number appears on a public pageStripped of the definition that produced it, and read by most people as though it were a direct observation of the game.

Each stage is a decision, and each decision is a place where two reasonable systems would disagree. The public sees only the last box.

What clubs get, and what the public does not

The gap between the two is the single most underappreciated fact about basketball analytics.

The league's public site carries derived statistics: dashboards for catch-and-shoot, pull-up, drives, defensive impact, rebounding chances, touches by court location, passing, speed and distance, hustle. It is a substantial resource, and it is free. It also comes with an explicit restriction. The league states that its statistics are not available for download for either academic or personal use.

So the public gets tables in a browser, at the level of aggregation the league chose, with no access to the layer beneath.

Clubs get something categorically different. Positional feeds, event streams, and the ability to build models on the underlying data rather than on somebody else's summary of it. A club can ask what happened on this possession, at this instant, at this coordinate. A member of the public can ask how many drives a player averaged.

Three consequences follow, and they explain a lot about the state of the field.

Public basketball research is structurally a generation behind the sport. Work that a club completed three seasons ago cannot be replicated outside because the inputs are not available, and the published literature reflects what can be done with aggregates.

Club analytics departments spend a large share of their time on data engineering rather than on basketball, because the raw stream has to be cleaned, aligned to video, aligned to the play-by-play, and made queryable before anybody asks a question of it. The structure and staffing of a modern analytics department makes far more sense once you know what arrives each night.

And the vendor relationship is a genuine competitive variable. The tracking provider builds the event classification, which means the vendor's definitions become the league's definitions, which means a change of vendor can change the numbers without anything changing on the court. That is one reason to be careful with any tracking comparison that spans a transition between generations of the system.

What tracking still cannot see

The honest list is longer than enthusiasts admit, and every item on it is something people routinely claim the data shows.

Intent. The system records that a player cut to the corner. It does not know whether the cut was called, improvised, or a mistake that happened to work.

Scheme. Coverage assignments are inferred from behaviour, not read from a playbook. A defence that switches everything and a defence that misplayed a drop coverage can look similar from above. The difference between the coverages themselves lives in a huddle the cameras do not attend.

Effort. Nothing in an optical feed measures exertion. Speed and distance are outputs of a role and a rotation, and a system with no physiological input cannot separate a player conserving energy from a player positioned so that he need not run.

Contact force. Skeletal tracking sees bodies converge. It does not see how hard, which is exactly the judgment officiating turns on and exactly the thing automated calls will not soon replace.

Anything off the floor. No tracking system reports what a player did in the previous 48 hours, and load management arguments built on distance covered are working with a small slice of the relevant evidence.

Set that against what tracking genuinely delivered, which is considerable. Before 2013 there was no public record of where anybody stood. Shot quality, spacing, passing volume, rebounding opportunity and defensive proximity were arguments conducted from memory. Now they are arguments conducted from numbers, with all the specific weaknesses of numbers rather than the general weaknesses of memory. That is a real trade and mostly a good one. It is also why the older efficiency measures did not become obsolete: a rate statistic like true shooting percentage needs no camera and remains the correct first question about a scorer, and the team ratings built on possessions still frame everything tracking adds.

Other sports made the same journey and arrived somewhere different. Tennis pushed optical tracking all the way to replacing the line judge with the machine, a decision available only because the question is purely geometric. Cricket's analytics culture grew from ball-by-ball recording rather than from cameras, and what clubs there actually do with it reflects that different starting point.

Four checks before you quote a tracking number

Find the definition first. The glossary is public, and reading the definition takes less time than being wrong about it. If a phrase has two definitions, as contested shot does, name the one you mean.

Ask what the threshold is doing. Every tracking metric has one. Work out which players the threshold flatters and which it penalises, and you will usually have found the metric's blind spot in under a minute.

Convert totals into rates. Distance covered, touches, drives and deflections are all dominated by playing time. Per minute, or per 100 possessions, or per opportunity, is nearly always the version that answers the question you actually asked.

Check the system boundary. Numbers spanning a change of tracking generation or vendor are not necessarily comparable, because the event classification changed underneath them. The rule of thumb is to compare within a season freely, across a few seasons carefully, and across a transition only with a stated reason.

Do those four and tracking data becomes what it should be: a very good description of where everybody was, which is a large part of basketball and not the whole of it. More on how this sport is measured, coached and argued about is collected in the basketball archive.

Common questions

What is NBA tracking data?

It is the stream of position measurements produced by cameras mounted in every NBA arena, which record where each player and the ball are, many times a second, for the whole game. Everything described as a tracking statistic, from distance covered to contested shots to potential assists, is derived from that stream by software applying a written definition. The raw positions themselves are not published.

How many times a second does the NBA track player positions?

The league's own stats documentation puts the sampling rate at 25 times per second. That produces 72,000 position records for a single tracked object across 48 minutes of game clock, and roughly 792,000 for ten players and the ball together, before any stoppages are deducted.

What is the difference between SportVU, Second Spectrum and Hawk-Eye?

They are three generations of the same idea. SportVU, from STATS LLC, was installed in all 30 arenas for the 2013-14 season with six cameras per building. Second Spectrum followed as the league's tracking software provider, and in March 2023 the NBA announced a partnership with Sony's Hawk-Eye Innovations to capture the game in three dimensions from the 2023-24 season.

Can the public download NBA tracking data?

No. The league publishes derived statistics on its stats site and states plainly that they are not available for download for either academic or personal use. Clubs receive far more than that, including feeds and event streams that never appear on a public page, which is why published tracking research on basketball lags the sport itself by years.

What counts as a contested shot in NBA stats?

There are two published definitions and they are not the same. In the tracking data, a contested shot is any shot where the closest defender is within 3.5 feet. In the hustle statistics, a contested shot is counted when a defensive player closes out and raises a hand to contest before the ball is released. A player can rank very differently on the two.

Filed under Basketball·basketball · nba · analytics · basketball statistics · tracking data