BVC is the volumetric pillar of the Bitruvius Suite — built by the team behind TurboLEPCC and TurboSPZ.

Explore the Suite
Bitruvius Volumetric Codec | BVC Coming Soon Patent Pending

Splats. Point clouds. One codec, at GPU speed.

BVC compresses the two formats 3D actually ships in — lidar point clouds and Gaussian splats — into lossless files smaller than the incumbents' lossy ones, then adds the axes they can't reach: GPU decode, browser decode, exact data.

Performance

Three numbers
that matter.

Every figure on this page is reproduced by committed benchmark harnesses on public test data, on two reference machines — a 24-core Intel workstation and an Apple M3 Max — producing byte-identical files on both.

Peak read throughput
0.00B pts/s

billion points per second at scale

Apple M3 Max, 16 cores — the read dial of the same wire

vs Esri LEPCC (streaming standard)
−0.0%

our lossless file vs their lossy one

they degrade the data and still lose on size

vs LAZ (archive standard)
0×

faster reads on a single core — in a 34% smaller file

a 10.65M-point survey: ~4 s as LAZ, 16 ms as BVC flagship at scale

Head-to-Head

Same data. Same machine.
Smaller files.

Identical input, identical tiling, measured against the strongest implementation of each competing format — including our own Turbo line, which already outperforms the format owners' shipping libraries. Shorter bar wins.

Gaussian splats — bytes per splat (786K-splat capture, full color detail)

BVC — compact (SH compressed) compact tier — smallest here, better measured color than SOG
14.32
SOG (post-hoc) lossy — k-means SH compression
14.57
Qualcomm L-GSC lossy — own quant grid + zlib, private bitstream (compLevel 2)
18.27
BVC — exact (bit-lossless) every attribute bit-exact — and still smaller than SPZ’s lossy file
22.49
Niantic SPZ lossy — quantizes on ingest, degrades on every re-encode
23.09

SOG and SPZ are both lossy — and only lossy. BVC is the only splat codec here with a bit-exact mode — and even that exact file undercuts SPZ's lossy one, so it beats SPZ without dropping a bit. The compact tier goes smaller still, at a declared fidelity. "Single-digit bytes per splat" headlines elsewhere require retraining the splat model — a different product category. Among encoders that compress what you already have, BVC leads at every fidelity point.

Point clouds — bytes per point (the exact files in the live race below — 1.06M-pt Autzen tile)

BVC — crown (palette-256) single-pass 256-color palette · smallest file of the field
5.78
BVC — lossless flagship dial — full color, exact data
6.80
Esri LEPCC — lossy posterized color · no gps_time (can’t encode it)
6.87
Draco — lossless Google · same 1 cm grid
7.02
meshopt — lossless Khronos codec · same grid
7.18
LAZ — lossless archive standard
8.87

Head-to-Head Performance

Encode and decode.
Versus the field, on every chip.

Same data, same machine, same number of threads — point clouds on a 10.65-million-point survey, splats on a 786K-splat capture. Bars are single-core where the format allows nothing more; chips show what each codec does when given the whole machine.

On the GPU — end-to-end decode, million points per second

whole-file decode including all transfers · verified bit-exact on both stacks

NVIDIA RTX (Vulkan)

Decode straight to renderer (zero readback)
129.6
GPU-resident incl. readback to CPU
71.5
Cold decode to CPU memory
44.6

Apple M3 Max (Metal)

GPU-resident incl. readback to CPU
71.8
Decode straight to renderer (zero readback)
60.7
Cold decode to CPU memory
54.7

Where are the competitor bars? There are none — no GPU decoder ships for LAZ, LEPCC, SPZ, Draco, or the KHR_meshopt bitstream. Those formats were designed for serial CPU decode (chained arithmetic coding, serial compressed streams), and a decade of GPU hardware hasn't produced one: Draco's own tracker closed “Run Draco on GPU?” without a path — GPU dequantization of CPU-decoded output is not bitstream decode — and meshoptimizer decompresses on the CPU by design (its experimental GPU meshlet decoder targets a different format, not the KHR bitstream). BVC is the only format of the six designed for GPU decode — and the only one with a shipping, bit-exact GPU decoder on both major APIs. The empty column is the result.

In a renderer, buffers persist and decode runs at kernel rate — billions of values per second. Compressed tiles also move 2.5× less data over the bus than raw points.

Now in the browser — decode on the page's own GPU (WebGPU)

Resident decode, million points/s · output stays in GPU storage buffers (zero readback) · SHA-256 digest-gated byte-identical, all 214 Autzen tiles

Chrome · Apple M3 Max · Metal via Dawn 292.7 Mpts/s
292.7
Safari · Apple M3 Max · WebKit WebGPU — independent impl, bit-identical 203.1 Mpts/s
203.1
Chrome · NVIDIA RTX PRO 5000 · Vulkan via Dawn 69.5 Mpts/s
69.5

