# IndieWWW

> Check whether a domain's apex and www hosts resolve and redirect to one canonical home.

See whether apex and www resolve and land on one canonical host.

The canonical page is https://indiewww.com/.

## Use the tool

Open [IndieWWW](https://indiewww.com/) to complete the job. The questions below describe the supported input, result, and limits. Every answer names its source next to it.

Source: [Cloudflare DNS over HTTPS](https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/).

## Questions and limits

### What is an apex domain?

The apex is the bare domain with nothing in front of it, `example.com`, and `www.example.com` is a subdomain of it. Both can serve a site, and neither is better. What matters is that they agree: one host is the home, and the other sends every visitor and every crawler to it with one permanent redirect. Search engines call that home the canonical host.

### Should I use www or non-www?

Either. The check accepts whichever host answers the page as the canonical one and grades the other on how it redirects. There is one technical difference. An apex cannot hold a CNAME record under DNS rules, so some hosts need an ALIAS or flattening feature at the apex, while `www` can point at any provider by CNAME. Pick one, keep it, and redirect the other.

### What does the verdict mean?

Pass: one host answers 2xx over HTTPS and the other redirects to it in one hop with a 301 or 308. Warn, temporary: the redirect is a 302, 303, or 307, which search engines read as a weaker canonical signal. Warn, split: both hosts serve a page and neither redirects. Fail: a host has no A or AAAA record, the two hosts redirect to each other, or the redirect lands somewhere that does not answer.

When a one-hop redirect exists, the check also sends one fixed deep link of its own, a path with a query string, through the redirecting host. The result says whether both parts arrive, the path is dropped, or the query is dropped. That row explains; it never changes the verdict.

### How do I redirect www to non-www?

Give the redirecting host a DNS record so it resolves, then answer every request to it with a 301 to the same path on the canonical host, over HTTPS. On Cloudflare that is a proxied record plus a redirect rule. On Netlify and Vercel the dashboard sets a primary domain and redirects the other. In Nginx, a `server` block for the other host with `return 301 https://example.com$request_uri`. Then run the check again.

Keep the path and the query string in the redirect, `$request_uri` in Nginx, so old links to inner pages still land on the same page. A redirect that sends everything to the home page loses every deep link, and the deep link row in the result will say so.

### Why does the check say my domain does not resolve when the site works?

The check asks Cloudflare's DNS resolver for A and AAAA records of both hosts at that moment, then sends one HTTPS request to each with redirects disabled. A record added minutes ago can still be missing there while your own resolver has it. A host that answers only plain HTTP, or blocks automated requests, can also fail here while a browser gets through. Check again later, and read the two host rows for which step failed.

## Promises

- The core is free: no account, no card, no premium plan, no upgrade nag, no hidden paywall.
- Private lookup activity is never published.
- Analytics is currently off. Private lookup activity is never published or sent to a tracker. No lookup history becomes public inventory.

## More

- [Notes](https://indiewww.com/blog.md): posts by the maker, newest first
- [More tools](https://indiewww.com/tools.md): the other tools by turushan
- [security.txt](https://indiewww.com/.well-known/security.txt): how to report a vulnerability

Made by turushan, https://twitter.com/turushan.
