When you see a transaction fail with "Reverted" and your wallet still charged gas, your first step should be to find out why it failed—not to try again. Trying again only wastes more money.

A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
The core idea
Before sending a transaction, use simulation to check whether it will revert and fail.
Why failed transactions still charge fees
You pay for "computation," not for "success." Validators spend computing power to run your instruction. Even if the transaction reverts halfway because a contract condition is not met, the computing power was already used, so the fee is still charged. The key is to know whether the transaction will fail before you send it.
Method 1: Use your wallet's built-in simulation
MetaMask tips:
In the transaction confirmation popup, check near "Show Advanced" or "Hex Data." Some versions show a simulation result. If it says "This transaction is expected to fail," do not confirm and submit.
Update to the latest version. MetaMask will automatically run an eth_call simulation before you confirm.
Rabby and advanced wallets:
Rabby runs a full simulation by default before confirmation. It will show a "Revert Reason," such as "Insufficient output amount" or "Ownable: caller is not the owner."
If you see a red warning, cancel the transaction. Do not spend money on trial and error.
Risk note: Do not repeatedly test with a small wallet. Every failed transaction still costs gas, and you lose real assets. Some people try to test with a wallet that has no ETH, but that does not help. Having no balance itself makes the simulation fail. Use a wallet with enough balance to simulate, but cancel before confirming.
Method 2: Check similar failed transactions on Etherscan
Enter the contract address you want to interact with on Etherscan, click "Contract" → "Write Contract" or "Read Contract," find the function you need, and follow these steps:
Search for the contract address on Etherscan.
Open the "Transactions" list and look at recent failed transactions (status shows red "Fail").
Open one failed transaction and look at the "Error Message" field. It shows the specific revert reason.
If it says "Out of Gas," you need to increase the gas limit. If it says "reverted with reason string: ...", adjust your transaction parameters accordingly.
Method 3: Use Tenderly for offline simulation (for advanced users)
Open Tenderly and create a free account.
Enter the transaction hash in "Debugger" if it is a failed transaction, or use "Simulator" to simulate a new transaction.
Tenderly shows the full call stack and points to the exact line of contract code that triggered the revert.
It can also simulate results after changing parameters without charging any real fees.
Checklist before you send the transaction
MetaMask confirmation popup does not show a red warning.
Similar transactions on Etherscan do not have a high failure rate.
Tenderly simulation shows "Success."
Common reasons for reverts
Many people wonder: "I saw other transactions succeed on Etherscan, so why did mine fail when I copied the same parameters?" The main reason is that your wallet state is different from theirs. Common revert reasons include:
Not enough allowance: You want to swap USDT, but you have not approved enough allowance to the Router contract. Etherscan may show "Transfer amount exceeds allowance."
Slippage too low: On Uniswap-style DEXs, if the price moves more than your slippage setting at the moment you send the transaction, the contract will revert.
Whitelist or blacklist restrictions: Some tokens, such as USDT, have transfer blacklist features. If the project has blacklisted your address, the contract will revert.
Not enough permission: You called a function with the onlyOwner modifier, but you are not the contract owner.

A leading global cryptocurrency platform,suitable for both beginners and experienced traders.
New user benefit: 20% off trading fees upon registration!!
FAQ
Q: Why do some failed transactions not show a specific error reason on Etherscan? A: If the contract's require or revert does not include an error string, or if the code is written in assembly, Etherscan only shows "Reverted" or empty data. In that case, you need a tool like Tenderly to decode and get the stack trace.
Q: Can eth_estimateGas help me predict a failure? A: Yes, but it has limits. eth_estimateGas is itself a simulated transaction. If the simulation fails, it can return the revert reason. However, some RPC nodes may report an error because of insufficient balance or state mismatch, so you may not get the real reason. It is better to use your wallet's simulation feature or Tenderly directly.
Q: The transaction failed and gas was charged. Can I get that money back? A: No. Gas fees are computing resource fees and are not related to the transaction outcome. The only thing you can do is learn from the failure reason and run a simulation before sending your next transaction.


