Research and analytics · Mining pool data
Bitcoin mining pool data: distribution, dominance and block share
Bitcoin mining pool data answers which pool mined a given block, and how blocks are divided between pools. Both answers are guesses: there is no pool field in the Bitcoin protocol and no signature proving who mined anything.
REST API · SQL · dashboards · indexed from genesis
Hit Run to query the fully-indexed Bitcoin blockchain.
BTC
30-day trend
informational on-chain data · not financial advice
Every pool chart you have ever seen was produced by one of two heuristics: reading a human-written text tag the miner chose to put in the coinbase transaction, or matching the address the block reward was paid to against a community-maintained list. Neither is authenticated, and neither is complete. We ran both methods against the same blocks rather than trusting either. Blocks 964,586 through 964,729, 144 consecutive blocks mined between 29 August 2026 at 14:55:43 UTC and 30 August 2026 at 12:29:49 UTC, were fetched one at a time and every coinbase transaction decoded first-hand. The coinbase tag resolved 139 of the 144, or 96.53 percent. The payout address list resolved 119, or 82.64 percent. Running both together resolved all 144. Neither method on its own can tell you who mined the last day of Bitcoin, and the gap between them is not a rounding error.
The clearest failure comes down to one capital letter. SecPool mined 10 of those 144 blocks. In five of them the coinbase carried the text Mined by SecPool, and in the other five it carried Mined by Secpool with a lowercase p. The public registry that most dashboards read holds the tag SecPool, so a case-sensitive match finds five blocks and silently drops the rest. SecPool is therefore 3.47 percent of that window by tag and 6.94 percent by payout address. The share of one pool doubles depending on which method your data provider happened to implement, from the same 144 blocks, with no error raised anywhere.
Address matching fails differently, and worse. F2Pool, MARA Pool, NiceHash and Ocean.xyz mined 26 blocks between them, 18.06 percent of the window, and the payout address list identified none of them, because the addresses they actually paid that day are not in it. Ocean.xyz is the instructive case. It settles to miners directly instead of through a pool wallet, so its coinbase transactions in this window carried 17, 17, 42 and 54 separate payout outputs. In block 964,647 one of those 42 miner addresses is registered in the list to a different pool, so address matching did not return unknown for that block. It returned the wrong pool. A blank is visible in your output. A confident wrong label is not.
Treat any single-day pool share as noisy, including ours. This window puts Foundry USA at 27.08 percent and AntPool at 22.22 percent, together 49.31 percent of blocks, which sits close to the roughly 49 percent commonly reported for those two. It also puts F2Pool at 7.64 percent against seven-day averages nearer 15 percent published elsewhere in the same week. That is not a contradiction, it is sample size: 144 blocks is 144 draws from a random process, and block finding is memoryless. Pool share needs a window measured in weeks before it carries meaning, and a daily figure quoted to one decimal place claims more precision than the data supports.
BitcoinDatabase indexes every block and every coinbase transaction, so you get the height and timestamp, the transaction count, and the payout addresses with the exact satoshi amounts the reward was split across. What we deliberately do not ship is the pool name. Attribution is a join, the mapping behind it is a judgment call, and the numbers above show that whose mapping you use changes the answer. Bring your own tag list or address registry, join it in SQL over any block range back to the 2009 genesis block, and keep the exact arithmetic separate from the inferred label. This is informational on-chain data and analytics, not financial, investment or trading advice.
Indexed from genesis queryable in seconds
On-chain data not financial advice
Why it works
What you get with Mining pool data
The reward is exact, the pool name is inference
How much a block paid, to which addresses, at which second, is arithmetic anyone can recompute and nobody can dispute. Which pool that was is a string a miner typed, matched against a list volunteers maintain. Keeping those two things in separate columns is the difference between a research result you can defend and a chart you have to take on trust.
Own the mapping, because the mapping is the answer
A pool distribution chart is a join, and the join key is somebody judgment call. Swap the registry, add case-insensitive matching, or include a pool second payout address, and the percentages move. Pull the coinbase data raw and apply your own mapping so that when a number changes you know whether the chain moved or your dictionary did.
One day of blocks is not a hashrate share
Block discovery is memoryless, so a 144 block window is a small sample of a random process. Our reading puts F2Pool at 7.64 percent while seven-day averages published the same week sit near 15 percent, and both are honest. If you need a share figure that holds up, widen the window to weeks and report it with the sample size attached.
Side by side
Two attribution methods, the same 144 blocks, two different answers
Blocks 964,586 to 964,729 were fetched one at a time on 30 August 2026 and every coinbase transaction decoded first-hand. Method 1 matches known coinbase tags against the ASCII text in the coinbase scriptSig. Method 2 matches the coinbase payout addresses against the known payout address list. Both columns read the same public bitcoin-data mining pool registry, so the difference is the method and not the source. Block 964,660 was cross-checked against mempool.space and the transaction count agreed exactly.
| Mining pool | Blocks found by coinbase tag | Blocks found by payout address | Where the difference comes from |
|---|---|---|---|
| Foundry USA | 39 blocks, 27.08 percent | 39 blocks, 27.08 percent | Both methods agree on every block |
| AntPool | 32 blocks, 22.22 percent | 32 blocks, 22.22 percent | Both methods agree on every block |
| ViaBTC | 14 blocks, 9.72 percent | 14 blocks, 9.72 percent | Both methods agree on every block |
| SpiderPool | 11 blocks, 7.64 percent | 11 blocks, 7.64 percent | Both methods agree on every block |
| F2Pool | 11 blocks, 7.64 percent | 0 blocks | The addresses it paid that day are not in the list |
| MARA Pool | 8 blocks, 5.56 percent | 0 blocks | The addresses it paid that day are not in the list |
| SecPool | 5 blocks, 3.47 percent | 10 blocks, 6.94 percent | Five blocks spelled the tag Secpool, not SecPool |
| Ocean.xyz | 4 blocks, 2.78 percent | 0 blocks, and 1 wrong name | Pays miners direct, so a miner address matched another pool |
| All 144 blocks | 139 resolved, 96.53 percent | 119 resolved, 82.64 percent | 144 resolved, 100 percent, only when both are used |
Two more numbers from the same window, computed rather than quoted. The 144 coinbase transactions paid out 451.97751503 BTC in total. At the current subsidy of 3.125 BTC per block that is exactly 450 BTC of new issuance and 1.97751503 BTC of transaction fees, so fees were 0.438 percent of miner revenue across the window. The shape of the coinbase output is what breaks address matching, and it is visible in the data: 77 of the 144 blocks paid a single address, 63 paid two, and four blocks paid 17, 17, 42 and 54 addresses. All four of those are Ocean.xyz settling to miners directly. Concentration over the window: the top two pools took 49.31 percent of blocks and the top four took 66.67 percent, spread across 13 distinct pools in total. Note also that not one of the 144 coinbase scriptSigs was empty of readable ASCII, so a missing tag was never the reason a block went unresolved. The reason was always that the tag written did not match the tag on file.
What it handles
The indexed Bitcoin chain, queryable your way
Look up an address, a transaction, a UTXO, the rich list or an on-chain metric, by REST API, SQL or dashboard. The same authoritative data, reconciled block-by-block against the canonical chain, without running a node.
- Pull every coinbase transaction with its payout addresses and exact amounts
- Compute pool block share across any block range you choose
- Join your own coinbase tag or payout address registry in SQL
- Split miner revenue into block subsidy and transaction fees per block
- See how many addresses each pool splits its coinbase across
- Follow coins from a coinbase output to wherever they move next
- Rebuild mining distribution history back to the 2009 genesis block
- Compare a one-day reading against a multi-week window before quoting it
{
"address": "bc1qxy2k…l0wdv8",
"balance_btc": 68432.10,
"balance_usd": 4612165420,
"tx_count": 1284,
"unspent_outputs": 37,
"first_seen": "2014-02-09"
}
Why BitcoinDatabase
One platform, queryable three ways
Not a raw node to sync, not an indexer to build, and not five vendors to stitch together. The fully-indexed Bitcoin blockchain, available as a REST API, as SQL, and as dashboards, on one authoritative dataset.
REST API
Typed JSON for addresses, transactions, balances, UTXOs and metrics. Drop it into apps, wallets, explorers and agents with curl, Python or any HTTP client.
SQL access
Run SQL directly against the indexed Bitcoin dataset for ad-hoc analysis, cohorts and exports, the same data the API and dashboards read from.
Compliance-first
Informational on-chain data and analytics only. Entity labels and flow tracing are framed as tooling to support a regulated team's own review, not accusations.
Good questions
Questions about Mining pool data
Explore more
More ways to query Bitcoin with BitcoinDatabase
Bitcoin block explorer API
Power an explorer with blocks, transactions and addresses, no node to maintain.
Learn moreQuery the Bitcoin blockchain with SQL
Write plain SQL against the whole indexed chain, no node, no ETL.
Learn moreBitcoin Network Stats API
Query hashrate, difficulty, block times and network health from the indexed chain.
Learn moreBitcoin blockchain dataset
The whole chain as a queryable dataset: blocks, transactions, inputs, outputs and addresses.
Learn moreOn-chain metrics
Active addresses, realized cap, SOPR, HODL waves and exchange flows.
Learn moreBitcoin address labels
Attach exchange, miner and service labels to addresses, so raw hashes read as entities.
Learn moreStop running a node. Just query Bitcoin.
Run your first query now and get on-chain data back by REST API, SQL or dashboard, indexed from the genesis block. Informational on-chain data only, not financial advice.
Indexed from genesis · REST · SQL · dashboards · addresses, transactions, UTXOs, metrics