Werkzeug
The comprehensive WSGI web application library.
Decision gist · record as of 2026-08-14
Yes. Werkzeug is a mature, actively maintained, production-stable library with no known vulnerabilities, minimal dependencies, and permissive licensing. It is worth installing if you are building a WSGI application, need low-level HTTP utilities, or are integrating with a framework that depends on it (such as Flask). Its only real constraint is the Python 3.9+ requirement.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.9 or later.
- Low install friction with a single runtime dependency (markupsafe).
- The project is actively maintained with recent commits, 6876 repository stars, and production-stable status since its initial release in 2007.
License · maintenance · safety
BSD-3-Clause (permissive) — BSD-3-Clause (permissive) license allows commercial and private use with minimal restrictions—suitable for most projects that can include a license notice.
last release 2026-04-02 (134 days) · last repo commit 2026-08-14 · 6,876 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 268,056,372 downloads/mo, #151 on PyPI
Alternatives
Verify before relying
pip install werkzeug
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
@Request.application
def app(request: Request) -> Response:
return Response("Hello, World!")
run_simple("127.0.0.1", 5000, app)- Whether the interactive debugger is safe for production use or intended only for development.
- Performance characteristics when handling high-concurrency or streaming workloads.
- Compatibility with async WSGI frameworks or whether it is synchronous-only.
What it is and what it does
Werkzeug is a foundational WSGI library that handles the low-level details of HTTP request and response processing for web applications. It provides request objects to parse headers, query arguments, form data, files, and cookies; response objects that can wrap other WSGI applications and stream data; and utilities for HTTP semantics like entity tags, cache control, and user agents. It includes a threaded development server, a test client for simulating requests without running a live server, and an interactive browser-based debugger for inspecting stack traces and executing code in any frame.
The library is designed to be unopinionated—it does not enforce a template engine, database adapter, or request-handling pattern, leaving those choices to the developer. It is commonly used as the foundation for higher-level frameworks like Flask, but can also be used directly to build custom WSGI applications. Its routing system supports URL matching and generation with extensible variable capture, and its HTTP utilities cover common web concerns like cookies, file handling, and content negotiation.
Use it for
- Build a custom WSGI web application from scratch without adopting a full framework.
- Add request/response handling and routing to an existing WSGI middleware stack.
- Debug web application issues interactively using the browser-based debugger during development.
- Test HTTP endpoints by simulating requests with the test client without running a server.
- Handle file uploads, form data, and cookie management in a lightweight application.
- Extend or wrap existing WSGI applications with custom request/response logic.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Werkzeug is a mature, actively maintained, production-stable library with no known vulnerabilities, minimal dependencies, and permissive licensing. It is worth installing if you are building a WSGI application, need low-level HTTP utilities, or are integrating with a framework that depends on it (such as Flask). Its only real constraint is the Python 3.9+ requirement.
Install
werkzeug on PyPI
Before you install
Low install friction with a single runtime dependency (markupsafe). The project is actively maintained with recent commits, 6876 repository stars, and production-stable status since its initial release in 2007.
Requires Python 3.9 or later.
License in practice
BSD-3-Clause (permissive) license allows commercial and private use with minimal restrictions—suitable for most projects that can include a license notice.
Quickstart
pip install werkzeug
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
@Request.application
def app(request: Request) -> Response:
return Response("Hello, World!")
run_simple("127.0.0.1", 5000, app)
Verify before relying
- Whether the interactive debugger is safe for production use or intended only for development.
- Performance characteristics when handling high-concurrency or streaming workloads.
- Compatibility with async WSGI frameworks or whether it is synchronous-only.
Package facts
| License | BSD-3-Clause permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagemarkupsafe |
| Maintenance | Actively maintained 134 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 268,056,372 / month, #151 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: Web EnvironmentIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: PythonTopic :: Internet :: WWW/HTTP :: Dynamic ContentTopic :: Internet :: WWW/HTTP :: WSGITopic :: Internet :: WWW/HTTP :: WSGI :: ApplicationTopic :: Internet :: WWW/HTTP :: WSGI :: MiddlewareTopic :: Software Development :: Libraries :: Application FrameworksTyping :: Typed |
Evidence: werkzeug-3.1.8-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “WSGI web application library”
- WerkzeugWerkzeug is a WSGI utility library providing request/response…
- WebObWebOb provides request and response objects that wrap WSGI…
- toolA compact modular framework for building WSGI web applications,…
Give your agent the search over MCP, or paste the wish link into any chat.
More Application Frameworks packages
FastAPI is a Python web framework for building REST APIs using type hints, with automatic request validation, serialization, and interactive API documentation.
Provides a way to document function parameters, class attributes, return types, and variables inline using Python's `Annotated` type hint syntax instead of traditional docstrings.
Textual is a Python framework for building cross-platform user interfaces that run in the terminal or web browser using a modern, component-based API.
Install it if you're developing CLI tools, dashboards, or interactive terminal applications.
Typer builds command-line applications from Python functions using type hints, automatically generating help text, argument parsing, and shell completion.
Install it if you are building CLIs in Python.
Build and connect to Model Context Protocol servers that expose tools, resources, and prompts to LLM applications over stdio, HTTP, or SSE transports.
Install it if you need to build or connect to servers.
Flask is a lightweight WSGI web application framework for building web applications in Python, from simple single-page sites to complex multi-route applications.
See also Paste · scim2-server · Beaker · webapp2 · tool · types-Werkzeug · bottle · gunicorn · httpdbg