HTTP Request Builder
Compose a well-formed raw HTTP/1.1 request from a method, URL, headers, and body. Nothing is sent — copy the wire text for netcat, openssl s_client, or learning. Runs in your browser.
About this tool
HTTP Request Builder composes a well-formed raw HTTP/1.1 request message from a method, URL, headers, and body — the exact bytes you'd put on the wire. Nothing is sent; you get the text to copy.
- The request-target (path + query) and the
Hostheader are derived from the URL. - Headers go one
Name: Valueper line; if you don't includeHost, it's added for you. - Provide a body and a
Content-Lengthheader is added automatically. - Lines are CRLF-terminated per the HTTP spec.
Everything runs locally in your browser via WebAssembly — nothing is uploaded and no request is made.
Handy for
- Pasting into
nc/openssl s_clientto send a request by hand. - Teaching or learning how HTTP requests are framed.
- Building a request fixture for tests or documentation.
To actually send a request and see the response, use the HTTP Request tool instead.
FAQ
Does this actually fire the request at the server?
No — it only assembles the raw HTTP/1.1 message text; no network call is ever
made. Copy the output into nc, openssl s_client, or a test fixture to use
it. If you want to send a request and inspect the response, that's the
separate HTTP Request tool.
What if I add my own Host or Content-Length header?
Yours wins. The tool only injects Host (from the URL) when your header lines
don't already include one, and only adds Content-Length when you provided a
body without one — it never emits a duplicate or overrides your value.
How is Content-Length computed for the body?
It's the body's size in bytes (UTF-8), not characters — so {"a":1} yields
Content-Length: 7, and multi-byte characters count as more than one. It's
added only when the body field is non-empty.
When does the Host header include a port?
Only when the URL carries an explicit non-default port — http://localhost:8080/
produces Host: localhost:8080, while https://example.com/ gives just
Host: example.com because the scheme's default port is implied.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool http-request-builder "https://api.example.com/v1/items?limit=10"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/http-request-builder/?url=https%3A%2F%2Fapi.example.com%2Fv1%2Fitems%3Flimit%3D10&method=GET&headers=Accept%3A%20application%2Fjson%0AAuthorization%3A%20Bearer%20TOKEN&body=%7B%22name%22%3A%20%22widget%22%7DMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
