Bitcoin Address Validation

Check a Bitcoin address: its type (P2PKH, P2SH, P2WPKH, P2WSH, P2TR), network, and the Base58Check or bech32 checksum that catches typos. No on-chain lookup.

Free to try bitcoin-address-validate

Example

Input
{
  "address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"
}
Answer
{
  "input": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
  "valid": true,
  "network": "mainnet",
  "normalized": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq",
  "address_type": "p2wpkh",
  "format_valid": true,
  "checksum_valid": true
}

Try it

Runs the real tool from your browser, with no key. Free calls are limited to 300 a month across all free tools.

Edit the values, then run.

Inputs

FieldTypeRequiredWhat it is
addressstringYesBitcoin address (e.g. 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa, bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq, or bc1pmfr3p9j00pfxjh0zmgp99y8zftmd3s5pmedqhyptwy6lm87hf5sspknck9)

Output fields

How reliably each field appears in a successful answer.

FieldTypeAppears
inputstringAlways (present in every successful answer)
validbooleanAlways (present in every successful answer)
networkone of mainnet, testnet, regtest, nullUsually (present for most inputs)
normalizedstring or nullUsually (present for most inputs)
address_typeone of p2pkh, p2sh, p2wpkh, p2wsh, p2tr, p2w-unknown, nullUsually (present for most inputs)
format_validbooleanAlways (present in every successful answer)
checksum_validbooleanAlways (present in every successful answer)

How to call it

The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.

# Free tool: works without a key, within a monthly allowance. Add your key for more.
curl -X POST https://api.strale.io/v1/do \
  -H 'Content-Type: application/json' \
  -d '{
    "capability_slug": "bitcoin-address-validate",
    "inputs": {
      "address": "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq"
    },
    "max_price_cents": 5
  }'

Limitations

  • Format and checksum only — no on-chain check

    Validates Bitcoin address format and checksum (Base58Check for legacy P2PKH/P2SH; BIP173 bech32 for SegWit v0 P2WPKH/P2WSH; BIP350 bech32m for Taproot v1 P2TR). Does not check whether the address has a balance, has been used on-chain, or whether it controls any funds.

    What to do instead: Query a Bitcoin node or block explorer for balances and transaction history.

  • Witness versions above 1 are accepted but not classified

    SegWit witness versions 2-16 are reserved for future upgrades. Addresses with these versions and valid bech32m checksum are returned with address_type="p2w-unknown" rather than rejected, since the address is structurally valid even if its purpose is unknown today.

  • Mainnet/testnet inferred from prefix only

    Network is inferred from the legacy version byte or bech32 prefix, with Bitcoin mainnet, testnet and regtest supported. Forks sharing address formats are not distinguished: they can fail the checksum or be classified as Bitcoin when the prefix matches.

    What to do instead: If chain disambiguation matters, validate against the specific chain's expected prefix set before calling.