The wire decodes on the browser's GPU in both Chrome (Dawn) and Safari (WebKit) — two independent WebGPU implementations agreeing bit-for-bit with the reference. Apple's unified memory runs it ~4× the NVIDIA readback-walled path. It's the same bytes proven identical across seven environments — x86, ARM, WASM-CPU, native GPU, and browser WebGPU on both vendors. No LAZ / LEPCC / SPZ / Draco / meshopt path decodes on the browser GPU at any setting.

And Gaussian splats, too — on the browser's GPU

Resident splat decode, million splats/s · hornedlizard 786K-splat capture (deg-3 SH) · SH-compressed GPU wire (22.6 B/splat) · zero readback · per-tile SHA-256 digest-gated + packed arena byte-identical to the CPU packer

Chrome · Apple M3 Max · Metal via Dawn — 2.9× the same-run WASM-CPU decode 72 Mspl/s
72
Chrome · NVIDIA RTX PRO 5000 · Vulkan via Dawn 19.6 Mspl/s
19.6

The splat's entropy stage runs on the page's own GPU — channels and SH leaf indices land in GPU storage buffers a renderer reads directly (the codebook is sampled as a resident texture at shade time). Digest-gated byte-identical on both Apple Metal and NVIDIA. On Apple's unified memory the resident path beats the same-run WASM-CPU decode by 2.9× — more than the RTX's 1.1×, since there's no readback wall. The bit-exact tier decodes resident at 40.2 (M3) / 10.3 (RTX) Mspl/s. No SPZ / SOG / L-GSC path decodes a splat on the browser GPU at any setting.

Encode, too — faster than the full-machine CPU

read-dial GPU encode vs the full multi-core CPU encoder · byte-identical · 1.06M-point tile

NVIDIA RTX PRO 5000 · Vulkan · vs full 24-core CPU 1.49× CPU
1.49×
Apple M3 Max · Metal · vs full 16-core CPU 1.17× CPU
1.17×

Dashed line = full-CPU parity (1.0×). Both backends beat their own full multi-core CPU encoder, byte-identical — and the lead widens with tile size (M3 Max reaches 1.35× at 4M points). BVC is the only point-cloud codec that encodes on the GPU; every other format's encoder is CPU-serial.

Prove It

Race it yourself. Right here.

BVC against the field, live in your browser. A 786k-splat Gaussian capture, BVC vs Niantic SPZ — and a ~1.06M-point LiDAR scan decoded and rendered georeferenced: BVC crown (palette-256), the LEPCC fidelity class, vs Esri's LEPCC head-to-head. Same data, different containers; watch the size and the clock. Swap in the flagship or read-dial BVC lanes — or Google's Draco and the Khronos meshopt codec — from the dropdown.

WebGPU 3D Loading Showcase — 10.65M points decoded on YOUR GPU — live in your browser open full screen ↗
loading demo…
WebGL2 Splat Codec Race — BVC vs Niantic SPZ — live in your browser open full screen ↗
loading demo…
WebGL2 Point-Cloud Codec Race — BVC palette-256 vs Esri LEPCC — live in your browser open full screen ↗
loading demo…

The Moat

The volumetric format
built to decode on the GPU.

LAZ, LEPCC, SPZ, Draco, and meshopt were designed for serial CPU decode — a property of the file formats themselves. No implementation can fix them; for LAZ, LEPCC, and SPZ we built the fastest decoders in existence and hit each format's ceiling personally. BVC is what you design after that: a wire format whose decode splits across CPU cores, browser threads, and GPU workgroups natively — the only one of the six with a shipping, bit-exact GPU decoder.

Start-to-finish GPU decode

A real BVC file decodes end-to-end on the GPU — including the entropy stage every competing format must run on a CPU. Verified bit-exact on both major GPU ecosystems: NVIDIA (Vulkan) and Apple (Metal). In a renderer, decode runs at kernel rate — billions of values per second.

2.5× less bus traffic

Compressed tiles move 2.5× less data across the bus and through GPU memory than raw points — the multiplier that decides how many assets stream at once. The incumbents cannot run this experiment at all.

A 258 KB browser decoder

The same decoder ships for the web: 258 kilobytes of WebAssembly, SIMD-accelerated, both profiles. The same file serves archive, server, browser, and GPU — no transcode step anywhere in the pipeline.

One wire. Every operating point.

Maximum compression, fastest reads, fastest writes, or fully GPU-native files — every trade-off is an encoder-side dial recorded in the file. One format, one decoder, the whole frontier. The GPU-native dial costs just 7.7% over maximum compression.

Why the other five can't follow

