Table of Contents
1. What Is IPv6?
2. How Is an IPv6 Address Written?
3. How IPv6 Address Compression Works
4. What Does /64 Mean in an IPv6 Address?
5. How Is an IPv6 Address Structured?
6. IPv6 Address Types
7. Common and Special IPv6 Addresses: Quick Reference
8. How to Read an IPv6 Address Step by Step
9. IPv6 Addresses with Ports and URLs
10. What Does %eth0 Mean in an IPv6 Address?
11. IPv4 vs IPv6 Address Format
12. Common IPv6 Formatting Mistakes
13. How to Find Your IPv6 Address
14. Frequently Asked Questions

An IPv6 address can look confusing when you first see one. Instead of the familiar numbers and dots used in IPv4, IPv6 uses hexadecimal characters and colons. It also uses a much larger 128-bit address format, which is why IPv6 addresses can appear longer and more complicated.
In this guide, we will make the IPv6 format easier to understand. We will look at how an address is written, what its groups or hextets represent, how long addresses can be compressed, and what prefix lengths mean. We will also cover IPv6 address types, special addresses, addresses used with URLs and ports, and the IPv6 header format. By the end, you should be able to read and recognize a normal IPv6 address with confidence.
IPv6 Address Format: Quick Answer
A standard IPv6 address looks like this:
2001:db8:1234:5678:abcd:ef01:2345:6789
An IPv6 address is 128 bits long and is written as eight groups of hexadecimal digits, separated by colons (:). Each group represents 16 bits. Hexadecimal uses the numbers 0–9 and the letters a–f, which is why IPv6 addresses can contain both numbers and letters.
IPv6 addresses can also be shortened to make them easier to read. Leading zeros within a group can be removed, and consecutive groups containing only zeros can be represented by ::.
For example, a shortened IPv6 address may look like:
2001:db8:1234:5678::1
So, although an IPv6 address may look complicated at first, its basic format is simply eight hexadecimal groups representing a total of 128 bits.
IPv6 Format Overview
The table below gives a quick overview of the IPv6 address format, including its size, notation, separators, and common examples. It is a useful reference before looking at each part of an IPv6 address in more detail.
| Feature |
IPv6 Format |
| Address size |
128 bits |
| Number of groups |
8 |
| Size of each group |
16 bits |
| Digits used |
Hexadecimal (0–9, a–f) |
| Separator |
Colon (:) |
| Full example |
2001:0db8:0000:0000:1234:0000:0000:0001 |
| Compressed example |
2001:db8::1234:0:0:1 |
| Prefix example |
2001:db8:1234::/48 |
| Loopback |
::1 |
| Unspecified |
:: |
What Is IPv6?
IPv6 (Internet Protocol Version 6) is the newer version of the Internet Protocol, designed as the successor to IPv4. Internet Protocol provides the addressing and routing system that allows data to travel between devices across local networks and the Internet.
One of the main differences is address size. IPv4 uses 32-bit addresses, providing about 4.3 billion possible addresses. IPv6 uses 128-bit addresses, creating a vastly larger address space that can support the growing number of computers, servers, phones, IoT devices, and other systems connected to networks.
IPv6 is used to identify network interfaces and help routers deliver packets toward their intended destinations. A single network interface can also have more than one IPv6 address at the same time, with different addresses serving different networking purposes. This is a normal part of IPv6 operation and gives networks greater flexibility in how addresses are assigned and used.
How Is an IPv6 Address Written?
An IPv6 address is written as eight groups of hexadecimal digits, with each group separated by a colon (:). For example:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
We can separate the address into its eight groups to make the structure easier to see:
2001 | 0db8 | 85a3 | 0000 | 0000 | 8a2e | 0370 | 7334
Each group represents 16 bits and is commonly called a hextet. With eight hextets in an address, the total size is:
8 × 16 bits = 128 bits
IPv6 uses hexadecimal, a number system with 16 possible values. It uses the numbers 0–9 for values zero through nine and the letters a–f for values ten through fifteen. This is why an IPv6 address can contain both numbers and letters.
A hextet can contain one to four hexadecimal digits when unnecessary leading zeros are not written. For example, 0db8 can appear as db8.
The colons make it easy to identify where one 16-bit hextet ends and the next begins. Together, these eight hextets form the complete 128-bit IPv6 address.
How IPv6 Address Compression Works
IPv6 addresses can be long, so they can be shortened without changing the actual address. This is called IPv6 address compression. Two simple rules are used.
Rule 1: Remove Leading Zeros
Leading zeros inside each hextet can be removed.
For example:
2001:0db8:0000:0000:0000:ff00:0042:8329
becomes:
2001:db8:0:0:0:ff00:42:8329
Only zeros at the beginning of a hextet can be removed. For example, 0042 can become 42, but zeros that are part of the remaining value cannot simply be removed.
Rule 2: Compress Consecutive Zero Hextets
A consecutive sequence of all-zero hextets can be replaced with a double colon (::).
Our example can therefore be shortened further:
2001:db8:0:0:0:ff00:42:8329
becomes:
2001:db8::ff00:42:8329
The :: represents the missing all-zero hextets. It can appear only once in an IPv6 address; otherwise, there would be no clear way to determine how many zero hextets were removed from each location.
To expand a compressed address, count the visible hextets and insert enough 0000 groups at :: to bring the total back to eight.
For example:
2001:db8::1
expands to:
2001:0db8:0000:0000:0000:0000:0000:0001
For a consistent canonical representation, hexadecimal letters in IPv6 addresses are written in lowercase, as recommended by RFC 5952.
What Does /64 Mean in an IPv6 Address?
You may see an IPv6 address written with /64 at the end, like this:
2001:db8:abcd:1234::/64
The /64 is called the prefix length. It is not part of the hexadecimal IPv6 address itself. Instead, it tells you how many bits from the beginning of the address belong to the network prefix.
With a /64, the first 64 bits identify the network or subnet. The remaining 64 bits are available for identifying an interface within that subnet.
A simple way to visualize it is:
2001:db8:abcd:1234 | xxxx:xxxx:xxxx:xxxx
<------ 64 bits -----> <------ 64 bits ----->
You may also encounter other prefix lengths. A /48 or /56 can represent a larger network allocation that can be divided into smaller subnets, while /64 is the standard subnet size used for most IPv6 LANs. A /128 refers to all 128 bits of the address, so it identifies one specific IPv6 address rather than a range of addresses.
In short, the number after / tells you how much of the IPv6 address is being treated as the network prefix.
How Is an IPv6 Address Structured?
A global unicast IPv6 address can be divided into parts that help identify the network, subnet, and interface. For example, consider:
2001:db8:1234:0056:abcd:ef12:3456:7890
A common IPv6 addressing plan may divide it like this:
2001:db8:1234 | 0056 | abcd:ef12:3456:7890
Global routing prefix | Subnet ID | Interface portion
The global routing prefix identifies the larger network and is used to route traffic toward that network.
The subnet ID allows an organization to divide its allocated address space into smaller networks. For example, an organization with a /48 prefix can use another 16 bits for subnetting, creating /64 subnets.
The remaining 64 bits form the interface portion of that /64 address. This part distinguishes an interface within the subnet. Depending on how the network is configured, the address may be assigned automatically or manually.
However, the 48-bit routing prefix + 16-bit subnet ID + 64-bit interface portion should be understood as a common addressing plan, not a fixed structure for every IPv6 address. IPv6 networks can use different prefix lengths depending on how their address space is allocated and used.
IPv6 Address Types
IPv6 uses different address types depending on where and how communication needs to take place. The main types you will encounter are Global Unicast, Link-Local, Unique Local, Multicast, and Anycast.
Global Unicast
A Global Unicast address is designed for communication across IPv6 networks, including the Internet. It is comparable in purpose to a public IPv4 address. Global Unicast addresses can be routed beyond the local network when routing and network policies allow it.
Link-Local
Link-Local addresses use the fe80::/10 prefix. They are used for communication between devices on the same local link and are not routed across the Internet. IPv6 functions such as Neighbor Discovery rely on link-local communication.
Unique Local
Unique Local Addresses (ULAs) use the fc00::/7 address space and are intended for local or internal communication rather than Internet routing. In practice, locally assigned ULAs use addresses from the fd00::/8 portion.
Multicast
Multicast addresses begin with ff00::/8. They allow traffic to be sent to a group of interfaces rather than one specific interface. IPv6 does not use broadcast addresses; multicast is used for functions that require group communication.
Anycast
An Anycast address is assigned to multiple interfaces, typically on different systems. Routing directs traffic toward an appropriate instance, commonly the closest according to the routing system. Anycast uses the same address format as unicast, so you cannot identify an Anycast address simply by looking at it.
Common and Special IPv6 Addresses: Quick Reference
You may come across certain IPv6 addresses and prefixes in network settings, routing tables, server logs, and technical documentation. This table provides a quick reference for some of the most useful ones to recognize.
| Address / Prefix |
What It Means |
:: |
Unspecified address |
::1 |
Loopback address, referring to the local device |
fe80::/10 |
Link-local address range |
fc00::/7 |
Unique Local Address space |
ff00::/8 |
Multicast address range |
::ffff:0:0/96 |
Prefix used for IPv4-mapped IPv6 addresses |
2001:db8::/32 |
Reserved for documentation and examples |
::/0 |
Default IPv6 route |
One prefix worth remembering is 2001:db8::/32. It is reserved specifically for documentation, which is why you will see addresses beginning with 2001:db8 throughout IPv6 tutorials and examples. It should not be used as an ordinary production address range.
How to Read an IPv6 Address Step by Step
Once you understand the basic IPv6 format, you can read an address by breaking it into a few simple steps. Consider this example:
2001:db8:abcd:12::25/64
First, identify the visible hexadecimal groups:
2001 | db8 | abcd | 12 | 25
Next, notice the :: in the address. It tells you that one or more consecutive all-zero hextets have been left out.
An IPv6 address contains eight hextets in total. Since five are visible, :: represents the three missing zero hextets. The address can therefore be expanded to:
2001:db8:abcd:12:0:0:0:25
The /64 at the end is the prefix length. It means the first 64 bits, or the first four hextets, form the network prefix:
2001:db8:abcd:12::/64
So this address is simply a compressed IPv6 address belonging to that /64 network.
If you write every hextet using four hexadecimal digits, the fully expanded address is:
2001:0db8:abcd:0012:0000:0000:0000:0025
Reading IPv6 this way makes even a shortened address much easier to understand.
IPv6 Addresses with Ports and URLs
IPv6 addresses need a slightly different format when they are used with port numbers or in URLs. This is because IPv6 already uses colons (:) to separate its hexadecimal groups.
An IPv6 address by itself can be written normally:
Address only:
2001:db8::10
When a port number is added, the IPv6 address is placed inside square brackets:
Address + port:
[2001:db8::10]:443
The brackets make it clear where the IPv6 address ends and where the port number begins. Without them, the colons within the address could make the address and port difficult to distinguish.
The same bracket format is used when an IPv6 literal appears in a URL:
URL:
https://[2001:db8::10]/
If a specific port is required, you might see:
https://[2001:db8::10]:8443/
This format commonly appears in web browsers, server configurations, application logs, and networking tools when a service is accessed directly through its IPv6 address.
What Does %eth0 Mean in an IPv6 Address?
You may sometimes see an IPv6 address written like this:
fe80::1%eth0
The %eth0 is a zone or interface identifier. It is not part of the actual 128-bit IPv6 address. Instead, it tells the operating system which network interface should be used with that address.
This is particularly common with link-local IPv6 addresses, because the same link-local address could be reachable through more than one network interface. For example, a computer might have both Ethernet and Wi-Fi connections. The zone identifier tells the system which local link is intended.
Depending on the operating system, you may see an interface name such as %eth0, or a numeric identifier such as %3.
So in fe80::1%eth0, fe80::1 is the IPv6 address, while %eth0 identifies the network interface associated with it.
IPv4 vs IPv6 Address Format
IPv4 and IPv6 both identify network interfaces, but their address formats are very different. IPv4 uses shorter decimal addresses separated by dots, while IPv6 uses much longer hexadecimal addresses separated by colons. The table below shows the main formatting differences.
| Feature |
IPv4 |
IPv6 |
| Address length |
32 bits |
128 bits |
| Number system |
Decimal |
Hexadecimal |
| Separator |
Dot (.) |
Colon (:) |
| Full address example |
192.0.2.1 |
2001:0db8:0000:0000:0000:0000:0000:0001 |
| Prefix notation |
192.0.2.0/24 |
2001:db8::/32 |
| Address shortening |
No equivalent compression |
Leading zeros and consecutive zero groups can be shortened |
| Loopback example |
127.0.0.1 |
::1 |
| Broadcast |
Supported |
No broadcast addresses |
| Address space |
232 addresses |
2128 addresses |
The biggest visible difference is how the addresses are written. IPv6's hexadecimal format and compression rules make it possible to represent its much larger 128-bit addresses in a more manageable form.
Common IPv6 Formatting Mistakes
IPv6 becomes easier to work with once you know a few common mistakes to avoid.
✓ Using :: more than once: A compressed IPv6 address can contain :: only once. Using it twice makes it impossible to determine how many zero hextets each :: represents.
✓ Removing the wrong zeros: Only leading zeros can be removed from a hextet. For example, 0042 can become 42, but 4200 cannot become 42.
✓ Treating /64 as part of the address: /64 is the prefix length. It describes how many leading bits form the network prefix.
✓ Forgetting brackets with ports: Write an IPv6 address and port as [2001:db8::1]:443, not 2001:db8::1:443.
✓ Confusing :: and ::1: :: is the unspecified address, while ::1 is the loopback address.
✓ Assuming every address has the same internal split: Prefix and subnet structures can differ depending on the network design.
✓ Using 2001:db8::/32 for production hosts: This range is reserved for documentation and examples.
✓ Misunderstanding IPv4-mapped IPv6 addresses: An address such as ::ffff:192.0.2.1 represents an IPv4 address in IPv6-capable APIs; it does not itself translate traffic between IPv4 and IPv6.
How to Find Your IPv6 Address
You can check the IPv6 addresses assigned to your computer using built-in networking tools. The command depends on your operating system.
Linux
Open a terminal and run:
ip -6 addr
Look for a line beginning with inet6. You may see more than one IPv6 address because an interface can have multiple addresses for different purposes.
Windows
Open Command Prompt and run:
ipconfig
Find the network adapter you are currently using and look for IPv6 Address. You may also see a Link-local IPv6 Address.
macOS
Open Terminal and run:
ifconfig
Look under your active network interface for entries beginning with inet6.
When checking the results, remember that not every IPv6 address is Internet-routable. For example, an address beginning with fe80 is normally link-local and is used for communication on the local link. Your system may display several IPv6 addresses at the same time, so use the address type and prefix to understand what each one is for.
Frequently Asked Questions
1. Can a device use IPv4 and IPv6 at the same time?
Yes. A computer, phone, server, or router can use IPv4 and IPv6 at the same time. This setup is known as dual stack.
It allows the device to connect over IPv6 when it is available while still using IPv4 when needed.
2. Can my IPv6 address change?
Yes. An IPv6 address can change depending on how your network is configured. Your ISP, router settings, automatic address configuration, and privacy features can all affect the address assigned to your device.
A server can also be configured with a stable IPv6 address when a consistent address is required.
3. What DNS record is used for IPv6?
IPv6 addresses use AAAA records in DNS. An AAAA record connects a domain or hostname to an IPv6 address.
For comparison, an A record connects a hostname to an IPv4 address. A website can have both A and AAAA records when it supports both protocols.
4. Can a website use both IPv4 and IPv6?
Yes. A website can be available over both IPv4 and IPv6.
Its DNS can contain an A record for its IPv4 address and an AAAA record for its IPv6 address. Devices can then connect using the protocol supported by their network.
5. How can I tell if my Internet connection supports IPv6?
You can check whether your device has an IPv6 address and test whether it can reach an IPv6-enabled website or server.
Keep in mind that seeing a local IPv6 address does not always mean you have working IPv6 Internet connectivity. For example, devices can have link-local IPv6 addresses even without IPv6 Internet access.
6. Can I ping an IPv6 address?
Yes. You can use standard networking tools to test whether an IPv6 address is reachable.
On current Linux systems, for example, the ping command can work with IPv6 addresses. You can ping an IPv6 address directly or use a hostname that resolves to IPv6.
7. Do I need a special router to use IPv6?
You need a router that supports IPv6 if you want to use IPv6 across your network and Internet connection.
Most modern routers support IPv6, but it may need to be enabled or configured. Your ISP must also provide suitable IPv6 connectivity if you want to reach IPv6 destinations on the Internet.
8. Does an IPv6 address permanently identify a device?
No, not necessarily. A device can have multiple IPv6 addresses, and some of those addresses can change over time.
The address used can depend on the network, address configuration, and privacy features. For this reason, an IPv6 address should not automatically be treated as a permanent identifier for a particular device.