Ethereum error message decoder

View as MarkdownOpen in ClaudeOpen in ChatGPT

Paste the error your code, wallet or node printed, noise and all: a stack trace, a JSON-RPC response, viem's full message. The decoder finds which error it is, where the transaction stopped and the fix. What you paste stays in this page.

Matching runs in your browser. Nothing you paste is sent or stored.

What does a decoded error look like?

This is viem's error from the run on the nonce too low page: an account sent a nonce it had already used, on a local Anvil chain with viem 2.57.2. Pasted as is, it decodes to:

TransactionExecutionError: Nonce provided for the transaction is lower than the current nonce of the account.
Try increasing the nonce or find the latest nonce with `getTransactionCount`.

Request Arguments:
  from:   0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
  to:     0x70997970C51812dc3A010C7d01b50e0d17dc79C8
  value:  0.001 ETH
  nonce:  0

Details: nonce too low
Version: viem@2.57.2

How does the decoder match an error?

  1. It lowercases the text, reads the strings inside any JSON, and drops hashes, addresses, numbers and punctuation.
  2. It looks for each page's messages in what is left: the node's wording, viem's message and viem's error class, such as NonceTooLowError.
  3. The page whose longest message is found wins. A short phrase you type, such as fee cap, matches part of a message.

Which Ethereum errors can it decode?

FAQ

Does the error text leave my browser?

No. The matching runs in this page, and the text is not sent anywhere or stored. The site’s cookie-free analytics count only whether a page matched and which one, never the text.

What do Ethereum JSON-RPC error codes like -32000 and -32003 mean?

They name a kind of failure, not its cause. EIP-1474 lists -32000 as "Invalid input" (missing or invalid parameters) and -32003 as "Transaction rejected" (transaction creation failed), the same words viem prints for a refusal it has no name for. The message next to the code says which rule failed, so paste the message too.

Which error messages can it read?

The messages listed on each error page: the node’s wording (Anvil, and geth where the page quotes its source), viem’s own message and viem’s error class, such as NonceTooLowError. Text that wraps those words still matches, because the decoder looks for them anywhere in what you paste, including inside JSON.

What if my error is not found?

Then there is no page for it yet. Try the part with the node’s own words, such as the line after "Details:" in a viem error. If that does not match either, open an idea on GitHub with the message and we will add a page.

Type to search the docs, Learn topics and the blog.