by pallets

pallets / werkzeug

The comprehensive WSGI web application library.

5.5K Stars 1.5K Forks Last release: 7 months ago (1.0.1) BSD 3-Clause "New" or "Revised" License 4.4K Commits 64 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


werkzeug German noun: "tool". Etymology: werk ("work"), zeug ("stuff")

Werkzeug is a comprehensive

_ web application library. It began as a simple collection of various utilities for WSGI applications and has become one of the most advanced WSGI utility libraries.

It includes:

  • An interactive debugger that allows inspecting stack traces and source code in the browser with an interactive interpreter for any frame in the stack.
  • A full-featured request object with objects to interact with headers, query args, form data, files, and cookies.
  • A response object that can wrap other WSGI applications and handle streaming data.
  • A routing system for matching URLs to endpoints and generating URLs for endpoints, with an extensible system for capturing variables from URLs.
  • HTTP utilities to handle entity tags, cache control, dates, user agents, cookies, files, and more.
  • A threaded WSGI server for use while developing applications locally.
  • A test client for simulating HTTP requests during testing without requiring running a server.

Werkzeug doesn't enforce any dependencies. It is up to the developer to choose a template engine, database adapter, and even how to handle requests. It can be used to build all sorts of end user applications such as blogs, wikis, or bulletin boards.

_ wraps Werkzeug, using it to handle the details of WSGI while providing more structure and patterns for defining powerful applications.


Install and update using


.. code-block:: text

pip install -U Werkzeug

A Simple Example

.. code-block:: python

from werkzeug.wrappers import Request, Response

@Request.application def application(request): return Response('Hello, World!')

if name == 'main': from werkzeug.serving import run_simple run_simple('localhost', 4000, application)


  • Website: https://palletsprojects.com/p/werkzeug/
  • Documentation: https://werkzeug.palletsprojects.com/
  • Releases: https://pypi.org/project/Werkzeug/
  • Code: https://github.com/pallets/werkzeug
  • Issue tracker: https://github.com/pallets/werkzeug/issues
  • Test status: https://dev.azure.com/pallets/werkzeug/_build
  • Official chat: https://discord.gg/t6rrQZH

.. _WSGI: https://wsgi.readthedocs.io/en/latest/ .. _Flask: https://www.palletsprojects.com/p/flask/ .. _pip: https://pip.pypa.io/en/stable/quickstart/

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.