What is an SS58 address?
SS58 is the address format of Polkadot, Kusama and every Substrate-based chain: a network prefix, the 32-byte public key (account ID) and a 2-byte checksum, encoded in Base58. The format is documented in the Polkadot wiki and the prefixes are assigned in the SS58 registry. An SS58 address converter decodes the string, verifies the checksum, extracts the public key and re-encodes it for other prefixes.
How SS58 encoding works
- Prefix bytes. Prefixes 0–63 take one byte. Larger prefixes (up to 16383) take two bytes in a packed form: the first byte holds bits 2–7 of the prefix plus a marker 0b01, the second holds bits 8–13 and bits 0–1.
- Checksum. BLAKE2b-512 is computed over
SS58PRE+ prefix bytes + public key, and the first two bytes of the digest are appended. - Base58. The whole buffer (1 or 2 + 32 + 2 bytes) is Base58-encoded with the Bitcoin alphabet. Prefix 0 always yields an address starting with 1, prefix 2 with a capital letter C to J, prefix 42 with 5.
Worked example
The well-known development account Alice has the public key 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d. With prefix 0 it encodes to 15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5 (Polkadot), with prefix 2 to HNZata7iMYWmk5RvZRTiAsSDhV8366zq2YGb3tLH5Upf74F (Kusama), and with prefix 42 to 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY (generic Substrate). Paste any one of them above to see all three, and fourteen more.
Prefixes and first characters
| Prefix | Network | Address starts with | Prefix | Network | Address starts with |
|---|---|---|---|---|---|
| 0 | Polkadot | 1 | 36 | Centrifuge | 4 |
| 2 | Kusama | C, D, E, F, G, H, J | 38 | KILT | 4 |
| 5 | Astar | V, W, X, Y, Z, a, b | 42 | Substrate (generic) | 5 |
| 6 | Bifrost | b, c, d, e, f, g, h | 63 | Hydration | 7 |
| 7 | Edgeware | h, i, j, k, m, n, o | 73 | Zeitgeist | dD, dE |
| 8 | Karura | o, p, q, r, s, t, u | 2032 | Interlay | wd |
| 10 | Acala | 2, z | 2092 | Kintsugi | a3 |
| 12 | Polymesh | 2 | 10041 | Basilisk | bX |
| 30 | Phala | 3, 4 |
The leading characters are a side effect of Base58 and the prefix value; they are a quick visual hint, not a guarantee. Always rely on the decoded prefix shown by the tool.
Why the checksum matters
Base58 has no built-in error detection, so SS58 adds a two-byte BLAKE2b checksum that catches any single mistyped character and the vast majority of multi-character errors. A wallet or exchange that accepts an address with a bad checksum does not exist in practice; this tool refuses it as well and tells you the checksum failed rather than guessing. Note that the checksum includes the prefix, which is why a Kusama address is rejected as an invalid Polkadot address even though the key inside is the same: the sender must re-encode it, not retype it.
Typical uses
- Finding your Kusama, Astar or Hydration address from a Polkadot address shown by a hardware wallet that only displays one network.
- Getting the hex account ID for Polkadot.js API calls, multisig set-up or XCM destination accounts.
- Checking that an exchange deposit address really is on the chain you intend to send on, by reading the decoded prefix.
Public keys and addresses only: this page never asks for a seed phrase or private key, and nothing you paste leaves your browser. For other formats see the crypto address validator.