Protocols & Binary Serialization

Redis RESP parserSee the wire, not a guessed value

Paste escaped RESP text or Hex bytes to inspect complete frames without contacting a Redis server.

Redis RESP parser

RESP input

Parsed result

Paste RESP data or load an example.

Parsed locally; no Redis connection or upload.

Options

Paste RESP data or load an example.

When a Redis client log shows $5 or a reply changes shape after HELLO 3, the raw frame matters more than the value printed by the client. A Redis RESP parser lets you trace each prefix and byte span before deciding whether the command or capture is at fault.

Why use this Redis RESP parser

Read static RESP bytes as a structured record while keeping their boundaries visible.

Follow every streamed chunk

The Redis RESP parser joins complete RESP3 chunks only after checking each declared byte count and its terminator. The tree still marks the streamed source and the number of chunks, so a missing final segment is never shown as a finished value.

Separate byte chunks flowing into one typed value, with each chunk boundary still visible

Export without erasing wire types

A binary bulk keeps Hex, a map keeps ordered key/value entries, and an attribute stays attached to the following value. The typed JSON makes these differences explicit where ordinary JSON strings or objects would hide them.

A binary value, non-string map key and attribute branching into distinct JSON fields

Trace bytes before trusting a decoded value

01

Choose the capture representation

Escaped text is the default: literal backslash-r and backslash-n become CRLF bytes. Switch to Hex when a bulk contains non-text bytes; bare LF is never silently repaired.

  • The parser counts UTF-8 bytes, not visible characters.
02

Set the version only when known

Auto accepts shared RESP2/RESP3 types and flags RESP3-only prefixes. Selecting RESP2 rejects those prefixes; a shared type alone cannot reveal the negotiated connection version.

  • Auto runs after 350 ms; switch it off for manual parsing with Ctrl/Cmd + Enter.
03

Inspect the frame and export

Read the byte range and declared length on each node. A top-level array with text arguments gets a command-shape summary, while the JSON view keeps type tags for binary and map values.

  • Editing the input or an option disables export until a new parse succeeds.

Wire details made inspectable

RESP2 and RESP3 type tree

The RESP protocol decoder distinguishes null bulk from empty bulk, arrays from maps, and a server error value from a parser failure.

Strict byte-length checks

A declared bulk length is compared with actual UTF-8 bytes and the final CRLF; the first mismatch reports a byte offset and editor line.

Pipeline and command shape

Several top-level replies or command frames stay in order. A request-shaped array shows the command name and argument previews without claiming that Redis would accept it.

Typed JSON mapping

Redis RESP decoder output retains Hex for binary data, decimal text for large numbers, ordered map entries and RESP3 attributes.

What the wire can and cannot prove

No server connection or execution
This is a local parser for pasted frames. It never sends a command, checks a key, or simulates database state; a displayed SET name is only a shape hint.
No inferred negotiation
The redis resp2 vs resp3 distinction is a minimum-type check. A frame containing only common types cannot prove which protocol the connection selected.
No lossy JSON object conversion
Map keys may be non-string or repeated. They remain ordered entries instead of becoming object properties, and invalid UTF-8 bulk data remains Hex.
Complete, bounded input only
The redis resp format requires exact CRLF and byte counts. This page accepts at most 1 MiB, 1,000 frames, 10,000 nodes and 64 levels; incomplete streamed chunks fail rather than being guessed.

Redis RESP parser questions

How can I inspect a Redis command in RESP representation?

Paste its escaped wire text or Hex bytes. A top-level array of strings shows a command name and argument count; this checks the frame structure, not server-side command semantics.

What is the redis resp format for a bulk string?

It is a dollar sign, the byte length, CRLF, exactly that many data bytes and another CRLF. A three-byte UTF-8 character therefore needs length 3 even though it looks like one character.

How does RESP2 differ from RESP3 in this parser?

RESP3 adds null, boolean, double, big number, map, set, attribute, push and other types. Auto reports only the minimum required version; a shared type cannot identify the connection mode.

Why can redis-benchmark use a command without a bulk-string array?

Redis can accept a legacy inline command form in limited contexts. This Redis RESP parser reads framed RESP values, so inline command text is outside its input contract.

What do $-1 and $0 mean in a Redis reply?

$-1 is a null bulk, while $0 followed by CRLF CRLF is an empty bulk. The tree and typed JSON keep them separate.

Still have a wire-format question?

Use the Redis RESP parser on a captured frame

Paste the captured bytes and check the first failing offset before changing a client or server. The Redis RESP parser exports the typed result only after a complete successful read.

Processing happens locally in your browser.