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.

3generator modes
5sets of endings
110endings in all
5possible answers

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.


Endings
How the name is built
5
none
How many per run
G generate   / root word   Esc cancel

0 names

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.

Classic
.com .org .net — the three that existed before the expansion, and still where most of the value is.
3 endings
Major
The three above plus .io .ai .co .xyz .shop .online .tech .app .dev .store .site .pro .info .me .tv — what a new product is usually named on.
18 endings
Regional
.us .uk .ca .de .fr .it .es .nl .au .nz .br .mx .ar .in .cn .jp .kr .ru .za .sg .hk .tw — every one a country code, so read the lookup carefully.
22 endings
Lab
.inc .llc .net .com.im .nyc .la — the endings this project's own properties use.
6 endings
All
Everything above and the long tail with it: money, health, food, travel, events and the rest.
110 endings

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.