Arsenly
Tools
Free Tools
Pricing
Resources
Sign in Get started
← All tools

HTTP Request Converter

Encoders & Converters Free · No sign-up

Convert HTTP requests between 6 formats - Raw HTTP ↔ curl ↔ fetch() ↔ HAR ↔ JSON spec ↔ form/query string. Auto-detects the input.

Try it now No sign-up required. Runs entirely in your browser.
Convert HTTP requests between formats - paste a curl one-liner / fetch() call / Burp Repeater request / HAR entry / JSON spec on the left, pick a target format on the right, click Convert. Auto-detect tries to guess the input format. 100% client-side.
From To
Input
Output

What is HTTP Request Converter?

HTTP Request Converter is the missing translator between every format a bug-bounty / pentest workflow throws around. Paste a curl one-liner from a write-up - get the raw HTTP request you can drop in Burp Repeater. Copy a fetch() call out of Chrome DevTools - get curl. Export a HAR from the Network panel - get a single-request curl or JSON spec. Capture a request in Burp - get fetch() to drop into a XSS PoC or browser console.

Six input formats, six output formats, 30 useful conversions (excluding identity). Auto-detect spots the input format from the first few characters (curl / fetch( / METHOD path HTTP/1.x / valid JSON / form-string), so most of the time you just paste and click. Every conversion runs through a shared normalised Request object - method, url, headers (order & duplicates preserved), body - so semantics survive every translation.

A real shell-aware tokenizer parses curl: handles single quotes, double quotes with backslash escapes, multi-line continuations (\), and all the common flags (-X / -H / -d / --data / --data-raw / --data-urlencode / --form / -u / -A / -e / -b / --url). 100% client-side - nothing leaves your browser.

Conversions supported

  • Raw HTTP ↔ curl - the canonical Burp-Repeater ↔ terminal round-trip. Round-trip-stable: curl → raw → curl reproduces the original.
  • Raw HTTP ↔ fetch() - for dropping a captured request into a browser console or a XSS PoC. Body is auto-wrapped with JSON.stringify(...) when Content-Type is application/json.
  • curl ↔ fetch() - convert a write-up curl directly into a fetch call (or the reverse, for a fetch from DevTools).
  • HAR entry → everything - paste a HAR JSON exported from Chrome / Firefox DevTools (Network panel → right-click → Save as HAR), and the tool extracts the first request as curl / raw / fetch / JSON.
  • JSON body ↔ query / form string - flattens nested objects with bracket-indexing (roles[0]=admin&roles[1]=editor). Useful for Content-Type confusion testing: take a JSON body, post the same data as form-encoded, see if the server cares.
  • JSON spec output - the structured, normalised form {method, url, headers, body}. Useful for storing as fixtures, diffing requests, or sending to an LLM.
  • Auto-detect - recognises curl / fetch / raw HTTP / HAR / JSON / form-string from the first few characters. Hint line confirms what it detected.
  • One-click load examples - pick a "From" format, click "Load example" to see what the parser accepts.
  • Pivots - Continue → row to Security Header Analyzer, CORS Tester, Payload Generator, Command Builder, PoC Generator.

Where it fits in your workflow

  • Copy a curl command from a HackerOne disclosure or a writeup → paste → pick "Raw HTTP" → copy into Burp Repeater. No more hand-editing.
  • Drop a fetch() call from a JS bundle (XSS reflected from view-source) → get a curl one-liner to verify outside the browser.
  • Right-click in Chrome DevTools Network panel → Save as HAR → paste here → get individual requests in any format.
  • Take a captured JSON POST → convert to form-urlencoded → send both versions to test for content-type confusion bugs (some servers accept either format with different validation paths).
  • Convert a captured request to fetch() + paste into the browser console of an XSS PoC for credentialed cross-origin testing.
Want more?

This one is free in your browser. Sign up for server-side recon, scan history, and projects.

Create free account Sign in

At a glance

CategoryEncoders & Converters
RunsIn your browser
Token cost Free - no tokens
Access No login needed
Status● Live

Frequently asked questions

How does the curl parser handle complex commands?

A shell-aware tokenizer (not regex) handles single quotes (literal), double quotes (with backslash escapes for \n, \r, \t, \\, \", \$, \`), multi-line continuations with \, and all common curl flags. -u user:pass is converted into a properly base64-encoded Authorization: Basic header. Unknown flags are skipped safely.

What about multipart / file uploads?

Multipart (--form / -F) is partially supported - the form fields are captured but the multipart-encoded body is approximated as k=v&k=v. For full multipart fidelity (boundaries, file contents), use Burp or the original curl directly.

Round-trip safety?

Yes for the common loop curl → raw → curl. Tested: identical reproduction of method, URL, headers and body. The fetch → curl direction also round-trips cleanly. Some edge cases (header capitalisation case, header-order with duplicates) are preserved but the exact byte-for-byte original is not always guaranteed.

Is anything sent to the server?

No. 100% client-side. The converter is a static page that runs entirely in your browser. No network calls.

Other free tools you might like

Explore more tools →