Effective field goal percentage and True Shooting percentage are close enough that people use them interchangeably, and that's a small tragedy, because the gap between them is one of the most useful numbers in the box score. eFG% rewards the extra value of a three. TS% does that and folds in free throws. Subtract one from the other and you've isolated a single skill — getting to the line — with surgical precision.
Two fixes to field goal percentage, not one
Plain field goal percentage has two well-known blind spots: it treats a three like a two, and it ignores free throws entirely. eFG% patches the first hole and leaves the second one open. It credits a made three as worth 1.5 made twos — which is exactly the point ratio — so a player who lives behind the arc finally gets paid for the extra point. But a trip to the foul line still doesn't exist as far as eFG% is concerned.
That makes eFG% a strict upgrade over FG% for shotmaking, and a deliberately incomplete picture of scoring. It answers "how efficiently did this player convert the shots that count as field goal attempts?" and stops there. Anything that happens after a whistle is somebody else's problem.
The eFG% formula
The math is friendlier than True Shooting's. There's no possession estimate and no mysterious coefficient — just a half-point bonus for every made three:
Effective Field Goal %eFG% = (FGM + 0.5 × FG3M) / FGA
The 0.5 × FG3M term is doing all the work. A three counts as one made field goal in the numerator, plus half of one more, because it produced 50% extra points relative to a two. Divide by the same total field goal attempts you'd use for FG%, and a 40% three-point shooter and a 60% two-point shooter land at the same eFG% — which is correct, because they're scoring at the same rate per shot.
The difference is the foul line
True Shooting starts from the same instinct but goes one step further, pricing free throws into the denominator as fractional possessions (the full derivation lives in our True Shooting explainer). Because TS% adds the free-throw scoring that eFG% omits — and never subtracts anything eFG% already counts — the difference between the two is, almost entirely, a free-throw signal:
What the gap measuresTS% − eFG% ≈ the points a player adds at the free-throw line, per shooting possession
So the gap isn't noise. A big TS−eFG spread means a player draws a lot of fouls and converts them; a near-zero spread means they finish their scoring inside the field-goal attempt and rarely hear a whistle. Two players can post identical eFG% and end up a full efficiency tier apart on TS%, and the foul line is the entire explanation. League-wide this season, the average eFG% sits at 54.9% and the average TS% at 58.7% — that 3.8-point spread is the foul line's contribution to the typical player, baked into the baseline.
The free-throw merchants
The players with the widest gaps are the ones who turn contact into points. Bennedict Mathurin is the poster child this season: a thoroughly ordinary 48.5% eFG — below league average — that balloons into a 57.5% TS, a nine-point jump, almost all of it bought at the line on 6.2 attempts a night. James Harden, who has built an entire career out of this exact arbitrage, sits second. Look at how little these players' shotmaking and their scoring efficiency agree:
| Player | eFG% | TS% | FTA | Gap |
|---|---|---|---|---|
| Bennedict Mathurin | 48.5 | 57.5 | 6.2 | +9.0 |
| James Harden | 52.9 | 61.0 | 7.5 | +8.1 |
| Deni Avdija | 52.1 | 60.0 | 9.2 | +7.9 |
| Devin Booker | 50.7 | 58.5 | 8.1 | +7.8 |
| Keyonte George | 53.2 | 60.9 | 7.0 | +7.7 |
| Austin Reaves | 56.7 | 64.1 | 7.3 | +7.4 |
Read Mathurin's row through eFG% alone and you'd file him under "inefficient." Read it through TS% and he's a comfortably above-average scorer. Both numbers are correct; they're just measuring different things. The nine-point gap is his foul-drawing, expressed as efficiency. Note too that high-gap scorers tend to be high-usage shot creators — the players whose drives bend defenses and earn whistles — which is exactly why I read this alongside usage rate.
The live-ball finishers
At the other end are players whose eFG% and TS% are nearly the same number, because they almost never get to the line. These are the lob-catchers, the corner specialists, the play-finishers — they score within the field-goal attempt and barely register a free throw. Deandre Ayton converts at a monstrous 67.1% eFG, but on just 2.0 free-throw attempts a night his TS% only nudges up to 67.6%, a gap of half a point. Royce O'Neale, at 0.5 attempts, is functionally a spot-up shooter who's allergic to the foul line:
| Player | eFG% | TS% | FTA | Gap |
|---|---|---|---|---|
| Deandre Ayton | 67.1 | 67.6 | 2.0 | +0.5 |
| Royce O'Neale | 59.0 | 59.6 | 0.5 | +0.6 |
| Rui Hachimura | 61.1 | 62.0 | 1.1 | +0.9 |
| Bobby Portis | 57.8 | 58.7 | 1.0 | +0.9 |
| Dyson Daniels | 53.2 | 54.2 | 1.6 | +1.0 |
| Ace Bailey | 52.0 | 53.3 | 1.2 | +1.3 |
For this group, eFG% tells you almost everything TS% would. That's not a knock — Ayton's 67.6% TS is elite — it's just that his efficiency is built entirely on shot quality, not foul-drawing. When the two stats agree this closely, you can trust either one. It's the disagreements that carry the extra information.
How to actually use the pair
My rule of thumb is simple. Look at eFG% to judge pure shotmaking — how good are the shots this player takes, and how often do they go in. Then look at the TS−eFG gap to judge a completely separate skill — does this player generate cheap, high-value points at the line that the shot chart never shows. A scorer can be great at one and mediocre at the other, and the two-number combination tells you which kind of scorer you're actually watching.
And when you only have room for one stat, take TS%, because it sees everything eFG% sees plus the foul line. But keep eFG% around as the control group. The day a player's TS% jumps while their eFG% stays flat, you don't have to guess what changed. They started getting to the line, and the gap already told you so.
Sources & Further Reading
- Player efficiency data: NBA.com/stats, pulled via the nba_api Python package (2025-26, retrieved June 2026). The script is in
scripts/efg_vs_true_shooting.py. - Stat definitions and historical context: Basketball-Reference Glossary.