{% extends "base.html" %} {% import "tool_parts.html" as p %} {% block title %}{% if result %}{{ result.domain }}: {{ result.verdict }}{% if result.days_left is not none %}, {{ result.days_left }} days to expiry{% endif %}{% else %}Free domain expiry and DNS check{% endif %}{% endblock %} {% block desc %}{{ tool.desc }}{% endblock %} {% block content %} {{ p.head(tool) }} {{ p.form(tool, input_value, 'example.com') }} {{ p.error(error, url) }} {% if result %} {% set rd = result.rdap %}{% set d = result.days_left %} {% call p.verdict((d ~ 'd') if d is not none else result.verdict, result.verdict_class, result.verdict ~ (' · ' ~ d ~ ' days left' if d is not none else ''), (('Expires ' ~ rd.expires_at|dt) if rd and rd.expires_at else 'Registry did not publish an expiry date') ~ (' · ' ~ rd.registrar if rd and rd.registrar else ''), result.domain, checked_at) %}
{% if rd %}{{ 'transfer lock on' if result.locked else 'no transfer lock' }}{% endif %} {% if result.dns.A or result.dns.AAAA %}resolves{% else %}no A record{% endif %}
{% endcall %}

Registration

{% if rd %}
Domain
{{ rd.domain }}
Expires
{{ rd.expires_at|dt }}{% if d is not none %} ({{ d }} days){% endif %}
Registrar
{{ rd.registrar or '—' }}
Status
{% for s in rd.status %}{{ s }}{% else %}—{% endfor %}
{% if not result.locked %}

No transfer lock: ask your registrar to enable clientTransferProhibited so the domain cannot be moved without you.

{% endif %} {% else %}

{{ result.rdap_error or 'No registry data.' }} Some registries (and many ccTLDs) do not publish RDAP records.

{% endif %}

Name servers

{% for ns in result.nameservers %}
{{ ns }}
{% else %}

None found.

{% endfor %}

DNS records for {{ result.host }}

{% if result.dns_error %}

{{ result.dns_error }}

{% endif %} {% if result.record_types %} {% for rt in result.record_types %}{% for v in result.dns[rt] %} {% endfor %}{% endfor %}
{{ rt }}{{ v }}
{% else %}

No A, AAAA, MX, NS, TXT or CNAME records found.

{% endif %} {% set missing = ['A','AAAA','MX','NS','TXT','CNAME']|reject('in', result.record_types)|list %} {% if missing %}

No records: {{ missing|join(', ') }}

{% endif %}
{{ p.share(share_url) }} {{ p.others(tools, tool, url) }} {% else %}

What we check

Registry expiry date and registrar straight from RDAP (the successor to WHOIS), transfer-lock status, name servers and the current A, AAAA, MX, NS, TXT and CNAME records from public resolvers.

Why it matters

Domains lapse because the renewal email went to an old address. A changed NS or MX record is often the first sign of a hijack. Both are silent until customers notice.

Try it on

puzaricloud.in · github.com · example.com

{% endif %} {{ p.cta(tool, url) }} {% endblock %}