Giant splat PLY → SuperSplat-ready Streamed SOG with real LODs
This free tool turns a 3D Gaussian Splatting PLY of any size into a Streamed SOG archive with levels of detail (LOD) and SOG compression, ready to upload to superspl.at. It runs entirely in your browser on your own GPU and CPU: the file is never uploaded, and there is nothing to install.

- Nothing uploaded
- No install
- Your GPU + CPU
- LOD + compression
- Open source (MIT)
Converter
Choose your PLY
Drop a .ply file here
The file stays on your computer — it is read locally, never sent anywhere.
Levels of detail that will be built
| Level | Splats | Share |
|---|
Settings
Pick the kind of scene — each preset sets the levels and streaming chunks for how it will be viewed. “SuperSplat standard” is exactly what superspl.at builds itself. Everything stays editable below.
Custom settings (changed in Advanced). Pick a preset to reset them.
Advanced settings (optional)
Convert and save
You will be asked where to save the .zip. It is written straight to that file as it is built, so the PC needs free disk space of about 10% of the PLY size.
Technical log
How it works
Plan the levels like SuperSplat
The PLY header is read in a split second. The tool plans the levels of detail the same way superspl.at does on its servers: each level keeps half of the previous one, until the coarsest holds at most 1 million splats — 10 levels for a 259-million-splat scan.
Cut the scene into tiles that fit
A browser tab can hold about 16 GB, and no single array may exceed 2 GB. So the scene is split into spatial tiles sized to the RAM you allow; a few sequential passes over the file load the tiles. That is how hundreds of millions of splats fit in a tab.
Simplify and compress on your hardware
For every tile, splat-transform (PlayCanvas, MIT) merges neighbouring splats to build each coarser level — on your GPU via WebGPU — and compresses every streaming chunk to SOG: quantised positions, rotations and colours in lossless WebP textures.
Write one archive, then check it
All chunks stream into one ZIP64 archive on your disk with lod-meta.json at the root, exactly the layout superspl.at accepts. When it is done the tool reads the archive back and checks every level, chunk and file before it says so.
Why real LODs matter (and the mistake they fix)
A Streamed SOG with a single level is just the full-detail scene cut into chunks: the viewer still has to fetch full detail everywhere it looks, and the first frame waits for it. With real levels, SuperSplat shows the coarsest level within seconds and streams finer levels only near the camera, staying inside its 1–4 million splat budget on any device.
Many hand-made bundles have exactly that problem — split into chunks, but with one level, so there is nothing coarser to show. This converter always builds the whole level pyramid, and its final check refuses an archive with one level for any scene over 1 million splats.
How it compares
As of 2 October 2026.
| This converter | superspl.at upload (Auto LODs) | superspl.at/convert | splat-transform CLI | |
|---|---|---|---|---|
| Largest input | No fixed limit — tiles fit any size; tested on 259M splats / 17.6 GB | 10 GB per upload | What fits in one tab | Your RAM |
| Levels of detail | Yes — halving to ≤ 1M, like SuperSplat | Yes (on their servers) | No Streamed SOG output | Yes — two manual steps per level |
| Runs on | Your browser (your GPU + CPU) | Their servers (after upload) | Your browser | Your PC |
| Install | Nothing | Nothing | Nothing | Node.js 22 + npm |
| Output check | Reads the archive back: levels, chunks, files | — | Statistics table | --info on the folder |
What works, what's in progress, what's next
Works
- Full run on a 259-million-splat / 17.6 GB city scan: 10 levels, 5.9 GB, 1 h 53 min, verified
- Binary PLY (little/big-endian, SH 0–3) → Streamed SOG .zip with LOD levels and SOG compression
- Scene presets: SuperSplat standard, city from a drone, streets, interiors, objects, light for phones and VR
- Scenes far beyond one tab's memory, via spatial tiles
- ZIP64 archives over 4 GB
- WebGPU acceleration (Chrome, Edge)
- Read-back verification of the finished archive
- Live progress, error display and error reports
In progress
- Upload of the 259-million-splat test scan to superspl.at
Next
- Resume after a crash or a closed tab
- Optional direct upload to SuperSplat with your API token
- Separate sky / environment layer
- Compressed PLY and SPZ input
Limits and risks — read before a big run
- Use desktop Chrome or Edge. They can save straight to disk and use WebGPU. Firefox and Safari fall back to browser storage, which needs as much free space as the archive and then a download.
- Big scenes take hours. Measured: 259 million splats in 1 h 53 min on a workstation with an RTX 4090 (about 45 minutes per 100 million). Expect much longer on a laptop or without a GPU.
- Keep the tab open. Closing it or a crash stops the conversion; it cannot resume yet.
- Memory: a tab may use about 16 GB. If your PC has 16 GB or less, set “RAM to use” to 4–6 GB.
- The archive is about 5–10% of the PLY size. superspl.at accepts up to 10 GB per upload; drop SH bands if a huge scene goes over.
- Beta. If something breaks, the error is shown on the page; with your permission an anonymous report is sent so it can be fixed.
Questions
How do I upload a PLY larger than 10 GB to SuperSplat?
superspl.at accepts at most 10 GB per upload. Convert the PLY here into a Streamed SOG .zip — usually 5–10% of the PLY size — and upload that .zip at superspl.at → Upload. The archive already contains the levels of detail, so SuperSplat publishes it as-is.
What is Streamed SOG (SSOG) and lod-meta.json?
Streamed SOG is PlayCanvas's streaming format for large Gaussian splat scenes: a lod-meta.json index with a spatial tree, plus many small SOG chunks (meta.json + WebP textures), each holding one level of detail of one region. The viewer downloads only the chunks and levels it needs.
Why does my Streamed SOG have no levels of detail?
Because it was built from a single PLY without decimated levels: splat-transform then writes one level, cut into chunks. Real LODs need the coarser levels to be generated (decimated) and tagged. This tool does that automatically; check “lodLevels” in lod-meta.json — it should be more than 1.
Is my scan uploaded anywhere?
No. The file is read by your browser and processed on your computer. The server only delivers this page. If you allow it, an error report sends technical details (browser, GPU, settings, the error text) — never the file or its name.
Which browser and hardware do I need?
Desktop Chrome or Edge with WebGPU (any recent NVIDIA, AMD, Intel or Apple GPU). 16 GB of RAM or more is comfortable; with 8 GB set “RAM to use” to 4 GB. The tool works without a GPU too, about four times slower.
How long does it take, and how big is the result?
Measured on a workstation with an RTX 4090: 259 million splats (17.6 GB) in 1 h 53 min — about 45 minutes per 100 million splats; a laptop or a run without GPU takes several times longer. The archive is about 12 bytes per splat over all levels for scans without spherical harmonics: 5.9 GB for those 259 million splats (10 levels, 977 chunks).
How many LOD levels are created, and why?
Each level keeps half of the previous one until a level holds at most 1 million splats: 1 + ⌈log₂(N / 1M)⌉ levels — the same policy superspl.at uses when it builds LODs itself. The coarsest level fits the smallest viewer budget, so the first frame appears fast on phones and headsets too.
Can I use the archive outside SuperSplat?
Yes. It is a standard Streamed SOG: unzip it and load lod-meta.json with the PlayCanvas engine's Gaussian splat LOD streaming, or read it back with splat-transform.
Is it free and open source? Can I host it myself?
Yes — free, MIT-licensed, built on PlayCanvas splat-transform (MIT). The code and a Docker setup are on GitHub: AndriiShramko/shramko-sog-lod-converter.
Which preset should I pick?
For a city or landscape scanned from a drone: “City from a drone”. For walk-throughs at street level: “Streets at eye level”. Inside buildings: “Rooms & interiors”. One object: “Object / small scan”. If the scene must open smoothly on phones and VR headsets: “Light”. “SuperSplat standard” reproduces exactly what superspl.at builds itself. The page shows how heavy the first view is for each choice.
For your AI agent
Working with an AI coding agent? Paste this so it knows how to prepare scans for SuperSplat.
Task: prepare a large 3D Gaussian Splatting PLY for superspl.at (limit 10 GB per upload). Use https://sog.flyreelstudio.eu (runs in the browser, nothing uploaded) or the open-source repo https://github.com/AndriiShramko/shramko-sog-lod-converter. Output: a Streamed SOG .zip with lod-meta.json at the root and real LOD levels (each level = half of the previous, until <= 1M splats). Verify before upload: lodLevels > 1, counts decrease, every file in filenames exists (run tools/verify-zip.ts from the repo). Then upload the .zip at https://superspl.at → Upload.
Who made this, and working together
I'm Andrii Shramko — I scan whole cities and buildings as 3D Gaussian splats with drones and build tools around them. I made this converter because my own scans (250M+ splats) did not fit SuperSplat's upload and the existing tools didn't build real LODs.
Open to interesting people, ready to help teams build ambitious projects — scanning, splat pipelines, viewers, VR, partnerships, licensing or funding.
Privacy
Controller: Andrii Shramko, Bydgoszcz, Poland — zmei116@gmail.com. Your PLY files never leave your computer. The server stores only what you send on purpose: feedback and cooperation messages (with a contact if you give one) and, if you allow it, anonymous error reports (browser, GPU, settings, conversion stage, error text — no file, no file name).
Page-use counters are kept without cookies and without IP addresses. Google Analytics is loaded only after you accept it in the banner. Messages and reports are kept for up to 12 months and are used only to reply and to fix the tool.
You can ask for a copy or deletion of your data at any time: write to zmei116@gmail.com.
