Bitcoin Address Format Validator

Validate BTC addresses: P2PKH (1...), P2SH (3...), Bech32 (bc1...) and Bech32m

Ad placeholder (leaderboard)

A single mistyped character in a Bitcoin address does not bounce — funds sent to a malformed or wrong address are gone forever. This validator catches transcription errors before you broadcast by recomputing the address checksum locally, so you can confirm a deposit address is well-formed without trusting a remote service.

How it works

Bitcoin uses two checksum schemes depending on the address era. Legacy addresses (those starting with 1 or 3) are Base58Check encoded: a version byte and the 20-byte public-key or script hash are concatenated, hashed twice with SHA-256, and the first four bytes of that digest are appended as a checksum. To validate, the tool Base58-decodes the string, splits off the trailing four bytes, recomputes the double SHA-256 over the payload, and checks that the four bytes match.

SegWit addresses (starting with bc1) use Bech32 or Bech32m. The string is split at the last 1 into a human-readable part (bc) and a data part encoded in a 32-symbol alphabet. A polynomial checksum over the expanded HRP and data must equal a constant: 1 for Bech32 (witness version 0) or 0x2bc830a3 for Bech32m (witness version 1+, i.e. Taproot). The witness version is the first data symbol, so the tool also enforces that v0 uses Bech32 and v1 uses Bech32m, per BIP-350.

Example and notes

Paste bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq and you will see “Native SegWit” with a valid Bech32 checksum. Change one character and the checksum fails immediately. A Taproot address like bc1p... is labelled v1 and validated with Bech32m. Because the algorithm only proves structural integrity, treat a pass as “safe to copy” — not as proof of ownership or balance. Nothing you paste leaves the browser.

Ad placeholder (rectangle)