A transaction hash (also called TXID, transaction ID or tx hash) is the unique identifier of one blockchain transaction. It is produced by hashing the transaction's own data, so it is fixed the moment the transaction is signed, and anyone can paste it into a block explorer to see the sender, the recipient, the amount, the fee and the confirmation status.
On Bitcoin and Ethereum it is a 64-character hexadecimal string. Ethereum and the other EVM chains prefix it with 0x, which makes 66 characters. Solana uses the transaction's signature instead, a longer base58 string, and the XRP Ledger writes its hashes in upper case.
Every wallet, exchange and support desk eventually asks for a transaction hash, and most explanations stop at "a unique identifier". This guide goes further: what the string is made of, why it looks different on each chain, where to copy yours from, how to read the explorer page it opens, and the handful of cases where the hash you were given stops working.
The short version
- Transaction hash and transaction ID are the same thing. Wallets, exchanges and explorers use the names interchangeably, along with TXID, tx hash and hash ID.
- The length tells you the chain family: 64 hex characters (Bitcoin), 0x + 64 (Ethereum and EVM chains). Solana uses the transaction signature instead, about 88 base58 characters.
- You find yours in the wallet's transaction details or the exchange's withdrawal history, and you check it on the explorer of the network it was sent on.
- A hash stops working when the transaction was replaced (sped up, cancelled, replace-by-fee) or when the transfer never left the exchange's internal ledger.
1. What is a transaction hash?
A blockchain transaction is a small block of data: who is paying, who is being paid, how much, what fee, and a signature. Run that data through the network's hash function and you get a fixed-length number. That number is the transaction hash. Any change to the data produces a different number, so the hash works as a fingerprint: it names exactly one transaction and no other.
Nodes, wallets and explorers use the hash as the lookup key. When you broadcast a transaction, the node that accepts it hands the hash back. When your wallet shows "pending", it is polling the network for that hash. When an exchange asks for proof of a deposit, the hash is what it checks. It is the only reference you need to track a payment from broadcast to confirmation.
The hash itself proves nothing. It is a lookup key, and what the explorer shows when you open it is the proof.
2. Is a transaction hash the same as a transaction ID?
Yes. Transaction hash, transaction ID, TXID, tx hash, txn hash and hash ID all refer to the same string. The vocabulary depends on where you are: Bitcoin software says txid, Ethereum tools say transaction hash or txn hash, and exchanges often say TXID or hash ID on their withdrawal screens. Solana is the one place where the term differs in substance. Its transaction ID is the transaction's first signature rather than a hash of the whole transaction, so its documentation says "signature".
Two things are often confused with it and are not the same. A wallet address identifies an account, not a payment (on Bitcoin it starts with 1, 3 or bc1). A block hash identifies a whole block containing many transactions. If an exchange rejects the string you pasted, check that you did not copy one of those.
3. What does a transaction hash look like?
The format depends on the chain, and it is usually enough to tell which network a hash belongs to:
| Network | Format | Length | Example |
|---|---|---|---|
| Bitcoin, Litecoin, Dogecoin, Bitcoin Cash | Lower-case hexadecimal | 64 characters | 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b |
| Ethereum, Polygon, BNB Smart Chain, Arbitrum, Base, Avalanche C-Chain and every other EVM chain | 0x followed by 64 lower-case hex characters | 66 characters | 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017 |
| Solana | Base58 signature: digits and letters, no 0x prefix | About 87 to 88 characters | Longer than a hex hash, mixes upper and lower case |
| XRP Ledger | Upper-case hexadecimal | 64 characters | Digits and the letters A to F, all upper case |
The Bitcoin example is the first transaction ever recorded, the coinbase of the genesis block mined on 3 January 2009; you can open it on mempool.space. The Ethereum example is the one used in the ethereum.org developer documentation. Both are 32 bytes written as hexadecimal, which is why they are 64 characters long; the 0x prefix is Ethereum's convention for "this is hex". Litecoin, Dogecoin and Bitcoin Cash inherit Bitcoin's format, and every EVM network inherits Ethereum's, so a transaction on Polygon or Base looks exactly like one on Ethereum mainnet.
A Solana transaction ID is the transaction's signature: 64 bytes of Ed25519 signature encoded in base58 rather than hex, which is why it is longer and contains both upper- and lower-case letters. XRP Ledger hashes are the same 256 bits as Bitcoin's, written in upper case by convention.
4. How is a transaction hash generated?
Each chain hashes its own serialisation of the signed transaction, and the differences explain a few things you will run into.
- Bitcoin, Litecoin, Dogecoin, Bitcoin Cash
- The txid is the double SHA-256 of the transaction in its traditional serialisation, which leaves out the witness (signature) data of SegWit inputs; the witness is covered by a second identifier, the wtxid. That is how BIP 141 defines it, and it is why a transaction that spends only SegWit outputs cannot have its txid altered by a third party before confirmation.
- Ethereum and EVM chains
- The hash is the Keccak-256 of the signed, serialised transaction, so it only exists once the transaction is signed: libraries such as ethers return null for the hash of an unsigned transaction. The node returns the 32-byte hash as the result of eth_sendRawTransaction, and the same value is what you pass to eth_getTransactionByHash and eth_getTransactionReceipt.
- Solana
- There is no separate hash. The first Ed25519 signature on the transaction, 64 bytes shown as a base58 string, is used as its ID.
- XRP Ledger
- A SHA-512Half hash (the first 256 bits of a SHA-512) of the signed transaction's binary form, prefixed with the bytes TXN before hashing, written as 64 upper-case hex characters.
The definitions are in BIP 141, the Ethereum JSON-RPC specification, the Solana terminology page and the XRP Ledger data types reference.
What all of them share: the hash is computed by whoever signs the transaction, before it reaches the network. Your wallet knows the hash the instant you tap send, which is why it can show it while the transaction is still unconfirmed.
5. Where do I find my transaction hash?
It depends on who sent the transaction.
- Self-custody wallet (MetaMask, Ledger, Trust Wallet, Phantom, Electrum)
- Open the transaction in the wallet's activity or history list. The details screen shows the hash, usually with a copy button and a "view on explorer" link that opens it for you.
- Exchange withdrawal
- Go to the withdrawal history. Once the exchange has broadcast the transaction, the row shows a TXID, often as a link. If the row still says processing, the hash does not exist yet because nothing has been signed.
- Someone paid you
- Ask them for the hash, or open your receiving address on a block explorer: every transaction that touched the address is listed with its hash.
- Your own code
- The broadcast call returns it. With the ChainGate SDK it is the transactionId field on the result of signAndBroadcast(), on Bitcoin and Ethereum alike (see section 10).
Copy the whole string. Exchanges reject hashes with a missing character or an extra space, and a Bitcoin txid pasted into an Ethereum explorer will simply not be found.
6. How do I check a transaction with its hash?
Paste it into a block explorer for the network the transaction was sent on. The explorer shows whether the transaction is pending or confirmed, how many confirmations it has, the block that included it, the sender and the recipient, the amount, the fee paid and, on Ethereum, whether the execution succeeded or failed.
| Network | Explorer | What to look for |
|---|---|---|
| Bitcoin | mempool.space, blockchain.com | Confirmations (6 is the usual "final"), fee rate in sat/vB, position in the mempool while unconfirmed |
| Ethereum | Etherscan | Status (Success, Fail, Pending), block number, gas used and transaction fee, token transfers |
| Polygon, BNB Smart Chain, Arbitrum, Base, Avalanche | Polygonscan, BscScan, Arbiscan, Basescan, Snowtrace | Same layout as Etherscan; each explorer only knows its own chain |
| Litecoin, Dogecoin, Bitcoin Cash | Blockchair or each coin's own explorer | Confirmations and fee, as on Bitcoin |
| Solana | Solscan, Solana Explorer | Commitment level (processed, confirmed, finalized), fee in SOL, the instructions executed |
| XRP Ledger | XRPScan, the xrpl.org explorer | Result code (tesSUCCESS means it went through), ledger index, destination tag |
Read the status first. "Pending" or "unconfirmed" means the network has the transaction but no block has included it yet. "Success" with one or more confirmations means the money moved. "Fail" or "dropped" means it did not, and on Ethereum the fee was still paid. For what each field on an Ethereum transaction page means, read the Etherscan guide.
7. Why can't I find my transaction on the explorer?
A "transaction not found" page is almost always one of these:
- Wrong network
- The hash is from a different chain than the explorer. A USDT withdrawal can travel on Ethereum, Tron, BNB Smart Chain or Polygon, and each has its own explorer. Match the explorer to the network you chose at withdrawal.
- Too early
- A transaction takes a few seconds to propagate, and an exchange may show the TXID a moment before explorers index it. Wait a minute and refresh.
- It never went on-chain
- Transfers between two accounts of the same exchange, and card or bank payments, are recorded in the company's database rather than on a blockchain, so there is no hash to find. Only on-chain sends get one.
- It was replaced
- If the transaction was sped up, cancelled or bumped with replace-by-fee, the replacement has a new hash and the network drops the old one. The next section explains why.
- It expired
- A Bitcoin transaction with too low a fee is dropped from nodes' mempools after about two weeks. The funds are spendable again and the old txid refers to nothing.
The Bitcoin fee guide explains how to pick a fee that confirms, and what to do when one is stuck.
8. Can a transaction hash change?
A confirmed transaction's hash never changes: it is part of the block, and altering it would alter the block. Before confirmation, the hash can be superseded by another transaction, which from the outside looks like a change.
On Ethereum and other EVM chains, speeding up or cancelling a pending transaction means signing a new transaction with the same nonce and a higher fee, as MetaMask's help page describes. The network keeps whichever gets mined and discards the other. The new transaction has a new hash, so the one your wallet showed first becomes a dead link. The same applies to Bitcoin's replace-by-fee (BIP 125): the replacement is a different transaction with a different txid.
Older Bitcoin transactions had a further problem, transaction malleability: a third party could tweak the signature encoding of an unconfirmed transaction and give it a different txid without changing where the money went. Segregated Witness (BIP 141, active since 2017) moved signatures out of the data the txid covers, which removed the problem for transactions that spend SegWit outputs. If your wallet uses addresses starting with bc1, this does not affect you.
10. How to get the hash in code
If your application sends transactions, keep the hash the broadcast call returns: it is the key for status checks, support tickets and reconciliation. With the ChainGate SDK the same lines work on Bitcoin, Litecoin, Dogecoin, Bitcoin Cash and any EVM network:
import { ChainGate, importWallet } from 'chaingate';
const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY });
const wallet = importWallet({ phrase: process.env.MNEMONIC });
const eth = cg.connect(cg.networks.ethereum, wallet);
const tx = await eth.transfer(cg.networks.ethereum.amount('0.01'), '0x...');
tx.setFee(tx.recommendedFees().normal);
const sent = await tx.signAndBroadcast();
console.log(sent.transactionId); // 0x... on EVM chains, 64 hex chars on Bitcoin
sent.onConfirmed((details) => {
console.log('mined in block', details.blockHeight, details.transactionId);
});The tutorial on sending crypto in JavaScript covers wallets, fees and error handling, and the transfer documentation lists every field on the broadcast result, including the onConfirmed() callback used above.
11. Where to go from here
You can now read a hash the way an explorer does: which chain, which transaction, and whether it is final. To understand the fee line on that explorer page, read what gas fees are on Ethereum and how Bitcoin fees work, and to see what sending costs right now on each network, open the gas tracker. If you want broadcasting, confirmation callbacks and transaction IDs handled across Bitcoin and EVM chains from one TypeScript library, ChainGate does that.
Frequently asked questions
What is a transaction hash in crypto?
The unique identifier of a blockchain transaction, produced by hashing the transaction's data. On Bitcoin it is 64 hexadecimal characters; on Ethereum and other EVM chains it is 0x followed by 64 hex characters. Paste it into a block explorer to see the transaction's status, addresses, amount and fee.
Is a transaction hash the same as a transaction ID (TXID)?
Yes. Transaction hash, transaction ID, TXID, tx hash and hash ID are different names for the same string. Only Solana differs in substance: its transaction ID is the transaction's first signature rather than a hash.
What does a transaction hash look like?
Bitcoin, Litecoin, Dogecoin and Bitcoin Cash: 64 lower-case hex characters. Ethereum, Polygon, BNB Smart Chain, Arbitrum, Base and other EVM chains: 0x plus 64 hex characters, 66 in total. Solana: a base58 signature of about 88 characters. XRP Ledger: 64 upper-case hex characters.
How do I find the transaction hash of a withdrawal?
Open the withdrawal history on the exchange. Once the withdrawal has been broadcast, the row shows the TXID, often as a link to a block explorer. If it still says processing, the transaction has not been signed yet and no hash exists.
How do I check a transaction hash?
Paste it into the block explorer of the network it was sent on: mempool.space or blockchain.com for Bitcoin, Etherscan for Ethereum, Polygonscan, BscScan, Arbiscan or Basescan for the other EVM chains, Solscan for Solana. The page shows the status, confirmations, sender, recipient, amount and fee.
Why does the explorer say the transaction was not found?
Usually the hash belongs to a different network than the explorer, the transaction is only seconds old, it was a transfer inside an exchange that never touched the blockchain, or it was replaced by a sped-up or cancelled transaction with a new hash.
Can a transaction hash change?
Not once the transaction is confirmed. Before that, speeding up, cancelling or replace-by-fee creates a new transaction with a new hash, and the original is dropped. Older Bitcoin transactions could also be altered by third parties (malleability), which SegWit fixed in 2017.
Is it safe to share my transaction hash?
Yes. It contains no private keys and cannot be used to move funds. It reveals the addresses, amount and time of the payment, which are public on the blockchain anyway.
How many characters is a transaction hash?
64 for Bitcoin-family chains and the XRP Ledger, 66 for Ethereum and EVM chains because of the 0x prefix. Both represent the same 32 bytes. Solana transaction IDs are base58 signatures, usually 87 or 88 characters.
Build with ChainGate
Put these ideas to work — ChainGate gives you wallets, transactions and managed RPC for Ethereum and 20+ other blockchains with one install.