How to Fix Common MetaMask Errors Instantly

Understanding MetaMask Error Codes and Their Root Causes
MetaMask, the leading non-custodial Ethereum wallet browser extension and mobile app, processes millions of transactions daily. When it fails, the cause typically falls into five categories: network misconfiguration, insufficient gas, browser cache conflicts, RPC endpoint failures, or wallet state corruption. Unlike centralized exchanges where customer support can reverse transactions, MetaMask errors require user-side intervention. Below are the 12 most common errors and the exact steps to resolve them instantly.
Error 1: “Internal JSON-RPC Error” (Including “execution reverted”)
This error occurs when a smart contract rejects a transaction due to logic conditions not being met. It’s not a MetaMask bug—it’s the blockchain saying “no.”
Instant Fix Steps:
- Increase Gas Limit Significantly: Open MetaMask, click the gas fee setting, switch from “Market” to “Advanced.” Manually increase the gas limit from the default 21,000 to 100,000–150,000 for complex swaps or NFT mints.
- Check Token Approval: If swapping, ensure you’ve approved the token for spending. Navigate to the token contract on Etherscan (e.g., USDC), click “Contract,” then “Write Contract,” connect your wallet, and call
approvewith a high allowance. - Simulate the Transaction: Use tools like Tenderly.co or MetaMask’s “Simulate” button (available in v11+). Paste the transaction data to see exactly where it reverts.
- Clear Nonce Stuck: Go to Settings > Advanced > Clear Activity Tab Data. This resets pending transaction nounce.
Why it works: Many dApps set insufficient default gas. Reverted calls often fail because the contract needs more computational steps than expected. Slippage above 1% is also a frequent culprit in DEX trades—set it to 3–5%.
Error 2: “Transaction Underpriced”
MetaMask cannot broadcast your transaction because the gas price you set is below the network’s current minimum. This is common during network congestion spikes.
Instant Fix Steps:
- Cancel and Resubmit with Higher Gas: In the Activity tab, click the pending transaction, then “Speed Up.” Set the new gas price to at least 1.5x the current network average (check via Etherscan Gas Tracker).
- Use GasOracle API: For advanced users, paste
https://api.etherscan.io/api?module=gastracker&action=gasoracle&apikey=YourApiKeyinto your browser to get liveSafeGasPrice,ProposeGasPrice, andFastGasPrice. Set your custom nonce gas price toFastGasPrice. - Toggle to Legacy Transaction: In MetaMask’s gas settings, switch from “EIP-1559” to “Legacy.” Enter a gas price of 50–100 Gwei during normal traffic.
- Force Replace Using Nonce: If “Speed Up” fails, manually set a new transaction with the same nonce but 10% higher gas. Use Metamask’s console (Ctrl+Shift+I > Console) and paste:
ethereum.request({ method: 'eth_getTransactionCount', params: [ethereum.selectedAddress, 'pending'] }).then(console.log)Then create a new transaction with that nonce and higher gas.
Why it works: The Ethereum mempool prioritizes transactions by gas price. An “underpriced” error means your tx wasn’t picked up by miners within 15 minutes. Resubmitting with a competitive gas fee instantly queues it at a higher priority.
Error 3: “Transaction was not mined within 50 blocks” / Stuck Transaction
Your transaction remains pending for hours. This happens when the network is congested or your gas price was too low for the current block environment.
Instant Fix Steps:
- Go to Etherscan: Copy your transaction hash, open Etherscan, and check “Transaction Details.” If “Pending” for over 10 minutes, proceed.
- Use the “Cancel” Method in MetaMask: Open MetaMask > Activity > Click the pending tx > “Cancel.” This sends a 0 ETH transaction with the same nonce and higher gas. The original tx becomes invalid.
- Manual Force Cancel via “RPC Reset”: If cancel doesn’t appear, in MetaMask Settings > Advanced > “Clear Activity Tab Data.” This removes the stuck transaction from your local state, allowing a new nonce.
- Reset Your Wallet (Nonce Reset): Only if the above fails: Settings > Advanced > “Reset Account.” This clears all pending transactions but also removes transaction history from MetaMask (not the blockchain). Your funds remain safe.
Why it works: Each transaction has a unique nonce. Broadcasting a replacement transaction with the same nonce but higher gas (either a cancel or a resend) tells the network to ignore the original. Clearing activity tab data forces MetaMask to re-sync with the blockchain, dropping stale txs.
Error 4: “Not Found” / “This account does not exist on this network”
You see your wallet but no funds or transaction history on a specific network (e.g., Avalanche C-chain, BNB Smart Chain).
Instant Fix Steps:
- Verify Network RPC URL: Go to Settings > Networks. Ensure you’re using the correct RPC for the network. For BSC, use
https://bsc-dataseed.binance.org/(not a third-party endpoint). For Polygon, usehttps://polygon-rpc.com/. - Switch Chain ID: Confirm the chain ID matches: Ethereum=1, BSC=56, Polygon=137, Avalanche=43114. Incorrect chain IDs cause “account not found.”
- Import Tokens Manually: The account exists, but MetaMask doesn’t display its tokens. Click “Import Tokens,” paste the contract address (get from CoinGecko or official site).
- Use Block Explorer Directly: Go to Etherscan/BscScan/Polyscan, enter your wallet address. If your balance shows there, the error is strictly UI-related. Reinstall MetaMask as a last resort.
Why it works: MetaMask defaults to Ethereum mainnet. Adding custom networks manually often introduces typos in chain IDs or RPC endpoints. Using official, high-reliability RPCs bypasses sync issues.
Error 5: “Invalid Address” / “Address is not valid”
This error appears when pasting an address into MetaMask’s send field.
Instant Fix Steps:
- Check for Hidden Characters: Paste the address into a plain text editor (Notepad, TextEdit) first. Look for spaces, invisible Unicode characters, or trailing text.
- Validate Checksum: Ethereum addresses are case-sensitive with EIP-55 checksum. Use a tool like
mycrypto.com/checksumto convert to proper casing. MetaMask will reject addresses with wrong casing (e.g.,0xabc...versus0xAbC...). - Remove Leading/Trailing Spaces: Manually delete whitespace before and after in the send field.
- Use QR Code Scan: If copying from a mobile source, use MetaMask’s QR scanner (mobile app) to avoid manual errors.
Why it works: MetaMask accepts only lowercase addresses or EIP-55 mixed-case addresses. A single wrong character or extra space causes immediate rejection.
Error 6: “Always Require Confirmation on This Wallet” / Infinite Loading Loop
MetaMask shows a spinner endlessly when trying to connect to a dApp.
Instant Fix Steps:
- Disconnect and Reconnect: In MetaMask, click the three dots > Connected Sites > Disconnect from the problematic dApp. Refresh the dApp page, reconnect.
- Clear Browser Cache: Chrome/Settings/Privacy and Security/Clear Browsing Data (last 24 hours, cached images and files). This removes corrupted localStorage that dApps use to detect MetaMask.
- Disable Other Wallet Extensions: Brave Wallet, Coinbase Wallet, or WalletConnect extensions can conflict. Temporarily disable them in chrome://extensions.
- Reinstall MetaMask Extension: Remove the extension entirely, download fresh from metamask.io (never from third-party sources), restore via seed phrase.
Why it works: dApps use window.ethereum to detect MetaMask. Competing wallet extensions or corrupted browser localStorage cause the detection loop to fail. Clearing cache forces the dApp to reinitialize the connection.
Error 7: “Insufficient Funds for Gas” (When You Have ETH)
MetaMask shows insufficient funds but your ETH balance appears normal.
Instant Fix Steps:
- Check Network Native Token: On Ethereum, gas is paid in ETH. On Polygon, it’s MATIC. On BSC, it’s BNB. Ensure you have the correct token for the network you’re on.
- Verify Balance via Block Explorer: Go to Polygonscan or BscScan, enter your wallet. If the balance differs from MetaMask’s display, your MetaMask is out of sync. Refresh balance by switching networks twice (e.g., Ethereum to Polygon and back).
- Convert or Acquire Native Token: You cannot pay gas with USDC or any ERC-20 token. Use a centralized exchange or a “gasless” faucet (like
gasdrop.iofor Arbitrum) to obtain the network’s native currency. - Bridge from Another Network: If you have ETH on Ethereum mainnet but need MATIC on Polygon, use the official Polygon Bridge or a third-party like Debridge. Wait for finality (approx. 15–30 minutes).
Why it works: New users often confuse network-specific gas tokens. Sending USDT on Ethereum requires ETH for gas, not USDT. Similarly, Polygon transactions require MATIC, BSC requires BNB, Avalanche requires AVAX.
Error 8: “RPC Error: Method not found” / “Blockchain is not reachable”
MetaMask cannot communicate with the blockchain node.
Instant Fix Steps:
- Test RPC URL: Click the network icon (top left) > sometimes the RPC endpoint goes down. Use
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' https://mainnet.infura.io/v3/YOUR_INFURA_API(replace with your RPC). If no response, switch RPC. - Use Public or Fallback RPCs: Change to:
- Ethereum:
https://ethereum.publicnode.com(no API key) - Polygon:
https://polygon.llamarpc.com - BSC:
https://bsc.publicnode.com
- Ethereum:
- Disable VPN/Proxy: Some RPC providers (including Infura) block certain geolocations. Disable VPN temporarily.
- Update MetaMask to Latest Version: With v12.0+, MetaMask includes built-in fallback RPCs. Outdated versions have single points of failure.
Why it works: MetaMask delegates RPC calls to third-party services like Infura, Alchemy, or your custom node. If the provider experiences downtime or rate limits you, the “blockchain is not reachable” error appears. Switching to a public or secondary node bypasses this instantly.
Error 9: “Error: invalid argument 0: hex number 0x has invalid length”
This obscure error occurs when building transactions programmatically (via scripts or dApps) and entering malformed data.
Instant Fix Steps:
- Ensure Proper Hex Encoding: Never send plain decimal or string values as hex. Use
ethers.utils.hexlify(value)in JavaScript, orWeb3.utils.toHex(value)if using Web3.py. - Wrap Data in Quotes: When pasting contract data into the “Hex Data” field (in advanced send), ensure it’s a string with
0xprefix:0x1234abcd.... MetaMask expects exactly 0x plus 2*n hex characters. - Pad Properly: If sending to a contract method, ensure
uint256values are 64 hex characters (32 bytes) long. Tools likeabi.hashexcan validate. - Test with a Simple Transaction: Send 0 ETH to a known address first. If that works, the issue is in your data encoding. Use a library like
@ethersproject/abito encode function calls.
Why it works: MetaMask’s ethereum.request method requires strict hex formatting. A single missing 0x or truncated hex string causes the parser to crash before the transaction is even sent.
Error 10: “User Rejected the Transaction” (Even When You Didn’t)
MetaMask shows rejection but you never clicked “Reject.”
Instant Fix Steps:
- Check for Pop-up Blocker: Browser extensions like uBlock Origin or Privacy Badger can block MetaMask pop-ups. Disable them for the dApp domain.
- Reset Notification Permissions: In Chrome, go to site settings (lock icon > permissions) > ensure “Notifications” and “Pop-ups” are allowed.
- Set MetaMask as Default Wallet: In Chrome settings > Search “Wallet” > Manage > Set MetaMask as default. Other installed wallets may intercept requests.
- Use Incognito Mode: Test in incognito (extensions disabled by default except MetaMask if enabled). If it works, a conflicting browser extension is the cause.
Why it works: Multiple wallet detection scripts can steal transaction requests. When a different wallet (e.g., Trust Wallet or Coinbase Wallet) receives the dApp’s signature request, it may auto-reject or show a dialog you don’t see. Making MetaMask the sole responder eliminates this.
Error 11: “Signature Request Rejected” / “Personal_sign” Failures
When signing messages (e.g., for login or NFT claim page), MetaMask returns rejection.
Instant Fix Steps:
- Reset MetaMask Connection: In the dApp, click “Disconnect Wallet” then reconnect. Old session signatures may be invalid.
- Clear Browser Cache for Domain: In Chrome DevTools (F12) > Application > Clear Storage > Clear site data. Refresh.
- Use the “Eth_sign” Alternative: Some dApps use the unsafe
eth_signmethod instead ofpersonal_sign. If the dApp requires it, MetaMask shows a security warning. Confirm you trust the site before signing. - Check Permission Expiry: Go to MetaMask > Settings > Connected Sites > Find the dApp > Remove. Reconnect fresh to force new permission grants.
Why it works: dApps store a “nonce” (random number) to prevent replay attacks. If the nonce is stale or MetaMask’s internal permissions are out of sync, your signature request appears as a rejected foreign request. Resetting connection clears both.
Error 12: “Multiple Wallets Detected” / “Conflicting Extensions”
MetaMask detects another wallet extension (Brave Wallet built-in, Coinbase Wallet, Ledger Live Bridge).
Instant Fix Steps:
- Disable All Other Wallet Extensions: Go to chrome://extensions, uncheck or remove any non-MetaMask wallet extensions. Brave users must disable Brave Wallet in browser settings:
brave://settings/wallet> Disable “Use Brave Wallet.” - Reinstall MetaMask After Cleanup: After disabling others, remove MetaMask, restart browser, install MetaMask fresh.
- Use Dedicated Browser Profile: Create a new Chrome profile for crypto-only activities. Install only MetaMask. This prevents ANY conflict.
- Check for Remnant Service Workers: In Chrome DevTools > Application > Service Workers. Unregister any that reference older wallets.
Why it works: MetaMask responds to window.ethereum injection. If another wallet injects a competing ethereum object (e.g., ethereum.isMetaMask=false), MetaMask’s detection fails. Removing all others forces MetaMask to be the sole provider.
Advanced Troubleshooting: The Console Fix
For persistent issues, MetaMask provides a full JavaScript console via Developer Tools (F12). Open the console and paste these commands:
Check Wallet State:
ethereum.request({ method: 'eth_accounts' }).then(console.log)If returns empty array, MetaMask isn’t unlocked or connected.
Force Network Refresh:
ethereum.request({ method: 'wallet_switchEthereumChain', params: [{ chainId: '0x1' }] })Replaces 0x1 with 0x89 for Polygon, 0x38 for BSC.
Clear Pending Transactions:
ethereum.request({ method: 'wallet_scanQRCode' }).catch(console.error)This forces MetaMask to re-sync mempool.
Log Transaction Details:
ethereum.request({ method: 'eth_getBlockByNumber', params: ['latest', false] }).then(console.log)Use this to check current block number and gas price.
When to Reinstall MetaMask Completely
If none of the above works and you’ve spent 30+ minutes troubleshooting, a full reinstall is the fastest path. Backup your seed phrase OFFLINE (paper only, never digital). Then:
- Remove MetaMask from extensions
- Open browser task manager and kill all browser processes
- Restart computer
- Download fresh MetaMask from metamask.io
- Restore with seed phrase (Import Wallet > Use Seed Phrase)
- Re-add custom networks manually
This fixes 99% of state corruption errors including:
- Phantom pop-up windows
- Infinite loading on connect
- Balance showing zero when funds exist
- Stuck on “Awaiting transaction” indefinitely
Network-Specific RPC Configuration Table
| Network | Chain ID | Recommended RPC | Block Explorer |
|---|---|---|---|
| Ethereum Mainnet | 1 | https://ethereum.publicnode.com | https://etherscan.io |
| BNB Smart Chain | 56 | https://bsc-dataseed.binance.org | https://bscscan.com |
| Polygon | 137 | https://polygon-bor-rpc.publicnode.com | https://polygonscan.com |
| Avalanche C-chain | 43114 | https://api.avax.network/ext/bc/C/rpc | https://snowtrace.io |
| Arbitrum One | 42161 | https://arb1.arbitrum.io/rpc | https://arbiscan.io |
| Optimism | 10 | https://mainnet.optimism.io | https://optimistic.etherscan.io |
Proactive Prevention Checklist
- Always double-check network before sending: A transaction on Ethereum cannot be recovered if sent to BSC address.
- Set custom nonce gas price 2x minimum: Use tools like Etherscan Gas Tracker for real-time pricing.
- Keep MetaMask updated automatically: Enable auto-update in Chrome extensions.
- Use a hardware wallet (Ledger/Trezor): This isolates transaction signing from browser errors.
- Test with 0 ETH transactions first: Before sending large sums, send a test transaction with 0 value to confirm the recipient address works.
- Never share seed phrase or private key: MetaMask will NEVER ask for these via email, pop-ups, or support channels.
By systematically applying these fixes in the order presented, you can resolve the most common MetaMask errors in under two minutes per issue. The root cause is almost always a network mismatch, stale RPC, or gas miscalculation—all of which are user-reversible without any block-level intervention.





