What is SegWit?
Back in 2017, Bitcoin had a problem that was about to tear the community apart. The network could handle maybe 3 transactions per second. Fees were spiking. Blocks were full. And everyone had a different idea about how to fix it.
The solution that won was SegWit, short for Segregated Witness. It was proposed by Pieter Wuille, one of Bitcoin Core's lead developers, and it changed how every bitcoin transaction gets structured. Not a small tweak. A fundamental rework of how data fits inside a block. Eight years later, about 96% of all bitcoin transactions use SegWit addresses. If you have bought or sent bitcoin in the last few years, you have almost certainly used it without knowing.
What was the actual problem?
Let me paint the picture of 2016 for you.
Bitcoin had a 1 MB cap on every block. Satoshi stuck that limit in back in 2010 to stop spam attacks, and nobody took it out. Blocks get mined every 10 minutes or so. At 1 MB each, that works out to maybe 1,650 transactions per block. Run the numbers and you land around 2-3 transactions per second for the entire bitcoin network. The whole planet sharing a pipe that thin.
Visa, by the way, does 65,000 per second. So yeah. Problem.
By late 2016, every block was hitting that 1 MB wall. When there is no room left, bitcoin users start outbidding each other on transaction fees, trying to bribe miners into picking their transaction first. Fees went crazy. Sending $10 worth of bitcoin could cost you $15 in fees. It made no sense.
And then there was the nerdier problem. Transaction malleability. I will try to keep this simple. When you send bitcoin, the network creates an ID for that transaction. Before SegWit, that ID was built from the whole transaction, signatures included. The catch? Someone could grab your unconfirmed transaction, fiddle with the signature encoding (keeping it technically valid), and end up with a different ID for the exact same payment. Same sender. Same receiver. Same amount. Different ID number.
Why should you care? Because Mt. Gox, the exchange that lost 840,000 BTC in 2014, got exploited through this exact bug. And more importantly, any second-layer system built on top of Bitcoin (like payment channels) needs to reference transactions by their IDs. If those IDs can shift, the whole thing collapses.
Bitcoin was stuck with two problems at once: blocks too small, and transaction IDs you could not trust. SegWit fixed both in one shot.
How SegWit works (without the computer science degree)
Think of a bitcoin transaction like a check. There is the part that says who is paying whom and how much. Then there is your signature at the bottom proving it is legit. Before SegWit, both parts got crammed into one blob, and all of it counted against the 1 MB block size limit.
Here is what bugged Pieter Wuille: the signature data ate up roughly 65% of every transaction. Most of each block was not recording what happened. It was recording proof that someone said it was okay. That felt wasteful.
His idea: pull the signatures out. Put them in their own section called the "witness." The transaction data stays in the main block. The witness data gets stored separately. It still gets checked by every node on the network. It just does not weigh the same when you calculate how full a block is.
What happened in practice? Blocks went from holding about 1,650 transactions to roughly 2,700. Bitcoin jumped from 2-3 transactions per second to around 7-10. Still laughable compared to Visa. But for a network that was choking on its own success, it was breathing room.

