Paste a DevTools cURL request (up to 32,000 characters).
Review headers and redacted placeholders before running the code.
Paste a DevTools cURL request (up to 32,000 characters).
Review headers and redacted placeholders before running the code.
cURL conversion guide
Paste a cURL command copied from browser DevTools or API documentation. Select JavaScript Fetch, Go net/http or Python Requests, inspect masked secrets and copy code for your own application. Parsing takes place entirely in your browser; this page never executes a Shell command or sends an HTTP request. This tool is free to use. No account or payment is required.
Last updated
The parser supports quoted URLs, -X / --request, -H / --header, -d / --data, --data-raw and basic request-body handling. A body sets POST unless you explicitly select another method; explicit queries are retained in the URL.
Single quotes, double quotes, line continuations and simple backslash escapes are interpreted as text. Shell expansion, command substitution, redirects, pipes, file references and unsupported switches are rejected instead of evaluated or silently omitted.
Masking is enabled by default for common Authorization, Cookie and API key headers, URL query keys, and recognizable JSON/form body fields. Replace REDACTED placeholders only in a secure local development environment.
Masking cannot infer every possible secret or custom field name; always inspect generated code before copying, committing or sharing. Input and output are kept in component memory and excluded from anonymous Analytics events.
The generated examples use a timeout for Go and Python. Browser Fetch cannot set restricted headers and may require server-side CORS support. HTTP clients can vary in redirect, compression and response-decoding behavior.
This tool does not run generated code, validate remote endpoints, import files or make live requests. Use it as a starting point rather than a full interpreter for arbitrary cURL command lines.
A JSON POST command becomes a client request with masked Authorization and token query values.
curl 'https://api.example.com/v1/users?api_key=test' -X POST -H 'Content-Type: application/json' -H 'Authorization: Bearer test' --data-raw '{"name":"Ada"}'async function main() {
const response = await fetch("https://api.example.com/v1/users?api_key=%3CREDACTED%3E", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "<REDACTED>",
},
body: "{"name":"Ada"}",
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.text());
}
main().catch(console.error);Common questions
No. It only parses the pasted text and generates code locally. It never executes a Shell command or sends a request.
Yes. This first release supports all three. Each uses its language's standard HTTP client or widely used Python Requests package.
Common secret field names are masked by default, but masking is not exhaustive. Review headers, URL and body before sharing; you can disable masking deliberately.
No. Unsupported switches, file references, shell substitutions and multi-command input produce errors rather than incomplete or unsafe conversions.
Browsers prohibit scripts from setting restricted headers such as Cookie. Use a server-side Go/Python client or remove that header.
Debugging a specific URL Component issue? Browse URL Component troubleshooting.