Bitcoin · TRON · EVM · Solana — one lookup box
Why did my transaction fail?
Paste any transaction hash, signature or explorer link. The chain is detected automatically, and you get the failing program or contract, the decoded error, and the actual fix.
How the diagnosis works
Three steps, no black box. Everything is derived from the transaction the validator actually recorded.
Finds the instruction that broke
A failed transaction carries an instruction index plus an error. We resolve that index to the program that rejected it — System, SPL Token, Jupiter, Raydium, Pump.fun and others.
Decodes the error code
Custom codes are program-specific: 6001 means slippage on Jupiter but something else elsewhere. We map the code to the program that raised it, then fall back to reading the program's own log lines.
Gives you the fix, not just the code
Each diagnosis ends with concrete next actions — raise slippage, top up SOL, re-create the token account, refresh the quote — plus the raw evidence so you can verify it yourself.
One lookup box for nine chains
There is no network switch to get wrong. The input format decides the family, and a hash is probed against every chain in that family in parallel.
The five failures we see most
Each row links to a full write-up with the causes, the fix list and a real log sample.
| What you see | What it means | Quick fix |
|---|---|---|
Slippage tolerance exceededcustom program error 0x1771 |
The price moved past your slippage limit, so the swap was cancelled instead of filling at a worse rate. | Raise slippage slightly or shrink the trade. |
Not enough SOL to pay the feeInsufficientFundsForFee |
The fee payer has no SOL to pay the network fee plus rent for new accounts. | Send ~0.01 SOL to the wallet and retry. |
Blockhash not found (expired)BlockhashNotFound |
The transaction waited longer than the ~60–90 second blockhash window and expired. | Just retry — the wallet signs a fresh one. |
Not enough token balancecustom program error 0x1 |
The token account holds less than the amount being sent, or two instructions spent the same balance. | Refresh balances, retry with a smaller amount. |
Token account is frozencustom program error 0x11 |
The token issuer froze this account; only they can unfreeze it. | Contact the issuer — nobody else can lift it. |
Browse the error libraries
Every entry explains what the error means, which program or contract raises it, and the concrete steps that make it go away.
What actually happens when a transaction fails
A Solana transaction is atomic: every instruction either succeeds or none of them do. When one program rejects an instruction, the runtime unwinds the whole transaction, but the fee is still charged because validators already did the work of processing and including it. That is why a failed swap costs you a few thousand lamports and leaves your token balances untouched.
The error you see in a wallet is only the top layer. Underneath there are three distinct signals, and they rarely agree:
- The runtime error — an
InstructionErrorwith the index of the instruction that failed, plus either a built-in name such asInsufficientFundsor a program-defined code such as{"Custom": 6001}. - The program code — each program publishes its own enum. Code 6001 is slippage on Jupiter, but on another program it could be a permissions check. Decoding it against the wrong program gives a confidently wrong answer, which is the most common bug in error explainers.
- The program logs — the messages a program prints before failing. These are the ground truth:
Program JUP6… failed: custom program error: 0x1771tells you both the program and the code in a single line.
Tx Doctor reads all three and only then offers an explanation. When it meets a code it has never seen, it says so plainly instead of guessing, and it shows you the raw logs so you can check the conclusion yourself.
Failures that are not really failures
Two very common support questions are not on-chain failures at all. First, an expired blockhash: the transaction was signed but never landed, so it simply does not exist and no funds moved. Second, a wallet-side simulation warning: many interfaces simulate a swap before submitting, and the scary red text you see is a prediction, not a recorded result. If the signature is not found on chain, nothing happened — you can safely try again.
Frequently asked questions
Why did my Solana transaction fail?
Most failures fall into four groups: slippage exceeded on a swap, not enough SOL for fees or rent, a token account that is frozen or missing, or an expired blockhash. Paste the signature above to see which program rejected it and what its code means.
Does this tool need my wallet or private key?
No. It only reads public on-chain data with a read-only RPC call. It never asks you to connect a wallet, sign anything, or type a seed phrase. Anything that does is a scam.
Is a failed transaction charged a fee?
Yes. The base fee and any priority fee are still paid, because the transaction was included and executed before it was rolled back. It is usually a fraction of a cent.
What does custom program error 0x1771 mean?
0x1771 is 6001, which on Jupiter means slippage tolerance exceeded — the price moved outside your limit and the router cancelled the swap rather than filling it at a worse price.
Does this work for Ethereum, Base, Bitcoin and TRON?
Yes. A 0x hash is probed against Ethereum, Base, Arbitrum One, OP Mainnet, Polygon and BNB Chain in parallel and decoded on the chain that actually ran it. A 64-character hash is checked against Bitcoin and TRON, and a base58 string goes to Solana.
The transaction is not found — what now?
Either it was submitted seconds ago, it expired before landing, or it happened on a testnet. Wait a moment and retry, or open the hash in a block explorer.