Raw Transaction Decoder

Turn an opaque hex, base64 or protobuf blob into readable fields before you sign it or after you broadcast it. The chain is detected automatically; the decoder recovers the sender from the signature where the chain allows it.

Signed or unsigned. Decoding runs in your browser; nothing is sent anywhere, so it is safe for unsigned transactions you are about to sign.
Examples:

Decoded in your browser with JavaScript. Addresses are never uploaded or stored.

What is a raw transaction decoder?

A raw transaction decoder parses the serialized bytes of a transaction (RLP for EVM chains, Bitcoin's binary format or a PSBT, Solana's compact message layout, or Tron's protobuf) into named fields: sender, recipient, amount, fee parameters, nonce or blockhash, calldata and signatures. It also computes the transaction ID locally and, where the signature scheme allows, recovers the signer. Nothing is sent to a node.

What you get per chain

ChainDecoded
EVMtype, chain ID, nonce, from (recovered), to or created contract address, value, gas limit, gas price or EIP-1559 fees, max total fee, calldata with ERC-20 / common function arguments, access list, blob hashes, EIP-7702 authorizations, r/s/v, transaction hash
Bitcointxid, wtxid, size / vsize / weight, version, locktime meaning, RBF flag, every input's outpoint and derived address, every output's value, script type and address, OP_RETURN text, scriptSig and witness hex
Solanamessage version, fee payer, blockhash, signatures, account list with signer / writable flags, address lookup tables, every instruction decoded for System, SPL Token, Token-2022, ATA, Compute Budget and Memo programs, with SOL and token transfers summarised
TrontxID, recovered signer and whether it matches the owner, fee limit, timestamp, expiration, ref block, memo, each contract: TransferContract, TRC-20 transfer via TriggerSmartContract, TRC-10 transfer, freeze / unfreeze / delegate resources, votes, contract creation

Typical uses

Per-chain pages: Ethereum, Bitcoin, Solana, Tron.

Frequently asked questions

Which formats are accepted?

EVM: the RLP hex a wallet or eth_getRawTransactionByHash returns, signed or unsigned, types 0 to 4. Bitcoin: raw transaction hex (legacy, SegWit, Taproot) and PSBT, from which the unsigned transaction is extracted. Solana: the base64 string from RPC or a wallet's signTransaction, base58, or hex; both a full transaction and a bare message work, legacy and v0. Tron: raw_data_hex, the full signed transaction hex, or the JSON object from TronGrid and tronWeb.

Can it tell me the sender?

EVM and Tron: yes, the sender is recovered from the ECDSA signature, which is how nodes do it. Bitcoin: input addresses are derived from the scriptSig or witness for P2PKH, P2SH-P2WPKH, P2WPKH and P2WSH spends; Taproot key-path spends do not contain the key, so the address lives in the previous output. Solana: the fee payer and signers are the first accounts in the message.

Why is there no fee for Bitcoin?

A raw Bitcoin transaction references previous outputs by txid and index but does not contain their amounts. The fee is inputs minus outputs, so it needs a lookup of the previous transactions. Everything else, including txid, vsize and weight, is computed locally.

Is it safe to paste an unsigned transaction here?

Yes. An unsigned transaction contains no secrets, and the page makes no network requests after loading. This is the recommended use: decode what a dApp asks you to sign before you approve it in the wallet.

What does a selector or program ID not in the list mean?

The decoder knows the common ERC-20 / ERC-721 functions and the Solana System, Token, ATA, Compute Budget and Memo programs. Other calls are shown with their raw data; paste the calldata and the function signature into the ABI decoder to go further.