La notation décimale pointée employée pour les adresses IPv4 (par exemple 172.31.128.1) est abandonnée au profit d'une écriture hexadécimale, où les 8 groupes de 2 octets (soit 16 bits par groupe) sont séparés par un signe deux-points :
2001:0db8:0000:85a3:0000:0000:ac1f:8001
La notation canonique complète ci-dessus comprend exactement 39 caractères.
Il est permis d'omettre de 1 à 3 chiffres zéros non significatifs dans chaque groupe de 4 chiffres hexadécimaux. Ainsi, l'adresse IPv6 ci-dessus est équivalente à :
2001:db8:0:85a3:0:0:ac1f:8001
De plus, une unique suite de un ou plusieurs groupes consécutifs de 16 bits tous nuls peut être omise, en conservant toutefois les signes deux-points de chaque côté de la suite de chiffres omise, c'est-à-dire une paire de deux-points (:
. Ainsi, l'adresse IPv6 ci-dessus peut être abrégée en :
2001:db8:0:85a3::ac1f:8001
En revanche l'écriture suivante n'est pas valide
2001:db8::85a3::ac1f:8001
car elle contient plusieurs substitutions (dont les longueurs binaires respectives sont ici ambiguës) : il ne peut exister qu'une seule occurrence de la séquence :: dans la notation d'une adresse IPv6.
Pour résumer, la séquence :: dans l'adresse IPv6 signifie que l'on doit combler tout ce qu'il manque avec des 0, donc cette séquence ne peut être écrite qu'une seule fois.
L'adresse IPv6 non spécifiée peut ainsi être abrégée en ::0.0.0.0 ou tout simplement en ::.