Skip to content
recurl_ $install

← back home · # compare

recurl vs curl

The baseline HTTP client

recurl runs real curl on the happy path and only escalates when it sees a block. Same flags, same exit codes, strictly more capable. The fair comparison is "does recurl cost anything on the requests where curl already worked." The honest answer is "no, except a sub-millisecond process boundary."

Feature recurl curl Advantage
Flag compatibility All standard curl flags passed through verbatim Reference implementation Tie
Behaviour on unprotected sites Execs real curl, same speed Original behaviour Tie
Behaviour on TLS-fingerprinted sites Auto-escalates to impersonation layer Returns 403 / connection error recurl
Behaviour on JS-challenged sites Auto-escalates to headless Chromium preflight Returns 403 with challenge HTML recurl
Overhead on success One process boundary; effectively a wrapper None (it is curl) curl
Diagnostic output --recurl-debug shows which layer ran and why -v for transport-level logs recurl
Strict / passthrough mode --recurl-strict disables fallback entirely Default behaviour Tie
Platform coverage Linux, macOS, Windows (impersonation Linux/macOS only) Everywhere curl
Licence MIT curl licence (MIT-compatible) Tie
Install footprint Single binary + optional Chromium on first JS use Single binary, usually preinstalled curl

Pick recurl when

  • You hit 403/429/captcha responses on sites you used to be able to scrape
  • You want one binary that handles both modern bot walls and plain HTTP
  • You want to keep your existing curl flags, scripts, and exit-code handling
  • You are willing to alias curl=recurl and let escalation happen automatically

Pick curl when

  • You only ever talk to your own internal services where bot walls do not exist
  • You are running in a minimal container and cannot afford the extra binary
  • You explicitly want plain-curl behaviour, including the failures, for diagnostic reasons
  • You are scripting against curl exit codes that specifically check for the original error path

Still deciding?

recurl is MIT-licensed and runs locally. Install it next to your existing toolchain, alias it for one project, and decide if it stays.