cURL Converter
Runs in your browserPaste a cURL command and read it back as code. Sixteen targets, including Spring's WebClient and RestClient, and every token in it masked before it reaches your clipboard.
Your cURL command is processed locally in your browser and is not sent to our servers.
Detected request
Generated code
How this one works
The command is split the way a shell would split it: single quotes literal, double quotes with escapes, and a backslash before a newline joining the lines. That is why a multi-line paste out of a terminal or Postman’s “Copy as cURL” works without editing. The flags are then read into one request: method, URL, query parameters, headers, cookies, credentials and body.
All sixteen targets read that one request, so they cannot disagree about what your command said. Each writes the code its ecosystem would actually write: Spring gets WebClient and RestClient chains with a real MediaType, Python gets json= and params= rather than a hand-built string, Go gets its import block and error handling, and a JSON body comes back as an editable object rather than a wall of escaped quotes.
An option that can’t be expressed in the target (a proxy, a client certificate, a timeout) is listed above the code rather than dropped in silence.
Questions
Is my cURL command uploaded anywhere?
No. The parser and all sixteen generators are JavaScript running in this page, so the command never leaves the tab. There is no server to receive it. Watch your browser’s network panel while you type, or disconnect and keep converting.
Why are my tokens replaced with YOUR_TOKEN?
Because the commands people convert usually come from a browser’s network tab, which means they carry a live session token, and the generated code usually ends up in a ticket, a pull request or a chat. Masking is on by default for that reason. “Show real values” under the code turns it off, and the scheme is kept either way so you can still see it was a Bearer token.
Which cURL options are supported?
The ones that change the request: -X, -H, -d and its variants, --data-urlencode, --json, -F for multipart, -G, -u, -b, -A, -e, --url, -L, -k, -I and -T. Options that only change how curl behaves, such as -s or --compressed, are ignored. Anything else is named in a warning above the code, and the rest of the command is still converted.
Why does the Spring code look different from the Java code?
Because it should. Wrapping java.net.http in a Spring class name produces something no Spring codebase would contain. WebClient and RestClient get their own fluent chains, contentType(MediaType.APPLICATION_JSON) instead of a raw header, and setBasicAuth for -u credentials.
Does it handle a command copied straight out of my terminal?
Yes. Multi-line commands with trailing backslashes, a leading $ prompt, values glued to their flag such as -XPOST, and --header=value all parse. If a quote is left unclosed, the error says which character it opened at rather than just calling the command invalid.
Does the generated code follow redirects like curl?
Only if your command said so. curl does not follow redirects unless you pass -L, while most HTTP clients do by default, so the generated code is left on its own library’s default unless -L was in the command.