Tool · Keys & addresses

Bech32m explorer

Take a prl1 address apart, and watch its checksum catch a typo

Bech32m explorer

Every part of a prl1 address, and the checksum that catches typos

Valid Pearl mainnet address

Taproot (P2TR) · the checksum matches

Prefix (HRP)
prl mainnet
Witness version
p = 1 Taproot (P2TR)
Checksum
v9d5z4 matches (bech32m)
Program
d7ab02c96a342bdddb5d07b9f3ebd6c04e077ff41418110b9a1e5997439416b2
Locking script
51 20 d7ab02c96a342bdddb5d07b9f3ebd6c04e077ff41418110b9a1e5997439416b2
See the 5-bit → 8-bit regrouping

The 52 program letters carry 260 bits. Read them as bytes (8 bits each) and you get 32 bytes, with 4 zero bits of padding left over.

11010111101010110000001011001001011010100011010000101011110111011101101101011101000001111011100111110011111010111101011011000000010011100000011101111111111101000001010000011000000100010000101110011010000111100101100110010111010000111001010000010110101100100000

1101011110101011000000101100100101101010001101000010101111011101110110110101110100000111101110011111001111101011110101101100000001001110000001110111111111110100000101000001100000010001000010111001101000011110010110011001011101000011100101000001011010110010

Show every step
  1. Check the letter case

    All lower case, as expected.

  2. Split at the last '1'

    Everything before the last '1' is the human-readable part; the 59 characters after it are the data part.

  3. Read the prefix

    "prl" means Pearl mainnet.

  4. Turn each character into a 5-bit number

    Each character is its position in the alphabet qpzry9x8gf2tvdw0s3jn54khce6mua7l (q=0 … l=31). The first is the witness version, the last 6 are the checksum.

  5. Verify the checksum

    Running the BCH polymod over the expanded prefix and all data gives the bech32m constant 0x2bc830a3, so the checksum is valid.

  6. Read the witness version

    "p" = 1: a Taproot (P2TR) address.

  7. Regroup 5-bit numbers into bytes

    52 characters × 5 bits = 260 bits; the last 4 padding bits are zero, leaving 256 bits = 32 bytes: the tweaked public key Q.

  8. Build the locking script

    OP_1 OP_PUSHBYTES_32 <program>: the scriptPubKey a transaction output uses to pay this address.

Runs in your browser · nothing is sent src/lib/bech32m.ts · BIP-350 + Pearl’s rules

What it does

Paste an address, or pick a real one from mainnet. The explorer colors every character by its role, shows each letter’s 5-bit value, and decodes the parts. Press Make a typo, or click any letter, and the checksum check fails. In Encode mode, build an address from a 32-byte program, a version and a network prefix.

How to read it

  • Prefix (HRP): prl for mainnet, tprl for testnet, rprl for regtest. The last 1 separates it from the data.
  • Version: the first data letter. p is 1 (Taproot) and z is 2 (P2MR).
  • Program: the next 52 letters carry 260 bits: 32 bytes plus 4 zero bits of padding. For Taproot it’s the output key Q; for P2MR it’s the Merkle root of the script tree.
  • Checksum: the last 6 letters. Any mistake in up to four characters is always caught; bigger mistakes slip through less than once in a billion tries.
  • Show every step runs the decoder one check at a time and stops at the first failure.

Pearl specifics

  • Pearl accepts bech32m only, and only two kinds of address: witness version 1 (prl1p…, Taproot) and version 2 (prl1z…, P2MR), each with a 32-byte program. There are no prl1q…, base58 or Bitcoin addresses, and the explorer says why when you paste one.
  • The alphabet leaves out 1, b, i and o, characters that are easy to mix up with others (and 1 is the separator).

Under the hood

Runs entirely in your browser. Decoding, encoding, the checksum and every message come from src/lib/bech32m.ts, which mirrors pearld’s address rules. Its unit tests include the research vectors, the decoder behaviour of pearld’s own btcutil, and a property test that every single-character substitution in a real address is detected.

Suggested

Up and down arrows move through the results, Enter opens one, Escape closes. Anywhere on the site, slash or Command K opens this search, and the square brackets [ and ] go to the previous and next page.