Domain Availability Checker
How the Domain Availability Checker asks a domain's registry over RDAP whether the name is registered, reads the registration's life and status codes, and what each finding means for someone who wants the name or already owns it.
The tool page is tamperbox.dev/domain-availability. It opens with a live lookup of tamperbox.dev and takes a domain or a saved RDAP record. This page is the long version: where the answer comes from, what “no registration found” does and does not prove, how each status code and date is read, and what to do next whether you want the name or own it.
What the tool answers
Section titled “What the tool answers”- Is the name registered? Whether the registry holds a record for it.
- Since when, and until when? The registration and expiry dates, drawn as one line with today marked.
- What holds it? The status codes the registrar and registry set: locks, holds, grace periods, redemption.
- Is it about to change hands? An expiry close at hand, a name in redemption or pending deletion, with an estimated drop date.
- Is the owner protected? A missing transfer lock, and the registry lock when present.
It does not register names, quote prices, or check trademarks. For the full record, including nameservers, DNSSEC data and contacts, use the WHOIS & RDAP Lookup.
Inputs
Section titled “Inputs”A domain
Section titled “A domain”example.com, checked when you stop typing (or at once on Enter). A pasted address is reduced to what the tool takes: https://www.example.com/page becomes www.example.com, an email address becomes its domain, quotes and brackets are dropped. Text that contains nothing usable stays as pasted with an explanation. Typing is never rewritten mid-word, and Break it loads are never cleaned.
Enter the registered name itself. Registries hold records for registered domains, not for names below them, so www.example.com usually returns no record even when example.com is registered. If a subdomain has no record, enter the registered domain yourself; removing one label is not a reliable public-suffix rule.
RDAP JSON
Section titled “RDAP JSON”A domain record saved from an RDAP service (it starts with { and has "objectClassName": "domain"), pasted or dropped as a file up to 256 KiB. It is read in the browser with the same rules; anything else is refused with “Not readable JSON” or “Not an RDAP domain response”.
Reading the result
Section titled “Reading the result”Verdict and chips
Section titled “Verdict and chips”“Registered: example.com is 20 years old and expires in 300 days”, “Registered, expired: … expired N days ago”, “Not available yet: … expired and is being released” with an estimated drop date, or “No registration found”. The chips say registered or being released, when it expires, and the first status that blocks the domain; each scrolls to its section.
Findings
Section titled “Findings”The lifecycle checks, worst first: expiry, holds, the transfer lock, the registry lock, an unsigned delegation. Passing checks are folded when there are several. The count reports problems and things to check, or “No problems”. The finding reference lists them all.
Registration
Section titled “Registration”A line from registration to expiry with today marked (it turns amber within 30 days of expiry and red after it), then date facts: registered and how long ago, expires and how soon, last changed, and the registrar name.
Status codes
Section titled “Status codes”Each status the record carries, with its plain name, what it means and a badge: locks are normal protection (PASS), holds stop the domain resolving (FAIL), grace periods are information.
History and next checks
Section titled “History and next checks”History appears below the result evidence after Break it or Heal it changes the input. Revert restores the input before the latest recorded change; Reset input returns to the input before the first recorded change. Typing or pasting a new input starts a new history. Restoring a live input runs the lookup again, rather than restoring a saved response.
Take it further offers the expiry as a Unix timestamp and, when the registry reports a signed delegation, a DNSSEC check for the domain. When a longer name has no record, Heal it may offer the name one label up. This is a suggested next lookup, not a determination of the registrable domain.
Method
Section titled “Method”1. Finding the registry
Section titled “1. Finding the registry”The server reads the IANA RDAP bootstrap file for domain names and picks the service for the longest matching ending (RFC 9224, section 4). Only HTTPS service URLs are used. An ending with no RDAP service gives “No HTTPS RDAP service is published for this name or address. This does not mean it is available.” The query is domain/<name> under that service (RFC 9082, section 3.1.3); up to three redirects are followed, each to a public HTTPS address.
2. Not found
Section titled “2. Not found”RFC 7480, section 5.3: a server with no data “returns a 404 (Not Found) response code. Optionally, it MAY include additional information … in the HTTP entity body.” The tool treats a 404 as “no registration” only when it carries RDAP evidence: an error document with errorCode 404, or an empty body served as application/rdap+json or application/json (Verisign, which runs .com and .net, sends no body). The empty-body case requires a successful body read and a JSON or RDAP JSON media type, optionally with parameters. A failed body read or an HTML 404 from a gateway remains an error or inconclusive answer, not evidence of a free name. Other errors are reported as errors (rate limiting has its own message).
No record gives the INFO verdict “No registration found” and an INFO finding, “No registration record”. Both explain that a missing record does not guarantee availability.
3. Reading the record
Section titled “3. Reading the record”The record must be an RDAP domain object (RFC 9083, section 5.3). The tool reads the registration, expiration and last-changed events (section 4.5), the status values (section 4.6), the registrar entity with its IANA ID, and secureDNS.delegationSigned. Status values are the EPP statuses of RFC 5731, section 2.3 and RFC 3915, section 3.1 as mapped into RDAP by RFC 8056, section 2 (“client transfer prohibited” for clientTransferProhibited); they are compared without spaces and case.
4. Status codes
Section titled “4. Status codes”| Status | Shown as | Badge |
|---|---|---|
| active, ok | Active | PASS |
| client/server transfer, delete, update prohibited | Transfer lock, Delete lock, Update lock (Registry … for server) | PASS |
| client renew prohibited | Renew lock: often a billing or dispute hold | CHECK |
| client hold, server hold | On hold: the domain does not resolve | FAIL |
| add, renew, auto-renew, transfer period | Just registered, Just renewed, Auto-renewed, Just transferred | INFO |
| pending transfer, pending restore | Transfer pending, Restore pending | CHECK |
| redemption period | Expired, redeemable | FAIL |
| pending delete | Being deleted | FAIL |
| inactive | No nameservers | CHECK |
Unknown statuses are listed as they are, as INFO.
5. Lifecycle checks
Section titled “5. Lifecycle checks”The findings use rounded whole days until expiry. A timestamp just past expiry can therefore still produce an “Expires” warning until rounding becomes negative; the verdict and date fields compare the timestamp directly. Applied in this order:
| Check | Finding | Level |
|---|---|---|
| Redemption period or pending delete | “Expired and on its way out” | FAIL |
| Otherwise, expiry date passed | “Expired N days ago” | FAIL |
| Otherwise, expiry within 30 days | “Expires in N days” | CHECK |
| Otherwise, expiry known | “Expires in N days” | PASS |
| Client or server hold | “On hold” | FAIL |
| No transfer lock, and not pending or in redemption | “No transfer lock” | CHECK |
| Server transfer and server update prohibited | “Registry lock” | PASS |
delegationSigned false |
“Delegation not signed” | INFO |
6. Being released
Section titled “6. Being released”For a domain in redemption or pending delete, the verdict estimates when it could be registered again: the last change plus 35 days in redemption, or plus 5 days in pending delete. ICANN’s Expired Registration Recovery Policy requires gTLD registries to “offer a Redemption Grace Period (“RGP”) of 30 days immediately following the deletion of a registration”; pending delete commonly lasts five days. These are estimates: registries differ, and country-code endings follow their own rules.
7. The verdict
Section titled “7. The verdict”Being released (“Not available yet”, CHECK) comes first; then an expired registration (“Registered, expired”, CHECK); otherwise “Registered” at CHECK level when a finding needs attention and INFO otherwise. No record gives “No registration found” (INFO).
Standards and conformance
Section titled “Standards and conformance”| Specification | Sections used | How the tool applies them | Where it stops |
|---|---|---|---|
| RFC 7480, RDAP over HTTP | 5.3 negative answers | A 404 with RDAP evidence is no registration | An HTML 404 is not trusted as an answer, stricter than the RFC requires |
| RFC 9082 (obsoletes RFC 7482), queries | 3.1.3 domain path | Exact-name lookups only | No search queries |
| RFC 9083 (obsoletes RFC 7483), responses | 4.5 events, 4.6 status, 5.3 domain object | Read in the browser | Remarks and notices are not shown here; WHOIS shows the raw record |
| RFC 9224 (obsoletes RFC 7484), bootstrap | 4 | Longest matching ending, HTTPS only | Endings without a service are reported, not guessed through WHOIS |
| RFC 5731, RFC 3915, RFC 8056 | Status values and their RDAP mapping | Plain names and weights per status | |
| ICANN ERRP | Redemption Grace Period | The drop-date estimate | Country-code registries follow their own policies |
Finding reference
Section titled “Finding reference”| Finding | Level | Source | What it means | What to do |
|---|---|---|---|---|
| No registration record (finding); No registration found (verdict) | INFO | RFC 7480 5.3 | No record; availability unknown | Register it |
| Expires in N days (more than 30) | PASS | RFC 9083 4.5 | Paid up | |
| Expires in N days (30 or fewer) | CHECK | Lapses soon without renewal | Renew | |
| Expired N days ago | FAIL | Past the reported expiry; renewal rights depend on policy | Renew now, or wait if you want it | |
| Expired and on its way out | FAIL | RFC 3915 3.1 | Redemption or pending delete | Restore or backorder |
| On hold | FAIL | RFC 5731 2.3 | The domain does not resolve | Ask the registrar why |
| No transfer lock | CHECK | RFC 5731 2.3 | The domain can be moved with its auth code | Turn the lock on |
| Registry lock | PASS | RFC 5731 2.3 | Server transfer and update restrictions are present; process is registry-specific | |
| Delegation not signed | INFO | RFC 9083 5.3 | No DS at the registry; DNSSEC is not in use | See the DNSSEC Checker |
Registering a free name
Section titled “Registering a free name”- Search the exact name at a registrar; it confirms availability and the price (premium names cost more).
- Register it for a year or more, with auto-renew on and the transfer lock on.
- Check here: the record appears when the registry publishes it; an add-period status may appear.
An expiry close at hand
Section titled “An expiry close at hand”Turn on auto-renew at the registrar and confirm the payment card; check here after the renewal, when the expiry moves forward a year. If the registrar shows a renew lock, ask why: it is often a billing or dispute hold.
A name being released
Section titled “A name being released”If it is yours, ask your registrar to restore it from redemption now; the fee rises and the window closes about 30 days after deletion. If you want it, place a backorder or check here after the estimated drop date. Names in redemption do not resolve and cannot be transferred.
Independent check
Section titled “Independent check”# Find the RDAP service for the ending in the IANA bootstrap file, then ask itcurl -s https://data.iana.org/rdap/dns.json | grep -o '"https://[^"]*verisign[^"]*com[^"]*"' | head -1curl -s -o /dev/null -w '%{http_code}\n' https://rdap.verisign.com/com/v1/domain/example.com200 means registered; 404 means the registry has no record.
Break it cases
Section titled “Break it cases”Every case is a sample registry record on the reserved .example zone, because a registration’s life is a state of the world rather than an edit to your input.
| Case | Name | What it shows |
|---|---|---|
| Not registered | harborsupply-marine.example |
No registration found |
| Expires in two weeks | dockside-tools.example |
Expiry close at hand, and no transfer lock |
| Expired, redeemable | anchor-chandlery.example |
Being released, with an estimated drop date |
| Registered last week | harbor-supply-store.example |
Just registered (add period), transfer-locked |
Worked example
Section titled “Worked example”The page opens with a live RDAP lookup of tamperbox.dev. First check whether a registration record was returned. If it was, read the creation and expiration events, then the status codes. Do not infer an exact renewal deadline from the age label or treat a reported expiry as a promise of public release.
Compare the registry’s events with the account at the registrar if you control the domain. Registrar billing dates and registry expiration events can differ, particularly around an auto-renew period. A server transfer restriction and an ordinary client lock are different evidence; neither supplies the private account procedure required to transfer or restore a name.
Choose Expired, redeemable in Break it for a reserved example of redemption. The estimated release date illustrates the calculation, not a reservation or a guarantee that the name will be offered for registration. Heal it restores the earlier input and repeats a live lookup when appropriate. The opening registration, remaining days and statuses are intentionally not frozen in this guide.
For agents
Section titled “For agents”Search the Tamperbox MCP catalog for domain_availability, inspect its schema, and supply domain. A found record returns registered: true, registrable: false, raw evidence, parsed registration and checks. A confirmed RDAP not-found response returns registered: false and registrable: null; null means availability is unknown. Other failures remain errors. Browser fixtures are not a promise of equivalent public MCP lookup results. Keep these warnings with any conclusion:
- No registration record is not a guarantee of availability; a registrar confirms it.
- One registry record at one moment.
- Drop dates are estimates.
See Connect an MCP client for the calling pattern and Security and privacy for where the domain travels.
Keeping an observation reproducible
Section titled “Keeping an observation reproducible”Record the target, the time of the lookup, the relevant raw records and the resolver or registry that supplied them. Repeat a live lookup after a configuration change instead of assuming a restored input restores an old response. A saved RDAP object or pasted DNSSEC record set is a snapshot: its dates are assessed against the current clock, but its contents are not refreshed.
Separate absence from failure. A successful response with no applicable record, a rejected input, a timeout and an upstream error support different conclusions. Preserve an error when a query could not complete; do not replace it with a claim that the record does not exist. When sharing findings, include the narrow observation and the relevant limitation rather than only the verdict label.
Limits
Section titled “Limits”- One registry record, at one moment.
- Reserved, premium and blocked names can be missing from RDAP and still not be available.
- Endings whose registry publishes no RDAP service cannot be checked.
- Drop dates after redemption are estimates.
- The Break it cases use sample records on the reserved
.examplezone. - History stays in memory in the open page. Explicit links to another tool may temporarily keep a one-use transfer in browser session storage; transfers expire after one minute and do not put the input in the URL.
References
Section titled “References”- RFC 3915, Domain Registry Grace Period Mapping for EPP, section 3.1
- RFC 5731, EPP Domain Name Mapping, section 2.3
- RFC 7480, HTTP Usage in RDAP, section 5.3
- RFC 8056, EPP and RDAP Status Mapping, section 2
- RFC 9082, RDAP Query Format, section 3.1.3 (obsoletes RFC 7482)
- RFC 9083, JSON Responses for RDAP, sections 4.5, 4.6 and 5.3 (obsoletes RFC 7483)
- RFC 9224, Finding the Authoritative RDAP Service, section 4 (obsoletes RFC 7484)
- ICANN Expired Registration Recovery Policy