What this test does
A web server only ever sees the one address you arrived on. If you connect over IPv4, nothing about that connection reveals whether IPv6 also works for you — the information simply is not there. So the only honest way to answer "do I have IPv6" is to make your browser try: fetch something from a host that has an IPv6 address and nothing else, and see whether it succeeds.
That is what runs on this page. Three separate requests go out — one to a host reachable only over IPv4, one to a host reachable only over IPv6, and one to a host with both — and the results answer three different questions: whether each protocol works at all, and, from the third, which one your browser chose when it had a free choice. That last answer is the interesting one, and it is invisible from anywhere else.
Why any of this matters
IPv4 has about 4.3 billion addresses, which was an extravagant number in 1981 and ran out in practice some time ago: the central pool was exhausted in February 2011, and the European registry handed out its last freely available block in November 2019. There are no more to allocate. What providers do instead is share one public address between many customers, which works for browsing and breaks everything that expects an incoming connection.
IPv6 has 128 bits instead of 32. The number of addresses is not usefully expressible in words — it is roughly 340 undecillion — and the practical consequence is that every device can hold a genuinely globally routable address again, with no translation in the middle. Adoption has been slow but is no longer marginal: the large public measurements have shown roughly two in five users worldwide reaching services over IPv6 in recent years, with enormous variation between countries. Some national networks are past three quarters; others are close to zero.
Reading your result
- Both protocols work
- You are dual-stacked, which is the intended modern state. Everything reachable is reachable, and your browser picks between them per connection.
- Only IPv4 works
- Entirely normal and not a fault. Your provider, your router, or a VPN you are using does not carry IPv6. Nothing is broken; you simply cannot reach the small but growing number of services that publish nothing else.
- Only IPv6 works
- Rare, and usually deliberate — an IPv6-only network with a translation gateway for legacy destinations. If you did not set this up on purpose, something has gone wrong with the translation.
- Neither works
- You would not be reading this, so in practice it means the probe hosts are unreachable rather than that you are offline. Corporate proxies and filtering equipment sometimes block requests to hosts they do not recognise.
The preference result, and why browsers do that
When a name has both an A and an AAAA record, the browser has to choose, and modern browsers do something more careful than picking one. The algorithm is called Happy Eyeballs: the browser starts resolving both, gives IPv6 a small head start, and begins an IPv4 connection shortly afterwards without waiting for the IPv6 attempt to fail. Whichever connection completes first is used and the other is abandoned.
The reason this exists is a specific historical failure. In the years when IPv6 was patchily deployed, a machine with a broken IPv6 path would try it, wait for a long TCP timeout, and only then fall back — turning a working site into one that took thirty seconds to load. Racing the two protocols with a short delay made broken IPv6 cost milliseconds instead of half a minute, and it is the single change that made dual-stack deployment safe for ordinary users.
So if the test reports that your browser preferred IPv6, it means your IPv6 path was not merely present but fast enough to win a race. That is a stronger statement than "IPv6 is configured".
The addresses themselves
IPv6 notation looks intimidating and follows three simple rules: write eight groups of four hex
digits, drop leading zeros in each group, and replace one run of all-zero groups with
:: — once per address, because a second one would be ambiguous. So
2001:0db8:0000:0000:0000:0000:0000:0001 is written
2001:db8::1.
- Global unicast — anything starting
2or3 - A real, internet-routable address. This is what the test shows you.
- Link-local —
fe80:: - Every IPv6 interface has one and it never leaves the local segment. If this is the only IPv6 address your machine has, you do not have working IPv6 — you have an interface that configured itself.
- Unique local —
fc00::/7 - The rough equivalent of private IPv4 space, for internal networks that should not be reachable from outside.
One thing that surprises people: your IPv6 address changes by itself, often daily. Because an address derived from the network card's hardware identifier would follow you across every network you join, operating systems generate temporary addresses for outgoing connections and rotate them. This is a privacy feature working as designed, not a misconfiguration — but it does mean that an IPv6 address you noted yesterday is probably no longer yours, and that firewall rules should be written against prefixes rather than individual addresses.
No NAT, which cuts both ways
On IPv4 behind a home router, your devices are unreachable from outside because nothing can be addressed through the translation without an explicit forwarding rule. That accident of address scarcity has functioned as a crude firewall for two decades, and it is absent on IPv6: every device holds a globally routable address.
This is the point at which the firewall becomes load-bearing rather than incidental. Every sensible router ships with the IPv6 firewall enabled and blocking unsolicited inbound connections by default, so in practice nothing is exposed that was not exposed before — but it is now a policy decision rather than a side effect, and it is worth confirming rather than assuming. If you want to see what is actually reachable from outside, that is what a port check answers, and it answers it for the address you actually arrived on.
If you do not have IPv6
In descending order of how likely each is to be the reason:
- Your provider does not offer it. The most common answer by a wide margin, and there is nothing to configure. Ask; some enable it on request or on newer plans.
- Your router has it disabled, or is old enough not to support it properly. Check the WAN settings for IPv6 and for a prefix delegation size — providers hand out a /56 or /48, and a router that only requests a single /64 will leave parts of a network unaddressed.
- A VPN is in the way. Many VPN clients carry IPv4 only and either block IPv6 outright or, worse, let it bypass the tunnel — which is one of the ways a VPN leaks your real address while appearing to work.
- The network you are on filters it, which is common on corporate and public networks.
Not having it costs you very little today; almost nothing on the public internet is IPv6-only, precisely because operators know how many people are still IPv4-only. What it does cost you is sharing a public address with strangers, and with it the ability to accept incoming connections — and if you want to know what else your connection reveals while you are here, the browser page lists it without the theatrics the topic usually attracts.