How to open a .ply or .spz Gaussian splat file
By Atlas World Model EditorialUpdated 4 min read
Key facts
| Fastest path | Browser viewer, no upload, no install(as of 2026-09-05)source |
|---|---|
| Formats read | .ply, .spz, .splat, .ksplat(as of 2026-09-05) |
| Requirement | A WebGL2-capable browser(as of 2026-09-05) |
| Comfortable on phones | Roughly 1-2 million splats (our rough experience with Spark on recent phones, not a published figure)(as of 2026-09-05) |
You exported a world from Marble, or finished a training run, and now you have a .ply or .spz file that no application on your machine wants to open. Blender shows nothing useful, the system previewer shows nothing at all, and the file is 250 MB. Here is the short version: open it in a browser.
The fast path
Drop the file into the splat viewer on this site. It reads .ply, .spz, .splat and .ksplat, renders locally with World Labs’ open-source Spark renderer on top of three.js, and never uploads anything. Left-drag orbits, right-drag pans, scroll zooms.
That is the whole procedure for the common case. The rest of this page is for when it does not work.
Why a browser, and not Blender
Gaussian splats are not meshes and not point clouds. A splat is an ellipsoid with opacity and view-dependent colour, and rendering one requires sorting millions of them by depth every frame and alpha-blending the result. Mesh tools have no path for that, so they either show nothing or show the splat centres as a sad grey cloud.
Browsers became the most convenient place to view splats because WebGL2 does the sorting work well enough and because the format is small enough to stream. Native tooling has been catching up through engine plugins, but for looking at a file the browser is still the shortest route, and it has the useful property that nothing is uploaded.
When the file will not open
Nothing renders, no error. Check that the .ply is actually a splat file. A splat PLY declares properties named f_dc_0, f_dc_1, f_dc_2, opacity, scale_0 and rot_0 in its header. A photogrammetry or LiDAR PLY declares x, y, z and maybe red, green, blue, and no viewer can turn that into splats. Read the first few hundred bytes of the file to check:
head -c 2000 scene.ply | strings | head -40
The scene is upside down or lying on its side. Axis conventions differ between pipelines; several export with Y pointing down. Some viewers flip by default, which is why a file that looks correct in one viewer looks inverted in another. Rotating the view is enough for inspection; for a pipeline, fix it at export time so downstream tools agree.
Everything is black, or flat and matte. The spherical-harmonic coefficients are missing. This usually happens after a format conversion that dropped SH degrees to save space, or after a round-trip through .splat, which stores a single RGBA colour per splat by design. Open the original .ply to confirm the data is intact, and redo the conversion keeping SH.
The tab runs out of memory. A .ply at 248 bytes per splat becomes a much larger GPU allocation once decoded. Convert to .spz first, which cuts the download roughly tenfold, and if the scene is still too heavy the honest fix is fewer splats, not a different format. The format guide covers what each option costs.
It loads, slowly, then stutters. Sorting is the bottleneck, not decoding. Close other GPU-heavy tabs, and prefer a discrete GPU if your machine switches automatically. On phones, expect roughly 1-2 million splats to be comfortable.
Checking a file before you look at it
Two commands answer most questions about an unfamiliar splat file. Splat count and property list come straight from the PLY header:
head -c 2000 scene.ply | strings | grep -E 'element vertex|property float (f_dc|scale|rot|opacity)' | head -20
The splat count is in the header too, which is the quickest sanity check on whether a file is what someone says it is:
grep -a -m1 "element vertex" scene.ply
That prints element vertex 1234567, the number of splats. Dividing the raw file size by 248 only works after you subtract the ASCII header (usually one to two kilobytes), which is why a naive division almost never comes out to a whole number. If the header count times 248 is far from the file size minus the header, the file is compressed or uses a non-standard layout.
Other ways to open one
The browser is the fastest path, not the only one:
- Engine plugins. Unity and Unreal both have community Gaussian splat renderers; this is the route when the goal is to use the world in a game rather than to look at it. See the game development guide.
- Standalone web viewers. antimatter15/splat and GaussianSplats3D are two widely used open-source viewers, each with its own preferred format.
- The training repository. The Inria implementation ships a SIBR-based real-time viewer. It is the reference for correctness and the heaviest thing to install.
Working with Marble and Atlas exports
Marble exports worlds as splats you can download directly, and both .ply and .spz open in a browser viewer without conversion (World Labs docs). Atlas is expected to produce assets from the same family once access opens. Worlds generated with the image, text or video tools on this site open in the same viewer automatically and download as .spz; files exported from Marble can be dropped here as well.
Bottom line
A splat file is a browser problem, not a desktop one. Drop it into a viewer, and if it refuses, check the PLY header before you try another tool. Nine times out of ten the file is either a plain point cloud wearing a .ply extension, or a conversion that quietly discarded the view-dependent colour.
Sources
Frequently asked questions
Do I need to upload my splat file anywhere?
No. A browser viewer reads the file from disk with the File API and renders it on your GPU. Nothing leaves your machine, which also means confidential captures are safe to open.
Why does my splat render upside down?
Many training pipelines export with the Y axis pointing down. Some viewers flip the model by default; if yours does not, rotate 180 degrees on X or re-export with the opposite convention.
Why is my .ply not loading at all?
It is probably a plain point cloud rather than a splat. A splat PLY contains f_dc_0 and scale_0 properties; a photogrammetry PLY does not, and no splat viewer can render it.
Why does the scene look black or washed out?
Usually the spherical-harmonic coefficients were dropped during a format conversion, leaving base colour only, or the opacity was quantised too hard. Open the original .ply to confirm.
How big a file can a browser handle?
Several million splats load on a modern laptop. Phones are comfortable to roughly 1-2 million. Converting to .spz cuts download size about 10x without reducing splat count.
Can I open Marble exports this way?
Yes. Download the world as .ply or .spz from Marble and drop it straight into the viewer.