Each incumbent decodes its bitstream with a serial primitive — a coder whose next symbol depends on the state left by the last one. That maps to a CPU core, not thousands of GPU lanes. They can dequantize or rasterize already-decoded points on the GPU; the decode itself stays on the CPU.

LAZ / COPC
Per-symbol arithmetic (range) coder over a 50,000-point prediction chain — each symbol waits on the previous decoder state.
Draco
Serial rANS entropy plus EdgeBreaker prediction. Its own tracker closed “Run Draco on GPU?” with no path — none ships today.
meshopt
A per-vertex delta-prediction chain in the KHR_meshopt_compression attribute stream, decoded on the CPU by design. (meshoptimizer's GPU meshlet decoder targets a different bitstream.)
Esri LEPCC
Canonical Huffman plus fixed-width bit-stuffing plus delta prefix-sums — serial per block.
Niantic SPZ
General-purpose LZ entropy — gzip/DEFLATE, and six Zstandard frames in v4 — with back-references into already-decoded output. CPU-bound.

GPU dequantization or rasterization of CPU-decoded points is not bitstream decode. No shipping or experimental GPU decoder of these five bitstreams exists as of July 2026 — BVC is the only one of the six that runs the entropy stage on the GPU.

Data Integrity

Your data, exactly.
Or bounded — and declared.

The incumbents lose data silently — and offer no alternative. Esri's LEPCC posterizes color; on the industry-standard test cloud it altered 98.6% of all points. SPZ and SOG are lossy-only: SPZ quantizes on ingest and degrades every re-encode, like re-saving a JPEG; SOG's k-means SH compression has no lossless setting. BVC offers true lossless for both point clouds and splats — and where loss is chosen, it is a declared dial with a guaranteed worst-case error written into the workflow, never a surprise.

Bit-exact, everywhere

Every supported platform — Intel, AMD, Apple Silicon, WebAssembly, and two GPU stacks — produces and verifies byte-identical files, enforced by cryptographic hash gates in continuous testing.

Better custody than the source

Measured and committed: SPZ cannot round-trip its own files — every pass moves every color coefficient. BVC ingests once and never degrades again. It preserves SPZ content better than SPZ preserves itself.

Numbers that survive diligence

Every claim traces to a committed harness on public data. When a measurement flaw was found that flattered us, every published number was corrected the same day — and still won every column.

Coming Soon

Not a paper. A product.

Command-line tools

LAS/LAZ in, BVC out — one command, quantization metadata carried end to end.

SPZ converter

Round-trips real Gaussian-splat files with positions, opacity, scale, and color exact — 33% smaller on disk.

Browser package

The 258 KB WebAssembly decoder, with a MapLibre rendering SDK in active development.

GPU decode library

Both profiles on Vulkan and Metal, parity-locked against the CPU decoder.

Bounded-accuracy dials

Survey-grade tolerance controls: centimeter-bounded geometry, declared color precision.

Language bindings

Python, Node, JVM, .NET, and C — one core, every runtime.

Access

Free decoder. Paid encoder.

Ahead of general availability, BVC is onboarding a limited cohort of design partners — teams whose workloads match the codec's strengths: petabyte-scale lidar archives, streaming 3D platforms, Gaussian-splat pipelines. Participation is by application and qualification, and includes direct engineering access and a voice in the roadmap.

Decoder

Free

Anyone who needs to read BVC-encoded data can pull the decoder from the Bitruvius Developer Hub — desktop, browser, and GPU. Compiled binaries for every supported platform; no source. The adoption flywheel is intentional.

Encoder + Decoder

Commercial license

Production encoding requires a paid license. Tiers, seats, transactions, and OEM redistribution are listed on the pricing page. All artifacts are compiled binaries.

Compiled-only distribution is intentional: it keeps the patent-pending novelty out of source and protects implementation IP across the supply chain.

The volumetric format
the GPU was waiting for.

The incumbents' speed limits are wire-format facts — fixing them means breaking every existing file. Any response starts from zero, years behind, against a moving target. Early access is limited and by qualification.

See Pricing

Esri, ArcGIS, I3S, and LERC are trademarks of Environmental Systems Research Institute, Inc.; Niantic and SPZ are trademarks of Niantic, Inc. / Niantic Spatial, Inc. These names are used solely to identify the products and formats being compared; no affiliation, sponsorship, or endorsement is implied. The live demos run Esri's unmodified LEPCC reference decoder (Apache 2.0) and Niantic's unmodified libspz reference decoder (MIT) under their respective licenses, alongside laz-perf (Apache 2.0). Benchmark data: the Autzen Stadium LiDAR scan, the openly distributed benchmark dataset popularized by the PDAL project, and sample capture scenes © Niantic from the open-source libspz repository (MIT). BVC is an independent Bitruvius format and implementation. Performance comparisons reflect our own measurements under the stated methodology; results vary by workload and hardware. Full third-party notices: Attributions.