Polkadot SS58 Address Converter: Public Key ↔ Any Prefix

Paste a Polkadot 1…, Kusama C…–J… or generic 5… address and get the account's public key plus its spelling on every major Substrate network. Or paste a 0x public key to encode it.

Polkadot (1…), Kusama (C… to J…), generic Substrate (5…) and other SS58 prefixes, or a 32-byte hex public key / account ID. Public keys only; never paste a seed phrase anywhere.

Checked in your browser with JavaScript. Addresses are never uploaded or stored.

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

  1. 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.
  2. Checksum. BLAKE2b-512 is computed over SS58PRE + prefix bytes + public key, and the first two bytes of the digest are appended.
  3. 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

PrefixNetworkAddress starts withPrefixNetworkAddress starts with
0Polkadot136Centrifuge4
2KusamaC, D, E, F, G, H, J38KILT4
5AstarV, W, X, Y, Z, a, b42Substrate (generic)5
6Bifrostb, c, d, e, f, g, h63Hydration7
7Edgewareh, i, j, k, m, n, o73ZeitgeistdD, dE
8Karurao, p, q, r, s, t, u2032Interlaywd
10Acala2, z2092Kintsugia3
12Polymesh210041BasiliskbX
30Phala3, 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

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.

Frequently asked questions

Why does the same account have different addresses on Polkadot and Kusama?

SS58 prefixes the 32-byte public key with a network identifier before encoding: 0 for Polkadot, 2 for Kusama, 42 for generic Substrate. The key is identical; the address string differs because the prefix and the checksum change. Funds on each chain are tracked by the key, so converting the address never moves anything.

How is the SS58 checksum computed?

The checksum is the first two bytes of BLAKE2b-512 over the ASCII string SS58PRE followed by the prefix byte(s) and the public key. This page implements BLAKE2b in JavaScript and checks it against the RFC 7693 test vector before use.

What is the 0x public key?

The 32-byte sr25519 or ed25519 public key, also called the account ID. Polkadot.js shows it as the hex account ID, and it is what you need for multisig derivation, proxy setup and most RPC calls. It is public information and safe to share; the seed phrase is not.

Which prefixes are included?

Polkadot (0), Kusama (2), Astar (5), Bifrost (6), Edgeware (7), Karura (8), Acala (10), Polymesh (12), Phala (30), Centrifuge (36), KILT (38), generic Substrate (42), Hydration (63), Zeitgeist (73), Interlay (2032), Kintsugi (2092) and Basilisk (10041), taken from the SS58 registry. An address with another prefix is decoded and shown under its own prefix.

Can I convert a Moonbeam address?

No. Moonbeam and Moonriver use 20-byte Ethereum-style H160 accounts written as 0x addresses, not 32-byte keys, so they have no SS58 form in the usual sense. The tool explains this if you paste one.

Does the converter need my seed phrase?

Never. It works from the public key, which is embedded in every address. No website or tool needs a seed phrase to convert, validate or display an address.