What is a TON address converter?
A TON address converter translates one account on The Open Network between its raw form (workchain:hash, e.g. 0:83df…31a8) and the user-friendly forms defined in the TON address documentation: a 36-byte structure of flags, workchain, hash and CRC16 checksum, base64-encoded into the familiar 48-character EQ… (bounceable) and UQ… (non-bounceable) strings. All forms identify the same smart-contract account; they differ only in how the sender is told to treat it.
Anatomy of a user-friendly address
| Bytes | Field | Meaning |
|---|---|---|
| 0 | Tag | 0x11 bounceable, 0x51 non-bounceable; add 0x80 for testnet-only (0x91, 0xD1) |
| 1 | Workchain | 0x00 basechain, 0xFF masterchain (-1 as a signed byte) |
| 2–33 | Account hash | SHA-256 of the contract's initial state (code + data) |
| 34–35 | CRC16 | CRC-16/XMODEM over bytes 0–33, big-endian |
Base64 of 36 bytes is exactly 48 characters with no padding, which is why every user-friendly TON address has the same length. The first two characters come from the tag and the top bits of the workchain byte: EQ and UQ for mainnet workchain 0, Ef and Uf for the masterchain, kQ and 0Q for testnet.
Worked example
Take the raw address 0:83dfd552e63729b472fcbcc8c45ebcc6691702558b68ec7527e1ba403a0f31a8. Prepend the tag 0x11 and workchain 0x00, append CRC-16/XMODEM of those 34 bytes, and base64url-encode: the result is the bounceable form EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N. Changing the tag to 0x51 changes the first character and the checksum, giving UQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqEBI. The 43 middle characters are identical because the hash is identical. Paste either string above and the tool recovers the raw form and shows all four variants.
Bounceable or non-bounceable: which to use
- Sending to a person. Use the non-bounceable
UQ…form. If their wallet contract has not been deployed yet (a brand-new wallet), a bounceable transfer would bounce back and they would receive nothing. - Calling a smart contract. Use the bounceable
EQ…form. If the call fails, the contract bounces the message and the TON return to you minus fees, instead of being stuck. - Exchange deposits. Follow the exchange's instructions, including the memo or comment. The address form does not change the destination, but the flag changes what happens on failure.
Why the CRC check matters
TON addresses are base64, so a single wrong character silently changes the hash, and a changed hash is a different, probably non-existent, account. The CRC16 catches every single-character error and most multi-character errors. This tool refuses to convert any user-friendly address whose checksum fails, and never guesses what you meant. Raw addresses have no checksum at all, so when you convert a raw address the output is only as correct as the hex you pasted; compare the first and last characters with the source.
Typical uses
- Turning the raw address printed by a node, an explorer API or a TON Connect manifest into the form a wallet accepts.
- Switching a bounceable address from a contract listing to the non-bounceable form before sending to a fresh wallet.
- Checking whether an address someone sent you is a testnet-only form.
Other address tools on this site: the crypto address validator and the Tron address converter.