Build anything, bring it to life.
Sketch a world with simple 3D shapes, describe the look, and turn it into a detailed Gaussian splat you can explore in your browser.
Try WorldSplat · Watch the trailer · Run locally
- Block it out. Paint the ground and arrange shapes, or start from one of four example scenes.
- Give it a look. Write a prompt and generate a detailed 3D splat from your scene.
- Explore and keep building. Move around the result, try another version, and save your worlds to your account.
| Feature | What you can do |
|---|---|
| Browser editor | Build, paint, and adjust your scene without installing anything. |
| Separate workspaces | Keep blockouts and generated splats in their own tabs. |
| Saved worlds | Sign in with Google and save with Ctrl/Cmd + S. |
| Session exports | Download splats and primitives together as a ZIP, then load them back into the editor. |
The frontend is a static site with no build step. To work on the editor:
python3 -m http.server 3000 --directory clientOpen localhost:3000/app/. You can edit without signing in; signed-out changes last until reload. Saving to an account and generating splats require the backend.
For the full app, follow the backend setup. It requires Go 1.26+, PostgreSQL, Redis, Temporal, Google sign-in, and access to the image and splat providers. The Go server serves both the client and API at localhost:8067.
Use the hosted backend for frontend development
Serve the client on port 8080 to connect to https://worldsplat.app, then open localhost:8080 to sign in. Saves and generations use your live account. Add http://localhost:8080 to Google's Authorized JavaScript origins and the backend's WS_ALLOWED_ORIGINS before using this mode.
WorldSplat renders your blockout, details the image through fal, then reconstructs it with TripoSplat. A Go backend runs generation jobs through Temporal, stores worlds in PostgreSQL, and manages sessions in Redis.
| Code | Purpose |
|---|---|
client/ |
Static editor and splat viewer, built with JavaScript and Three.js. |
server/ |
Go API, generation worker, authentication, and storage. |
See the backend README for configuration, API endpoints, and deployment details.
Tests
(cd server && go test -race ./...)
npm ci
npm test
npx playwright install --with-deps chromium
npm run test:browserSelf-hosting
Configure server/.env using the backend setup, then:
docker build -t worldsplat .
docker run --rm -p 8067:8067 --env-file server/.env -e WS_ADDR=:8067 -v worldsplat-data:/app/output worldsplatDependency addresses must be reachable from inside the container; 127.0.0.1 refers to the container itself.
For a separate Vercel frontend, configure the variables in .env.example, deploy with npx vercel deploy --prod, and add its origin to the backend's WS_ALLOWED_ORIGINS. Add each frontend's exact origin to Google's Authorized JavaScript origins; sign-in uses a popup and needs no redirect URI or Google client secret.

