Open source · Domain research

Domain Looker

Domain Looker checks up to 100 domains at once against official registry data and tells you honestly which are taken and which might be free. Paste anything: URLs, Markdown links, international names. No API keys and no registrar upsell.

OwnershipMy own tool · MIT licence
StatusIndependent tool
My roleDesign and development

The short version

What it is

An open-source web app for bulk domain availability pre-checks using RDAP, the structured, registry-published successor to WHOIS.

What I built

A React 19 and Vite front end with an Express API in strict TypeScript: input normalisation with public-suffix rules, IANA bootstrap routing, per-registry pacing, caching, six explicit result states and CSV export, with tests and CI on GitHub.

Why it stands out

Precision in a small tool. It never confuses a failed request with an available domain, and every exported row keeps where it came from.

100Domains per runURLs, Markdown links or bare names
6Explicit result statesIncluding rate-limited and unknown
15 minResult cacheLabelled, with the original check time
MITOpen sourcePublic repository with CI

From the implementation and repository, 4 October 2026.

01 · In practice

Six messy lines.
Five honest rows.

The parser accepts ordinary URLs and Markdown links, strips paths and subdomains, uses public-suffix rules to find the registrable name and converts international names to their ASCII lookup form. Duplicates collapse to one lookup; an invalid line gets its own row instead of stopping the batch.

Sample input · 6 lines
PastedNormalizedResult
https://www.example.org/pricingexample.orgRegistered
[Our blog](https://blog.example.net/launch)example.netRegistered
bücher.dexn--bcher-kva.deRegistered
example.orgexample.orgDuplicate, skipped
not a domain(none)Invalid
my-brand-idea-2026.commy-brand-idea-2026.comLikely available

Six pasted lines become five result rows. Sample data, as in the demo mode below.

Domain Looker workspace: pasted inputs on the left, results on the right with counts for registered, likely available, invalid, unsupported, rate-limited and unknown, and a table of original inputs, normalized domains and statuses.
  1. Paste anything. URLs, Markdown links, names, mistakes.
  2. Counted honestly. 5 unique rows checked, 1 duplicate skipped.
  3. Demo mode is labelled. Demo results are clearly labelled on screen.
  4. “Likely”, not “available”. The wording matches what RDAP can prove.

Current desktop interface running locally in demo mode, 4 October 2026.

02 · The central decision

A missing record
is not a failed request.

RDAP is the registration-data service behind every check. Each response maps to one explicit state, and only one of them suggests a name might be free.

HTTP 200 + recordRegistered

A registration record was returned.

HTTP 404Likely available

No record found. A registrar still confirms purchase eligibility.

HTTP 429 + Retry-AfterRate-limited

Try later. This says nothing about availability.

Timeout · no service · malformedUnsupported or unknown

Keep the reason instead of guessing.

Implemented response handling, covered by tests.

03 · Details

Spend requests
where they are useful.

The Node service uses IANA’s registry directory to route each lookup. Within a batch it allows up to four requests at once and one active request per registry host. Recent results are reused for 15 minutes, labelled as cached, with the original check time kept.

The export follows the active filter and carries the original input, normalized domain, status, notes, check time and cache flag, so the result stays interpretable after it leaves the tool.

CSV export excerpt
Original inputNormalizedStatusCheckedCache
https://www.example.org/pricingexample.orgregistered2026-10-04T12:00Zno
bücher.dexn--bcher-kva.deregistered2026-10-04T12:00Zno
not a domaininvalid_domain2026-10-04T12:00Zno

Selected fields from the real CSV formatter, sample data.

04 · Where it stands

A modest task,
done precisely.

Shipped
  • Mixed-input parsing with public-suffix rules
  • International domain conversion
  • Batch de-duplication and per-row errors
  • Six explicit result states
  • Per-registry pacing and 15-minute cache
  • Filtered CSV export with provenance
Open source

MIT licensed, strict TypeScript, tested and running CI on GitHub.

Have a recurring task a small tool could simplify? Start a conversation

All projects ↗
Contact

Available for select projects and opportunities

Have a website that needs to win work?

alex@jardinestudio.com

Let’s work together. Have a project in mind or a role you’re hiring for? I’d like to hear about it.

Open email app
Toronto, Canada · --:--Working remotelyLinkedIn (opens in a new tab)