# EPP Status Codes

Explain domain registration status codes (EPP or RDAP spelling, any case, or lines pasted from a WHOIS record). For each code: a plain-English meaning, who sets it (registrar or registry), a severity, what the owner should do, what a buyer should know, how to remove it, and where it sits in the domain lifecycle. A set of codes also gets an interpretation, for example a full registrar lock or a domain on hold. Unrecognised values are reported as such, not guessed. Pure reference data: no network access, instant.

**Not for:** Looking up the statuses of a particular domain (use whois_lookup, which includes these explanations).

- Tool id: `epp-status`
- Category: domain
- Execution: pure
- MCP tool `epp_status` at https://lookupowl.com/mcp
- REST `GET https://lookupowl.com/api/v1/tools/epp-status` (or POST a JSON body)
- OpenAPI: https://lookupowl.com/api/openapi.json

## Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `codes` | string[] | yes |  | Status codes in EPP (clientTransferProhibited) or RDAP ("client transfer prohibited") spelling, any case. Lines copied from a WHOIS record work too, with or without the "Domain Status:" label and the icann.org link. Commas, semicolons and line breaks separate codes. max 20 items |

## Output

Results are wrapped in an envelope: `tool`, `version`, `requestId`, `data`, `summary`, `meta` (cache status, timing), `permalink`. `data` has these fields:

| Field | Type | Description |
|---|---|---|
| `results` | object[] |  |
| `interpretation` | string[] | What the set of statuses means together, e.g. a full registrar lock or a domain on hold. Empty when there is nothing to add. |
| `unknown` | integer | How many values were not recognised. min -9007199254740991, max 9007199254740991 |
| `truncated` | boolean | More than 20 distinct values were given; the rest were ignored. |

## Examples

### clientTransferProhibited

```json
{"codes":["clientTransferProhibited"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/epp-status?codes=clientTransferProhibited'
```

Web page: https://lookupowl.com/epp-status-codes?q=clientTransferProhibited

### redemptionPeriod and pendingDelete

```json
{"codes":["redemptionPeriod","pendingDelete"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/epp-status?codes=redemptionPeriod&codes=pendingDelete'
```

Web page: https://lookupowl.com/epp-status-codes?q=redemptionPeriod&q=pendingDelete

### RDAP spelling: client hold

```json
{"codes":["client hold"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/epp-status?codes=client+hold'
```

Web page: https://lookupowl.com/epp-status-codes?q=client+hold

### The three registrar locks together

```json
{"codes":["clientDeleteProhibited","clientTransferProhibited","clientUpdateProhibited"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/epp-status?codes=clientDeleteProhibited&codes=clientTransferProhibited&codes=clientUpdateProhibited'
```

Web page: https://lookupowl.com/epp-status-codes?q=clientDeleteProhibited&q=clientTransferProhibited&q=clientUpdateProhibited

## Web pages

- https://lookupowl.com/epp-status-codes

## Limits and caching

- Cost: 1 unit for a live lookup, 1 unit for a cached one. Budgets are per network and published in the `RateLimit` response headers.
- Cache: results are kept for 86400 s.
- Timeout: 1 s.

## Related tools

