Guide
Address format by chain: a cheatsheet
A reference table of address formats across major chains - length, encoding, prefix, example shape - drawn from the live tx.taxi classifier.
How to use this cheatsheet
The table below maps each chain in the tx.taxi routing registry to its address format: the prefix (if any), the typical length range, the encoding alphabet, the regex pattern the classifier uses (simplified for readability), and an example shape.
Examples are deliberately fake or well-known burn-style values - they are there to show the format, not to point at a real account. Never trust a "real-looking" address from a cheatsheet as if it were yours.
The patterns are the same ones the live classifier uses internally to decide where to route a paste. Reading them top-to-bottom gives you a sense of why some chains are unambiguous (a bc1 prefix is Bitcoin and nothing else) and why others overlap (every EVM chain shares the 0x[40 hex] shape).
The table
EVM family (Ethereum and all EVM L2s and sidechains)
All EVM chains share the same address format. Different chain, different account state, identical bytes.
| Chain | Format | Length | Encoding | Pattern | Example shape |
| --- | --- | --- | --- | --- | --- |
| Ethereum | 0x + hex | 42 chars | hex (lower or EIP-55 mixed) | ^0x[a-fA-F0-9]{40}$ | 0x0000000000000000000000000000000000000000 |
| Base | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Arbitrum One | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Optimism | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Polygon | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| BNB Smart Chain | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Avalanche C-Chain | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Scroll | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Gnosis | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Berachain | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Monad | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
| Plasma | 0x + hex | 42 chars | hex | same as Ethereum | 0x0000000000000000000000000000000000000000 |
EVM transaction hashes share their own shared format: ^0x[a-fA-F0-9]{64}$ (66 characters total, 32 bytes). Block hashes have the same shape. The classifier disambiguates by context and length, not by prefix.
UTXO family
UTXO chains have distinct prefixes per family - this is one of the few places the format alone identifies the chain.
| Chain | Format | Length | Encoding | Pattern | Example shape |
| --- | --- | --- | --- | --- | --- |
| Bitcoin | bc1, 1, or 3 | 26-87 chars | base58check / bech32 | ^(bc1[ac-hj-np-z02-9]{6,87}\|[13][a-km-zA-HJ-NP-Z1-9]{25,34})$ | bc1qexampleexampleexampleexampleexample |
| Litecoin | ltc1, L, or M | 26-87 chars | base58check / bech32 | ^(ltc1[ac-hj-np-z02-9]{6,87}\|[LM][a-km-zA-HJ-NP-Z1-9]{25,34})$ | ltc1qexampleexampleexampleexample |
| Dogecoin | D, A, or 9 | 26-35 chars | base58check | ^[DA9][a-km-zA-HJ-NP-Z1-9]{25,34}$ | Dexampleexampleexampleexampleex |
| Bitcoin Cash | bitcoincash: or q/p | 39-92 chars | cashaddr | ^(bitcoincash:)?[qp][a-z0-9]{38,90}$ | bitcoincash:qexampleexampleexampleexampleexample |
| Dash | X or 7 | 33-35 chars | base58check | ^[X7][a-km-zA-HJ-NP-Z1-9]{32,34}$ | Xexampleexampleexampleexampleex |
| Zcash | t1/t3 or zs/zc/zu | 33-78+ chars | base58check / bech32 | ^t[13][...]$ (transparent) ^z[scu][0-9a-z]{75,}$ (shielded) | t1exampleexampleexampleexample |
| Monero | 4 or 8 | 95-106 chars | base58 | ^[48][0-9AB][1-9A-HJ-NP-Za-km-z]{93,104}$ | 4exampleexampleexampleexampleexampleexampleexampleexampleexampleexampleexampleexampleexample |
Bitcoin transaction IDs are 64-character lowercase hex with no 0x prefix. Block hashes share that format and characteristically have many leading zeros from proof-of-work.
Account chains (non-EVM)
| Chain | Format | Length | Encoding | Pattern | Example shape |
| --- | --- | --- | --- | --- | --- |
| Solana | (none) | 32-44 chars | base58 (ed25519 pubkey) | base58 alphabet, length 32-44 | So11111111111111111111111111111111111111112 |
| Tron | T + 33 chars | 34 chars | base58check | ^T[1-9A-HJ-NP-Za-km-z]{33}$ | Texampleexampleexampleexampleex |
| TON | EQ/UQ or wc:hex | 48 or 67 chars | base64url / raw | ^[EU]Q[A-Za-z0-9_-]{46}$ or ^-?[01]:[a-fA-F0-9]{64}$ | EQexampleexampleexampleexampleexampleexampleex |
| Sui | 0x + hex | 66 chars | hex (32 bytes) | ^0x[a-fA-F0-9]{64}$ | 0x0000000000000000000000000000000000000000000000000000000000000000 |
| Aptos | 0x + hex (sometimes short) | up to 66 chars | hex | ^0x[a-fA-F0-9]{1,64}$ | 0x1 |
| NEAR | named account or 64-hex implicit | 2-64 chars | ascii or hex | ^[a-z0-9_-]+(\.[a-z0-9_-]+)+$ or ^[0-9a-f]{64}$ | example.near |
| XRP Ledger | r + base58 | 25-35 chars | base58check | ^r[1-9A-HJ-NP-Za-km-z]{24,34}$ | rExampleExampleExampleExampleEx |
| Stellar | G (account) or M (muxed) | 56 or 69 chars | StrKey base32 | ^G[A-Z2-7]{55}$ (account) | GEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLE |
| Cardano | addr1 (payment) or stake1 | 50+ chars | bech32 | ^addr1[0-9a-z]{50,}$ | addr1qexampleexampleexampleexampleexampleexampleex |
| Starknet | 0x + hex (felt) | up to 66 chars | hex | ^0x0?[a-fA-F0-9]{1,63}$ | 0x01 |
| Aleo | aleo1 | 63 chars | bech32m | ^aleo1[0-9a-z]{58}$ | aleo1exampleexampleexampleexampleexampleexampleexampleexampleexa |
| Accumulate | acc:// | varies | URL | ^acc://.+$ | acc://example.acme |
Reading the patterns
A few rules of thumb that come out of looking at the whole list:
- Prefixes beat length. Whenever a chain reserves a unique prefix (
bc1,ltc1,addr1,aleo1,acc://,T,r,G,M), that prefix uniquely identifies the chain family. The classifier checks these first. - 0x-hex is shared by many ecosystems. EVM, Sui, Aptos, and Starknet all use
0x-prefixed hex. EVM is locked at 42 characters for addresses and 66 for hashes; the others have variable lengths up to 66, which gives the classifier a length-and-context signal. - Plain hex with no prefix is ambiguous. A 64-character lowercase hex string is a valid UTXO transaction ID, a valid Bitcoin block hash, a valid Monero hash, a valid NEAR implicit account, and a few other things. Without context, the router has to either pick a default or ask.
- Base58 alphabets exclude visually ambiguous characters.
0,O,I, andlare not in base58. If you see them, you are looking at base64 or hex, not base58. - Case sensitivity matters in base58 and base32. EVM hex is case-insensitive at the protocol level (with optional EIP-55 mixed case as a checksum). Base58 and base32 are not - changing case changes the decoded bytes.
Where this lives in the code
The full set of patterns lives in the tx.taxi classifier and stays in sync with the chain registry. When a new chain is added to the routing table, its format goes in alongside it. The cheatsheet on this page is generated against the same source data.
Paste any of the example shapes at tx.taxi/{value} to see the classifier route to the matching explorer in one hop. That is the whole point of having the patterns in the first place - the bytes already know which chain they belong to.
Frequently asked questions
Why do EVM addresses on different chains look identical?
Every EVM chain inherits Ethereum's 20-byte hex address format. The same private key derives the same address on Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, and any other EVM network. The address tells you the format, not the chain.
What is the safest way to identify a chain from an address?
Match on the longest, most specific prefix first. acc:// can only be Accumulate. addr1 can only be Cardano. aleo1 can only be Aleo. Bare 0x-hex is ambiguous across EVM chains. Bare 64-character hex is ambiguous across UTXO chains. Prefixes win over length when they exist.
Why is base58 so common in non-EVM chains?
Base58 was popularised by Bitcoin to make hashes copy-pasteable: it removes visually similar characters like 0, O, I, and l, and adds a checksum in the wrapping format. Chains that came after Bitcoin often kept the convention even when they switched cryptography.
Are these patterns guaranteed to be unique?
Format patterns are good enough to classify in practice, not formally unique. A 64-character hex string is a valid format for several chains, and tx.taxi handles the overlap by ranking candidates and offering a disambiguation step when needed.