How Capmath works

Methodology

Capmath turns the NBA salary cap into a plain-English answer that shows its work. This page is the work: where every number comes from, how it's built, what's a live figure versus a projection, and what we deliberately do not claim.

Last reviewed 2026-06-16. The numbers themselves recompute continuously; see Freshness below.


One engine, every page

Every cap figure on Capmath, on a team page, an answer page, the league hub, or in the Ask the Cap chat, is produced by a single computation engine. No number is typed in by hand or remembered from an article. The team page and the answer page for the same team read from the same engine output, so they cannot disagree.

That is the point. When two cap sites differ, it is usually because their figures were entered separately. Capmath has one source of truth, so the only thing left to explain is how the engine got there, which is what the rest of this page does.


Where the numbers come from

Contract salaries come from a licensed sports-data provider and are stored as the base layer. On top of that sits a hand-maintained overlay for the things the contract feed does not carry: player and team options, free-agent cap holds, dead money, the league threshold lines, and the rookie salary scale. The engine reads the two together as one roster.

The full list of inputs, and what is sourced versus maintained by hand, lives on the sources page.


Payroll, cap room, tax, and aprons are different numbers

This is the thing fans get wrong, so the engine keeps them strictly separate. A team's payroll is the salary on its books right now: active contracts plus dead money. That is what most people mean by what a team pays, and it is the basis for the luxury tax and both aprons.

Cap room is a different number. It is payroll plus the team's own cap holds, which are placeholder charges for its own free agents and unsigned draft picks. Holds count against the cap only, never the tax or the aprons. Because of holds, most teams sit under the cap on payroll yet have no usable cap room. We lead with payroll and treat holds as the reason usable room differs, never as a headline that a team is broke.

So the engine computes three separate team-salary figures for each season:

Cap salary = active contracts + dead money + free-agent holds + draft-pick holds + incomplete-roster charge. Measured against the salary cap.
Tax salary = active contracts + dead money. Measured against the luxury-tax line.
Apron salary = active contracts + dead money + unlikely incentives. Measured against the first and second aprons.


How cap holds are estimated

A cap hold is the placeholder a team carries for one of its own free agents until that player re-signs, signs elsewhere, or is renounced. The size depends on the player's Bird bracket, a percentage of his previous salary set by the CBA: Non-Bird 120%, Early Bird 130%, and full Bird at 150%, 190%, 250%, or 300% depending on salary level. A minimum-salary free agent carries a flat minimum hold instead.

Each hold is the bracket percentage times the player's prior salary, then bounded below by the minimum hold and above by 35% of the cap, and rounded to the nearest dollar before anything is summed. Holds are genuine estimates: the prior-salary input and the bracket can be read differently by different sources, which is one reason reputable cap sites legitimately disagree. We show the bracket and the inputs so you can see exactly how each hold was built.


How draft-pick holds are computed

An unsigned first-round pick carries a cap hold equal to 120% of its rookie-scale first-year salary, scaled to the current cap. In formula terms: the pick's rookie-scale amount, times the current cap divided by the cap the scale was set against, times 1.20, rounded to the nearest dollar. Second-round picks carry no hold.


How exceptions and apron status are determined

A team's status is the first line its salary clears: cap room if cap salary is under the cap, otherwise over the cap, then taxpayer, then first apron, then second apron, each measured against the matching figure above. The status then decides which tools are available, because the CBA ties them to it. A room team gets the room mid-level. An over-the-cap or taxpaying team gets the full non-taxpayer mid-level and the bi-annual exception. A first-apron team is limited to the taxpayer mid-level. A second-apron team has no mid-level of any kind and can only re-sign its own players with Bird rights and add veteran minimums. The engine never offers a tool a team's status forbids.

Every term here is defined in plain English in the CBA glossary, and every line is live on each team's cap sheet.


What's live versus projected

The current focus season is 2026-27. Cap sheets also look ahead several seasons so you can see where a team is heading. The further out the season, the softer the inputs, so every figure carries a tag:

Official: the league has announced the threshold lines for that season.
Projected: the lines are the league's or a reasonable projection, not yet final.
Estimate: a season far enough out that the lines are derived, not announced.

Projected and estimated figures are labeled as such wherever they appear, including in the chat. Contracts themselves get less certain in later years too, as options, partial guarantees, and non-guarantees come into play.


What we don't claim

The NBA does not publish official team cap figures. What you see here is a careful reconstruction from contract data and CBA rules, not the league's internal numbers. Cap holds and projected lines are estimates, and reasonable sources differ on them.

So we do not market our numbers as accurate to the dollar or as official. We promise something more useful: every figure is built the same way every time, from a stated input, by a rule you can read. When we are not sure, we say so. If a number here is wrong, we want to fix it, see corrections below.


Freshness

The pages are recomputed on a short interval rather than frozen at build time, so when the underlying contract data or a threshold line changes, the cap sheets follow without a manual republish. Threshold lines are updated as the league announces them, which moves a season's tag from projected toward official. This methodology page is reviewed by hand; the date at the top is when the prose was last checked, not when the data last moved.


Corrections

If something looks off, tell us and we will check it against the engine and fix the input if it is wrong. How to report an issue and how we handle it is on the corrections page.

See it live: pick any team and tap the numbers on its cap sheet to see how each one was built.