A vByte, abbreviated vB, is a unit of virtual transaction size. Different parts of a Bitcoin transaction count differently toward that size. Wallets use it when calculating fees: a larger transaction or a higher chosen rate means a higher total fee.
Anna wants to send Bitcoin, and her wallet offers a rate of 2 sat/vB. Sat means satoshi, bitcoin’s smallest unit; vB describes virtual transaction size. If the finished transaction is 127 vB, that rate gives a fee of 254 sat. The Fee Rate is therefore not the whole cost of the payment. This example explains the calculation, rather than recommending a rate for today’s network. Paying a fee alone does not guarantee a particular confirmation time. [3] [5] [7]
A wallet does not spend its balance as a single number. It uses previously received transaction outputs that remain unspent, called UTXO. Each output spent adds an input; there is often also an output returning change to your wallet. Combining many small receipts can therefore require more data than spending a larger amount from one receipt. The fee is the total input value minus the total output value. A digital signature provides proof of authorization to spend the selected funds. Before creating the signature, the wallet estimates size; the actual fee and final size determine the effective rate. [6] [7]
A byte is a standard unit of data size. But calculating a Bitcoin transaction fee involves more than counting every byte equally. SegWit separates some of the data that proves permission to spend, including signatures. This part is called witness. A byte of base data contributes 4 WU to transaction weight, while a byte added by the format that includes witness contributes 1 WU. WU means weight unit. The marker and flag fields of that representation receive the same discount. Signatures still have to be verified: less weight does not mean permission to skip checks. [1] [2]
Serialization means writing a transaction as a precisely ordered sequence of bytes that computers can transmit and read. Let B be its size without witness and T its full serialized size. BIP 141 defines weight as W = 3 × B + T. Base data is already included in T, so the formula counts it four times and added witness data once. It measures neither the payment’s monetary value nor processor time. [1]
Virtual size is weight divided by 4, rounded up to a whole number: vsize = ceil(W / 4). The function ceil means round upward. A transaction weighing 401 WU therefore occupies 101 vB. Rounding applies to the whole transaction. Rounding each input separately and then adding the results need not give the same size. [1]
Take illustrative sizes B = 100 and T = 208 bytes. The formula gives W = 508 WU and vsize = 127 vB, the size in our opening fee example. The full transaction has not magically shrunk, though: its complete serialization still transmits 208 bytes. Virtual size is a weighted measure used for capacity and fees, not file compression. [1] [5]
A block explorer is an application for looking up transactions and blocks on a particular network. For a transaction without witness data, B = T and therefore W = 4 × T. Its basic virtual size then equals its full byte size. That is why an explorer’s two size fields sometimes show the same number and sometimes do not. With SegWit, you cannot simply divide every transmitted byte by four: the different weighting applies to specific parts of the data. [1] [2]
A node is software that checks transactions and blocks and communicates with other participants in the network. Bitcoin Core v29.0 uses the adjusted size ceil(max(W, sigop_cost × bytes_per_sigop) / 4) for some operating policies. sigop_cost is the weighted cost of signature operations; bytes_per_sigop is a policy parameter. max selects the larger value. Unusually demanding verification can thus increase the size used for these policies. This changes neither BIP 141 weight nor block-validity rules. It is a detail of the specified version, not another calculation required when making an ordinary payment. [1] [4]
A payment may spend an output of another transaction that is not yet confirmed. Evaluating such a package can involve dividing relevant total fees by the sum of the corresponding virtual sizes. A simple average of individual rates would ignore their different sizes. Bitcoin Core v29.0 also accounts for local priority adjustments and does not count transactions already in its waiting area again. A high combined rate does not override all other rules or guarantee acceptance or confirmation. [4] [8]
Before sending, look at the rate alongside the total fee and estimated size. Once the transaction exists, decoderawtransaction can show its actual size, vsize and weight fields: bytes, virtual size and weight. You do not need to calculate the formulas by hand for an ordinary payment. One similar name can be misleading: CompactSize is a variable-length encoding of an integer. It is neither another name for vByte nor a way to shrink a transaction. [5] [6]
For the clearest picture, read this entry together with Block Weight, Compact Blocks, Block Propagation, Initial Block Download, Bitcoin, SegWit. The reverse links also lead from Compact Blocks, Pruned Node, Block Weight, Package Relay.