A domain name is not bought once. It is registered for a term, often one year, and it works only while the registration is paid. When the term ends and nobody renews it, the domain stops resolving. The website goes dark, and so does every email address on it.

This guide shows how to find the expiration date of a domain, how to read it, and how to make sure a renewal does not slip past you.

Why the date matters

A missed renewal is one of the quietest ways to lose a website. The server is healthy, the certificate is valid, the code has not changed, and still nobody can reach the site, because the name no longer points anywhere.

The date also controls other things. Certificate renewal that proves control of the domain can fail once the domain lapses. Email stops arriving. Callbacks from payment or login services to your domain fail. What happens in the days after expiry is covered in What Happens When a Domain Expires.

Three places to find the date

Source What you get Best for
Your registrar account The date your registrar will bill or expire, plus renewal settings Domains you own
RDAP A structured answer from the registry, readable by programs Any public domain, scripts, monitoring
WHOIS A plain-text answer meant for people Any public domain, a quick look

Start with the registrar. It is the one place that also shows whether automatic renewal is on and which payment method it will use. The public lookups are useful when the domain belongs to someone else, when you manage many domains, or when you want a check that does not depend on your own account.

Check with RDAP

RDAP is the Registration Data Access Protocol. It was designed to replace WHOIS. ICANN's RDAP page states that since 28 January 2025 registries and registrars of generic top-level domains are no longer required to offer WHOIS, with a few exceptions, so RDAP is the lookup to learn.

An RDAP answer is JSON sent over HTTPS. Dates are listed in an events list. Each event has an eventAction and an eventDate. The action expiration marks the date the registration is set to expire, and registration marks when it was first registered (RFC 9083).

You can ask a public lookup service, which forwards you to the right registry server:

curl -sL -H "Accept: application/rdap+json" https://rdap.org/domain/example.com

To print only the expiration event, with the jq tool installed:

curl -sL -H "Accept: application/rdap+json" https://rdap.org/domain/example.com \
  | jq '.events[] | select(.eventAction == "expiration")'

The query always uses the registered domain name, for example example.com, not www.example.com. For a name such as example.co.uk, the registered domain is the whole of example.co.uk.

Things to expect from RDAP:

  • A 404 answer means the lookup found nothing for that name.
  • A 429 answer means you are asking too often. Wait, and respect the Retry-After header if it is present (RFC 7480).
  • The events list may have no expiration entry at all. See the next section but one.

Check with WHOIS

WHOIS is older. It answers in plain text over a simple connection to port 43 (RFC 3912):

whois example.com

Look for a line that mentions expiry. For many generic domains it reads "Registry Expiry Date", but the label differs between registries, and the format is written for people, not programs. The protocol has no standard fields, so a script that reads one registry's output may fail on another's.

Why the date can be missing or surprising

  • The registry does not publish it. Some country-code registries leave the expiration date out of public answers. RDAP then has no expiration event. A tool cannot invent a date that the registry does not give.
  • The lookup was refused. Rate limits and temporary registry errors happen. That tells you nothing about the domain.
  • Registry and registrar disagree. Registrars sometimes show a paid-until date that differs from the registry date. Treat the earlier one as the deadline.
  • You looked up the wrong name. A subdomain has no registration of its own. The registered domain above it does.
  • It is a different expiry. A domain registration, a hosting plan, and a certificate each have their own end date. Renewing one does not renew the others.

How not to miss a renewal

  1. Turn on automatic renewal at the registrar, and check that the card on file has not expired.
  2. Use a mailbox people read for the registrar contact. Renewal reminders sent to a former employee are a classic cause of lost domains. ICANN's policy for generic domains requires registrars to send at least two reminders before expiry, roughly a month and a week ahead, but a reminder only works if somebody reads it.
  3. Register for several years if the domain matters and the price is acceptable.
  4. Keep a list of every domain you are responsible for, with the registrar and the expiry date.
  5. Add an independent warning. A monitor that checks the date and warns you does not rely on the registrar's emails reaching you.

Monitor the date with UptimeWire

For every website you add, UptimeWire takes the domain from the website address and asks the registry for its expiration date once a day, using RDAP. You choose how many days ahead you want to be warned, separately for each website. The default is 30 days.

When the date comes within that period, UptimeWire sends one warning by email and by Telegram. It does not repeat the warning every day, and it does not send it to webhook or chat channels. A domain warning is not an incident: it does not open one.

Note

If the registry publishes no expiration date, the check shows the domain as unknown and sends no warning. For such a domain, keep your own reminder.

UptimeWire does not renew the domain, and it cannot guarantee a known date for every domain. It tells you when the date is near, and the renewal stays with you.

Checklist

  • Read the expiration date of each domain in your registrar account.
  • Confirm that automatic renewal is on and the payment method is valid.
  • Make sure the reminder emails go to a mailbox that is read.
  • Cross-check the date with an RDAP lookup.
  • Where no date is published, set a calendar reminder.
  • Add a warning that does not depend on the registrar.