How much gas do leading-zero addresses actually save?
Short answer: less than most people think per call, but it's real, and in two specific situations it genuinely adds up. Here is the honest breakdown, with numbers.
Why zero bytes are cheaper
Ethereum prices transaction calldata per byte. Since the Istanbul upgrade (EIP-2028):
- a non-zero byte of calldata costs 16 gas
- a zero byte costs 4 gas
So every zero byte in your contract's address saves 12 gas, but only when the address is actually sent as calldata, for example when it is passed as an argument to transfer, approve, or a router.
One subtlety: an address is ABI-encoded into a 32-byte word, left-padded with 12 zero bytes that are already free. Vanity zeros are the additional zero bytes inside the 20-byte address itself. A /12 address (12 leading zero hex digits) is 6 zero bytes, which saves 6 × 12 = 72 gas each time the address appears in calldata.
You may remember a popular Stack Exchange answer quoting ~512 gas, or 64 gas per zero byte. That used the pre-Istanbul schedule (68 gas per non-zero byte). The current numbers are 16 and 4, so the real per-byte saving today is 12 gas, not 64.
Drag the slider below to see it for yourself.
See what leading zeros are worth
A fraction of a cent per call. The aggregate only gets interesting at high volume. The bigger gas win is storage packing (below), not calldata.
Where it actually adds up
1. Storage packing, the real win. A 32-byte storage slot fits one full address (20 bytes) with 12 bytes to spare. If your address has, say, 6 leading zero bytes, it only needs 14 bytes, freeing up enough room to pack another value (a uint96, a few flags, a timestamp) into the same slot. Each storage slot you avoid writing saves a whole SSTORE: roughly 20,000 gas for a new slot, ~5,000 for an update. That dwarfs the calldata savings, but only if you deliberately design your contract's storage layout around it.
2. Sheer scale. 72 gas is nothing on one call. Across millions of calls to a popular token or router, it compounds. This is why some high-volume operators chase it: Wintermute's CEO publicly said one of their heavily-zeroed addresses was chosen "for gas savings," not aesthetics. That only pencils out at their transaction volume.
Where it doesn't
For a normal contract at normal volume, the calldata savings are a rounding error: a fraction of a cent per call, as the calculator shows. Don't buy a vanity address for the per-call gas savings alone. Buy it for a single canonical address across every chain and recognizability, and treat gas as a bonus that matters if you pack storage or operate at scale.
A note on safety
You may have heard that vanity addresses are dangerous: the Profanity tool had a flaw that let attackers re-derive private keys, and it cost Wintermute roughly $160M. That bug applies to vanity externally-owned accounts (EOAs), where a weak private key is the whole ballgame.
ManyZeros mines contract addresses. There is no account private key baked into the address. It is derived deterministically from a CREATE3-style salt, so it is not exposed to that class of bug. You deploy your own contract code to the address and control it exactly as you would any other deployment.