Bitcoin Address Validator
Validate Bitcoin addresses: P2PKH, P2SH, native SegWit (Bech32), and Taproot (Bech32m). Checks format and checksum.
P2PKH (Legacy)
Starts with 1
1A1zP1eP5QGefi2DMPTfTL5SLmv7Divf
P2SH (Script Hash)
Starts with 3
3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
Bech32 (SegWit)
Starts with bc1q
bc1qar0srrr7xfkvy5l643lydnw…
Bech32m (Taproot)
Starts with bc1p
bc1p5d7rjq7g6rdk2yhzks9sml…
Bitcoin Address Validator
Bitcoin uses three address formats. Legacy P2PKH addresses start with 1 and use Base58Check encoding with a SHA256d checksum. P2SH addresses start with 3. Native SegWit (Bech32) addresses start with bc1q, and Taproot (Bech32m) addresses start with bc1p. This tool validates the format and checksum only — it does not check if the address has ever received funds.
Built and maintained by Meet Shah · Last updated
What this tool is used for
- Catching a transcription error in an address before sending an irreversible transaction to it.
- Working out which address type you have been given from its prefix.
- Validating a batch of payout addresses before importing them into a system.
- Confirming that a wallet's rejection is about the checksum rather than the network.
- Checking that a bech32 address was not corrupted by a case-changing copy.
Frequently Asked Questions
- What does validation actually check?
- The checksum, not ownership. A legacy address is Base58Check: version byte, 20-byte hash, then the first 4 bytes of a double SHA-256 as a checksum. Change one character and the checksum fails — which is precisely what stops a typo sending coins nowhere.
- Why does the Base58 alphabet skip some characters?
- 0, O, I and l are omitted because they are indistinguishable in many fonts, and the intent was that an address could be read aloud or copied by hand without ambiguity. That is also why Base58 is not simply Base64 with padding removed.
- What do the different prefixes mean?
- `1` is a legacy pay-to-public-key-hash address, `3` is pay-to-script-hash (multisig or wrapped SegWit), and `bc1` is native SegWit using Bech32 — `bc1q` for v0 witness programs and `bc1p` for Taproot. `tb1` and `m`/`n` prefixes are testnet.
- Why is a bech32 address all one case?
- Because mixing cases is invalid — the checksum is defined over a single case, so `BC1Q…` and `bc1q…` are both valid but a mixture is rejected. All-uppercase exists so the address can be encoded in a QR code's more compact alphanumeric mode.
- Is a valid address a safe address?
- No. Validity means well-formed, nothing more: an address can be perfectly valid and belong to an attacker, or to a wallet nobody holds the key for. Clipboard-hijacking malware substitutes a *valid* address — always compare the first and last characters against the source.
- How do the address formats differ?
- Legacy addresses start with 1, script addresses with 3, and native SegWit bech32 addresses with bc1. Bech32 uses a stronger checksum and is case-insensitive, which is why it can be written entirely in uppercase for QR efficiency.
Common errors and gotchas
- Treating a valid address as a safe destination. Validation is arithmetic; it says nothing about who controls the key.
- Mixing case in a bech32 address. The encoding is single-case by design, and mixing it invalidates the checksum.
- Assuming an address works on every chain that reuses the format. Sending to the wrong network usually loses the funds.
- Reading the prefix as the whole story. A prefix tells you the type, not the script or its spending conditions.
- Typing a character the Base58 alphabet excludes and concluding the validator is broken.