Three formats at once
Raw HTTP, fetch() and curl update together as you edit the method, URL, headers or body.
Pick a method, add a URL, headers and a body, and get back the exact same request written three ways: raw HTTP, a fetch() snippet and a curl command.
Nothing here is sent over the network — only text is generated, locally, in your browser.
Raw HTTP, fetch() and curl update together as you edit the method, URL, headers or body.
Common header names like Content-Type and Authorization autocomplete as you type.
This is a pure text generator — no request ever leaves your browser.
Build the shape of a request once, then copy it in whichever format your next tool needs.
A raw HTTP request, a fetch() call and a curl command all describe the exact same thing on the wire, but each has its own syntax for headers, methods and bodies. Copying between them by hand is a common source of typos — a missing colon in a header, a forgotten -H flag, or a body that never gets stringified. This tool keeps one source of truth and regenerates all three representations together.
The literal bytes a client sends: a request line, headers, a blank line, then the body. Useful for documentation or debugging with netcat.
The standard browser and Node.js API for making requests from JavaScript, using a plain headers object and a body string.
The universal command-line HTTP client. Every -H flag maps to one header, and --data-raw carries the body untouched.
GET, HEAD and DELETE requests are conventionally bodyless, so the field hides itself to match real-world server expectations.
Answers about how the generated output works.
No. It only generates text: the raw HTTP request, a fetch() snippet and a curl command. Nothing is sent over the network, so you can safely build requests containing real tokens or secrets.
GET, HEAD and DELETE conventionally do not carry a request body, so the body textarea is hidden for those methods to match how most servers and HTTP libraries expect requests to look. Switch to POST, PUT or PATCH to add one.
The request line (method, path and HTTP/1.1), every header you added, a Host header derived from your URL, a blank line, and then your body if the method supports one — the same structure a server would actually receive on the wire.
Yes. The header name field suggests common headers like Content-Type and Authorization through a datalist, but you can type any custom header name and value.
No. Everything is generated locally in your browser as you type. Nothing is stored or transmitted.