Chronosplat Plays 4D Gaussian Splat Sequences From Static Files in the Browser

Michael Rubloff

Chronosplat is a GPLv3 licensed browser player for 4D gaussian splatting animations that runs as static files with no server.
Chronosplat plays an animation as a flipbook of independently compressed frames, streamed and swapped in the browser, with spherical harmonics preserved so surfaces keep their view dependent response under orbit. The player is a static Three.js and Spark application. Orbit, pan and zoom persist across frame changes, and a timeline carries play, pause, scrub, loop and an adjustable fps override.
Frames stream through a bounded memory window, so a long sequence never fully loads. Two playback modes decide what happens when decoding falls behind, every frame showing all frames at a reduced rate, realtime holding the authored duration by dropping frames that miss their slot. Multiple sequences share one deployment behind a dropdown, each with its own saved camera, orientation and background, and deep links reopen an exact frame and viewpoint.
The converter, tools/convert.py, takes a PLY sequence from any 3DGS exporter and emits per-frame SOG plus a manifest. Frame count, source fps, splat count, SH degree and attribute layout are all detected from the files, and none of them is configured. Every frame is checked for a matching schema, property list and splat count before anything is encoded, so an input glob spanning two versions of a sequence fails loudly at preflight. Frame decimation, SH reduction, opacity thresholding and floater filtering trade size against fidelity.
Chronosplat requires Node 22 or newer, Python 3.10 or newer with numpy, and any WebGL2 browser. Encoding runs on CPU and is much faster on GPU. The project is licensed GNU GPL v3.0 or later, which requires that anything distributed from a fork ship under the same terms with source. Spark, Three.js, splat-transform and Vite are MIT licensed, and Playwright is Apache-2.0.
The example sequences were all exported from a custom Houdini 22 Python exporter, one of them Dany Bittel's Cluster Fly splat animated by Bogdan Lazar. The author describes the project on Reddit as heavily vibe coded, built over two or three sessions, and barely tested. It is available now on GitHub.
New to Gaussian Splatting? Start here






