pypi / werkzeug
werkzeug
What changed in werkzeug 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
4 breaking3 performance2 behavior and defaults16 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initwerkzeug 325 changes
Breaking changes 4
Basic auth parsing disallows non-base64 characters.
The URL converter returns a 404 instead of a 500 error when the value exceeds sys.get_int_max_str_digits().
On Windows, safe_join no longer allows special device names with empty ADS markers on NTFS.
Request.host,get_host, andhost_is_trustedvalidate value characters; empty values are disallowed and Unix socket server addresses are ignored.
Performance 3
Performance is improved.
Performance is improved.
Performance is improved.
Behavior and default changes 2
Form data is no longer limited by max_form_memory_size, only by max_content_length.
Sets the
Accept-Rangesheader even when the range request is not satisfiable.
Fixes and other changes 16
PIN generation from cgroup data inside Podman is improved.
Also checks that the port is in the valid range.
Preserves empty usernames and passwords, and port 0.
Does not resize the buffer when it reads less than the remaining size.
Uses profiling.tracing on Python 3.15.
The invalid suffix length -0 is no longer accepted.
Preserves empty usernames and passwords, and port 0.
Rules with 10 or more converters in a single part assign matched values correctly.
Returns the empty string if the header is missing or has invalid characters.
Returns the empty string if the header is missing or has invalid characters.
The
trusted_listargument is optional.Merges any number of consecutive slashes.
Fixes handling of a newline at a multipart boundary.
Preserves partially quoted items, discards empty items, and returns empty for unclosed quoted values.
Is parsed as a set.
Does not produce a trailing space when there are no parameters.