Output Formats
Every scene gets two output formats: SOG (compressed, web-optimized) and PLY (raw Gaussian Splat data). Most can also be downloaded as SPZ, for native viewers. The output.formats parameter is accepted but has no effect: nothing reads it (_upload_to_r2 in pipeline/storage/upload.py).
SOG (Super-Optimized Gaussians)
SOG is a compressed format designed specifically for fast web delivery. It uses quantization and efficient packing to reduce file sizes by 3-5x compared to raw PLY while maintaining visual quality.
Characteristics:
- Typically 5-15 MB for a full scene
- Loads in 1-3 seconds on a typical connection
- Renders with the PlayCanvas gsplat viewer
- Lossy compression — fine details may be slightly reduced
When to use: For anything that loads in a browser. Web apps, embeds, shareable links, mobile viewers. A download sends it when you don’t name a format and the scene has no SPZ.
PLY is the standard interchange format for Gaussian Splats. It stores the full, uncompressed Gaussian parameters (position, covariance, color, opacity, spherical harmonics).
Characteristics:
- Typically 30-80 MB depending on the number of Gaussians
- Contains all Gaussian parameters at full precision
- Compatible with all major Gaussian Splat viewers and editors
- Lossless — exact training output
When to use: When you need to post-process, edit, or analyze the Gaussian Splat data. Research, offline rendering, format conversion, or feeding into other tools.
Downloading
When downloading without format, the scene’s SPZ is served, otherwise its SOG, then its PLY; the X-Splat-Format header names the file sent. The scene’s format field names the file expected, but the header decides: a scene whose SPZ is missing from storage reports spz and sends SOG. Add ?format=sog or ?format=ply to the download URL for that file. The endpoint answers 200 with the file itself (downloadScene in api/src/lib/scenes.ts); pass -o <filename> to write it to a known path:
SPZ
SPZ is Niantic’s compressed format for Gaussian Splats: smaller than PLY, larger than SOG. Use it with viewers that load .spz files directly, such as native renderers. On iOS, SplatKit renders SPZ natively (iOS 17, A14 or M1 chip or newer).
SPZ is the default download. After training, every scene is converted to SPZ on a best-effort basis, so some older scenes, and scenes whose conversion failed, have none. For those, a download without format sends SOG, while ?format=spz returns 404 not_found; it never sends another format instead.
Viewing SOG files
SOG files are rendered using the PlayCanvas gsplat viewer. You can:
- View on Splat3D — every completed scene has a shareable link at
https://splat-3d.com/tour/{sceneId}
- Embed in your app — use the PlayCanvas viewer library directly
- Use SuperSplat — the open-source desktop viewer from PlayCanvas
Working with PLY files
PLY files are compatible with a wide ecosystem of tools:
For web delivery, always use SOG. Download PLY only when you need the raw data for offline processing or compatibility with third-party tools.