curl and libcurl (curl/curl)
The source of curl, the command-line tool for transferring data with URLs, and libcurl, the C library behind it that many other programs use for HTTP.
Not checked by a trusted editor yet Last edited Outdated?
curl/curl
- Stars
- 43.1k
- Forks
- 7.4k
- Language
- C
- Licence
- NOASSERTION
- Last push
- 15 Oct 2026
On GitHub: A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, MQTTS, POP3, POP3S, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Open on GitHubcurl is the command-line tool developers reach for to test APIs, download files, and debug HTTP. This repository contains both the curl program and libcurl, the C library that does the actual work. libcurl is embedded in a huge range of software, from language bindings to operating systems and devices, so this code handles a large share of the world’s HTTP traffic.
Beyond HTTP and HTTPS, curl supports many other protocols, including FTP, SFTP, SMTP, IMAP, MQTT, and WebSocket, and it keeps up with modern HTTP versions. The project was started by Daniel Stenberg, who still leads it, and it is known for careful backward compatibility, detailed security advisories, and thorough documentation.
The repository’s docs folder is worth bookmarking. It contains the man pages for every option, an explanation of exit codes, and guides such as the HTTP scripting tutorial. Running curl --help all or man curl shows the same information locally.
See also
- 0019 fetch with timeout, retries and proper error handling A reusable fetchJson helper for Node 20+ and browsers that adds a timeout, retries with backoff for temporary failures, and clear errors… Intermediate · How-to · Any system Script Async code · Making requests 15 Oct 2026
- 0081 How an HTTP request works: methods, headers, and body An HTTP request is a short text message a client sends to a server: a method and path, some headers, and sometimes… Beginner · Concept · Any system Article Making requests 15 Oct 2026
- 0083 Test a JSON API with curl A runnable bash script showing the curl commands you need most when testing an API: GET, POST JSON, custom headers, Bearer tokens,… Beginner · How-to · Linux, macOS, Windows Script Authentication · Making requests 15 Oct 2026
- 0084 Tiny JSON echo server for testing HTTP clients A standard-library Python server that echoes back the method, path, query, headers, and body of every request, and can return any status… Intermediate · How-to · Any system Script Files & automation · Making requests 15 Oct 2026
- 0085 fetch with timeout, retries, and exponential backoff A drop-in fetch wrapper that times out slow requests, retries network errors and 429/5xx responses with jittered exponential backoff, and honors Retry-After. Advanced · How-to · Any system, Browser Script Async code · Making requests 15 Oct 2026
- 0087 CORS explained: why the browser blocks your request CORS is the browser rule that decides whether JavaScript on one origin may read a response from another. The server opts in… Intermediate · Concept · Browser Article Async code · Making requests 15 Oct 2026
History
Every saved edit is kept. The plot on the sleeve draws one line per edit. Open any edit to see exactly what changed.
- Commitpedia +948 chars