BitcoinDatabase.com

On-chain metrics · Bitcoin transaction volume data

Bitcoin transaction volume: on-chain volume data and API

Bitcoin transaction volume is the value moved on-chain over a period, and nearly every published figure counts far more than actually changed hands. We measured two blocks transaction by transaction to show how large the gap is.

or try it below ↓

REST API · SQL · dashboards · indexed from genesis

Query Console
btc
try:

Hit Run to query the fully-indexed Bitcoin blockchain.

BTC

30-day trend

informational on-chain data · not financial advice

REST API · SQL · dashboards, one indexed dataset. Querying the indexed Bitcoin blockchain ...

Block 963,402 was mined on 21 August 2026 at 06:32:47 UTC and holds 4,402 transactions. We fetched every one of them. Summed the usual way, as the value of every output in every non-coinbase transaction, that block moved 10,285.76 BTC. Then we removed the value that landed back on an address which had already funded the same transaction, which is change returning to its own wallet rather than a payment. What is left is 2,113.47 BTC. So 79.45 percent of the headline figure never left the sender, and 662 of the 4,401 spending transactions paid nobody at all: every satoshi in them came back to an address that had funded them.

One transaction shows the whole problem. The largest by headline value in that block, txid d83a5a18601bbdf47e78fd4cc3099a8d0a388e894142f18e8a8278c0848d1031, pulled 10 inputs from 10 distinct addresses and wrote two outputs. One paid 92,055 satoshis to an outside address. The other returned 941.57506923 BTC to bc1q6h274e67rdr7xpn2mr2ttnssjzx3rhlkug6m5q, which was itself one of the ten input addresses. The fee was 2,718 satoshis. That single transaction is 9.15 percent of everything the block is credited with moving, and the actual payment inside it was under a thousandth of a bitcoin.

The correction is not a fixed multiple, which is the part most write-ups get wrong. Block 962,547, which we measured on 15 August 2026, was 94.13 percent change and overstated by roughly 17 times. Block 963,402 was 79.45 percent change and overstated by 4.87 times. Same chain, same method, six days apart, and the ratio moved by more than three times. Anyone quoting one universal adjustment factor is quoting an average of something that swings block to block with whatever consolidations happened to land.

Averages mislead here for the same reason. In block 963,402 the mean transaction moved 2.3371 BTC while the median moved 0.009045 BTC, a gap of about 258 times, because a handful of enormous self-transfers drag the mean upward while the typical transaction is small. Fees behave the same way: mean fee 1,223 satoshis against a median of 636, and a mean fee rate of 5.22 sat per vByte against a median of 4.01.

BitcoinDatabase computes transaction volume on the fully-indexed chain and gives you every definition rather than one: raw output volume, volume with same-transaction change removed, entity-adjusted volume that also strips transfers between addresses believed to share an owner, and volume filtered to transactions that touch a labeled exchange or service. Pull a daily series over REST, rebuild the history since the 2009 genesis block in SQL, or drill from any single day down to the exact transactions that produced the number. This is informational on-chain data and analytics, not financial, investment or trading advice.

REST API SQL DASHBOARDS WEBHOOKS CSV EXPORT

Indexed from genesis queryable in seconds

On-chain data not financial advice

Why it works

What you get with Bitcoin transaction volume data

Raw and adjusted, side by side

Read raw output volume next to volume with same-transaction change removed and next to entity-adjusted volume that also strips transfers between addresses believed to share an owner. When a series jumps you can see which definition moved and by how much, rather than guessing at a vendor methodology you are not shown.

Every figure traces to its transactions

Any daily total drills down to the exact transactions behind it, so a spike can be audited instead of trusted. When one consolidation sweep or one exchange batch is most of a day, you open it and read the inputs and outputs yourself.

Joined to flows, fees and price

Volume, exchange labels, fees and the price series sit in one schema, so you can value a day of settled volume in dollars, split it by whether it touched an exchange, or line it up against fees paid in the same SQL query instead of reconciling three feeds.

Side by side

Two blocks, measured transaction by transaction

Every transaction in both blocks was fetched and counted first-hand, block 962,547 on 15 August 2026 and block 963,402 on 21 August 2026. The same arithmetic was applied to each. The point of showing two is that the correction is not a constant.

