Bitcoin Address Validator
Validate a Bitcoin address and identify its type — Legacy P2PKH, P2SH, Bech32 SegWit or Bech32m Taproot — with full Base58Check / Bech32 checksum verification and the decoded hash or witness program.
Input
Output
| Property | Value |
|---|---|
| No data yet | |
Guides
A Bitcoin address is not just a random-looking string — it's a checksum-protected, self-verifying piece of data. This tool decodes any Bitcoin address and tells you whether it's structurally valid, which address family it belongs to, and the raw public-key hash or witness program encoded inside it.
The three address families
Legacy P2PKH ("1...") is the original Bitcoin address format from 2009, pay-to-public-key-hash. It's Base58Check-encoded: a version byte, a 20-byte hash, and a 4-byte checksum, all run through Base58 (an alphabet that drops visually confusable characters like 0, O, I, and l).
P2SH ("3...") — pay-to-script-hash — uses the same Base58Check envelope as P2PKH but with a different version byte (0x05 instead of 0x00). It's used for multisig wallets, SegWit-wrapped addresses, and other script-based spending conditions.
SegWit Bech32 ("bc1q...") and Bech32m Taproot ("bc1p...") are newer, native SegWit formats defined in BIP-173 and BIP-350. They drop Base58 entirely in favor of Bech32, a checksum scheme designed for better error detection and case-insensitivity. Witness version 0 (P2WPKH/P2WSH, "bc1q...") uses the original Bech32 checksum constant; witness version 1 and above (P2TR Taproot, "bc1p...") uses the revised Bech32m constant — mixing them up is itself an error the validator catches.
How to use it
Paste any Bitcoin address into the input field. The tool auto-detects the format from the prefix and decodes it immediately — there's nothing to configure. The result table shows:
- Status — Valid or Invalid, with a reason when invalid (bad checksum, bad character, wrong length, etc.)
- Address Type — P2PKH (Legacy), P2SH, Bech32-SegWit, or Bech32m-Taproot
- Network — mainnet, testnet, or regtest, inferred from the version byte or human-readable prefix
- Hash / Witness Program — the decoded public-key hash, script hash, or witness program, in hex
FAQ
Does this check whether an address has ever received funds, or that it belongs to someone? No. This only verifies that the address is structurally valid — correctly formatted and checksum-consistent. It cannot tell you whether the address exists on the blockchain, has a balance, or who controls it.
Can I validate testnet addresses?
Yes. Testnet P2PKH/P2SH addresses (starting with m, n, or 2) and testnet Bech32 addresses (tb1...) are recognized and reported with network: testnet.
Why did a valid-looking address come back Invalid? A single mistyped, dropped, or transposed character breaks the checksum, and the validator will correctly flag it. This is by design — it's the same check a wallet performs before letting you send funds, meant to catch typos before they become an unrecoverable loss.
What about older P2PK or bare-multisig outputs? Those aren't represented as "addresses" in the standard sense (no wallet software generates an address string for them), so they're outside the scope of this tool.
Privacy
Everything happens in your browser. The address you paste is never sent to a server, logged, or stored — decoding and checksum verification run entirely client-side using standard JavaScript.