Prufy notes
The domain · 7 min

Turning input into a name

People paste URLs, emails and uppercase with trailing dots. The engine needs one canonical name, or a specific, kind reason it can't use what you gave it.

Try any inputRuns the real normalizeDomain
Clean up
Trim spaces and lowercase
https://www.example.com./about
Changed it
Find the host
Drop the scheme, login, path and port. Take what's after @
www.example.com.
Changed it
Encode
Convert other alphabets to ASCII, drop a trailing dot
www.example.com
Changed it
Check the shape
Not an IP. Within length limits. Allowed characters only
www.example.com
Passed
Apply policy
Drop www. Refuse reserved endings, public suffixes and bare words
example.com
Changed it
Accepted
We store and look up
example.com
We show people
example.com
Registrable domain
example.com
Subdomain?
No
Predict it first
Should www.com have its www. removed?

Two spellings of one name

DNS only understands basic ASCII, so bücher.de has an ASCII disguise: xn--bcher-kva.de. That's . Both mean the same domain, so the engine stores the ASCII form and shows people the Unicode one.

Lookalikes

Cyrillic а and Latin a are different characters that look identical, so аррle.com can pass for apple.com. A label that mixes alphabets gets a warning, though not a refusal, because someone may genuinely own that domain. Normal mixes, like Japanese Han with Hiragana, are allowed.

Why you can't claim co.uk

Some endings are shared by many unrelated people. Those are , and they come in two kinds: official ones like co.uk, and private ones like github.io, where a company hands out subdomains.

Verifying github.io would claim every GitHub Pages site. So acme.github.io is fine, and github.io is refused.

A few details worth knowing

  • IP addresses in disguise. URLs accept 127.1 and 0x7f.0.0.1, so any name ending in a number is treated as an IP.
  • Percent signs are refused, not decoded. A name shouldn't be a riddle.
  • Unknown endings pass. New ones appear, and a DNS check will report it if the domain truly doesn't exist.
  • It runs in the browser too. The same function powers the live preview on the claim form, and the server runs it again because a client can send anything.