What does IPv6 support mean for a website?
IPv6 support is not a yes-or-no answer. A site can be unreachable over IPv6, reachable for its main page only, or fully usable because every host it depends on has IPv6.
| Level | What it means | What an IPv6-only client sees |
|---|---|---|
| No IPv6 | The hostname publishes no AAAA record | The connection cannot be opened at all |
| Partial | The main hostname has an AAAA record, but a script, stylesheet, font, image or API host does not | The HTML loads; some resources fail or never arrive |
| Full | The main hostname and every host the page loads publish AAAA records | The page can load completely over IPv6 |
Measurements show why the middle level matters. Common Crawl's March 2026 analysis found 36.9% of the top 100,000 web hosts fully reachable over IPv6 and 61.9% with no AAAA record. Research presented at IMC 2025 found only 12.6% of the top 100,000 websites fully IPv6-ready once every subresource is counted.
How do you look up a website's AAAA record?
An AAAA record maps a hostname to an IPv6 address, as defined in RFC 3596. Query it with dig on macOS and Linux, nslookup on almost any system, or Resolve-DnsName in Windows PowerShell.
# macOS and Linux
dig AAAA example.com +short
dig A example.com +short
# Almost any system
nslookup -type=AAAA example.com
# Windows PowerShell
Resolve-DnsName example.com -Type AAAAAn IPv6 address in the output (it looks like 2001:db8::1) means the hostname publishes IPv6. Empty output from dig AAAA, or no AAAA answer from nslookup, means it does not. If the answer starts with a CNAME, the resolver follows it, and the address at the end of the chain is the one that counts.
Check the exact hostname your tool requests. example.com, www.example.com and api.example.com are separate DNS names, and their answers can differ.
How do you confirm a real IPv6 connection with curl?
A record proves that an address is published, not that the server answers on it. curl -6 makes curl connect over IPv6 only (see the curl manual).
# Force IPv6 and print the HTTP status and the address curl connected to
curl -6 -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://example.com/A status code followed by an IPv6 address means the site answered over IPv6. This test needs IPv6 on the machine that runs it. If your network has none, curl fails whatever the site supports, so use one of the checks below instead.
If you have a Datacenter IPv6 service, the proxy gives the same answer from an IPv6 exit, and your own machine does not need IPv6:
curl -sS -o /dev/null -w 'proxy %{http_connect}, site %{http_code}\n' \
-x http://YOUR_HOST:8080 -U "YOUR_USERNAME:YOUR_PASSWORD" \
https://example.com/proxy 200 followed by a site status means the site answered over IPv6. An IPv4-only site gets proxy 502, and the X-Proxy-Reason header says why: “Datacenter IPv6 proxies reach IPv6 destinations only. This destination has no IPv6 address.” Add -v to see the header.
How do you check every resource a page loads?
Use the TrueProxies IPv6 test. It loads the page once, collects every host the HTML asks a browser to fetch (scripts, stylesheets, images, iframes, fonts, preconnect hints and CSS url() references), and resolves AAAA and A records for each one over DNS-over-HTTPS. It reports Pass, Partial, Fail or Inconclusive and marks each host that is IPv4 only.
Know its limits. It reads the HTML as served, so hosts that JavaScript adds later are not counted. It checks up to 60 unique hosts per page. A site that returns a challenge page is reported as Inconclusive rather than Pass.
On a network that has IPv6, you can also check by hand: open your browser's developer tools, reload the page on the Network tab and show the Remote Address column. IPv6 addresses appear in square brackets. A host shown with an IPv4 address may still have IPv6, so confirm it with dig AAAA.
What does partial IPv6 support mean for your workload?
Partial support is common because third-party hosts, such as CDNs, analytics, font services and APIs, each run their own DNS. Whether it matters depends on what your client fetches.
| Workload | What must have IPv6 | How to check |
|---|---|---|
| HTTP client fetching HTML (curl, requests, Scrapy) | The page's hostname only | dig AAAA, then curl -6 or a request through Datacenter IPv6 |
| API or JSON endpoint | The API hostname, which can differ from the website's | dig AAAA on the API hostname |
| Headless browser that renders pages | Every host the page loads, including hosts added by JavaScript | The IPv6 test, then a rendered test run |
| Image or file downloads | The CDN or storage hostname in each file URL | dig AAAA on each file hostname |
What should you do if a website is IPv4-only?
- Use IPv4 for that site. Residential IPv4 Unlimited and Residential IPv4 GB-based reach IPv4 sites.
- Split traffic by target: send hosts that pass through Datacenter IPv6 and IPv4-only hosts through Residential IPv4, and build the list with the checks above.
- For a partial site you render in a browser, find out whether the IPv4-only hosts carry anything you need. A missing analytics beacon rarely matters; a missing script that builds the page does.
- Check again later. Sites add IPv6 over time, and a result is only true for the day you checked.
Don't buy IPv6 capacity for a site whose main hostname has no AAAA record. No amount of IPv6 changes that.
Checklist: is this site ready for an IPv6 proxy?
- List every hostname your client will request: the page, its API, and any file or image hosts.
- Run
dig AAAAon each one. An empty result is an IPv4-only host. - Confirm one real IPv6 response with
curl -6, or through a Datacenter IPv6 service. - If you render pages, run the IPv6 test and review every host marked IPv4 only.
- Decide per target: Datacenter IPv6 for hosts that pass, Residential IPv4 for the rest.
For the product side, read what an IPv6 proxy is. Datacenter IPv6 lists current plans.