DEV Community

Cover image for How to Fully Empty a Wallet via Chrome Console Without Leaving Dust
Yuanyan Wu
Yuanyan Wu

Posted on

How to Fully Empty a Wallet via Chrome Console Without Leaving Dust

When transferring your full ETH balance from one wallet to another, most wallets leave a tiny amount of "dust" behind. This happens because they slightly overestimate gas fees to prevent transaction failure under volatile conditions.

But sometimes, you want zero balance left โ€” no dust, no leftovers โ€” for example, when migrating to a new wallet, shutting down an address, or sweeping all funds.

Here's how you can do it perfectly, using only MetaMask and Chrome console.


๐Ÿ›  Step-by-Step Instructions

  1. Open your Chrome browser.
  2. Unlock your MetaMask extension.
  3. Transfer all valuable tokens, NFTs, and other assets
  4. Open DevTools โ†’ Console tab (F12 or Ctrl+Shift+I).
  5. Paste and REPLACE the RECEIVER address as you intended
  6. Execute the following script:
(async () => {
  const sender = (await ethereum.request({ method: 'eth_requestAccounts' }))[0];
  const receiver = '0xReceiverAddress'; 
// ๐Ÿ”ฅ Change this to your destination address

  const balanceHex = await ethereum.request({
    method: 'eth_getBalance',
    params: [sender, 'latest'],
  });

  const gasPriceHex = await ethereum.request({
    method: 'eth_gasPrice',
  });

  const gasLimit = 21000; // Standard gas for basic ETH transfer

  const gasFee = BigInt(gasPriceHex) * BigInt(gasLimit);
  const balance = BigInt(balanceHex);
  const amountToSend = balance - gasFee;

  if (amountToSend <= 0n) {
    throw new Error('Not enough balance to cover gas fee.');
  }

  const txHash = await ethereum.request({
    method: 'eth_sendTransaction',
    params: [{
      from: sender,
      to: receiver,
      value: '0x' + amountToSend.toString(16),
      gas: '0x' + gasLimit.toString(16),
      gasPrice: gasPriceHex,
    }],
  });

  console.log('Transaction sent! TxHash:', txHash);
})();
Enter fullscreen mode Exit fullscreen mode

Confirm the transaction in MetaMask popup.

โœ… Done! Your account will now be completely emptied.

๐Ÿง  Why Not Just Use Wallet UI?

Wallet UIs like MetaMask intentionally overestimate gas fees to reduce transaction failure risks.

This means:

  • They cannot send the full balance.
  • They must leave a small "dust" amount as a safety margin.

By manually calculating gas cost and subtracting it ourselves, we can send the maximum possible safely.

๐Ÿ“ Why I Care About This

When EIP-1559 was introduced, dynamic fees made gas price calculations trickier, and wallets became even more conservative.

I often found myself frustrated by the "dust problem" when I simply wanted to sweep a wallet clean. This method helped me move entire balances safely and efficiently, many times over.

Feel free to bookmark this guide for the next time you need a clean sweep. ๐Ÿงนโœจ

Top comments (0)