Skip to content

Address Cheat Sheet

Quick reference for recognizing which blockchain an address belongs to, with copy-ready regexes and an interactive tester.

Regexes match the format, not the checksum — a valid checksum still needs the chain’s own routine.

What these regexes do (and don’t)
Each regex matches the format of an address on a chain. They don’t verify checksums (Bech32, EIP-55, Base58Check) or that an address exists on-chain — use a chain-native library for that. EVM L2s (Arbitrum, Optimism, Base, Polygon, BSC, Avalanche C-Chain, …) all use the Ethereum 0x… format, so they’re covered by the Ethereum row.

Test an address

Paste an address below — we’ll run every regex and show which chain(s) it matches. Nothing leaves your browser.

All formats

  • Bitcoin (Legacy P2PKH)

    Base58Check
    ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$

    1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

    Starts with "1" (P2PKH) or "3" (P2SH). 25–34 Base58 chars, no 0/O/I/l.

  • Bitcoin (Bech32 / native segwit)

    Bech32
    ^bc1[ac-hj-np-z02-9]{6,87}$

    bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq

    Starts with "bc1". Lowercase only. Covers P2WPKH, P2WSH, and P2TR (Taproot).

  • Ethereum (and all EVM L2s)

    Hex (EIP-55 checksummed)
    ^0x[a-fA-F0-9]{40}$

    0x71C7656EC7ab88b098defB751B7401B5f6d8976F

    0x + 40 hex. EIP-55 mixes letter casing as a checksum; this regex matches both checksummed and all-lowercase forms. Arbitrum, Optimism, Base, Polygon, BSC, Avalanche C-Chain, etc. all use this format.

  • Tron

    Base58Check
    ^T[1-9A-HJ-NP-Za-km-z]{33}$

    TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t

    Starts with "T", 34 Base58 chars total (no 0/O/I/l). Same Base58Check family as Bitcoin but a different version byte.

  • Solana

    Base58 (Ed25519 pubkey)
    ^[1-9A-HJ-NP-Za-km-z]{32,44}$

    7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

    Base58, 32–44 chars (most are 44). No 0/O/I/l. Encodes a 32-byte Ed25519 public key.

  • Cardano

    Bech32 (payment + stake)
    ^(addr1|stake1)[02-9ac-hj-np-z]{38,103}$

    addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhr94d2cecyht5wqj6429j7

    Starts with "addr1" (payment) or "stake1" (stake). Bech32, lowercase, up to 108 chars.

  • Polkadot

    SS58 (Base58Check variant)
    ^[1-9A-HJ-NP-Za-km-z]{8,48}$

    1xs4mgNQ5JHrZ6e1sY5fXZ2qQ9w2v9rZ6e1sY5fXZ2qQ9w2

    SS58 address, Base58, 8–48 chars. Polkadot mainnet starts with "1"; Kusama with letters. Format overlaps with generic Base58 — confirm by network prefix.

  • XRP Ledger (Ripple)

    Base58Check
    ^r[A-Za-z0-9]{24,34}$

    rDsbeomae4FXwgQTJp9RmYXHN1bFzQmJ5W

    Starts with "r", 25–35 Base58 chars (using a Ripple-specific alphabet).

  • Litecoin

    Base58Check + Bech32
    ^((ltc1)[ac-hj-np-z02-9]{6,87}|[LM][a-km-zA-HJ-NP-Z1-9]{25,34})$

    ltc1qg9stkxrszkdqsuj92lm4c7akvk36zvhqw7p6ck

    Legacy starts with "L" (P2PKH) or "M" (P2SH); native segwit starts with "ltc1".

  • Dogecoin

    Base58Check
    ^D[A-Za-km-z1-9]{25,34}$

    DRkbvq6XrJ2YGpkMGdR9sMffp5g2QfE3KQ

    Starts with "D", 26–35 Base58 chars.

  • Cosmos (and Cosmos SDK chains)

    Bech32 (per-chain prefix)
    ^(cosmos|osmo|akash|juno|kava|secret|stars|celestia|noble)1[02-9ac-hj-np-z]{38}$

    cosmos1kqrm4tvu4ffvysxjpc5egrzgd2cqnsfk998a52

    Bech32 with a chain-specific prefix (cosmos1, osmo1, …). Lowercase only; the data part after the "1" separator is 38 bech32 chars (a 20-byte hash + checksum).

  • NEAR

    Account name
    ^[a-z0-9][a-z0-9\-_.]{1,63}(\.[a-z0-9][a-z0-9\-_.]{1,63})*$

    example.near

    Human-readable account names (not public keys), 2–64 chars, lowercase, may contain "." for sub-accounts (e.g. app.near).

  • Algorand

    Base32 (Ed25519 pubkey)
    ^[A-Z2-7]{58}$

    7Z5V5EYPKFB2XSOZ6YRRCN7XY5JHK6BHGABDFNR7RAGT2RZUZ4A3JQ3EZU

    Base32 (RFC 4648, uppercase A–Z + 2–7), 58 chars. Encodes a 32-byte Ed25519 key + 4-byte checksum.

  • Tezos

    Base58Check (tz1/tz2/tz3/tz4)
    ^(tz[1-4])[1-9A-HJ-NP-Za-km-z]{33}$

    tz16pqRL4ctRGb66KbP61JMWteesiWZWs7FN

    Starts with tz1 (Ed25519), tz2 (Secp256k1), tz3 (P-256), or tz4 (BLS). 36 Base58 chars total.

  • Sui

    Hex (0x + 64 hex)
    ^0x[a-fA-F0-9]{64}$

    0x0CfC8a4EbAeB92D6FC22ebC74fFd8898Bac9717C96B96aB4E65cfFee892084bD

    0x + 64 hex (32 bytes). Longer than Ethereum’s 40 hex.

  • Aptos

    Hex (0x + 64 hex)
    ^0x[a-fA-F0-9]{64}$

    0x1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd

    0x + 64 hex (32 bytes). Same length as Sui; both are Move-based.

  • Stellar

    Base32 (Ed25519)
    ^G[A-Z2-7]{55}$

    GREJ45PKHBYRFVWCO4SEYN62V6QO4QA7TGTTC4SFM5GH5DFQQKAD55RI

    Starts with "G" (account) + 55 Base32 chars (M of mnemonic-style addresses start with "M").

  • Avalanche P-Chain / X-Chain

    Bech32 (bech32 custom)
    ^(P|X)-(avax|fuji)1[02-9ac-hj-np-z]{38}$

    P-avax12zyfzjgkwnxpp6yskg37kngq32emjdgaczr9ka

    "X-" or "P-" then bech32 with prefix avax1 (mainnet) or fuji1 (testnet), 45 chars total, lowercase. C-Chain uses the Ethereum 0x format instead.

  • Bitcoin Cash (CashAddr)

    Bech32 (CashAddr)
    ^(bitcoincash|bchtest|bchreg):(q|p)[02-9ac-hj-np-z]{38,42}$

    bitcoincash:qv62csd3zg6je22arcadaef8rjuh5j5j556hv7qf4r

    CashAddr encoding with a "bitcoincash:" (mainnet) or "bchtest:" prefix. "q" = P2PKH, "p" = P2SH. Legacy 1/3 addresses still valid (same as BTC).

  • Bitcoin Taproot (Bech32m)

    Bech32m (P2TR)
    ^bc1p[ac-hj-np-z02-9]{38,58}$

    bc1pkzdkjv748x4sguhn8snzf4ux682q2d0sz3vdzqtnj2a4cupvtht7ex6xkx

    Native-segwit v1 (Taproot). Canonical P2TR is 62 chars total (bc1p + 58); shorter v1 programs (e.g. the 42-char Ordinals docs example) also match. Bech32m checksum, lowercase only.

  • Monero

    Base58 (95-char)
    ^4[0-9AB][1-9A-HJ-NP-Za-km-z]{93}$

    4AnefLkeoEiryKMqX7Rtmptj5yup2bC3N2TpQ6VNJacdMv9VLaBXpkmgtS1hcJDCtSgWEDwbfU7rXUXehLEWtxTQsF99Sie

    95 Base58 chars, starts with "4" (mainnet). Subaddresses start with "8"; testnet uses "9A"/"5". No checksum — integrity is validated by decoding.

  • Zcash

    Base58Check (transparent + shielded)
    ^(t[13][a-km-zA-HJ-NP-Z1-9]{33}|zs1[02-9ac-hj-np-z]{75})$

    zs1ru69chv4nnrdamm2wx0ure2aj7k8jjcve99asraz6fpdphmm9jpzuvvnk0emt2x9xt4925kazkf

    Transparent: "t1" (P2PKH) or "t3" (P2SH), 35 Base58 chars. Sapling shielded: "zs1" + 75 lowercase bech32 chars, 78 total. Legacy Sprout ("zc", 95 chars) is deprecated.

  • TON (The Open Network)

    Base64url (bounceable / non-bounceable)
    ^(E|U)Q[A-Za-z0-9_-]{46}$

    EQlJToBDR1btySTdpb35MR9VRBmPyo-hBwATYT8DQPs4KTl8

    48 chars, base64url. "EQ" = bounceable, "UQ" = non-bounceable. Testnet sometimes prefixed "kQ"/"0Q".

  • Nano

    Base32 (prefix + 60 chars)
    ^(nano|xrb)_[13][134-9a-km-uw-z]{59}$

    nano_3557hyo7izomag54jx1d4kwc9arrwh83w3p54ut6fbfwrmc4eqpggyegkxtr

    "nano_" (new) or "xrb_" (legacy) + 60 chars from Nano’s custom base32 alphabet (no 0/2/l/v). First data char is "1" or "3". Checksum is appended to the 60 chars.

  • EOS / Antelope

    Account name
    ^[a-z1-5.]{1,12}$

    eosio.token

    1-12 chars, lowercase a-z, digits 1-5, and "." allowed (not at the start in real accounts). Human-readable name, not a public key.

  • Dash

    Base58Check (P2PKH)
    ^X[1-9A-HJ-NP-Za-km-z]{33}$

    XvEg258XXmM49h1Av96TWFajweoMiuKV4k

    34 Base58 chars, starts with "X" (P2PKH). P2SH starts with "7". Same Base58Check family as Bitcoin, different version byte.

  • Hedera

    Shard.Realm.Num
    ^\d+\.\d+\.\d+$

    0.0.8646

    Decimal dotted form: shard.realm.account (e.g. 0.0.12345). An entity ID assigned by the ledger, not a public key.

  • BNB Beacon Chain (BEP2)

    Bech32 (bnb prefix)
    ^bnb1[02-9ac-hj-np-z]{38}$

    bnb18zpd96ch75y7jye47ms4x8xrg8gwgdypdt58kg

    Bech32 with "bnb1" prefix, 42 chars, lowercase (bech32 excludes 1, b, i, o). BNB Smart Chain (BEP20) uses the Ethereum 0x format instead.

  • Ronin (Axie Infinity)

    Custom (ronin: + 0x)
    ^ronin:(0x)?[a-fA-F0-9]{40}$

    ronin:0x9dacFfc32b8ef3D1c9F56C8ebDa386BEea0CA84a

    "ronin:" prefix + a 40-hex Ethereum-style address, with or without 0x. Ronin is an EVM sidechain.

  • Flow

    Hex (0x + 16 hex)
    ^0x[a-fA-F0-9]{16}$

    0xC887c7FE4Ff6C263

    0x + 16 hex (8 bytes). Much shorter than Ethereum (40 hex), Sui, and Aptos (64 hex) hex addresses.

  • Filecoin

    Base32 (f/t prefix + type)
    ^(f|t)(0[0-9]+|1[a-z2-7]{38,39}|3[a-z2-7]{38,39})$

    f1vvccpiq5st6g7nf2zkjlebenvcofgwxayovvpt

    Prefix "f" (mainnet) or "t" (testnet). Type 0 = ID (decimal), 1 = SECP256K1, 3 = delegated (f3 can be longer due to subaddress). Payload is base32 (a-z, 2-7).

  • Stellar (Muxed account)

    Base32 (M…, 69 chars)
    ^M[A-Z2-7]{68}$

    MGJUEFRHU7FIJ7IEKLODXC55MHEJ6FX3PUSTA2P6MHRVBOAVUQJ4FGCDGAXCOQ6LY4APH

    Muxed (M…) addresses wrap a base G… account + a memo ID, 69 chars. Completes the Stellar note above.

  • Qtum

    Base58Check (P2PKH)
    ^Q[a-km-zA-HJ-NP-Z1-9]{33}$

    QY494tKyWTwyumET7HLMRw5gFk8NDfncJH

    34 Base58 chars, starts with "Q" (P2PKH). Qtum uses Bitcoin-style addresses with a different version byte; also supports bech32 "qc1".

  • Stablecoin note (USDT / USDC)

    Same as host chain
    ^(T[A-Za-z1-9]{33}|0x[a-fA-F0-9]{40}|[1-9A-HJ-NP-Za-km-z]{32,44})$

    T4GuUK9smNdSksihU3JLD4aY5ypkhsSF6K

    USDT/USDC addresses match their host chain: TRC-20 = Tron (T…), ERC-20 / most L2s = Ethereum (0x…), SPL = Solana (32–44 Base58). Always confirm the network as well as the address.

34 formats100% client-sideFormat match only — not checksum validation
Educational only, not financial or legal advice.