Domain generator & registry lookup
A hundred names a run.
Then the registry decides.
Everything here runs in this page. Names are made in the browser — three modes, five sets of endings — and each one is put to its own registry, resolved per ending from IANA's bootstrap file, which answers with a record or with nothing.
What it will not do is guess. A lookup that times out, a registry that refuses browsers, an ending outside the ICANN contract: all three used to come back as AVAILABLE in green with five buy buttons under them. The first two are reported as undetermined now, which is the true answer and the less welcome one. The third gets asked a question it can answer — DNS — so the endings that publish nothing still come back with something.
The console
Make some names.
Nothing is sent anywhere until you ask for a lookup. Generation works with the network off.
DomainChaos v2
Ten neighbours: prefixed, suffixed, doubled, devowelled, numbered.
Every ending keeps the word and replaces the suffix, checking it across whichever set is selected below — three names on Classic, a hundred and ten on All.
One per line, or separated by commas. A word with no ending is read as
.com. Up to 100 at a time; anything over that is reported rather
than dropped. Ctrl+Enter checks the list.
Nothing generated yet.
Press Generate, or give the first field a word to work from. Names appear here; each row has a lookup, a star and a copy.
What the five answers mean:
- Available — the registry for a contracted gTLD holds no record. The name is free.
- Registered — there is a record, and it is shown: registrar, dates, nameservers. Or there is no readable record but the name is delegated, which settles it just as well.
- Probably free — the ending publishes no registration data, and the name has no nameservers. Both signals point one way; neither is a guarantee.
- No RDAP — the ending published nothing and DNS was inconclusive too.
- Unknown — the request timed out, was refused, or the registry errored. Worth retrying.
The whole page works offline except the lookups, and no name you generate leaves the browser unless you ask for one to be checked.
The endings
Five sets.
A set is only a pool the generator draws its ending from. The one that matters for the lookup is not which set you picked but which kind of ending you landed on — a contracted gTLD answers, and a country code may not.
The lookup
Four positions on telling you the truth.
01
A failure is not a yes.
The version before this one set “registered” to false, then only ever
set it true inside a try. Every timeout, every refused
request, every registry having a bad afternoon fell through to
AVAILABLE — in green, with five places to buy it. The answer you want
to hear is the one that has to be hardest to produce.
02
A 404 only counts from a gTLD.
Contracted gTLDs must run RDAP, so nothing found means nothing registered. A country code is under no such obligation: .im, .de and .la publish nothing public, and “no server for this ending” arrives looking exactly like “this name is free”. So those endings get asked a different question — DNS, which anyone may ask. A name with nameservers is registered, full stop. A name with none is probably free, and is labelled probably, because a registered name parked without a delegation looks identical from here.
03
A dependency that fails slowly is worse than one that fails.
Every lookup used to go through a public RDAP redirector, which answers a 302 telling you where the real registry is. Timed on three consecutive requests it took 4.7s, 13.0s and 31.7s to produce that redirect — against a 12-second budget that still had the registry to call. Most lookups were timing out, and because a timeout is honestly reported as Unknown, the page went on looking like it worked. IANA publishes the same routing table the redirector was reading. The registries are asked directly now: the same three names came back in 29, 24 and 23 milliseconds.
04
A social handle cannot be checked from a browser.
Every one of those platforms refuses a cross-origin request, which is why the old “Social handle checker” only ever produced links. It still produces links — it just says so now. Open one: a 404 is a free handle.
Where to register
Six, and none of them pay for the placement.
When a name comes back free, the row offers Spaceship, Porkbun, Namecheap, GoDaddy, IONOS and Hostinger, each opening its own search for that exact name. There are no affiliate parameters on any of those links; they are the plain search URLs, and you can read them in the status bar before you click.
They used to be five solid brand-coloured blocks. Five brand fills in a row is five accents on a page that has one, and half of them failed contrast in one edition or the other — so the colour survives as a dot and the button is the same hairline as everything else here.
About
One page, no server.
DomainChaos is a static page. There is no account, no log, and no database: the settings and the shortlist live in this browser's own storage and go no further. The only request it ever makes is the RDAP lookup you ask for, and that goes to the registry rather than to us.
It has two editions — this paper one and a dark one — which are the same
document in opposite polarity. The dark edition is generated from this file
by tools/mkdark.py; it is never edited by hand, so the two can
never disagree about a fact.