Block weight: the new math
Here is where it gets clever. The obvious move would have been to just change the 1 MB limit to 2 MB. But that would have been a hard fork. Every single node on the bitcoin network would need to update, or they would fall off the chain. Hard forks are messy. People get left behind.
Pieter Wuille came up with something smarter. Instead of measuring blocks in raw bytes, SegWit uses "block weight." Regular transaction data counts as 4 weight units per byte. Witness data counts as just 1 weight unit per byte. The cap is 4 million weight units total.
What does that mean in practice? A block with no witness data still maxes out at 1 MB, same as always. Old nodes see nothing weird. A block packed with SegWit transactions can reach close to 4 MB in theory. In the real world, most blocks land around 1.5 to 2 MB.
The beauty of this: SegWit shipped as a soft fork. Nodes that never upgraded kept humming along. They just could not see the witness data in the new section. The bitcoin blockchain did not split. There was no "old Bitcoin" and "new Bitcoin." One chain, one network, backward compatible. That alone was an engineering win that does not get enough credit.
| Before SegWit | After SegWit |
|---|---|
| Block size: max 1 MB | Block weight: max 4 million weight units |
| ~1,650 transactions per block | ~2,700 transactions per block |
| 2-3 TPS | 7-10 TPS |
| Signature data inside the block | Signature data in separate witness field |
| Transaction IDs included signatures | Transaction IDs based only on core data |
The transaction malleability fix
People talk about the block size thing constantly. Fair enough, it was the loudest problem. But I think the transaction malleability fix was the more important piece, and most people outside of developer circles barely know about it.
So here is the deal. Before SegWit, when your bitcoin wallet created a transaction, the transaction ID (called the TXID) was calculated from everything in the transaction. Including the signature. And here is the weird part: digital signatures can be expressed in more than one valid format. Same signature, same proof of ownership, but a slightly different byte sequence.
That meant someone could grab your unconfirmed transaction, re-encode the signature in a different but equally valid way, and broadcast it. The network would confirm the tweaked version. Same sender, same receiver, same amount. But a completely different TXID.
I know. Sounds obscure. But it mattered a lot. Imagine building a system where step B references the ID of step A. If someone can change step A's ID after it has been submitted but before it gets confirmed, step B breaks. Your whole chain of logic collapses.
SegWit fixed this by calculating the TXID from only the non-witness parts. The signature sits in the witness field now, separate from the ID. Nobody can mess with it. The transaction ID is locked down once and for all.
SegWit and the Lightning Network
This is why the malleability fix mattered. The Lightning Network is how Bitcoin plans to handle millions of payments per second. You and I open a payment channel. We send bitcoin back and forth between us, off the main blockchain. When we are done, only the final net balance gets settled on-chain. One transaction on the bitcoin blockchain instead of hundreds.
Lightning works by building chains of transactions that reference each other by their IDs. If someone can change an ID mid-stream, the refund transaction that protects you becomes invalid. You could lose money. The entire payment channel concept depends on IDs being stable.
SegWit made them stable. Full stop. Without that fix, Lightning would have been too risky to deploy. And without Lightning, Bitcoin is stuck at 7-10 transactions per second forever. That is not a payment network. That is a settlement layer for whales.
I think of it this way: SegWit was not just an upgrade. It was the foundation slab. Taproot in 2021, the Lightning Network, even Ordinals inscriptions in 2023. None of it happens without the structural changes made in August 2017.
The address formats: legacy, wrapped, and native SegWit
Ever noticed that some bitcoin addresses start with "1", some with "3", and some with "bc1"? That is the SegWit upgrade showing up in your wallet.
Addresses starting with "1" are legacy. Old format. No SegWit. You pay the most in fees. If your wallet still hands you these, update your software.
Addresses starting with "3" are wrapped SegWit. The bitcoin transaction uses SegWit internally, but it is wrapped so ancient wallets that have not heard of SegWit can still send bitcoin to it. Cheaper than legacy, but not the cheapest option.
Addresses starting with "bc1q" are native SegWit, also called Bech32. This is the good stuff. Lowest fees. Best error checking (the address format catches typos better). And it is what 96% of transactions use today.
You might also see "bc1p" addresses. Those are Taproot, a newer upgrade from 2021 that builds on top of SegWit. Different topic, but worth knowing they exist.
| Address type | Starts with | Fee level | SegWit? |
|---|---|---|---|
| Legacy (P2PKH) | 1 | Highest | No |
| Wrapped SegWit (P2SH) | 3 | Medium | Yes (wrapped) |
| Native SegWit (Bech32) | bc1q | Lowest | Yes (native) |
| Taproot (Bech32m) | bc1p | Lowest | Yes + Taproot |
How much do you actually save on fees?
This is what my non-technical friends actually want to know. How much cheaper?
Unchained ran the numbers. A standard single-signature SegWit transaction saves you about 53% on fees compared to legacy. If you use a 2-of-3 multisig setup (common in custody), you save around 64%. That is not rounding error. On a busy day where legacy users pay $30 per transaction, you pay under $15 with native SegWit.
Why? The block weight math again. Witness data counts as 0.25 virtual bytes instead of 1. Your transaction takes up less room in the block. Miners charge less for it. Simple.
If your bitcoin wallet still gives you addresses that start with "1", you are throwing money away on every send. Switch to native SegWit. Five minutes of work. Coinbase, Ledger, Trezor, BlueWallet, Sparrow, they all support it. There is zero downside.

The controversy: why did SegWit almost not happen?
This part is honestly more interesting than the tech. SegWit nearly died before it launched.
The fight was simple on the surface. One camp, the "big blockers," wanted to crank the block size limit from 1 MB to 8 MB or higher. More space, more transactions. Straightforward fix. Bitmain, the biggest bitcoin miner on the planet, backed this camp hard. Some people accused Bitmain of opposing SegWit because it would kill ASICBOOST, a secret trick baked into their mining chips that gave them a speed advantage over competitors. Bitmain denied it. The crypto world did not believe them.
The other camp was mostly Bitcoin Core developers and people running full nodes at home. Their argument: make blocks 8x bigger and you need 8x more bandwidth, storage, and processing power to run a node. A few years down the road, only data centers and mining farms can afford to validate the bitcoin blockchain. Decentralization dies quietly.
I was following this in real time and it genuinely felt like Bitcoin might not survive the argument. People were screaming at each other on Twitter, Reddit, and at conferences. There was even a closed-door meeting in New York (the "New York Agreement") where a bunch of companies tried to broker a deal combining SegWit with a later block size increase. That deal fell apart too.
What actually happened: SegWit activated on August 1, 2017 as a user-activated soft fork. The bitcoin miners who opposed it forked off and created Bitcoin Cash (BCH) that same day. BCH went with 8 MB blocks (now 32 MB) and no SegWit. It still exists. It trades at a tiny fraction of Bitcoin's price.
August 1 gets called "Bitcoin Independence Day" by some. The takeaway was that node operators, not mining companies, had the final say on Bitcoin's rules. That precedent matters more than any line of code in the SegWit upgrade itself.
SegWit adoption today
The debate is over. 96% of bitcoin transactions use SegWit as of 2025. Every major wallet supports it. Every exchange supports it. If you are still on legacy addresses, the only explanation is software you have not updated in years.
The SegWit upgrade also cracked open the door for everything that followed. Taproot landed in November 2021 and added Schnorr signatures on top of SegWit's structure. Ordinals showed up in 2023 and started stuffing JPEGs into the witness data space that SegWit created. People have mixed feelings about that last one, but the point stands: SegWit made the space, and developers filled it.
So does SegWit matter to you personally? If you use bitcoin at all, yes. Open your wallet settings and check your address format. If it starts with "bc1q" you are good. If it starts with "1" you should switch today. Lower fees, faster confirmations during congestion, and full access to Lightning payments.
You will never think about SegWit on a day-to-day basis. It is the plumbing under the floor. But if someone had not installed it in 2017, the whole house would have flooded by now.