Encyclopedia Upgrades and scaling · Entry 396
SegWit explained: what Segregated Witness changed in Bitcoin, and how it activated in 2017
In this article
At a glance
Key facts
| Fact | Detail | Source |
|---|---|---|
| Proposal | BIP141, by Eric Lombrozo, Johnson Lau and Pieter Wuille | [1] |
| Software | Bitcoin Core 0.13.1, released 27 October 2016 | [4] |
| Signaling rule | Bit 1; 95% of a 2,016-block period; tracking from 15 November 2016 | [4][1] |
| Activated | Block 481,824, 24 August 2017, 01:57 UTC | [6][7] |
| Block limit | 4,000,000 weight units, replacing the 1 MB size limit | [1] |
| Capacity | The 0.13.1 release notes estimated about 70% more transactions for typical use if wallets adopt SegWit; actual gains depend on transaction mix | [4] |
| Address format | BIP173 Bech32 encodes native SegWit version-0 mainnet addresses beginning bc1q | [3] |
SegWit moved signatures out of the part of a transaction that gets its ID
A Bitcoin transaction has two jobs. It says which coins are being spent and where they are going, and it proves the spender is allowed to do that, usually with a digital signature. Before SegWit, both parts lived in one blob of data, and the transaction ID (the txid, the hash that wallets and explorers use to refer to a transaction) was computed over all of it, signatures included.
BIP141, the proposal written by Eric Lombrozo, Johnson Lau and Pieter Wuille, changed that. The signature data, which the proposal calls the “witness,” is carried in a separate structure that is committed to the block through the coinbase transaction but is not part of the txid. A transaction now has two identifiers: the familiar txid, computed without the witness, and a new wtxid that includes it.
The upgrade was designed as a soft fork, meaning the new rules are stricter than the old ones rather than incompatible with them. A node running older software still sees SegWit blocks as valid and keeps following the chain; it simply does not check the witness data itself. Bitcoin Core’s release notes for version 0.13.1 describe it as allowing software to “separate (segregate) transaction signatures (witnesses) from the part of the data in a transaction that is covered by the txid.” If the distinction is new to you, our soft forks and hard forks article explains it.
The malleability fix has specific signing conditions
Signatures have a quirk. With the signature scheme Bitcoin used, a third party who sees a transaction can tweak the signature into a different but still valid form without knowing the private key. The transaction still spends the same coins to the same places, but its txid changes. This is called transaction malleability, and for years it was a nuisance at best and a real problem at worst, because any software that tracked a payment by its ID could lose sight of it.
Because the SegWit txid no longer includes the signature, tweaking the signature no longer changes the ID. BIP141 puts it bluntly: “Nonintentional malleability becomes impossible.” The Bitcoin Core release notes say the change “solves all known cases of unwanted transaction malleability.”
That sounds like housekeeping, but it unlocked something bigger. Protocols that build chains of transactions before they are confirmed, where one transaction spends the output of another that has not reached the chain yet, need the earlier transaction’s ID to be stable. BIP141 lists the ability to create “unconfirmed transaction dependency chains without counterparty risk” as a direct benefit, and Bitcoin Core’s benefits page notes that with malleability fixed, the Lightning Network “is less complicated to implement.” The Lightning Network is the best-known thing built on that foundation.
Blocks are now measured in weight, not bytes
Before SegWit, a block could hold at most 1 MB of transaction data. BIP141 replaced that limit with a new measure called block weight. Every byte of witness data counts as one weight unit, and every other byte counts as four. The maximum block weight is 4,000,000 units. Put another way, weight equals the size of the block without witnesses times three, plus its full size.
The effect is a discount for signatures. A block made entirely of old-style transactions still fits about 1 MB, because every byte costs four units. A block full of SegWit transactions fits more, because a large share of each transaction is signature data that now costs a quarter as much. Bitcoin Core’s release notes estimated that “if all wallets switch to using segwit, the network will be able to support about 70% more transactions.” The benefits page describes the practical outcome as an effective limit “closer to 1.6 to 2 MB.”
So SegWit was a capacity increase, but a conditional one that depended on wallets adopting the new transaction format. That framing matters for understanding the politics. One camp saw a signature discount that fit within a soft fork as the responsible way to grow; another wanted a plain increase in the block size, which needs a hard fork. That argument, and the way it was eventually resolved, is the subject of our dossier on the block size war. This article stays with what the upgrade actually did.
Two quieter fixes: faster signature checks and safer hardware wallets
BIP143, a companion proposal by Johnson Lau and Pieter Wuille, changed how the data that a signature covers is assembled for SegWit transactions. Under the old method, checking every signature in a large transaction meant re-hashing almost the whole transaction for each one, so the work grew with the square of the transaction’s size. The proposal describes that growth as O(n²) and replaces it with a method that lets hashes be reused, so the work grows in a straight line instead.
The same proposal put the amount being spent into the data a signature covers. Before, a hardware wallet that signed offline could not be sure how much a given input was worth without being handed the entire previous transaction, which BIP143 calls “a big obstacle.” With the value committed in the signature, a device can be shown the amount and refuse to sign if it is wrong.
SegWit also introduced script versioning. Each witness program carries a version number, and Bitcoin Core’s release notes say this “makes it easy for future soft forks” to change the scripting language for users who opt in. That hook is exactly what Taproot used four years later.
Native version-0 SegWit addresses use bc1q
Native SegWit outputs needed a way to be written down, and BIP173, by Pieter Wuille and Greg Maxwell, supplied one. The format is called Bech32. A mainnet Bech32 address begins with the letters bc, then the digit 1, then a string of lowercase characters drawn from an alphabet that leaves out easily confused letters.
The proposal lists what was wrong with the older base58 addresses: their mixed case makes them “inconvenient to reliably write down, type on mobile keyboards, or read out loud,” they use a lot of space in QR codes, and their checksum “has no error-detection guarantees.” Bech32 addresses are one case throughout and use a checksum that is guaranteed to catch up to four mistyped characters.
Old addresses did not stop working, and you can still send to and from them. But a native SegWit address gets the full weight discount, so payments from it are cheaper. Our guide to Bitcoin address types walks through the formats side by side.
How it activated: nine months of signaling, then block 481,824
Bitcoin Core 0.13.1, released on 27 October 2016, shipped SegWit with its activation switch set. The mechanism was BIP9 version bits: miners could signal readiness by setting bit 1 in the blocks they produced, and if 95% of the blocks in a 2,016-block period signaled, the change would lock in and activate one period later. Tracking began with the first period after 15 November 2016.
For most of a year, the threshold was not met. What happened in between, including the user-activated soft fork proposal, the New York Agreement, BIP91 and the Bitcoin Cash split, is a story about who gets to decide what Bitcoin is, and our block size war dossier lays out the evidence step by step.
The outcome is not in dispute. Bitcoin Core’s own mainnet parameters record the activation height as 481,824, and a block explorer shows that block was mined by BTCC Pool on 24 August 2017 at 01:57 UTC with 1,866 transactions in it. From that block on, every node running SegWit rules has enforced them.
Use transaction weight to understand the fee comparison
BIP141 defines transaction weight as three times the base size plus the total size, and virtual size as weight divided by four, rounded up. In an illustrative transaction with a 100-byte base size and 300-byte total size, weight is 600 units and virtual size is 150 vbytes. This is an arithmetic example, not a typical transaction estimate.
That accounting explains why moving witness data can change the virtual size used in a fee comparison. It does not make every SegWit transaction a fixed percentage cheaper. Input and output types and the data actually included determine the sizes being compared.
Direct answers
Questions people ask
What does SegWit stand for?
Segregated Witness. In Bitcoin’s vocabulary the “witness” is the data that proves you are allowed to spend a coin, usually a signature. SegWit segregates that data into its own section of the transaction, outside the part that produces the transaction ID.
Did SegWit increase the block size?
Yes, but not to a fixed number of megabytes. It replaced the 1 MB limit with a 4,000,000 weight-unit limit that discounts signature data. Bitcoin Core estimated about 70% more transactions if every wallet used SegWit, and described the effective limit as closer to 1.6 to 2 MB.
When did SegWit activate?
At block 481,824, mined on 24 August 2017 at 01:57 UTC. Bitcoin Core’s mainnet parameters record that height as the point where SegWit rules became active.
Do I have to use a SegWit address?
No. Older address formats still work. Mainnet native version-0 SegWit addresses start with bc1q and use Bech32. Witness data receives a weight discount, but a fee comparison still depends on the complete transaction and the chosen fee rate. The address format alone does not guarantee a particular saving.
Was SegWit a hard fork?
No. SegWit was deployed as a soft fork: blocks that follow the added rules remain compatible with the older rules. Older nodes do not enforce all SegWit spending requirements; upgraded nodes check them. Compatibility does not mean that all software versions perform the same validation.
Inspect the evidence
The answer and key facts have stable claim links. These records retain the scope and qualification when reused.
SegWit is a Bitcoin soft fork activated at block 481,824 on 24 August 2017. It separates witness data from the transaction identifier and addresses involuntary malleability for appropriately signed SegWit transactions. It measures blocks by weight, capped at 4,000,000 units, with capacity gains that depend on transaction composition. BIP173 later specified native version-0 addresses beginning bc1q on mainnet.
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimProposal: BIP141, by Eric Lombrozo, Johnson Lau and Pieter Wuille
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimSoftware: Bitcoin Core 0.13.1, released 27 October 2016
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimSignaling rule: Bit 1; 95% of a 2,016-block period; tracking from 15 November 2016
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimActivated: Block 481,824, 24 August 2017, 01:57 UTC
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimBlock limit: 4,000,000 weight units, replacing the 1 MB size limit
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimCapacity: The 0.13.1 release notes estimated about 70% more transactions for typical use if wallets adopt SegWit; actual gains depend on transaction mix
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimAddress format: BIP173 Bech32 encodes native SegWit version-0 mainnet addresses beginning bc1q
Scope: Bitcoin. Verification: verified · 2026-10-02T18:22:07.965Z.
Link to this claimRevision history
- — Initial Bitcoin encyclopedia entry at this permanent URL.
- — Revised direct answer to preserve source scope and qualifications. Corrected key fact: Capacity Corrected key fact: Address format
- — Added reusable claims, explicit source locators, and matching Markdown and JSON. This publishing change does not itself establish factual verification.
- — Added “Use transaction weight to understand the fee comparison”, clarified the search description, and corrected overbroad section headings. Independent verification is recorded separately.
Source register
Sources and references
Retrieval dates and locators are recorded individually.- BIP 141: Segregated Witness (Consensus layer)Eric Lombrozo and Johnson Lau and Pieter WuilleBitcoin Improvement Proposals repository on GitHub
Defines the witness structure and wtxid, states that nonintentional malleability becomes impossible, sets block weight at base size times three plus total size with a 4,000,000 limit, and records the BIP9 bit 1 deployment.
Locator: Defines the witness structure and wtxid, states that nonintentional malleability becomes impossible, sets block weight at base size times three plus total size with a 4,000,000 limit, and records the BIP9 bit 1 deployment. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:13.421045+00:00Open source - BIP 143: Transaction Signature Verification for Version 0 Witness ProgramJohnson Lau and Pieter WuilleBitcoin Improvement Proposals repository on GitHub
Replaces quadratic (O(n²)) signature hashing with a linear method and commits the input value so offline signers need not fetch the whole previous transaction.
Locator: Replaces quadratic (O(n²)) signature hashing with a linear method and commits the input value so offline signers need not fetch the whole previous transaction. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:18.713619+00:00Open source - BIP 173: Base32 address format for native v0-16 witness outputsPieter Wuille and Greg MaxwellBitcoin Improvement Proposals repository on GitHub
Specifies Bech32 addresses with the bc prefix and lists the problems with base58: mixed case, QR code inefficiency and a checksum with no error-detection guarantees.
Locator: Specifies Bech32 addresses with the bc prefix and lists the problems with base58: mixed case, QR code inefficiency and a checksum with no error-detection guarantees. · Version / scope: 927b6de9915c9262615a6399de51b200f81e5aa4 · Retrieved: 2026-10-02T15:04:13.515182+00:00Open source - Bitcoin Core version 0.13.1 released2016-10-27Bitcoin Core (bitcoincore.org)
Release notes describing segwit, its 95% signaling threshold on bit 1 from 15 November 2016, the estimate of about 70% more transactions, and the statement that it solves all known cases of unwanted malleability.
Locator: Release notes describing segwit, its 95% signaling threshold on bit 1 from 15 November 2016, the estimate of about 70% more transactions, and the statement that it solves all known cases of unwanted malleability. · Retrieved: 2026-10-02T14:48:56.872086+00:00Open source - Segregated Witness Benefits2016-01-26Bitcoin Core (bitcoincore.org)
Explains each benefit, including the effective capacity of closer to 1.6 to 2 MB and the observation that fixed malleability makes the Lightning Network less complicated to implement.
Locator: Explains each benefit, including the effective capacity of closer to 1.6 to 2 MB and the observation that fixed malleability makes the Lightning Network less complicated to implement. · Retrieved: 2026-10-02T14:48:56.818048+00:00Open source - Mainnet consensus parameters (src/kernel/chainparams.cpp)Bitcoin Core repository on GitHub
Records consensus.SegwitHeight = 481824 for mainnet, the block at which SegWit rules are enforced.
Locator: Records consensus.SegwitHeight = 481824 for mainnet, the block at which SegWit rules are enforced. · Version / scope: 69142eacd1374925cc9e4ea736c21fcec16307d0 · Retrieved: 2026-10-02T15:04:11.761623+00:00Open source - Block 481,824Blockstream Esplora
Shows the SegWit activation block mined by BTCC Pool on 24 August 2017 at 01:57 UTC with 1,866 transactions.
Locator: JSON fields height, timestamp, id; block height 481824 · Version / scope: 0000000000000000001c8018d9cb3b742ef25114f27563e3fc4a1902167f9893 · Retrieved: 2026-10-02T15:25:01.715429+00:00Open source
Research and drafting use AI assistance. A separate automated review checks claims against primary sources; no external expert or named human review is implied. Publication, substantive editing, source retrieval and verification are recorded separately. This version was independently checked by an automated reviewer on 2 October 2026.
Editorial method and correctionsDegrees of Satoshi editorial project. “SegWit explained: what Segregated Witness changed in Bitcoin, and how it activated in 2017.” Published 2026-09-23; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/segwit-explained/