
API | Wiki | Support | Latest release: v3.8.1 (2026-07-28)
Clojure's rich data types are awesome. And its reader allows you to take your data just about anywhere. But the reader can be painfully slow when you've got a lot of data to crunch (like when you're serializing to a database).
Nippy is a mature, high-performance drop-in alternative to the reader.
It is used at scale by Carmine, Faraday, PigPen, Onyx, XTDB, Datalevin, and others.
Nippy's super easy to use:
(require '[taoensso.nippy :as nippy])
;; Freeze any Clojure value
(nippy/freeze <my-value>) ; => Serialized byte[]
;; Thaw the byte[] to get back the original value:
(nippy/thaw (nippy/freeze <my-value>)) ; => <my-value>
See the wiki for more.
Nippy is widely used to store long-lived data and promises (as always) that data serialized today should be readable by all future versions of Nippy.
But please note that the converse is not generally true:
vX should be able to read all data from Nippy vY<=X (backwards compatibility)vX may/not be able to read all data from Nippy vY>X (forwards compatibility)From time to time, Nippy may introduce:
To help better support rolling deployments and rollback, Nippy will always introduce such changes over two version releases:
So if you use rolling deployments please ensure you update step by step (e.g. v3.5 → v3.6 → v3.7) so that read support is fully deployed before the corresponding writes might happen.
It has never been an objective of Nippy to offer predictable byte output, and I'd generally recommend against depending on specific byte output.
However, I know that a small minority of users do have specialized needs in this area.
So starting with Nippy v3.4, Nippy's release notes will always clearly indicate if any changes to byte output are expected.
Nippy is pretty fast. Latest benchmark results:

PRs welcome to include other alternatives in the bench suite!
You can help support continued work on this project and others, thank you!! 🙏
Copyright © 2012-2026 Peter Taoussanis.
Licensed under EPL 1.0 (same as Clojure).
Can you improve this documentation? These fine people already did:
Peter Taoussanis, Daniel Mason & John ChapinEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |