# What changed in humanize

> 21 changes in humanize 4 from its official release notes, upgrade guides and advisories: 2 breaking, 1 new APIs and options. Each one cited. Sources checked 2026-10-24. HTML: https://unstale.sh/pypi/humanize/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## humanize 4

### Breaking changes

- Experimental Python 3.13 free-threaded support is dropped. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Drops support for Python 3.9. (4.14.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.14.0)

### New APIs and options

- Adds Uzbek language support. (4.14.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.14.0)

### Performance

- Performance improvements range from 1.07x to 8.4x. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)

### Behavior and default changes

- Imports are lazy for Python 3.15 and later. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Advances to the next SI prefix when rounding reaches 1000. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Adds i18n support and a French translation for naturalsize(). (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Adds locale support for the decimal separator. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)
- Rounds the value to the nearest unit that makes sense. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)

### Fixes and other changes

- Fixes the Arabic translation. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Stops printing two minus signs for a negative mixed number. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Adds Latvian language localization. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Returns an empty string for an empty list. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Handles timezone-aware datetimes. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Handles timezone-aware datetimes. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Fixes rounding rollover at unit boundaries. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Fixes Spanish large number translations to use long scale. (4.16.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.16.0)
- Replaces a generic `Exception` with the more specific `FileNotFoundError`. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)
- Fixes the plural form. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)
- Improves performance. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)
- Adds support for Python 3.15. (4.15.0) — [release notes](https://github.com/python-humanize/humanize/releases/tag/4.15.0)
