urllib3

A powerful, user-friendly HTTP client for Python with thread-safe connection pooling, TLS verification, and retry handling.

Library
PyPI
v2.8.0
4,079 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
93 /100 Excellent
Development Activity 96
Maintenance 84
Community 92
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 90
Code Quality 95
Innovation 75
Learning Curve 80

urllib3 is the HTTP library that underpins a huge share of the Python ecosystem — it’s the transport layer inside Requests, pip, and countless other tools. It fills the gaps left by Python’s standard library HTTP support: thread-safe connection pooling, client-side TLS/SSL verification, automatic retries with configurable backoff, redirect handling, and multipart file uploads.

Maintained continuously since 2008 with a strong security track record (SLSA level 3, OpenSSF Scorecard, CII Best Practices), urllib3 is built for production use at scale. It exposes both a low-level HTTPConnectionPool/PoolManager API for fine-grained control and a simple urllib3.request() helper for quick one-off calls, supporting HTTP/1.1 and experimental HTTP/2, gzip/deflate/brotli/zstd encoding, and SOCKS proxying.

What You Get

  • Thread-safe connection pooling via PoolManager and HTTPConnectionPool that reuses TCP connections across requests for lower latency
  • Client-side TLS/SSL certificate verification enabled by default, with support for custom CA bundles and client certificates
  • A configurable Retry class for automatic retries on connection errors, read timeouts, and specific HTTP status codes, with exponential backoff
  • Multipart file upload and form-encoding helpers via encode_multipart_formdata and fields.py
  • Proxy support for both HTTP and SOCKS proxies via ProxyManager and the socks extra
  • Built-in support for gzip, deflate, brotli, and zstd response decoding, plus experimental HTTP/2

Common Use Cases

  • Building an HTTP client library or SDK - projects like Requests wrap urllib3’s connection pooling and retry logic rather than reimplementing it
  • High-throughput API clients - services that make many outbound HTTP calls reuse pooled connections to avoid TCP/TLS handshake overhead per request
  • Package managers and CLI tools - pip and similar tools use urllib3 directly for reliable, retryable downloads over HTTP(S)
  • Uploading files or form data - multipart encoding helpers make it straightforward to POST files without pulling in a heavier client
  • Working behind corporate proxies - ProxyManager and SOCKS support handle HTTP(S) traffic through HTTP or SOCKS4/5 proxies

Under The Hood

Architecture

urllib3 is organized as a layered connection-management stack: connection.py wraps a single socket-level HTTP(S) connection, connectionpool.py’s HTTPConnectionPool/HTTPSConnectionPool manage a thread-safe queue of reusable connections to one host, and poolmanager.py’s PoolManager sits on top routing requests to the correct per-host pool by parsing the target URL (with ProxyManager as a PoolManager subclass adding proxy-aware routing). Shared request-building logic lives in _request_methods.py’s RequestMethods base class, and util/retry.py’s Retry object is threaded through every layer, re-evaluated and reconstructed on each attempt so retry state stays immutable and safely shareable. This separation means the core abstraction that would break the most if changed is the pool key normalization in poolmanager.py, since it determines which requests can share a connection.

Tech Stack

urllib3 is pure Python (3.10+) with zero required runtime dependencies, using the standard library’s ssl and socket modules directly rather than a C extension. Optional extras pull in brotli/brotlicffi for Brotli decoding, backports.zstd for Zstandard, PySocks for SOCKS proxying, and h2 for experimental HTTP/2 support via the http2/ submodule. The build uses hatchling with hatch-vcs for version management, and the project is fully managed with uv (uv.lock present) for dependency locking across its extensive dev/test dependency groups.

Code Quality

The project reports 100% test coverage (badge-verified) with a large test/ suite covering collections, connection pooling, retries, SSL, proxies, and a with_dummyserver/ integration layer that spins up real HTTP servers for end-to-end checks. Tests run against pytest with anyio/trio for async server scenarios and hypercorn/quart as test HTTP/2 servers. The codebase is fully typed with py.typed marker and enforced mypy configuration, uses from __future__ import annotations throughout, and ships CI-verified builds (GitHub Actions badge in the README) plus supply-chain attestations (SLSA level 3, OpenSSF Scorecard).