What you measure Definition applied Block 962,547 Block 963,402
Transactions in the block Every transaction the block contains, coinbase included 6,054 4,402
Raw output volume The value of every output in every non-coinbase transaction 3,225.69 BTC 10,285.76 BTC
Volume that left the sender Only output value reaching an address that did not fund that same transaction 189.37 BTC 2,113.47 BTC
Share that was change or self-payment Raw volume returning to an address already on the input side 94.13% 79.45%
Overstatement multiple Raw output volume divided by volume that left the sender 17.03x 4.87x
Largest single transaction Its share of that block's entire raw output volume 76.28% 9.15%

Both columns are correct arithmetic on the same public data, and the two blocks disagree by more than three times on how much correction is needed. That is the finding. Change detection inside a single transaction is also a floor rather than a ceiling, because it cannot catch a wallet paying itself across two separate transactions, so the real share that never changed hands is higher than either column shows.

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 daily, weekly and monthly on-chain volume series
  • Read change-adjusted volume next to the raw figure
  • Compute entity-adjusted volume using address clustering
  • Rebuild the full history since the 2009 genesis block
  • Split volume by transactions that touch a labeled exchange
  • Separate median transaction size from the mean
  • Drill from any day to the exact transactions behind it
  • Join volume to fees, exchange flows and price in SQL
GET /v1/address/{addr} query result
200 · JSON
{
  "address": "bc1qxy2k…l0wdv8",
  "balance_btc": 68432.10,
  "balance_usd": 4612165420,
  "tx_count": 1284,
  "unspent_outputs": 37,
  "first_seen": "2014-02-09"
}
indexed from genesis · to the satoshi ✓ reconciled block-by-block

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 Bitcoin transaction volume data

It is the total value moved on the Bitcoin blockchain over a chosen period, usually reported per day. The standard calculation sums the outputs of every transaction in the window. That figure is a measure of value written to the ledger rather than value that changed hands, and the two are very far apart.
Take every non-coinbase transaction in the window and add up the value of its outputs. Adjusted versions then subtract value that came back to the sender. The simplest adjustment drops outputs paying an address that already funded the same transaction; stronger versions use address clustering to also drop transfers between addresses believed to share one owner.
They measure different things entirely. Exchange volume counts trades matched in an order book, most of which never touch the blockchain, since balances just move between database rows. On-chain volume counts coins moving between addresses, including custody rotations and change that involve no trade at all. Neither is a substitute for the other.
In most published series, yes, and that is why the numbers run high. Bitcoin spends whole outputs, so paying part of a balance sends the remainder to a change address the sender controls, and a naive sum counts that remainder as volume. In block 963,402 change and self-payments were 79.45 percent of the raw total.
Adjusted volume is on-chain volume with value that never left the sender removed. At minimum that means dropping outputs returning to an address that funded the same transaction. Entity-adjusted volume goes further and drops transfers between separate addresses that clustering suggests share an owner, which catches self-payments split across transactions.
The average is a poor guide here because the distribution is extremely skewed. In block 963,402 the mean transaction moved 2.3371 BTC while the median moved 0.009045 BTC, a gap of roughly 258 times. A few very large self-transfers pull the mean up, so the median describes a typical transaction far better.
Easily, and it happens constantly. One transaction in block 963,402 accounted for 9.15 percent of the block's entire reported volume while actually paying 92,055 satoshis to an outside address and returning 941.57506923 BTC to one of its own input addresses. At a daily scale a single large custody rotation can move the headline by percentage points.
Because each one picks a different, defensible definition on identical chain data and rarely publishes which. Whether change is removed, whether clustering is applied, whether coinbase outputs count and whether the value is priced at the daily close all change the answer. We measured two blocks and got corrections of 17.03x and 4.87x from the same method.
Any single figure you have seen is one definition among several, and the honest answer is a range. Raw output volume runs several times higher than the value that actually changed hands, and the multiple between them is not stable: two blocks measured six days apart needed corrections of 17.03x and 4.87x respectively.
BitcoinDatabase does not answer that and treats it as outside what the data can settle. On-chain volume moves with consolidation waves, custody migrations, exchange batching and wallet design as much as with demand, and the raw series is dominated by change. This is informational data, not investment or trading advice.

Explore more

More ways to query Bitcoin with BitcoinDatabase

Stop 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.

See pricing

Indexed from genesis · REST · SQL · dashboards · addresses, transactions, UTXOs, metrics