TONify ranked #9 Dev Tool on TON App

TON address format explained

Every account on The Open Network has a single identity but several valid text representations. This guide shows how a TON address is built, what the EQ, UQ, kQ and 0Q prefixes mean, and why the same wallet can look completely different depending on the format.

What a TON address actually contains

A TON address is a pair: a workchain ID that says which chain the account lives on, and a 256-bit account ID that identifies the contract on that chain. The masterchain is workchain -1, but nearly every wallet and token you will meet lives in the basechain, workchain 0.

Raw format

The raw format writes that pair literally, as workchain:account_id with the account ID in lowercase hexadecimal. It carries no checksum and no network or bounceable flag, so it is used inside code, APIs and explorers rather than shared with people.

0:83dfd552e63729b472fcbcc8c45ebcc6691702558b68ec7527e1ba403a0f31a8

User-friendly format

The user-friendly format packs the same account into 36 bytes and encodes them as 48 base64 characters. Those extra bytes are what make an address safe to copy and paste: a checksum catches typos, and a flag byte records the network and whether the address is bounceable.

PartSizeMeaning
Flag byte10x11 for bounceable, 0x51 for non-bounceable; add 0x80 to mark the address testnet-only.
Workchain10x00 for the basechain, 0xFF for the masterchain.
Account ID32The 256-bit account ID — the same value as the hexadecimal half of the raw address.
Checksum2CRC-16 over the previous 34 bytes. This is what makes a mistyped address fail instantly.

What the EQ, UQ, kQ and 0Q prefixes mean

The first two characters of a user-friendly address are a direct readout of the flag byte and the workchain, so you can tell the network and the bounceable setting at a glance — without decoding anything.

PrefixNetworkBounceableWorkchainTypical use
EQMainnetYesBasechain (0)Smart contracts and explorers — anything that should return funds if delivery fails.
UQMainnetNoBasechain (0)Wallets and exchange deposits. The safest default for simply receiving TON.
kQTestnetYesBasechain (0)Bounceable testnet address, used while developing and testing contracts.
0QTestnetNoBasechain (0)Non-bounceable testnet address, used for test wallets.
EfMainnetYesMasterchain (-1)Masterchain bounceable — validators and system contracts.
UfMainnetNoMasterchain (-1)Masterchain non-bounceable — rarely seen outside infrastructure.

TON address examples

All five strings below are the same account, written in every format TON supports. Notice that only the first two characters and the trailing checksum change — the middle of the address stays identical, because the account ID never changes.

FormatExample
Raw0:83dfd552e63729b472fcbcc8c45ebcc6691702558b68ec7527e1ba403a0f31a8
Bounceable (EQ)EQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqB2N
Non-bounceable (UQ)UQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqEBI
Testnet bounceable (kQ)kQCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqKYH
Testnet non-bounceable (0Q)0QCD39VS5jcptHL8vMjEXrzGaRcCVYto7HUn4bpAOg8xqPvC

Encoding rules worth knowing

  • A user-friendly TON address is always exactly 48 characters. If yours is shorter or longer, it is not a valid TON address.
  • Base64 is case-sensitive. EQCD… and eqcd… are different strings, and only the exact casing passes validation.
  • Two alphabets are in circulation: standard base64 uses + and /, while URL-safe base64 replaces them with - and _. Both decode to the same account, and TON tooling prefers the URL-safe form.
  • The raw format has no checksum, so nothing catches a typo for you. Always verify a raw address before sending funds.

How to convert a TON address

  1. Paste one or more addresses into the converter. Raw, EQ, UQ, kQ and 0Q input all work, and you can paste an entire list separated by spaces or new lines.
  2. Read every equivalent form side by side — bounceable, non-bounceable, raw and normalized, plus the testnet pair once you enable it.
  3. Copy the form you need, or download the whole table as CSV. Nothing leaves your browser: the conversion runs locally.
Back to the converter

Common address problems

My wallet shows UQ but the explorer shows EQ
Both are the same account. Explorers usually display the bounceable EQ form while wallets show the non-bounceable UQ form for deposits. Convert either one and compare the raw addresses to confirm they match.
An exchange rejected my TON address
Most exchanges expect the mainnet non-bounceable UQ form for deposits. A bounceable EQ address can cause the transfer to be returned if the receiving contract has not been deployed yet.
Why does my testnet address not work on mainnet?
A kQ or 0Q address has the testnet-only flag set, so mainnet wallets refuse it. The underlying account ID is identical — convert it to the EQ or UQ form to use the same account on mainnet.
Is a Telegram wallet address a TON address?
Yes. Telegram Wallet, Tonkeeper and other TON wallets all use the same address format; only the display form differs between apps.