# Weight units and vbytes

Three ways to size a Bitcoin transaction (raw bytes, weight units and vbytes), the exact formulas, and why BTI's books count raw bytes.

URL: https://blockspace.wiki/concepts/weight-units-and-vbytes/

A Bitcoin transaction has three sizes. Its [raw bytes](https://blockspace.wiki/glossary/raw-bytes/) are its full serialized length. Its weight, in [weight units](https://blockspace.wiki/glossary/weight-unit/) (WU), is what the block limit counts. Its virtual size, in [vbytes](https://blockspace.wiki/glossary/vbytes/) (vB), is what fee markets price. This page gives the formulas from block.space's data-types reference and says which one [BTI](https://blockspace.wiki/glossary/bti/) uses where.

## The formulas

The data-types reference (citing BIP 141) gives:

```
stripped_size = serialized size without marker/flag/witness   (bytes)
total_size    = full serialized size                          (bytes)  ← BTI's "raw bytes"
weight        = stripped_size * 3 + total_size                (WU)
vsize         = ceil(weight / 4)                              (vbytes)
```

Put another way, every non-witness byte costs 4 WU and every byte on the [witness](https://blockspace.wiki/glossary/witness/) side, including the marker, flag and every length prefix, costs 1 WU. A legacy transaction with no witness has `weight = 4 × size` exactly, so its vsize equals its size.

The reference also gives two exact inversions, used to recover the witness share of a transaction from the figures bitcoind reports:

```
stripped_size = (weight − total_size) / 3
witness_bytes = total_size − stripped_size = (4·total_size − weight) / 3
```

## The block limit

The consensus block limit is 4,000,000 WU. Blockspace Value Theory (§3.1) works through what that allows: a block made almost entirely of witness data approaches 4 MB, while the vbyte capacity of a block is 1,000,000 vB (BVT's worked example in §3.6). BVT calls 4 MB × 144 blocks a day × 365 days ≈ 210 GB a year a ceiling, "not a schedule": the most that could be consumed if every block were filled to the weight limit with maximally discounted data, which has never been sustained.

BVT also notes the limit is a social variable: the 4M weight limit is where the community currently believes the decentralization constraint binds, "revisable in either direction".

## Two worked transactions

From the BTI case studies (2026-08-10), with the case studies' own check that `base × 3 + size = weight`:

| transaction | size (bytes) | weight (WU) | vsize (vB) |
|---|---|---|---|
| the first BRC-20 mint, block 779,833 | 338 | 620 | 155 |
| a 3.9 MB jpeg inscription reveal, block 960,962 | 3,911,459 | 3,911,741 | 977,936 |

The jpeg reveal is almost entirely witness: its file is "nearly a full block", in the case study's words. The case study puts its bytes-to-vbytes ratio, commit included, at about 4.00.

## Which one BTI counts

BTI's design states the rule: **raw bytes are the measure; vbytes are an observable**. The books apply no weight discounting to backing. But the design keeps both measures on every row, because the ratio of bytes to vbytes is the [witness discount](/concepts/witness-discount/), and that is worth measuring in its own right. The data-types reference opens with the same rule: "raw serialized bytes, no weight discounting".

So block.space's boards offer a bytes and a vbytes toggle, and the books carry both. The chain totals the census reports, on the latest reading:

- raw bytes: 777.07 GB
- vbytes: 567.72 GB

(as of block 972,318, 2026-10-20 12:15:32 UTC.)

## Fees are priced in vbytes

Fee markets price vbytes. At a [fee rate](/concepts/fee-rate/) of f sat/vB, the data-types reference says, a witness byte costs f/4 sats and a non-witness byte costs f sats. That one fact explains much of how data is carried on Bitcoin. Large payloads overwhelmingly choose witness envelopes. OP_RETURN, whose bytes are all non-witness, costs about four times as much per byte, and the reference says it wins only for small payloads or where single-transaction atomicity matters.

## Size limits beyond the block

Standard relay policy adds a limit of its own: a standard transaction may weigh at most 400,000 WU, about 100,000 vB. Bigger transactions are valid but must be sent to a miner directly. See [relay policy](/concepts/relay-policy/).

Sources:

- block.space docs: data types · https://block.space/docs/datatypes
- Blockspace Value Theory · https://block.space/docs/bvt
- Blockspace Holdings records
- block.space docs: measurements · https://block.space/docs/measurements
- block.space meter and summary APIs · https://block.space/api/summary

Live figures: census as of block 972,318, 2026-10-20 12:15:32 UTC

Updated: 2026-10-20
