TON Address Converter: Raw ↔ Bounceable ↔ Non-Bounceable

Paste a TON address in any form and get the raw workchain:hash, the bounceable EQ… and non-bounceable UQ… forms, and the testnet-only variants, with the CRC16 checksum verified.

User-friendly 48-character base64 (bounceable EQ…, non-bounceable UQ…, testnet kQ… / 0Q…) or the raw workchain:hash form.

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

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

BytesFieldMeaning
0Tag0x11 bounceable, 0x51 non-bounceable; add 0x80 for testnet-only (0x91, 0xD1)
1Workchain0x00 basechain, 0xFF masterchain (-1 as a signed byte)
2–33Account hashSHA-256 of the contract's initial state (code + data)
34–35CRC16CRC-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

  1. 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.
  2. 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.
  3. 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

Other address tools on this site: the crypto address validator and the Tron address converter.

Frequently asked questions

What is the difference between EQ… and UQ… TON addresses?

They are the same account. EQ… is the bounceable form (tag byte 0x11): if the destination contract does not exist or rejects the message, the TON bounces back to the sender. UQ… is non-bounceable (tag 0x51): the transfer is credited even to an uninitialised wallet. Wallet apps show UQ… for receiving; EQ… is used for smart contracts.

Which form should I give someone to receive TON?

The non-bounceable UQ… form, especially for a new wallet that has not yet sent anything. A bounceable transfer to an uninitialised wallet bounces back and the recipient receives nothing. Once the wallet is deployed both forms work, and most modern wallets handle the choice for you.

What is the raw 0:… form?

The canonical address: workchain (0 for the basechain where wallets live, -1 for the masterchain) and the 256-bit hash of the contract's initial code and data, written as workchain:hex. It has no checksum and no bounce flag, which is why the user-friendly forms exist.

What do kQ… and 0Q… mean?

The same two forms with the testnet-only bit (0x80) set in the tag byte: kQ… is bounceable testnet, 0Q… non-bounceable testnet. Mainnet wallets refuse them. The underlying raw address is identical to the mainnet one.

How is the TON address checksum calculated?

The 36-byte user-friendly form is tag (1 byte), workchain (1 byte), hash (32 bytes) and a 2-byte CRC-16/XMODEM (polynomial 0x1021, initial value 0) over the first 34 bytes, then base64 or URL-safe base64 encoded. The tool recomputes the CRC and refuses addresses where it does not match.

Why do I see both - _ and + / versions?

Standard base64 uses + and /, URL-safe base64 uses - and _. Both decode to the same bytes and both are valid TON addresses. Explorers and wallets usually show the URL-safe form so it can be embedded in links; the converter shows both.