FREE TOOL

Domain age checker

Enter a domain and get its registration date and age in days, read from the registry itself over RDAP rather than a cached WHOIS copy. The same call tells you whether the domain resolves, whether it is parked, and whether it is a one- or two-character typo of a well-known brand. It does not tell you who owns the domain, whether it is for sale, or anything about the website on it.

INPUT
try
200 OK40 ms (api)
SUSPECT
Domain "paypa1.com" looks like a typo of "paypal.com" (edit distance 1)
5 checks run
Registered 2000-10-20 — 9,473 days old
code
domain.typosquat
severity
medium
The full /v1/domains gate also checks
Domain resolvesMX recordsParked domainLook-alike domain
Also available through the API.

Live call to the same /v1 endpoint customers use. Rules only on this page; nothing you type is stored.

Apex domain only — example.com, not www.example.com. Have a domain you saw for the first time this week? Paste it.

What it checks

  • domain.rdap — a registry lookup, routed per TLD with IANA's RDAP bootstrap file. Returns the registration date as data.rdap.createdAt and the age as data.rdap.ageDays.
  • domain.dns — concurrent DNS-over-HTTPS queries for NS and A records. Returns data.dns.resolves and data.dns.nameservers.
  • domain.parked — the nameservers against a list of dedicated parking services (Sedo, ParkingCrew, Bodis, Afternic and similar).
  • domain.typosquat — edit distance against a curated set of brand domains (payments, platforms, retail, big tech, logistics). At most 2 edits and at most 20% of the target's length, so stripe.com never matches strip.com's neighbours by accident.

All four run on every call. Two of them (RDAP, DNS) go over the network, so the answer takes as long as the registry does.

What the result means

clean — registered, resolving, not parked, not a typo of a listed brand. The registration date is in the response either way; a clean verdict with a two-week-old createdAt is still a two-week-old domain, so read the date, not only the verdict. suspect — at least one medium finding. block — at least one high finding.

FindingSeverityFires when
domain.newly_registeredmediumRegistered fewer than 30 days ago.
domain.not_registeredhighThe registry confirmed there is no record. Only fires on a registry answer, never on a guess.
domain.not_foundhighNXDOMAIN — the domain has no DNS presence at all.
domain.parkedmediumA nameserver matches a known parking service.
domain.typosquatmediumOne or two edits away from a listed brand domain.

No finding either way when the TLD's registry runs no public RDAP server. The response then has no data.rdap block at all — absent, never null — and checks_skipped says why. That is "we could not check", not "this domain is fine".

Why it matters

Registration age is the one signal about a domain that cannot be faked after the fact: the registry recorded the date, and a phishing domain set up this week has a this-week date. The 30-day threshold is shared with the link checker, so a link whose final destination is a fresh domain gets the same finding. Parking tells you a domain exists but nobody is home. Typosquat tells you it was chosen to look like somebody else's.

QUESTIONS

Domain age,
answered.

From your own code

curl -s -X POST https://api.stormdoor.dev/v1/domains \
  -H "Authorization: Bearer sk_live_..." \
  -H "content-type: application/json" \
  -d '{"domain":"paypa1.com"}'

Response fields you will use: verdict, findings[].code, data.rdap.createdAt, data.rdap.ageDays. The API needs an account — signups open with paid plans, a one-time trial included, no card. Join the waitlist and you will hear first.

Read more

/v1/domains docs · domain.newly_registered · domain.not_registered · domain.not_found · domain.parked · domain.typosquat
Sibling tools: link checker (the same checks run on a link's final destination), email checker.

Guides about this

All guides