Two rules, one consequence
Start with two features of Bitcoin's mainnet subsidy schedule:
Rule one. New coins enter the world only as a reward to whoever adds the next block of transactions to the chain. There is no other spigot. Nobody — not a company, not a foundation, not the software's creator — can mint a coin any other way.
Rule two. That reward started at 50 BTC per block, and it is cut in half every 210,000 blocks. This is the famous halving.
Those parameters explain the geometric-series ceiling. Whole-satoshi truncation and the zero-subsidy cutoff complete the finite schedule; separate validation checks also constrain monetary amounts.
The arithmetic
Each era of 210,000 blocks has a scheduled subsidy ceiling. The early eras below halve exactly; later eras require whole-satoshi truncation. These are maximum scheduled amounts, not measured issuance:
Notice what's happening: every era contributes half as much as the last. Add up a quantity, then half of it, then half of that, and so on forever, and you approach — but never quite reach — exactly double the first quantity. This is a geometric series, the same one you may have met in school as ½ + ¼ + ⅛ + … = 1.
The first era has a scheduled ceiling of 10.5 million coins, including the genesis schedule. Doubling it gives the ideal geometric-series limit. This derivation does not mean the number is absent from the software: Bitcoin Core v29.0 amount.h explicitly defines MAX_MONEY = 21000000 * COIN. Its comment describes this as a consensus-critical amount sanity check, not the total money supply. The MoneyRange helper checks that an amount is nonnegative and no greater than this constant; the subsidy schedule determines the per-block subsidy ceiling.
The subsidy schedule explains the ceiling; MAX_MONEY separately checks the range of monetary amounts.
"Approach but never reach"
Two practical wrinkles make the real ceiling slightly lower than the clean 21 million:
First, the protocol counts in whole satoshis — hundred-millionths of a bitcoin — and it rounds down. When the halving eventually cuts the reward below one satoshi (after 33 halvings, around the year 2140), the reward becomes zero and issuance simply stops. Summing the 33 nonzero eras in whole satoshis gives a scheduled ceiling of 20,999,999.97690000 BTC, including the genesis schedule. This is not actual issued or spendable supply.
Second, the schedule is a maximum, not a requirement to claim every satoshi. Bitcoin Core rejects a coinbase paying more than fees plus the allowed subsidy; it does not require equality. Separately, Core skips connecting the genesis block's transactions, so its 50 BTC output is not spendable. Unclaimed subsidy and the unspendable genesis output are distinct from later lost private keys; this calculation measures none of those deductions.
Check the integer arithmetic in Bitcoin Core v29.0 GetBlockSubsidy and ConnectBlock, with the 210,000-block mainnet interval. Our reproducible subsidy schedule, CSV and Python exercise sum every nonzero era without assuming future calendar dates.
A reproducible height example, not a supply snapshot
At example height 964,157, count heights inclusively from zero. The first four complete eras allow 19,687,500 BTC in scheduled subsidy. Era 5 starts at height 840,000, so this example includes 964,157 - 840,000 + 1 = 124,158 heights at 3.125 BTC each:
That is the scheduled subsidy ceiling through the example height, including genesis — not measured actual issuance, circulating supply or spendable supply. It assumes every allowed subsidy is counted; it does not subtract underclaims, the unspendable genesis output or later losses, and it does not add transaction fees.
Why a cap at all?
Every currency in history has answered one question differently: who decides how much money there is? For national currencies, the answer is a central bank — a committee that can, and routinely does, change the supply in response to conditions. Whatever you think of that arrangement, it requires trusting the committee.
Bitcoin's designer replaced the committee with a schedule. The supply curve was published in advance, in full, forever — the subsidy ceiling at each block height, including the 6,930,000 heights with a nonzero scheduled subsidy. Transaction fees can still reward miners after the subsidy ends; neither fees nor underclaimed subsidy are measured by this schedule.
The point of the cap, then, is not the number itself. Twenty-one million is arbitrary — it could have been twelve, or a billion. The point is that the number is fixed and checkable. Anyone can run a node to validate the subsidy limits; measuring actual issuance or spendable outputs requires chain data and is not the same as adding up the schedule. Scarcity you can audit, rather than scarcity you are assured of.
Could it be changed?
Here is the question every newcomer eventually asks: software is just code, and code can be edited — so what stops someone from raising the cap?
Nothing stops them from writing the change. What stops the change from mattering is that Bitcoin's rules are enforced by every participant independently. Each of the tens of thousands of nodes checks every block against its own copy of the rules. A block that pays out more than the schedule allows is simply rejected — not by a vote, but automatically, by every unmodified node on the network.
To raise the cap, you would need to convince the overwhelming majority of node operators, miners, exchanges, and holders to voluntarily adopt the new rules. And here the incentives lock the door: the people you'd need to convince are precisely the people whose holdings would be diluted by the change. A modified version can always exist — as a separate network, with its own (historically much smaller) following. The 21 million version keeps running for everyone who declines to switch.
The cap holds, in other words, not because it is hard to edit a number in a file, but because a monetary rule that thousands of parties enforce independently — against their own dilution — is a very different thing from a rule that one party promises to follow.
In Satoshi's own words
The rules above explain how the supply ceiling follows from the schedule. They do not explain why its parameters were selected. The starting subsidy of 50 BTC and the mainnet halving interval of 210,000 blocks are separate inputs; the interval is not derived from the starting subsidy. In a private email to early Bitcoin developer Mike Hearn, dated April 12, 2009, Nakamoto discussed his choice of coin count and distribution schedule:
"My choice for the number of coins and distribution schedule was an educated guess. It was a difficult choice, because once the network is going it's locked in and we're stuck with it. I wanted to pick something that would make prices similar to existing currencies, but without knowing the future, that's very hard. I ended up picking something in the middle. If Bitcoin remains a small niche, it'll be worth less per unit than existing currencies. If you imagine it being used for some fraction of world commerce, then there's only going to be 21 million coins for the whole world, so it would be worth much more per unit. Values are 64-bit integers with 8 decimal places, so 1 coin is represented internally as 100000000. There's plenty of granularity if typical prices become small. For example, if 0.001 is worth 1 Euro, then it might be easier to change where the decimal point is displayed, so if you had 1 Bitcoin it's now displayed as 1000, and 0.001 is displayed as 1."
— Satoshi Nakamoto, email to Mike Hearn, April 12, 2009. Released publicly in 2017; Hearn confirmed its authenticity directly to Motherboard/Vice.
Keep the explanation separate from the arithmetic: the idealized geometric-series ceiling is 50 × 210,000 × 2 = 21,000,000 BTC. Both the starting subsidy and the interval enter that calculation. Bitcoin Core v29.0 defines the starting subsidy and height-based halving calculation separately from the mainnet interval. Whole-satoshi truncation produces the slightly smaller finite scheduled ceiling explained above. The quoted email does not say that the starting reward was the only choice. Its discussion of display units also connects to why the satoshi, not the bitcoin, is the practical unit.
What the number means in practice
Divide the world's population — call it eight billion people — into 21 million coins and you get about 0.0026 BTC per person, roughly 262,000 satoshis, if it were ever spread evenly (it won't be, but the arithmetic frames the scale). There will never be enough whole bitcoins for even one percent of humanity to own one — which is exactly why the satoshi, not the bitcoin, is the practical unit.
For now, the takeaway is this: Bitcoin's current consensus rules define a checkable subsidy ceiling, not a guarantee of actual issuance. The geometric series explains the idealized limit; whole-satoshi truncation gives the finite schedule. Miners may claim less than the permitted subsidy, so adding scheduled rewards cannot prove an uninterrupted history of full payouts. Bitcoin Core v29.0 checks the coinbase against a maximum of fees plus subsidy, not a requirement to pay that maximum. Verifying actual issuance requires examining the chain; judging the value of the cap is a separate question.