Open-Source Wikis

/

curl

/

By the numbers

curl/curl

By the numbers

Data collected on 2026-04-30 from a clone of curl/curl at commit ddb30354f6 on master.

Size

xychart-beta horizontal
    title "Source lines (approx.) by area"
    x-axis "Lines (k)"
    y-axis ["lib/", "lib/vtls/", "lib/vquic/", "lib/vauth/", "lib/vssh/", "lib/curlx/", "src/", "include/curl/", "tests/", "docs/"]
    bar [110, 25, 16, 8, 23, 6, 35, 7, 200, 80]

(Line counts are rough; exclude headers from each subdirectory's bar where the area mostly grows from .c files.)

Area .c/.h files
lib/ (excluding subdirs) 184 / 178
lib/vtls/ 17 / 14
lib/vquic/ 4 / 5
lib/vauth/ 13 / 2
lib/vssh/ 4 / 2
lib/curlx/ 19 / 19
src/ 43 / 45
include/curl/ 0 / 12 + curl.h
docs/cmdline-opts/ ~280 markdown files (one per option)
docs/libcurl/opts/ ~340 markdown files (one per CURLOPT/CURLINFO/CURLMOPT/CURLSHOPT)
docs/examples/ 129 example C programs
tests/data/ 1968 numbered tests
.github/workflows/ 17 workflow files

Aggregate: ~196k lines of C across lib/, src/, and include/. The total source tree (with docs and tests) is much larger; the tests/data/ directory alone has nearly 2k single-file tests.

The largest individual files:

File Size
lib/vtls/openssl.c 171 KB
configure.ac 162 KB
lib/http.c 157 KB
lib/ftp.c 141 KB
lib/multi.c 128 KB
lib/vssh/libssh2.c 126 KB
lib/url.c 113 KB
src/tool_getparam.c 103 KB
lib/vtls/schannel.c 99 KB
lib/http2.c 97 KB
lib/vquic/curl_ngtcp2.c 96 KB
CMakeLists.txt 92 KB
lib/vssh/libssh.c 93 KB
lib/setopt.c 84 KB

Activity

Total commits in the repository: 38,547 (first commit imported in December 1999 from CVS history dating back to 1996; SVN/CVS-era history is preserved).

Commits in the last 90 days: 823. Recent monthly activity:

Month Commits
2025-04 11
2025-05 199
2025-06 226
2025-07 286
2025-08 243
2025-09 276
2025-10 438
2025-11 410
2025-12 333
2026-01 288
2026-02 222
2026-03 357
2026-04 232 (partial)

(The pre-May-2025 activity in the table reflects the way this snapshot's git log was filtered, not historical truth — the project has been continuously active since 1996.)

Churn hot-spots (last 90 days)

File / Path Touched commits
.github/workflows/linux.yml 54
tests/data/Makefile.am 49
lib/url.c 48
CMakeLists.txt 48
.github/workflows/http3-linux.yml 45
lib/http.c 44
.github/workflows/windows.yml 38
lib/vtls/openssl.c 36
lib/ftp.c 34
lib/multi.c 32
lib/curl_setup.h 32
src/tool_operate.c 29
lib/urldata.h 29
RELEASE-NOTES 28
configure.ac 27

Churn hot-spots by directory

Directory Commits touching it (90d)
lib/ 1312
docs/libcurl/opts/ 297
docs/examples/ 278
tests/data/ 276
src/ 237
.github/workflows/ 234
lib/vtls/ 230
tests/unit/ 172
tests/libtest/ 162

Bot-attributed commits

Commits in the last two years that include a Co-authored-by: <something>[bot] line: 0 out of 6,407.

curl is essentially un-touched by automated commit bots (no Dependabot, no GitHub Actions auto-PRs in the merge history). This is a lower bound: AI assistants used inline by contributors leave no trace. Treat this number as evidence that bot-authored commits are not part of the project's day-to-day flow, not a claim about AI tooling overall.

Test coverage by count

Test kind Count
Functional tests 1968 (tests/data/test*)
Unit tests ~250 (tests/unit/unit*.c)
libtest programs ~600 (tests/libtest/lib*.c)
Type-check tests a few dozen (tests/tunit/)
Fuzz harnesses several (tests/fuzz/)

Tests are run on every PR across an extensive matrix in .github/workflows/linux.yml, macos.yml, windows.yml, and non-native.yml.

Public API surface

Surface Approximate count
CURLOPT_* options 308
CURLINFO_* getinfo properties ~80
CURLMOPT_* multi options ~15
CURLSHOPT_* share options ~5
Public functions ~100
CURLcode error codes ~100
Supported URL schemes 28+

Per-subsystem snapshot

Subsystem Files in lib/* Largest file
Transfer engine 4 multi.c 128 KB
Connection management 7 url.c 113 KB
Connection filters 13 (cf-*.c) cf-socket.c 69 KB
HTTP 11 http.c 157 KB
HTTP/2 1 http2.c 97 KB
HTTP/3 + QUIC 5 curl_ngtcp2.c 96 KB
TLS backends 8 backends + abstraction openssl.c 171 KB
FTP 4 ftp.c 141 KB
SMTP/IMAP/POP3 3 + pingpong smtp.c 61 KB / imap.c 68 KB
SSH (vssh) 2 backends libssh2.c 126 KB
Authentication (vauth) 13 digest.c 33 KB
URL API 1 urlapi.c 56 KB
Cookies/HSTS/Alt-Svc 3 cookie.c 48 KB
MIME/forms 2 mime.c 62 KB
WebSocket 1 ws.c 62 KB

For "what does this subsystem do?", see the corresponding Systems and Features pages.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

By the numbers – curl wiki | Factory