Is staked or locked BNB burned? How to count it in total supply
No. Staked BNB, BNB waiting out an unbonding period and BNB held in a cross-chain contract all have a coded path back to an ordinary address. Burned BNB sits at an address with no key and no exit. Only the burned part comes off total supply; the rest can be flagged as not immediately spendable.
- Staked
- Undelegate, claim after 7 days
- TokenHub
- Released through the recovery flow
- Burn address
- No key, no outgoing path
The first two stay in total supply. Only the last one is deducted.
On this page
- Locked or burned BNB: the one question that decides it
- Where staked BNB sits on BSC: one StakeCredit contract per validator
- The 7-day unbonding window: why the contracts hold 948,000 BNB more than the stake
- About 26 million BNB in TokenHub: a retired bridge with a recovery path
- Worked example: subtract staking as if it were burned
- Should circulating supply exclude staked BNB? It depends on the data site
- Classifying an address that holds a lot of BNB: four steps
Look up a few system contracts on BSC and the BNB balances are large. The validator staking contracts hold roughly 25 million BNB between them. An old cross-chain contract called TokenHub holds a little under 26 million more. Together that is over a third of the official remaining supply, and it is tempting to treat it as "out of circulation" and subtract it.
That subtraction is wrong. None of this BNB has been burned. Staked BNB can be undelegated and claimed, and TokenHub has a recovery path written into its code. Total supply only drops when BNB can never move again. The sections below give the contract evidence for each case, the queries you can rerun, and how far off the numbers go if you get it wrong.
Locked or burned BNB: the one question that decides it
On a block explorer, locking and burning look alike. In both cases BNB moves from an ordinary address into a special one. What matters is what that special address can do next.
The burn address 0x000000000000000000000000000000000000dEaD is not a contract and nobody holds its private key, so nothing can leave it. The 36th quarterly burn announcement says that since BNB Chain Fusion the quarterly burn is a transfer to this address. What a burn address can and cannot prove is covered in a separate guide.
A locking contract is different. Its code contains a function that sends the BNB out once a condition is met: a waiting period, a proof, a governance decision. If that path exists, the balance is parked, not gone. Search the source or the official docs for withdraw, claim or unlock functions. That tells you more than the label on the address.
Where staked BNB sits on BSC: one StakeCredit contract per validator
BNB Chain's staking overview describes Stake Hub as the entry point and gives each validator its own contract for staking credit. The credit is named "stake {moniker} credit" with the symbol "st{moniker}". It is minted when you delegate and burned when you withdraw. That burn applies to the credit token, not to BNB.
The overview does not say where the BNB itself ends up, so read the code. In StakeHub.sol, delegate forwards the BNB you send straight to that validator's StakeCredit contract. StakeCredit.sol adds it to totalPooledBNB. Staked BNB is therefore the native balance of the StakeCredit contracts.
A few parameters can be read from StakeHub at 0x0000000000000000000000000000000000002002. At BSC block 127,953,465 (16 October 2026, 09:21 UTC):
unbondPeriod()returned 604,800 seconds, i.e. 7 days, matching the unbonding period in the official user guide;minDelegationBNBChange()returned 1 BNB, the smallest delegation the contract accepts;getValidators(0, 200)listed 56 registered validators and their StakeCredit addresses.
Summing eth_getBalance for those 56 addresses at that block gives about 25,096,338.96 BNB. The sum of their totalPooledBNB() values at the same block is about 24,148,377.93 BNB. Treat both as a single-block sample; the next block will differ.
The 7-day unbonding window: why the contracts hold 948,000 BNB more than the stake
The gap between those two figures is about 947,961.03 BNB. In StakeCredit, undelegating cuts totalPooledBNB at once and records an unbond request with an unlockTime. The BNB itself stays in the contract until the delegator calls claim. Requests that passed the 7 days but were never claimed are still sitting there too.
That BNB is in between. It no longer counts as staked and earns nothing, yet it has not reached the delegator's address. It has not left total supply either. Use totalPooledBNB if the question is "how much is staked"; use the contract balance if it is "how much is parked in staking contracts". They answer different questions.
totalPooledBNB also includes rewards already credited to the pool, so it is not purely the principal people deposited.
About 26 million BNB in TokenHub: a retired bridge with a recovery path
TokenHub is a BSC system contract at 0x0000000000000000000000000000000000001004. When BNB Beacon Chain was still running, BNB moving between the two chains went through it on the BSC side. At BSC block 127,953,698 (16 October 2026, 09:22 UTC) its native balance was about 25,968,558.55 BNB.
This balance can move as well. In TokenRecoverPortal.sol, recover calls TokenHub's recoverBCAsset; the code comment and the constant LOCK_PERIOD_FOR_TOKEN_RECOVER both put the unlock at 7 days. TokenHub's withdrawUnlockedToken then pays the released asset to the recipient.
How much of the 25.97 million will eventually be recovered and how much will never be claimed has not been published by BNB Chain, and this guide does not guess. What is certain: it is not at the burn address, and the contract has an exit. It stays in total supply. In a distribution record it gets its own line, "locked in TokenHub".
Worked example: subtract staking as if it were burned
Suppose you use total supply as a denominator, say for "burned BNB per BNB outstanding". The latest official figure, published after the 36th burn, is 133,166,127.91 BNB.
- Correct: the denominator is 133,166,127.91. Staked and locked balances are left alone.
- Wrong: subtract the staking contract balance from the same day, 25,096,338.96, and you get 108,069,788.95. The denominator is about 18.8% too small, and every ratio built on it is inflated to match.
- Subtract TokenHub's 25,968,558.55 too and you are left with just over 82 million. The error passes one third.
Note the timing mismatch as well. These balances come from blocks on 16 October; the official total dates from the 15 July announcement. Supply on chain does not sit still between announcements: BEP-95 sends part of the gas fees in every block to the burn address. Reading burnRatio() on BSCValidatorSet the same day returned 1,000, which against the contract's 10,000 scale is 10%. If you compare the figures anyway, write down the date behind each one.
Should circulating supply exclude staked BNB? It depends on the data site
Total supply and circulating supply are separate measures. Total supply only removes burned coins. Circulating supply is defined by each data provider, and some exclude locked, staked or reserved tokens while others do not. BNB Chain's quarterly burn posts report total supply, not circulating supply.
So when two sites show different circulating figures for BNB, open each site's methodology page and see how it treats staked tokens before comparing. If you want your own "spendable now" figure, add sub-lines under the total, such as staked, unbonding and not yet claimed, and locked in TokenHub, each with its block number. Leave the total line as it is.
Classifying an address that holds a lot of BNB: four steps
- Is it an address like
0x…dEaD, with no key and no code? Then it is burned and comes off total supply. Both the quarterly burn and BEP-95 use this address. - Is it a contract? Find the source or official docs and look for withdraw, claim or unlock functions. If they exist, it is locked and stays in.
- For a lock, write down the release condition: how long, what proof, who can trigger it. Staking has a 7-day unbonding period; TokenHub recovery has a 7-day lock.
- Record the block number and UTC time of your query. Lock balances change every block, and a figure without a block number cannot be checked.
Exchange hot and cold wallets are ordinary addresses with private keys. They are neither burned nor locked in the sense used here, and they count in total supply like any other address. BNB held in the bridge contract when it moves to opBNB follows the same test, with the specific contracts and figures in the opBNB guide. For how total supply changed across quarterly burns, see the burn archive.