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:
import { isValidSuiAddress, normalizeSuiAddress } from '@mysten/sui/utils';
isValidSuiAddress('0x2'); // false: too short
const full = normalizeSuiAddress('0x2');
// 0x0000000000000000000000000000000000000000000000000000000000000002
isValidSuiAddress(full); // trueAlways 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 @:
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.suiis 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
- Transaction authentication: address format, Sui documentation
- Get a Sui address, Sui documentation
- Address utilities, Sui TypeScript SDK
- Address, The Move Book