What Makes It Unique

Rather than being a convenience wrapper, urllib3 solves the specific hard problems the Python standard library leaves unsolved: safe connection reuse under concurrent access, correct TLS verification by default (a deliberate v2 design choice), and a retry model expressive enough for production services to tune per-error-type backoff. Its role as the transport layer beneath Requests and pip — rather than a competing high-level client — is itself the differentiator: it optimizes for correctness and stability at the layer just above raw sockets, which is why higher-level HTTP libraries build on it instead of around it.

Used by 48 apps in this directory

C++
74%
Other

Dragonfly

Databases · Developer Tools · Devops

31,817

A modern Redis and Memcached replacement engineered for multi-core servers — delivering 25x more throughput, better cache hit rates, and up to 80% lower memory consumption with full API compatibility.

View details
90
Repo Health
9
Technical
68
Dependency
Built with
C++ 74%
Python 17%
Updated 1 weeks ago
Go
47%
Apache 2.0

e2a

AI Agents · Automation

194

Give your AI agents a real, authenticated email address — with SPF/DKIM-verified inbound, HMAC-signed delivery, WebSocket fan-out, and human-in-the-loop approval built in.

View details
79
Repo Health
80
Technical
71
Dependency
Built with
Go 47%
TypeScript 27%
Python 13%
Updated 1 weeks ago
HTML
84%
Apache 2.0

Elementary

Analytics · Data Engineering · Monitoring

2,428

The dbt-native data observability CLI that turns your existing dbt tests and metadata into anomaly detection, lineage graphs, and Slack/Teams alerts — no separate platform required.

View details
88
Repo Health
75
Technical
75
Dependency
Built with
HTML 84%
Python 16%
Updated 1 weeks ago
C#
42%
MIT

FeatBit

Developer Tools · Devops

1,946

Self-hosted, enterprise-grade feature flag platform for safe, targeted, and data-driven feature releases.

View details
90
Repo Health
78
Technical
69
Dependency
Built with
C# 42%
TypeScript 41%
Updated 6 days ago
TypeScript
74%
Apache 2.0

Fern

Developer Tools

3,822

Fern turns a single OpenAPI, AsyncAPI, or Protobuf definition into type-safe SDKs for nine languages and a hosted API documentation site, all from one CLI and one source of truth.

View details
90
Repo Health
86
Technical
66
Dependency
Built with
TypeScript 74%
Updated 6 days ago
Python
71%
Apache 2.0

GPT Researcher

AI Assistants · Productivity

30,269

The pioneering open-source autonomous AI agent that conducts deep, multi-source research and produces citation-backed reports exceeding 2,000 words — faster and more reliably than any human researcher.

View details
90
Repo Health
91
Technical
64
Dependency
Built with
Python 71%
TypeScript 18%
Updated 2 weeks ago
Go
87%
MIT

Hatchet

AI Development · Automation · Developer Tools

8,174

A Postgres-backed orchestration engine for background tasks, AI agents, and durable workflows that replaces Redis queues and multi-datastore durable execution platforms with a single self-hostable service.

View details
88
Repo Health
83
Technical
67
Dependency
Built with
Go 87%
Updated 1 weeks ago
TypeScript
91%
Apache 2.0

Helicone

AI Development · Analytics · Monitoring

6,235

An open-source AI gateway and LLM observability platform that routes requests to 100+ models while logging cost, latency, and full traces for every call.

View details
74
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 91%
Updated 6 days ago
TypeScript
71%
Other

highlight.io

Analytics · Developer Tools · Monitoring

9,384

Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.

View details
76
Repo Health
78
Technical
65
Dependency
Built with
TypeScript 71%
Go 16%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers