Skip to main content

gRPC Status Code Decoder

Enter a gRPC status code (0–16) or name to see the full description, common causes, retry advice, and HTTP equivalent. All 17 canonical gRPC status codes are shown below.

✓ All 17 status codes ✓ Retry guidance ✓ HTTP mapping
Code Name Description

Frequently Asked Questions

What are gRPC status codes?▼

gRPC defines 17 canonical status codes (0–16) that every RPC call returns. Unlike HTTP which has ~70 status codes, gRPC's small set maps clearly to error categories: success, cancellation, invalid input, resource not found, authentication failures, and more. Every gRPC response includes a status code and an optional status message.

What is the difference between NOT_FOUND (5) and UNIMPLEMENTED (12)?▼

NOT_FOUND (5) means the requested resource or entity does not exist — for example, a user ID that was deleted or never created. UNIMPLEMENTED (12) means the method or operation itself is not supported on this server — for example, calling a beta endpoint on a stable server, or calling an RPC that was removed.

Should I retry on UNAVAILABLE (14)?▼

Yes, UNAVAILABLE is the primary retryable error code. It signals a transient server-side condition like an overloaded backend or a temporary network interruption. Use exponential backoff with jitter. The other commonly retryable code is RESOURCE_EXHAUSTED (8) when caused by rate limiting rather than quota exhaustion.

What is the difference between DEADLINE_EXCEEDED (4) and CANCELLED (1)?▼

CANCELLED (1) means the client explicitly cancelled the RPC before it completed — for example, the user navigated away. DEADLINE_EXCEEDED (4) means the deadline set by the client (or server) elapsed before the RPC finished. Both result in termination, but DEADLINE_EXCEEDED indicates the operation was simply too slow while CANCELLED indicates intentional termination.

When should I use INTERNAL (13) vs FAILED_PRECONDITION (9)?▼

INTERNAL (13) is for unexpected, unrecoverable server errors — bugs, invariant violations, or cases where the server is in a state it should never be in. FAILED_PRECONDITION (9) is for expected business-logic errors where the system is in the wrong state for this operation — for example, calling Delete on a non-empty directory, or trying to resume a completed workflow.

How do gRPC status codes map to HTTP status codes?▼

Common mappings: OK→200, CANCELLED→499, INVALID_ARGUMENT→400, NOT_FOUND→404, ALREADY_EXISTS→409, PERMISSION_DENIED→403, UNAUTHENTICATED→401, RESOURCE_EXHAUSTED→429, INTERNAL→500, UNIMPLEMENTED→501, UNAVAILABLE→503, DEADLINE_EXCEEDED→504. These mappings are used by gRPC-HTTP/1.1 transcoding proxies like Envoy and Cloud Endpoints.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →