suideveloper
All questions
Accounts and wallets

What does a Sui address look like?

November 1, 2026

A Sui address is 32 bytes, written as 0x followed by 64 hexadecimal characters, for example 0xc88ef07b9b8b2fc3b7daad9478f4e1337f01792e2eab9c3794494e610636026e. Leading zeros can be dropped in some places, so 0x2 (the Sui framework) is shorthand for 0x000…0002. Object IDs and package IDs use exactly the same format. That's why you can't tell an account from an object just by looking at the string.

Anatomy

  • Prefix: 0x.
  • Body: 64 hex characters (32 bytes). Tools display it in lowercase.
  • No checksum: unlike Ethereum's EIP-55 mixed-case addresses, a Sui address has no built-in checksum. A typo still produces a valid-looking address, so copy and paste rather than retyping.

User addresses are a BLAKE2b-256 hash of a signature scheme flag plus a public key, so they look random. See how Sui addresses are derived. System objects and packages have short, well-known addresses:

Short form What it is
0x1 Move standard library
0x2 Sui framework
0x3 Sui system (staking, validators)
0x5 Sui system state object
0x6 Clock
0x8 Randomness

Normalising and validating in TypeScript

isValidSuiAddress only accepts the full 64-character form, so normalise short input first:

TypeScript
import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils';

isValidSuiAddress('0x2'); // false: too short
const full = normalizeSuiAddress('0x2');
// 0x0000000000000000000000000000000000000000000000000000000000000002
isValidSuiAddress(full); // true

Always compare normalised addresses. '0x2' === '0x02' is false even though the two refer to the same address.

In Move

Addresses are a built-in address type. Literals use @:

Move
module example::addr;

public fun is_framework(a: address): bool {
    a == @0x2
}

Named addresses such as @sui or your own package's name are resolved at build time.

Not a Sui address

  • suiprivkey1… is a Bech32-encoded private key, not an address. Never share it. See Sui private key format.
  • name.sui is a SuiNS name that resolves to an address. See what is SuiNS.
  • 20-byte 0x… strings (40 hex characters) are Ethereum addresses, not Sui ones.

To get your own address, run sui client active-address, or open a wallet and copy it from there.

Sources

More on accounts and wallets