# cURL converter capability matrix

18 code targets, 12 curl features: what every generated client handles natively, computed from the converter's own handling table.

## Key findings

1. Toolpaper's converter emits code for 18 targets across 12 languages, and every conversion runs client-side in the browser.
   [Link to this finding](https://toolpaper.manavdev.site/research/curl-capability-matrix#f-coverage)

2. requests (Python) handles the most curl features natively: 9 of 12.
   [Link to this finding](https://toolpaper.manavdev.site/research/curl-capability-matrix#f-most-capable)

3. All 18 targets handle head requests and timeouts.
   [Link to this finding](https://toolpaper.manavdev.site/research/curl-capability-matrix#f-universal)

4. HTTP/2, HTTP version selection, Retries, Cookie files, Cookie jars are handled by at most two targets; elsewhere the converter warns instead of emitting partial code.
   [Link to this finding](https://toolpaper.manavdev.site/research/curl-capability-matrix#f-rare)

## Matrix

| Feature | curl flags | fetch (browser/Node) | Node fetch (18+) | axios | ky | requests | httpx | aiohttp | net/http | ext-curl | Guzzle | net/http | reqwest | OkHttp (Java) | OkHttp (Kotlin) | HttpClient (.NET) | Invoke-RestMethod | URLSession | HTTPie |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| HEAD requests | -I, --head | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| Timeouts | --max-time, --connect-timeout | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| Follow redirects | -L, --location | yes | yes | yes | yes | yes | yes | warns | yes | yes | yes | warns | yes | yes | yes | yes | yes | yes | yes |
| Fail on HTTP errors | -f, --fail | yes | yes | yes | yes | yes | yes | warns | warns | yes | yes | warns | yes | yes | yes | yes | warns | warns | warns |
| Compressed responses | --compressed | warns | warns | warns | warns | yes | yes | yes | yes | yes | yes | warns | warns | yes | yes | yes | yes | yes | warns |
| Proxies | -x, --proxy-user | warns | warns | yes | warns | yes | yes | yes | yes | yes | yes | warns | yes | warns | warns | yes | yes | warns | yes |
| Skip TLS verification | -k, --insecure | warns | warns | warns | warns | warns | warns | warns | yes | yes | warns | warns | warns | warns | warns | warns | yes | warns | warns |
| HTTP/2 | --http2 | warns | warns | warns | warns | warns | yes | warns | warns | yes | warns | warns | warns | warns | warns | warns | warns | warns | warns |
| HTTP version selection | --http1.1, --http2 | warns | warns | warns | warns | warns | warns | warns | warns | yes | yes | warns | warns | warns | warns | warns | warns | warns | warns |
| Retries | --retry | warns | warns | warns | yes | yes | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns |
| Cookie files | -b cookies.txt | warns | warns | warns | warns | yes | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns |
| Cookie jars | -c cookies.txt | warns | warns | warns | warns | yes | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns | warns |

## FAQ

### How many languages can Toolpaper convert curl to?

18 targets across 12 languages, including 3 Python libraries. The full matrix above lists what each handles natively.

### What happens when a feature is not supported?

The converter keeps the flag visible as an inline warning next to the generated code instead of silently dropping it, so nothing gets lost between your curl command and the client you ship.

### Where does this matrix come from?

It is computed from the same per-target handling table the converter uses when deciding which warnings to show, covering 12 curl features. It cannot drift from actual converter behavior.

### Does my curl command leave my browser?

No. Parsing, generation, and this matrix all run client-side; no server ever sees your command.

---

Source: https://toolpaper.manavdev.site/research/curl-capability-matrix