pallets

werkzeug: Build WSGI Web Applications and Utilities

Werkzeug is a Python library for building WSGI applications, with HTTP request and response tools, routing, and testing utilities. It suits developers who want lower-level control over web application behavior without a framework imposing extra structure.

View on GitHub Compare
Stars
6.9k
Forks
1.8k
Stars, last 30 days
+1

Our take

Health score

80/100

How it is scored
Activity
71
Community
87
Issues
91
Pull requests
72

+1 stars in the last 30 days

  • Closes issues faster than 82% of the projects we track
  • More contributors than 78% of the projects we track

Project history

Daily GitHub snapshots since Oct 7, 2026. History covers stars and forks; health signals are not tracked historically.

Selected snapshot

Stars

6,880

Forks

1,877

Change since Nov 9, 2026: -1 stars·0 forks

Overview

Werkzeug provides the building blocks for Python web applications that use WSGI, the standard interface between Python web servers and applications. It handles common HTTP and application tasks, so developers can focus on their own application logic rather than implementing those utilities themselves.

Use it directly when you want to assemble an application from flexible components. It is also the WSGI foundation used by Flask, which adds more structure for application development.

Key Features

  • Request and response objects for working with HTTP data, including headers, query arguments, forms, files, and cookies.
  • URL routing that matches requests to endpoints and generates URLs.
  • HTTP utilities for tasks such as managing cache control, entity tags, dates, and cookies.
  • An interactive debugger for inspecting stack traces and source code in a browser.
  • A test client for simulating requests without starting a server.
  • A threaded WSGI server for local development.
  • Response support for wrapping WSGI applications and streaming data.

Use Cases

  • Build a small WSGI application directly when you want control over its components and behavior.
  • Add HTTP request handling, routing, or response utilities to an existing WSGI project.
  • Test application endpoints with simulated requests without running a server.
  • Use Werkzeug as the WSGI layer in a more structured framework such as Flask.

Getting Started

Install Werkzeug with pip:

pip install Werkzeug

See the README and official documentation for usage details.

Considerations

Werkzeug is a low-level library, not a complete application framework. It does not prescribe a template engine, database adapter, or application structure, so developers must select and integrate those pieces themselves. The README describes its development server as intended for local development.

Found this useful?

Share it with someone who would like werkzeug.