A Framework for Time Series Compression

TerseTS is an open-source library of lossless and lossy compression methods for compressing time series — implemented in Zig, with a C ABI and bindings for Python, Julia and Rust.

Beta — not yet production ready

What is TerseTS?

TerseTS provides compression methods for lossless and lossy compression of time series. The lossy compression methods are organized into a hierarchy of families — each representing a distinct approach to approximating a series — so you can reason about them by strategy rather than by name. The library is implemented in Zig and exposes a Zig API and a C API, with bindings for several languages.

Hierarchy of the lossy time series compression methods implemented in TerseTS
The families of lossy compression methods implemented in TerseTS.

Lossy & lossless

Functional approximation, line simplification, domain transforms, value representation, and exact compression methods.

Error-bounded

Configure lossy compression with absolute or relative error bounds, so you trade size against accuracy on your terms.

Native & portable

A small C ABI built in Zig makes TerseTS easy to wrap from almost any language.

Use it from your stack

The native library exposes a Zig API and a C API, with first-class bindings for:

See the documentation for per-language usage examples, or jump straight into the console to compress a series in your browser.

Citing TerseTS

If TerseTS contributes to a publication, please cite our open-access demo paper. The demo was presented at EDBT 2026 in Tampere and received an Honorable Mention for the Best Demo Award.

@inproceedings{TerseTS:Demo:2026,
  author    = {Carlos Enrique Muñiz-Cuza and Søren Kejser Jensen and
               Tom Louis Klein and Sabina Bakhtiiarova and
               Matthias Boehm and Torben Bach Pedersen},
  title     = {TerseTS: A Framework for Time Series Compression},
  booktitle = {Proceedings 29th International Conference on Extending
               Database Technology (EDBT)},
  pages     = {760--763},
  publisher = {OpenProceedings.org},
  year      = {2026},
  doi       = {10.48786/EDBT.2026.74}
}