Learn · Shooting

True shooting, counted, not estimated

Most box-score sites estimate TS% with a 0.44 multiplier on free throws. We count every shot and every trip to the line from the play-by-play. Here is what changes.

What true shooting measures

True shooting puts twos, threes and free throws into one number: the points a player scores per scoring attempt, on the same scale as a field goal percentage.

TS% = PTS / (2 × scoring attempts)

The 2 sets the scale: a player who made a two on every attempt would shoot 100%. Points are easy to count. The hard part is the bottom of the fraction.

The hard part: counting the attempts

Field goal attempts are easy: one shot is one attempt. Free throws are harder. One trip to the line is one attempt, but a trip can have one, two or three free throws, or none of its own. So each kind of free throw is a different part of an attempt:

  • Two free throws after a foul: one attempt, so each free throw is 0.5 of an attempt.
  • Three free throws after a foul on a three-point shot: each one is 0.33 of an attempt.
  • The free throw after a basket and a foul (the and-one): 0 attempts. The attempt was the shot, and we already counted it.
  • A technical free throw: one free throw, one attempt, so 1.

The box score only lists free throws. It doesn't say which kind each one was, or how many trips there were. So the usual formula estimates the attempts:

scoring attempts ≈ FGA + 0.44 × FTA

The 0.44 is the average of the four kinds above, across a whole league. Every player gets the same 0.44, whatever kind of free throws he really took.

What we do instead

We don't need to estimate. Every number on 3StepsBasket is built from the play-by-play, event by event, and the events are checked before we store them. So we count each shot and each trip to the line as it happened.

The usual estimate

FGA + 0.44 × FTA

Every free throw is 0.44 of an attempt, for every player. From the box score.

What we count

FGA + FT trips

Each player's own trips to the line, from the play-by-play.

How much does it change?

Less than you might expect, and that's to the estimate's credit. Across the 2025-26 Euroleague, among the 126 players with at least 200 scoring attempts, it comes out 0.1 points high on average, and for most of them it's within half a point.

But the top of a TS% list is tight, and half a point is enough to reshuffle it. Here it is, worked out both ways:

Player TS% estimated Rank TS% counted Rank
Edy Tavares71.8371.71
Nikola Milutinov72.3271.72
Nando De Colo72.5171.43
Daniel Oturu71.1471.34
Johnathan Motley69.8569.45
Euroleague 2025-26, players with at least 200 scoring attempts, ranked among those 126.

The estimate crowns Nando De Colo. Count the trips and the order at the top reverses: Edy Tavares first, by less than a tenth of a point over Nikola Milutinov, and De Colo third. Further down the list the moves get bigger: the average player shifts 2.5 places, 19 shift five places or more, and Jaime Pradilla climbs from 48th to 35th.

Who the estimate gets wrong

The gaps are biggest for players whose trips to the line don't look like the league's average. Here are the ten best Euroleague players of 2025-26, in the order of our 3Steps rating, worked out both ways:

PlayerClub Attempts per free throw TS% estimated TS% counted Estimate is off by
Elijah BryantHapoel Tel Aviv0.4764.263.8+0.4
Aleksandar VezenkovOlympiacos0.4566.966.7+0.2
Sylvain FranciscoZalgiris0.4460.960.90.0
Chima MonekeCrvena Zvezda0.4766.465.5+0.9
Kameron TaylorValencia0.4162.663.0-0.4
Tornike ShengeliaBarcelona0.4363.263.4-0.2
Trey LylesReal Madrid0.4664.864.3+0.5
Nikola MilutinovOlympiacos0.4672.371.7+0.6
Tyrique JonesOlympiacos0.4369.069.3-0.3
Nikola MiroticMonaco0.4763.462.9+0.5
Euroleague 2025-26, the top ten of our best players ranking. "Attempts per free throw" is the player's trips to the line divided by his free throws; the estimate uses 0.44 for everyone. "Estimated" uses FGA + 0.44 × FTA; "counted" uses every field goal attempt plus every trip to the line, from the play-by-play. A positive difference means the estimate makes the player look better than he is.

Look at the attempts per free throw. The rule is simple:

  • Below 0.44: the estimate counts more attempts than the player really took. His TS% comes out too low.
  • Above 0.44: the estimate counts fewer attempts than he really took. His TS% comes out too high.

Three players from the table show it:

  • Kameron Taylor: 0.41 attempts per free throw, below 0.44. The estimate gives him 62.6%. We count 63.0%.
  • Chima Moneke: 0.47, above 0.44. The estimate gives him 66.4%. We count 65.5%. At 0.9 points, it's the largest difference of the ten.
  • Sylvain Francisco: 0.44, the same as the estimate. Both ways give him 60.9%.

Where do the differences come from? From the kinds of free throws each player takes. And-ones and three-shot trips push the number down, because those free throws are a small part of an attempt, or none. Technical free throws push it up, because each one is a whole attempt.

Counting technicals as attempts costs good free throw shooters a little. Their team gives them the technicals: a free shot for the team, one more attempt for the player. We count it anyway. We'd rather show the real number than replace it with an average.

Under a point each sounds small. Put Moneke and Taylor side by side, though: the real gap between them is 2.5 points, and the estimate stretches it to 3.8.

Where you'll see it

Every TS% on the site uses the attempts we count: the stats glossary, player advanced pages, club players stats and the league charts. Ratings work the same way: offensive and defensive ratings count possessions one by one instead of estimating them: possessions, counted, not estimated.

Related