ZipSplat: Fewer Gaussians, Better Splats
Alexander Veicht1
·
Sunghwan Hong1
·
Dániel Baráth1
·
Marc Pollefeys1,2
1ETH Zürich 2Microsoft
📄 Paper | 🌐 Project Page | 💻 Code | ✨ Demo
ZipSplat turns unposed images into 3D Gaussians in seconds, with high quality and a Gaussian budget you choose at inference.
ZipSplat reconstructs a 3D Gaussian Splatting scene from a handful of photos or a short video, without camera poses or calibration. It predicts the scene and the cameras in one pass and then refines both for a few seconds. How many Gaussians to use is a single knob you can turn at inference, from the full-quality scene down to a tiny one.
Checkpoints
| File | weights= |
Input | Gaussians / token | Training data |
|---|---|---|---|---|
zipsplat-da3g-504.tar |
zipsplat (default) |
long edge 504, 7 aspect ratios | 16 | the ten datasets below |
zipsplat-da3g-252.tar |
zipsplat-252 |
252 x 252 | 32 | RE10K, DL3DV |
Both checkpoints use the DA3-Giant backbone. zipsplat is the model to use in the wild. The
paper's numbers are from zipsplat-252. zipsplat-da3g-252p.tar is the checkpoint of the first
code release (tag v0) and stays here for that version.
Usage
git clone https://github.com/cvg/ZipSplat.git && cd ZipSplat
python -m pip install -e .
import math, torch
from zipsplat import ZipSplat, Camera, Pose, load_image, viz
model = ZipSplat(weights="zipsplat").cuda().eval() # downloads the checkpoint on first use
images = [load_image(p) for p in paths] # raw images, any size (auto-cropped and resized)
pred = model(images) # forward pass + test-time BA, no poses or intrinsics needed
gaussians = pred["gaussians"] # 3D Gaussians
poses, cameras = pred["poses"], pred["cameras"] # c2w poses + intrinsics of the input images
# render a novel view
camera = Camera.from_fov(math.radians(60), w=512, h=512)
pose = Pose.from_Rt(torch.eye(3), torch.zeros(3)) # identity pose = the first input view
rgb, info = gaussians.render(camera, pose)
# export
gaussians.save_ply("scene.ply") # open in any 3DGS viewer
viz.turntable(gaussians, "turntable.mp4", sweep_deg=None) # wiggle orbit video
See the GitHub repository for the interactive viewer, compression, test-time bundle adjustment, evaluation and training.
License
The weights are released under CC BY-NC 4.0, non-commercial use only. This is required by their dependencies: the checkpoints are initialized from DA3-Giant (CC BY-NC 4.0) and trained on DL3DV-10K (CC BY-NC 4.0). The code is released separately under the Apache-2.0 License.
Training data
zipsplat-252 is trained on RealEstate10K and
DL3DV-10K. zipsplat is finetuned on these two plus
ScanNet++,
ARKitScenes,
Hypersim,
UnrealStereo4K,
BlendedMVS,
CO3D,
WildRGB-D and
G-Objaverse. Each dataset is used under its own terms.
BibTeX
@article{veicht2026zipsplat,
title = {ZipSplat: Fewer Gaussians, Better Splats},
author = {Veicht, Alexander and Hong, Sunghwan and Bar{\'a}th, D{\'a}niel and Pollefeys, Marc},
journal = {arXiv preprint arXiv:2606.05102},
year = {2026}
}