NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #167 most downloaded on PyPI
Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy
Last release 1 months ago
14 Aug 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
150 releases · first in 2018
Support serializing numpy.int16 and numpy.uint16.
numpy.int16 and numpy.uint16.Fix datetime regression tests with tzinfo 2022b.
One column per quarter.
Revert dict iterator implementation introduced in 3.7.9.
dict iterator implementation introduced in 3.7.9.Fix serializing dict with deleted final item. This was introduced in 3.7.9.
dict with deleted final item. This was introduced in 3.7.9.Improve performance of serializing.
orjson.OPT_INDENT_2)
to be much nearer to compact.str input.Build makes best effort instead of requiring "--features".
### Changed - Support Python 3.11.
Handle unicode changes in CPython 3.12.
Fix issue serializing dicts that had keys popped and replaced. This was introduced in 3.7.4.
Fix deallocation of orjson.JSONDecodeError.
orjson.JSONDecodeError.Publish aarch64 musllinux wheels.
Improve deserialization performance.
Type stubs for orjson.JSONDecodeError now inherit from json.JSONDecodeError instead of ValueError
orjson.JSONDecodeError now inherit from
json.JSONDecodeError instead of ValueErrororjson.dumps() output.Improve deserialization performance significantly through the use of a new backend. PyPI wheels for manylinux_2_28 and macOS have it enabled. Packager
Improve serialization and deserialization performance.
Fix serialization of numpy.datetime64("NaT") to raise on an unsupported type.
numpy.datetime64("NaT") to raise on an
unsupported type.Improve performance of deserializing almost-empty documents.
manylinux_2_17 wheels to PyPI.musllinux_1_1 wheels to PyPI.python on PATH.manylinux_2_17 wheels to PyPI.musllinux_1_1 wheels to PyPI.python on PATH.Improve performance of serializing datetime.datetime using tzinfo that are zoneinfo.ZoneInfo.
datetime.datetime using tzinfo that
are zoneinfo.ZoneInfo.JSONDecodeError.orjson.OPT_STRICT_INTEGER not raising an error on
values exceeding a 64-bit integer maximum.Fix build on macOS aarch64 CPython 3.10.
Fix serialization of dataclass inheriting from abc.ABC and using __slots__.
dataclass inheriting from abc.ABC and
using __slots__.PyArrayInterface.Fix build on aarch64 using the Rust stable channel.
orjson now compiles on Rust stable 1.54.0 or above. Use of some SIMD usage is now disabled by default and packagers are advised to add --cargo-extra-a
orjson now compiles on Rust stable 1.54.0 or above. Use of some SIMD
usage is now disabled by default and packagers are advised to add
--cargo-extra-args="--features=unstable-simd" to the maturin build command
if they continue to use nightly.orjson built with --features=unstable-simd adds UTF-8 validation
implementations that use AVX2 or SSE4.2.orjson now includes a pyi type stubs file.
orjson now includes a pyi type stubs file.orjson.dumps() serializes numpy.datetime64 instances as RFC 3339 strings.
orjson.dumps() serializes numpy.datetime64 instances as RFC 3339
strings.Fix memory leak serializing datetime.datetime with tzinfo.
datetime.datetime with tzinfo.orjson.JSONDecodeError now has pos, lineno, and colno.
orjson.JSONDecodeError now has pos, lineno, and colno.Improve serialization and deserialization performance.
orjson.dumps() serializes individual numpy.bool_ objects.Publish universal2 wheels for macOS supporting Apple Silicon (aarch64).
universal2 wheels for macOS supporting Apple Silicon (aarch64).orjson.loads() supports reading from memoryview objects.
orjson.loads() supports reading from memoryview objects.datetime.datetime and datetime.date zero pad years less than 1000 to
four digits.orjson.dumps() when given a non-C contiguous numpy.ndarray has
an error message suggesting to use default.aarch64 manylinux2014 wheels are now compatible with glibc 2.17.
Use vectorcall APIs for method calls on python3.9 and above.
Fix compatibility with debug builds of CPython.
Fix deserializing long strings on processors without AVX2.
orjson.dumps() serializes integers up to a 64-bit unsigned integer's maximum. It was previously the maximum of a 64-bit signed integer.
orjson.dumps() serializes integers up to a 64-bit unsigned integer's
maximum. It was previously the maximum of a 64-bit signed integer.Fix regression in parsing similar dict keys.
dict keys.Improve deserialization performance.
Fix orjson.dumps.__module__ and orjson.loads.__module__ not being the str "orjson".
orjson.dumps.__module__ and orjson.loads.__module__ not being the
str "orjson".Serialize numpy.uint8 and numpy.int8 instances.
numpy.uint8 and numpy.int8 instances.numpy.empty() instances.manylinux1 wheels due to tooling dropping support.Fix failure to deserialize some latin1 strings on some platforms. This was introduced in 3.2.0.
orjson.dumps() for help().manylinux2014 wheels for amd64 in addition to manylinux1.orjson.dumps() now serializes individual numpy floats and integers, e.g., numpy.float64(1.0).
orjson.dumps() now serializes individual numpy floats and integers, e.g.,
numpy.float64(1.0).orjson.OPT_PASSTHROUGH_DATACLASS causes orjson.dumps() to pass
dataclasses.dataclass instances to default.Fix serializing dataclasses.dataclass that have no attributes.
dataclasses.dataclass that have no attributes.str.Fix orjson.dumps(..., {}) raising TypeError on python3.6.
orjson.dumps(..., **{}) raising TypeError on python3.6.orjson.OPT_APPEND_NEWLINE appends a newline to output.
orjson.OPT_APPEND_NEWLINE appends a newline to output.str.Fix serializing zero-dimension numpy.ndarray.
numpy.ndarray.Fix repeated serialization of str that are ASCII-only and have a legacy (non-compact) layout.
str that are ASCII-only and have a legacy
(non-compact) layout.orjson.OPT_PASSTHROUGH_SUBCLASS causes orjson.dumps() to pass subclasses of builtin types to default so the caller can customize the output.
orjson.OPT_PASSTHROUGH_SUBCLASS causes orjson.dumps() to pass
subclasses of builtin types to default so the caller can customize the
output.orjson.OPT_PASSTHROUGH_DATETIME causes orjson.dumps() to pass
datetime objects to default so the caller can customize the
output.orjson.dumps() does not serialize dataclasses.dataclass attributes that begin with a leading underscore, e.g., _attr. This is because of the Python id
orjson.dumps() does not serialize dataclasses.dataclass attributes
that begin with a leading underscore, e.g., _attr. This is because of the
Python idiom that a leading underscores marks an attribute as "private."orjson.dumps() does not serialize dataclasses.dataclass attributes that
are InitVar or ClassVar whether using __slots__ or not.orjson.dumps() raises an exception if the object to be serialized is not given as a positional argument. orjson.dumps({}) is intended and ok while orj
orjson.dumps() raises an exception if the object to be serialized
is not given as a positional argument. orjson.dumps({}) is intended and ok
while orjson.dumps(obj={}) is an error. This makes it consistent with the
documentation, help() annotation, and type annotation.orjson.dumps() serializes subclasses of str, int, list, and dict.
orjson.dumps() serializes subclasses of str, int, list, and dict.orjson.dumps() serializes dataclasses.dataclass and uuid.UUID
instances by default. The options OPT_SERIALIZE_DATACLASS and
OPT_SERIALIZE_UUID can still be specified but have no effect.The source distribution vendors a forked dependency.
Fix integer overflows in debug builds.
.cargo/config.Import numpy only on first use of OPT_SERIALIZE_NUMPY to reduce interpreter start time when not used.
numpy only on first use of OPT_SERIALIZE_NUMPY to reduce
interpreter start time when not used.Fix deserialization raising JSONDecodeError on some valid negative floats with large exponents.
JSONDecodeError on some valid negative
floats with large exponents.Improve deserialization performance of floats by about 40%.
Minor performance improvements.
enum.Enum objects.Publish python3.9 manylinux2014 wheel instead of manylinux1 for x86_64.
manylinux2014 wheel instead of manylinux1 for x86_64.manylinux2014 wheel for aarch64.Serialization is 10-20% faster and uses about 50% less memory by writing directly to the returned bytes object.
bytes object.orjson.dumps() pretty prints with an indentation of two spaces if option=orjson.OPT_INDENT_2 is specified.
orjson.dumps() pretty prints with an indentation of two spaces if
option=orjson.OPT_INDENT_2 is specified.Publish manylinux2014 wheels for aarch64.
manylinux2014 wheels for aarch64.numpy.uint32 and numpy.uint64.manylinux1 wheels for 3.6, 3.7, and 3.8 are now compliant with the spec by not depending on glibc 2.18.
manylinux1 wheels for 3.6, 3.7, and 3.8 are now compliant with the spec by
not depending on glibc 2.18.Your coding agent can read these notes before it upgrades. Set up the MCP server →