resellerhq

EPP status code list explainer

Paste a column of domain status codes from any export and read what every one of them means, with no lookup.

One code per line, a comma-separated row, a CSV column, or a line per domain. Nothing you paste here is stored or looked up.

Try

Result

Nothing pasted yet

Paste the block of codes you already have and each one is explained as you type.

What this is

The quickest way to explain EPP status codes list output from a registrar’s bulk export is to paste the whole block at once: every code is matched however it happened to be capitalised, grouped by what it actually does to the domain, and explained without a single lookup being made.

A domain’s status is a set rather than a value. One registration can carry a transfer lock, a grace period and a hold at the same time, and each of the three says something different about what can be done with the name today — which is why a bulk export hands over a column of several codes per row instead of one word.

EPP is the protocol registrars and registries speak to each other, and these codes are defined in RFC 5731, with the grace-period codes added by RFC 3915. The same vocabulary comes back out of every registrar export, every WHOIS answer and every RDAP response, which is what makes a pasted column worth reading on its own.

How to read the result

The table carries one row per distinct code, with what the code does beside what it means, so a forty-row export with six distinct codes in it reads as six things to understand rather than forty.

Findings are ordered by weight: a hold that has already taken a name out of DNS comes before a transfer lock that is quietly doing its job. Anything outside the specifications is listed as undocumented rather than handed a plausible-sounding meaning.

Reading these codes is usually one step in a bigger check: our guide Holding a domain portfolio: renewals, status codes and the names that attack yours covers where a stalled transfer and its status code fit alongside tracking renewal dates and budgeting what a renewal or transfer will cost.

Common mistakes

  • Reading a grace-period code as an expiry dateautoRenewPeriod, renewPeriod and redemptionPeriod are positions in a lifecycle with a clock already running, not dates. A row carrying one of them has a deadline somewhere in the registrar’s own records that the code itself does not tell you, and the window is usually days rather than months.
  • Trusting the age of the exportStatus codes change the moment a registrar acts, so a column copied from a spreadsheet last month describes last month. Explaining a stale column is still useful for understanding what happened, but it is not evidence of what any of those domains carry right now.
  • Skipping a code because it looks unfamiliarA code no specification defines is the one worth asking a registrar about, because it is either a registry’s own invention or a sign that two columns were merged when the file was exported. Both are worth five minutes before the list is filed as reviewed.

Resell domain registration across the endings your customers ask for, at your own price.

Get started

Questions

What people ask about this tool.

Does this look any of the pasted domains up?

No. Nothing leaves the browser and no registry, WHOIS server or RDAP service is contacted at all: this is a dictionary applied to the text in the box, which is why it answers as fast as it can be typed.

Why does it accept CLIENTHOLD, clienthold and clientHold as the same code?

Registrars disagree about capitalisation in their exports, and some flatten everything to upper case on the way out. Codes are matched case-insensitively and shown back in the specifications’ own spelling so a list from two registrars reads consistently.

What happens to a code that is not in the dictionary?

It still gets a row, labelled as a code no published specification covers, rather than being dropped silently or given an invented meaning. Registries occasionally publish codes of their own, and only the registry that published one can say what it meant.

Can I paste a whole CSV column with the domain names still in it?

Yes. A line like "example.com, clientTransferProhibited, serverHold" is read as one domain with two codes, and a header row of field names is ignored, so the column can be pasted straight out of a spreadsheet without being cleaned up first.

Sources

Every fixed value this page gives you comes from the provider’s own documentation. These pages change, so each one says the day it was last read here.

API example

Example request
curl -X POST https://163-123-236-68.sslip.io/api/tools/epp-status-list-explainer-paste \
  -H "Content-Type: application/json" \
  -d '{"codes":"example.com: clientTransferProhibited serverHold\nexample.net, ok"}'
Example response
{
  "tool": "epp-status-list-explainer-paste",
  "input": {
    "codes": "example.com: clientTransferProhibited serverHold\nexample.net, ok"
  },
  "result": {
    "verdict": {
      "tone": "danger",
      "headline": "3 codes explained across 2 domains",
      "summary": "At least one of these codes needs acting on rather than filing."
    },
    "findings": [
      {
        "id": "resolution-stopped",
        "severity": "fail",
        "title": "serverHold: the name stops resolving",
        "detail": "A hold is not a billing state — it takes the domain out of DNS, so mail and the website stop at the same moment. The registry itself has stopped publishing this domain in DNS, so it will not resolve no matter what the registrar or owner wants.",
        "fix": "Treat any domain carrying one of these as down now: whoever placed the hold — the registrar for a client hold, the registry for a server one — is the only party who can lift it."
      },
      {
        "id": "transfer-lock-present",
        "severity": "info",
        "title": "At least one transfer lock in this list",
        "detail": "clientTransferProhibited stops the domain moving to another registrar until the lock is lifted. The current registrar has locked the domain against transfer to a different registrar; only that registrar can remove the lock, usually on request."
      },
      {
        "id": "codes-explained",
        "severity": "pass",
        "title": "3 documented codes explained",
        "detail": "Read from 2 line(s) covering 2 domain(s), and grouped below by what each code actually does: transfer lock, hold: it will not resolve, nothing restricting it."
      }
    ],
    "parts": [
      {
        "kind": "facts",
        "title": "What was pasted",
        "rows": [
          [
            "Lines with codes on them",
            "2"
          ],
          [
            "Distinct codes",
            "3"
          ],
          [
            "Documented by an RFC",
            "3"
          ],
          [
            "Not documented",
            "0"
          ]
        ]
      },
      {
        "kind": "table",
        "title": "Every code, explained",
        "columns": [
          "Code",
          "What it does",
          "What it means"
        ],
        "rows": [
          [
            "clientTransferProhibited",
            "Transfer lock",
            "The current registrar has locked the domain against transfer to a different registrar; only that registrar can remove the lock, usually on request."
          ],
          [
            "serverHold",
            "Hold: it will not resolve",
            "The registry itself has stopped publishing this domain in DNS, so it will not resolve no matter what the registrar or owner wants."
          ],
          [
            "ok",
            "Nothing restricting it",
            "The domain resolves normally and nothing is restricting it; RDAP shows this as \"active\" on most registries, but some still answer \"ok\"."
          ]
        ],
        "mono": [
          0
        ],
        "proseColumns": [
          2
        ],
        "note": "One row per distinct code, however many lines it appeared on."
      },
      {
        "kind": "table",
        "title": "By domain, as pasted",
        "columns": [
          "Domain",
          "Codes on that line"
        ],
        "rows": [
          [
            "example.com",
            "clientTransferProhibited serverHold"
          ],
          [
            "example.net",
            "ok"
          ]
        ],
        "mono": [
          0,
          1
        ],
        "note": "Taken from the paste exactly as it arrived; no name here was looked up."
      }
    ],
    "limits": [
      "This is a dictionary, not a check: it explains the codes that were pasted and makes no lookup, so it cannot tell you whether a domain still carries any of them or whether the export was already stale when it was copied.",
      "A code no specification covers is reported as undocumented rather than guessed at. Registries do publish codes of their own outside RFC 5731 and RFC 3915, and only the registry that published one can say what it meant."
    ]
  }
}

Related tools

See a domain’s registrar, its dates and every status code explained, read from RDAP rather than old WHOIS.

Live DNS checkOpen tool

Paste up to 20 domains and get the registrar, expiry date, status and days left for every one.

Live DNS checkOpen tool

Company names and logos are trademarks of their owners, shown only to identify each service.