- [WHOIS Lookup](https://lookupowl.com/tools/whois-lookup.md): Registrar, creation and expiry dates, status codes, nameservers and DNSSEC for any domain, from RDAP with WHOIS fallback.
- [Domain Availability Checker](https://lookupowl.com/tools/domain-availability.md): Is a domain name taken? Checks one name under up to ten extensions, each answered by its registry, with honest caveats.
- [DNS Lookup](https://lookupowl.com/tools/dns-lookup.md): Look up A, AAAA, MX, NS, TXT, CNAME, SOA, CAA, DS and DNSKEY records from a public resolver or the authoritative nameserver.
- [Punycode / IDN Converter](https://lookupowl.com/tools/punycode-converter.md): Convert internationalised domain names between Unicode and Punycode, with validation and lookalike warnings.

## Guide: EPP status codes

Paste a status code from a WHOIS record and we'll explain it in plain English.

### What domain status codes are

Every registered domain carries one or more status codes. They say what may happen to the domain and where it is in its life. The codes come from the Extensible Provisioning Protocol (EPP), the language registrars and registries use to talk to each other. A registrar is the company you buy a domain from. A registry runs a whole extension, such as `.com`.

RDAP, the modern version of WHOIS, writes statuses in lowercase words, like `client transfer prohibited`. Classic WHOIS writes them in camelCase, like `clientTransferProhibited`. They mean the same thing, and this tool takes either.

Most statuses are harmless. A lock that stops someone moving your domain away is protection. A hold that takes the domain out of DNS is why a website suddenly vanished. The tool tells them apart.

### How to use it

1. **Copy the status lines**: From a [WHOIS lookup](https://lookupowl.com/whois) or any record, copy one status or many. The `Domain Status:` label and the `https://icann.org/epp` link that follow them can come along.
2. **Paste them in**: Either spelling works, in any capitalisation. Put one per line or separate them with commas. You can explain up to 20 different codes at a time.
3. **Read the explanation**: For each code you get a short meaning, whether the registrar or the registry sets it, and what to do if you own the domain or want to buy it. Paste several and you also get a short reading of what they mean together.

> **Ask an AI assistant** Connect the LookupOwl MCP server, paste the status lines from a WHOIS record into your chat and ask: “What do clientHold and redemptionPeriod mean for my domain?” The assistant calls `epp_status` and gets the meaning of each code, who set it, what the owner should do and a reading of the codes together. It is pure reference data that never contacts a registry, so the answer is instant.

### The codes you will meet most

| Code | Set by | What it means |
|---|---|---|
| `ok` (RDAP: `active`) | Registry | The normal state. Nothing restricts the domain and nothing is pending. |
| `inactive` | Registry | The domain has no nameservers, so it is left out of DNS and does not resolve. |
| `clientTransferProhibited` | Registrar | A transfer lock. It stops anyone moving the domain to another registrar. Ask your registrar to lift it before you move. |
| `clientUpdateProhibited` | Registrar | Changes to nameservers and contacts are blocked until the lock is removed. |
| `clientDeleteProhibited` | Registrar | The domain can't be deleted, which protects against accidents. |
| `serverTransferProhibited`, `serverUpdateProhibited`, `serverDeleteProhibited` | Registry | The same restrictions, set by the registry. Used for paid registry locks, disputes and legal action. Only the registry can lift them. |
| `clientHold` | Registrar | The registrar took the domain out of DNS. Common causes are an unpaid renewal, an unverified contact email or a complaint. |
| `serverHold` | Registry | The registry took it out of DNS, for example after a court order, an abuse takedown or a policy breach. |
| `addPeriod` | Registry | The first days after registration, usually 5, when the registrar can still cancel for a refund. |
| `autoRenewPeriod` | Registry | The expiry date passed and the registry renewed the domain automatically. The registrar can still reverse it for up to 45 days. |
| `redemptionPeriod` | Registry | The domain was deleted. The owner can still restore it for a fee for about 30 days, and it does not resolve meanwhile. |
| `pendingRestore` | Registry | The owner asked to restore the domain and the registry is waiting for the registrar to confirm. |
| `pendingDelete` | Registry | The last step before release, about 5 days. If `redemptionPeriod` isn't listed beside it, the domain can no longer be restored. |
| `pendingTransfer` | Registry | A transfer was requested. It completes when the current registrar approves it, or by itself after about 5 days at generic extensions. |
| `pendingCreate`, `pendingRenew`, `pendingUpdate` | Registry | An operation was accepted and is still being processed. |

Rarer codes follow the same pattern. `clientRenewProhibited` and `serverRenewProhibited`, for example, block renewal. Paste any code to see its explanation.

### Common combinations and what to do

- **Transfer, update and delete prohibited together.** The usual registrar lock on a healthy domain. Leave it on.
- **`clientHold` soon after registering.** Most often the owner's contact email was never verified. ICANN requires registrars to verify it and to suspend a domain whose contact stays unverified, usually after 15 days. Click the link in the verification email, then ask the registrar to lift the hold.
- **`serverHold`.** Only the registry can lift it, and it usually follows a complaint or an order. Contact your registrar's support and ask for the reason.
- **`redemptionPeriod`.** Ask your registrar to restore the domain right away. The restore fee is usually much higher than a renewal.
- **`pendingDelete`.** The owner can't act unless `redemptionPeriod` is listed too. If you want the name, ask a registrar about a backorder and check back with the [availability checker](https://lookupowl.com/domain-availability-checker).
- **Moving a domain.** Ask your registrar to remove `clientTransferProhibited`, get the transfer code and start the transfer at the new registrar. Registrars often refuse transfers for 60 days after registration or a previous transfer.

### How the tool works

This is a pure reference lookup. It doesn't contact a registry or look up any domain. It tidies what you paste (case, spaces, hyphens, labels and links), matches each value to its EPP or RDAP spelling and returns the stored explanation, how serious it is and what to do. A value it doesn't recognise is reported as not standard instead of being guessed at, because some registries add values of their own.

The same explanations appear next to every status in the [WHOIS lookup](https://lookupowl.com/whois) results.

### Standards behind the codes

- **RFC 5731**: the EPP domain name mapping that defines the status values.
- **RFC 3915**: the grace-period mapping for add, renew, transfer and redemption.
- **RFC 8056**: how EPP status values map to RDAP's lowercase spellings.
- **ICANN's EPP status code guide** at icann.org/epp: the registry-side description most registrars link to.

### Frequently asked questions

**Is clientTransferProhibited bad?**

No. It means the registrar has locked the domain against transfers, which is the safe default and one of the most common statuses there is. It doesn't stop the website or email working. Ask your registrar to lift it only when you intend to move the domain to another registrar.

**What is the difference between client and server statuses?**

“Client” statuses are set by the registrar and can usually be changed by you through it. “Server” statuses are set by the registry, so only the registry can change them, and your registrar can only ask on your behalf.

**My site is down and the status says clientHold. What now?**

Ask your registrar why it was set, because only the registrar can lift a `clientHold`. Its emails to the address on file usually say whether it is a renewal, an invoice or a contact check. Fix that, ask for the hold to be removed and allow time for DNS caches to catch up, which can take up to the record's TTL.

**What is the difference between redemptionPeriod and pendingDelete?**

In redemptionPeriod, which lasts about 30 days, the owner can still restore the domain for a fee. pendingDelete is the final stretch of about 5 days. When it appears without redemptionPeriod, the domain can no longer be restored. Some registries list both through the whole stage.

**Is ok the same as active?**

Yes. EPP calls the normal state `ok` and RDAP calls it `active`. RFC 8056 defines the two as the same status. It normally appears alone, because the registry removes it as soon as a lock or a pending operation is added.

**Can a domain have several statuses at once?**

Yes, and it usually does. A healthy domain often shows the three registrar locks together. An expired one may show `autoRenewPeriod` next to `clientHold`. The tool explains each code and, when you paste several, adds a short reading of what they mean as a set.

**What if my status isn't a standard one?**

Some registries add values of their own. The tool then says the code isn't standard and leaves its meaning to the registry that set it. Ask your registrar, or read that registry's documentation. A few well-known registry-specific values are explained and marked as such.
