The Ethereum Shanghai/Capella upgrade went live on April 12, 2023, at 22:27 UTC, and for the first time since the Beacon Chain launched in December 2020, stakers can withdraw their ETH. With approximately 18 million ETH locked across 569,000 validators — valued at roughly $34.5 billion at the current ETH price of $1,918 — the withdrawal process is one of the most anticipated events in Ethereum’s history. This guide walks you through the technical process of safely withdrawing your staked ETH, whether you are a solo validator or using a staking service.
The Objective
This guide covers two types of withdrawals: partial withdrawals, which allow you to claim your accumulated staking rewards (the ETH earned above your initial 32 ETH stake), and full withdrawals, which allow you to exit your validator entirely and recover your entire staked balance. Understanding the difference is crucial. Partial withdrawals happen automatically and relatively quickly — the network processes them in batches, with rewards flowing to your withdrawal address within approximately 4-5 days. Full withdrawals require you to explicitly signal your validator to exit, enter an exit queue, and then wait for the full balance to be released.
Prerequisites
Before initiating any withdrawal, ensure you have the following. First, access to your validator’s withdrawal credentials. If you set your withdrawal address when you originally deposited your stake, you are ready. If you used the old-style BLS withdrawal credentials (a long string starting with 0x00), you must first update them to an Ethereum address (0x01) using the voluntary withdrawal message process. This is a one-time operation that requires your original mnemonic seed phrase.
Second, a secure Ethereum wallet to receive your withdrawn ETH. A hardware wallet such as a Ledger or Trezor is strongly recommended for any significant amount. Third, your validator client software must be updated to a version that supports the Shanghai/Capella fork. Check the documentation for your specific client — whether Prysm, Lighthouse, Teku, or Nimbus — and ensure you are running the latest release. Finally, patience. The withdrawal process is deliberately designed to be gradual to protect network security.
Step-by-Step Walkthrough
Step 1: Verify your withdrawal credentials. Visit beaconcha.in and search for your validator index. Check whether your withdrawal credentials start with 0x01 (Ethereum address) or 0x00 (BLS key). If 0x01, proceed to Step 3. If 0x00, continue to Step 2.
Step 2: Update BLS to execution address (if needed). Using your validator client’s command-line tool, generate a BLS-to-execution change message. This requires your validator index, the Ethereum address you want to receive withdrawals, and your original mnemonic seed phrase. Submit this message through your validator client, and it will be included in the next block. Once processed, your validator will show 0x01 credentials on the explorer.
Step 3: For partial withdrawals — do nothing. The network automatically processes partial withdrawals for all validators that have accumulated rewards above their 32 ETH effective balance. These rewards will be sent to your withdrawal address automatically. You do not need to take any action.
Step 4: For full withdrawals — signal your exit. Using your validator client, submit a voluntary exit message. This is a signed message that tells the Beacon Chain you want to stop validating and withdraw your entire balance. The command varies by client: for Lighthouse, use lighthouse account validator exit; for Prysm, use prysmctl validator exit. You will need your validator’s signing key to authorize the exit.
Step 5: Wait in the exit queue. After signaling, your validator enters an exit queue. The queue processes a limited number of exits per epoch to maintain network security. During periods of high withdrawal demand, this queue can take days or even weeks. You can monitor your position in the queue using beaconcha.in.
Step 6: Receive your ETH. Once your validator has fully exited and passed the withdrawal delay period, your entire balance (32 ETH stake plus accumulated rewards) will be swept to your withdrawal address in the next available withdrawal sweep. This sweep runs continuously, processing up to 16 partial withdrawals and up to 5 full withdrawals per block.
Troubleshooting
If your withdrawal does not appear after the expected timeframe, check the following. First, verify that your withdrawal address is correct on beaconcha.in — an incorrect address means your ETH goes to the wrong wallet. Second, check if there is a long exit queue by looking at the Beacon Chain explorer’s withdrawal metrics. Third, ensure your validator client is running and synced — an offline client cannot sign the exit message. If you are using a staking service like Coinbase or Lido, check their specific withdrawal timelines, as they may have additional processing periods.
Common errors include submitting an exit message from the wrong key (use the signing key, not the withdrawal key), attempting to exit a validator that is already in the exit queue, or having insufficient ETH for gas fees on the execution layer. Each of these issues has straightforward solutions: double-check your keys, verify validator status on the explorer, and ensure your execution layer wallet has enough ETH to cover any transaction costs.
Mastering the Skill
Successfully navigating the ETH withdrawal process demonstrates a solid understanding of Ethereum’s Proof-of-Stake architecture. To deepen your expertise, consider the following. Monitor the withdrawal queue metrics on beaconcha.in to understand how network-level withdrawal demand affects your individual timeline. Study the EIP-4895 specification that defines the withdrawal mechanism to understand the technical design decisions. And explore the economic implications — as more ETH is withdrawn and potentially re-staked or deployed in DeFi, the staking APR and overall Ethereum economics will evolve. Staying informed about these dynamics will help you make better decisions about when to withdraw, how much to withdraw, and whether re-staking makes sense for your situation.
The Shanghai upgrade is a landmark achievement for Ethereum, transforming staking from an irreversible commitment into a flexible financial tool. Master the withdrawal process, and you gain not just access to your capital — but a deeper understanding of the protocol that powers the world’s largest programmable blockchain.
This article is for educational purposes only and does not constitute financial or technical advice. Always verify procedures against official Ethereum documentation and consult qualified professionals for your specific situation.
the partial vs full withdrawal distinction is crucial and most guides skip it. partials auto-process, full exits need you to sign voluntarily
exit queue took about 5 days when I withdrew in late April. not bad honestly, was expecting weeks
lars getting through the exit queue in 5 days is fast. some people in may were waiting over a week. timing mattered a lot
18M ETH locked across 569K validators. even a small percentage exiting at once would have crashed the queue. glad it went smoothly
solo_valid the full exit requiring a voluntary exit message is what tripped people up. if you lost your mnemonic the validator is stuck forever. no recovery
validator_ops losing your mnemonic means the validator is stuck forever. this should be in bold red letters at the top of every staking guide
validator_ops losing your mnemonic means the validator is stuck forever. that detail should be louder in every staking guide. so many people dont realize this until its too late
everyone panicked about the exit queue but it cleared way faster than expected. partial withdrawals auto-processing was the real unlock. nobody had to do anything for rewards to start flowing
the partial withdrawal auto-processing was the best design decision. rewards just show up without any action needed. full exits requiring a signed message was the right tradeoff
if you are using a staking service, check if they even support withdrawals yet. some of the smaller ones were very slow to implement
rocketpool was the one provider that had withdrawals ready on day one. going solo or using RP was the move, everything else was a gamble on competence
stake_haze_ rocket pool had withdrawals live on day one because their smart contracts were designed for it from the start. other providers were retrofitting
RocketPool_fan my staking provider took 3 extra weeks to support withdrawals. no communication, just silence. small providers are a hidden risk nobody talks about
Pavel D. same thing happened with my provider. 3 weeks of silence then a generic email saying withdrawals were live. almost moved to rocket pool out of spite
the 4-5 day wait for partial withdrawals felt like an eternity during the depeg scare. technical design was sound but the UX gave everyone anxiety
Solveig B. the anxiety was justified. USDC depeg plus stETH discount plus withdrawal queue could have cascaded. lucky the churning limit held up under pressure
4 to 5 days for partial withdrawals after shanghai upgrade still beats waiting for full exits when mnemonic is lost
queue_physics the churning limit was the unsung hero. 4 withdrawals per block sounds tiny but it prevented a bank run on 18M ETH. design saved the network
the exit queue peaked at around 15K validators in may 2023. sounded scary but it cleared in days. the system was over-engineered in a good way
queue_watcher 15K validators in the exit queue clearing in days is actually insane. the over-engineering paid off. imagine if everyone panic-exited at once though
18M ETH locked across 569K validators at 1918 per coin. the exit queue being the bottleneck was obvious but nobody talks about how many validators got slashed trying to game the withdrawal timing
exit queue peaked at 15K validators and cleared in days. everyone predicted a cascade that never came. over-engineering won
18 million eth locked with 569k validators at 34.5 billion means the exit queue will stay busy for months
validator_ops_ the exit queue cleared in days because most stakers chose partial withdrawals. if even 20 percent went for full exits the churning limit would have created a multi-week backlog
4 withdrawals per block sounded terrifyingly slow until you realize it prevented a bank run on 18 million ETH. the rate limiting was the feature not the bug