Arrival.Space Splat.js Trains Gaussian Splats in Browser

Michael Rubloff

Arrival.Space has published Splat.js, an MIT licensed WebGPU library that runs structure from motion and 3D gaussian splat training entirely inside a browser tab.
Cloud reconstruction came to the Arrival.Space platform in version 0.84, which added Video2Splat and processed uploads of up to ninety seconds on the vendor's servers, and version 2026.2 built prompt driven scene logic and CAS sharpening on the hosted viewer. Splat.js takes no upload. Photographs stay on the device, and the library asks for no account, no server and no build step.
The solver is scale space SIFT in a worker pool, GPU brute force matching, incremental registration with interim bundle adjustment, and a sparse Schur bundle adjustment that recovers a shared focal length with radial distortion. The trainer is WebGPU throughout, with anisotropic Gaussians, global sorted binning, spherical harmonics at degree 2 by default, MCMC style relocation and growth, Mip-Splatting opacity compensation, and analytic gradients validated against finite differences. Arrival.Space states that Splat.js scales past 1,000,000 splats.
Export is a .ply with spherical harmonics included and the opacity compensation baked in. The public surface is one createSession object carrying load, solve, seed and start, alongside exportPlyBlob and evalTestPsnr.
On the full Truck sequence from Tanks and Temples, holding out every eighth photograph, Splat.js reports 25.61 dB test PSNR at 1,000,000 splats and degree 2 harmonics.
Against COLMAP the pose solver reports 0.00% absolute trajectory error on Truck, 0.23% on Camping, 0.03% on Playroom, and 0.63 px reprojection RMS on Bicycle. Splat.js registers 207 of Playroom's 225 DSLR photographs where the project says stock COLMAP 3.11 manages 154 to 157 at the same resolution. Only the synthetic, Truck and Camping rows are asserted by the test suite on every change, and the Playroom and Bicycle numbers sit outside those gates.
Input is 20 to 200 overlapping photographs of one place or a live device camera, with bundled presets for Truck, Camping, Playroom, Train, Bicycle and a synthetic corner. A quality selector offers Draft for a fast first look and Showcase for a long run at the full 1,000,000 splat budget, exposing resolution, spherical harmonics, splat budget and cycle count underneath. Video input exists in the library as extractSharpFrames and is switched off in the app until frame selection reaches the project's quality bar. Splat.js needs WebGPU, runs on current Chrome, Edge, Firefox and Safari including iPhone, and installs as a PWA.
The source is on GitHub and the app is live with an MIT License. Try it in the browser here.
New to Gaussian Splatting? Start here





