Bytes per splat is measured on a test file: an interior scan of a room, 711,677 splats, with degree-3 spherical harmonics.
| Format | Source | Year | B/splat | Lossy | SH | Extensible | Fixed order |
|---|---|---|---|---|---|---|---|
.ply |
INRIA convention (reference) | 2023 | 248.0 | no | yes | yes1 | no |
.splat |
antimatter15 | 2023 | 32.0 | yes | no2 | no | no |
.sog |
PlayCanvas | 2025 | 17.4 | yes | yes | unofficial3 | yes4 |
.ksplat |
GaussianSplats3D | 2023 | 48.1–140.05 | levels 1–2 | ≤2 | no | yes6 |
.glb |
KHR_gaussian_splatting |
20267 | 220–2408 | optional | yes | yes9 | no |
.lcc |
XGRIDS | 202510 | 32–9611 | yes | 0 or 3 | unofficial12 | yes13 |
.spz v3 |
Niantic | 202514 | 20.9 | yes | yes | no | no15 |
.spz v4 |
Niantic | 2026 | 19.9 | yes | yes | yes16 | no15 |
.usd |
ParticleField3DGaussianSplat |
202617 | 118.0–236.018 | optional | yes | yes19 | no |
.rad |
Spark 2.0 / World Labs | 2026 | 64.920 | yes | yes | yes21 | yes22 |
These formats do not define their own splat encoding. They organize other formats into a spatial tree with levels of detail, for streaming.
| Format | Source | Contains |
|---|---|---|
"streamed" .sog |
PlayCanvas | standard unbundled .sog chunks |
.lcc2 |
XGRIDS | leaf data as .ply, .spz, or .sog (splatType field) |
Footnotes
-
.ply: arbitrary header properties. ↩ -
.splat: no SH at all — view-dependent color is dropped, which disqualifies it for our use. ↩ -
.sog: zip file with a JSONmeta.json. ↩ -
.sog: spatially ordered — it's in the name. ↩ -
.ksplat: compression level 2; level 1: 72.1, level 0: 140.0. Layout specified only by source code. ↩ -
.ksplat: at levels 1–2 (spatial buckets); free at level 0. ↩ -
.glb: release candidate. ↩ -
.glb: maximally quantized; all-float32: 240.0. SH must stay float32. ↩ -
.glb: glTF extension mechanism. ↩ -
.lcc: whitepaper published; format shipped earlier in XGRIDS tools. ↩ -
.lcc: from the spec, not measured; 32 without SH. ↩ -
.lcc: versioned JSONmeta.lcc. ↩ -
.lcc: spatial nodes + LoD levels. ↩ -
.spz: v1: 2024. ↩ -
.spz: vendor extension records. ↩ -
.usd: schema added in OpenUSD 26.03. ↩ -
.usd: float16 attributes; float32: 236.0. Raw arrays, UsdVol schema. ↩ -
.usd: USD schemas / applied APIs. ↩ -
.rad: per input splat; 45.7 per stored splat — the LoD tree adds ~42% splats. ↩ -
.rad: JSON chunk headers with named encodings. ↩ -
.rad: LoD tree + spatial 64K-splat chunks. ↩