Skip to main content

HTTP Request Parser

Paste a raw HTTP request and get the method, target, version, headers and body split out — with the query string decoded into parameters, the body pretty-printed by Content-Type, and a ready-to-run cURL command to replay it. Runs entirely in your browser.

Input

Options

Decoding re-indents JSON bodies and expands form-urlencoded bodies into one field per line.

A raw request carries no scheme, so the replay URL needs one. Ignored when the target is already absolute.

Output

Request
FieldValue
No data yet
Headers
HeaderValue
No data yet
Query parameters
ParameterValue
No data yet

Percent- and plus-decoded. A key that appears more than once keeps one row per value.

Body
 
Equivalent cURL command
 

Host and Content-Length are left out on purpose — curl sets both itself.

JSON
 
Was this helpful?

Guides

Paste a raw HTTP request — the kind you copy out of a proxy, a packet capture, an access log or your browser's "Copy as raw" — and get it broken into its parts: method, path, query parameters, HTTP version, headers and body. You also get an equivalent cURL command, so a captured request can be replayed from a terminal in one paste.

How to use it

  1. Paste the raw request into the box. It should start with the request line (GET /path HTTP/1.1), followed by one header per line, then a blank line, then the body if there is one.
  2. The parse runs as you type — there is no button and nothing is uploaded.
  3. Read the Request table for the top-level facts, Headers and Query parameters for the details, and copy the cURL command to replay the request.

Both \r\n and \n line endings work, and a header that wraps onto a continuation line (one starting with a space or tab) is joined back onto the header above it.

Settings

BodyDecode by Content-Type re-indents a JSON body and expands an application/x-www-form-urlencoded body into one field = value per line, with percent- and plus-escapes resolved. Switch to Leave exactly as pasted when you need the bytes untouched, for example to count them or to check whitespace.

Scheme for the cURL URL — a raw request never says whether it travelled over TLS, so the replay URL needs a scheme picked for it. It defaults to https and is ignored when the request target is already an absolute URL (the absolute form proxies use).

What the cURL command includes

Every header is passed through as -H, except Host and Content-Length: curl derives the first from the URL and computes the second from the body, so echoing them back would produce a duplicate or a wrong value. The body, when present, is sent with --data-raw so curl transmits it verbatim rather than re-encoding it.

Does it handle repeated headers and query keys?

Yes. Set-Cookie: a and Set-Cookie: b stay two separate values, and ?tag=a&tag=b produces two rows rather than one — which is usually the whole reason you were reading the request by hand.

What about chunked, multipart or compressed bodies?

They are shown as pasted rather than decoded. Un-chunking or decompressing needs the real byte stream, and a pasted transcript has already lost it. Parse the request to find the boundary or encoding, then handle the payload separately.

Is anything sent to a server?

No. The parsing runs entirely in your browser, which matters here because a captured request routinely carries an Authorization header, session cookies or credentials in the body. Nothing is uploaded, logged or stored.

Related tools

To go the other way and analyze a response — security headers, caching, CORS — use the HTTP Header Analyzer. To break just a URL into its scheme, host, path and query, use the URL Parser, and to look up what a status code in a response means, use HTTP Status Codes.

httprequestparsercurlheadersweb-development

Love the tools? Lose the ads.

One payment clears every ad from your account, for good. No subscription, no tracking.