FP-CODEC — at1 fpcodec

FP-CODEC squeezes cold text and log archives smaller than both zstd and xz, and is built so a file you make on one machine decodes to the exact same bytes on any other machine. It is a deterministic context-mixing coder — frequency-count context models, a single logistic mixer, and an arithmetic coder with lpaq-style APM/SSE refinement. On enwik8 it lands ≈2.03 bits/char, below zstd-19 (≈2.29) and lzma-9e (≈2.23), byte-exact lossless. Because it is integer-only— no float, no fused-multiply-add, no transcendentals — the same source compiled to native, wasm32 and ARM64 produces byte-identical compressed streams.

Use it

# compress a cold text / log archive to a verified deterministic stream (byte-exact, never-worse)
at1 fpcodec c access.log access.log.at1

# optional tiny domain-matched prior for the log / small-file tier
at1 fpcodec c corpus.txt corpus.txt.at1 --prior logs

# decode to the exact original bytes, on any platform
at1 fpcodec d access.log.at1 access.log

# integrity check: SHA-256 of the decoded stream matches the original
at1 fpcodec verify access.log.at1

What you get

  • Bit-identical across platforms — 0 divergent bits over 10⁶ symbols across x86-64 / wasm32 / ARM64; the SHA-256 of the stream matches on every arch.
  • Verified & never-worse — every archive carries a SHA-256 verified-lossless trailer, and if context-mixing does not win it falls back to xz / zstd / stored, so the output is never larger than the baseline.
  • Tiny, portable decoder — no model files or tables to ship; the decoder is the same small integer-only kernel that made the archive.

Where it is honestly not the pick: it is a context-mixing coder, so it is slower than zstd— this is a cold-archive tier (store forever, decode rarely), not a hot-path general codec. Dedicated research coders (paq / cmix) can push raw text ratio further, but are neither deterministic across platforms nor verified. Decoding and verifying are always free; encoding is metered against a connected account.

See the FP-CODEC product page and the benchmarks; for queryable typed data reach for format-aware columnar or ATLAS instead.

← CLI reference