Voxelize
A multiplayer, super fast, voxel engine in your browser!
!Town, a production world built on Voxelize
Town, a live multiplayer world running on Voxelize in production.
Why Voxelize
Voxelize powers persistent, multiplayer voxel worlds that run in any modern browser. No installs, no plugins.
- Build custom blocks: register any blocks of any shape, size, and material. Blocks can also hold custom metadata through block entities.
- Create custom entities: pigs, cows, sheeps, any entities you can imagine. They can roam around and interact with blocks and players.
- Realtime multiplayer: authoritative server with entity, chat, and event synchronization out of the box.
- Any world generation: define your own world generation and generate infinitely large worlds.
Custom blocks, instanced creatures, water, and voxel lighting in the browser.
Architecture
Both the server and the client are extremely optimized for performance and scalability. The server is written in Rust, and the client is written in TypeScript.
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ Browser client (TS) │ WebSocket │ Authoritative server (Rust) │
│ │◄────────────────────►│ │
│ @voxelize/core (Three.js) │ @voxelize/protocol │ voxelize (ECS worlds) │
│ physics-engine · raycast │ @voxelize/transport │ voxelize-mesher (meshing) │
│ voxelize-wasm-mesher (WASM) │ (shared protobuf) │ voxelize-core (voxel data) │
└───────────────────────────────┘ └───────────────────────────────┘
- Rust authoritative server —
voxelizeruns ECS-driven worlds: chunk generation, physics, entities, and events all live server-side. - TypeScript / Three.js client —
@voxelize/corerenders worlds in the browser and stays in sync over WebSocket. - Shared protocol and transport —
@voxelize/protocoldefines the protobuf messages;@voxelize/transportmoves them. - WASM meshing —
voxelize-wasm-meshercompiles the server's mesher to WebAssembly, so client-side remeshing follows the same geometry rules as server-side meshing. - Headless agents —
@voxelize/agentdrives real browser clients headlessly for testing, measurement, and bots.
In Production
Town is a live, persistent multiplayer building world built on Voxelize, with custom textures, entities, and more.
Server-driven creature behavior and particle VFX over emissive volcanic terrain
![]() Instanced creatures with server-driven behavior (capybaras) |
![]() A basalt golem on Mars |
![]() Obsidian golem with an emissive core |
![]() Colored glass, voxel lighting, and custom block geometry |
![]() Tropical fish and clams in my coral garden |
![]() Hologram block using custom block entities |
![]() A 4-bit copper adder driving a block-built hex display |
![]() Under the sea, kelp |
Quick Start
Prerequisites: Rust, Node.js, pnpm, cargo-watch, wasm-pack, and protoc.
git clone https://github.com/voxelize/voxelize.git
cd voxelize
pnpm install # install dependencies
pnpm proto # generate protocol buffers
pnpm build # build WASM mesher + all packages
pnpm demo # run the demo server and client
Then open http://localhost:3000.
I strongly recommend using Voxelize as a submodule of the workspace you're building.
Packages
npm
| Package | Description |
| --- | --- |
| @voxelize/core | The client engine: rendering, world sync, inputs, and utilities on Three.js |
| @voxelize/agent | Headless puppeteer-backed agent SDK for Voxelize worlds |
| @voxelize/transport | WebSocket transport for Voxelize protocol messages |
| @voxelize/protocol | Shared protobuf message definitions |
| @voxelize/physics-engine | Voxel-aware AABB physics with auto-stepping |
| @voxelize/raycast | Voxel raycasting |
| @voxelize/debug | In-game debug panels |
| @voxelize/aabb | Axis-aligned bounding box math |
Rust crates
| Crate | Description |
| --- | --- |
| voxelize | The authoritative multiplayer server engine |
| voxelize-core | Core types and utilities — the single source of truth for voxel data encoding |
| voxelize-gen | Deterministic, content-free world generation: seed streams, bit-stable noise, compiled field programs, climate partitions, surface rules, carvers, hydrology, plan-sliced structures, and diagnostics |
| voxelize-mesher | Chunk meshing logic |
| voxelize-wasm-mesher | WebAssembly wrapper around the mesher for client-side use |
Documentation
- Guides and tutorials — client-side concepts, world building, and API walkthroughs
- Rust API reference — server-side engine documentation
Development
Useful workspace commands:
pnpm watch # rebuild TS packages and WASM mesher on change
pnpm test # TypeScript tests (vitest)
pnpm test:rust # Rust mesher and lighting tests
pnpm bench # criterion benchmarks (mesher, lights)
pnpm check # cargo check across all targets
pnpm lint # eslint with autofix
Notes on faster local builds:
- The server watch loop (
pnpm demo:rs) builds with therelease-devprofile: the sameopt-level = 3runtime performance asrelease, but with incremental compilation and minimal debug info for much faster edit-rebuild cycles. Published builds should keep using--release. - If you consume Voxelize as a submodule of a parent cargo workspace, cargo takes profiles from the parent's root
Cargo.toml— copy the[profile.release-dev]block there to get the same fast iteration. - Rust >= 1.90 links with the fast bundled
rust-lldon x86_64 Linux out of the box; see.cargo/config.tomlfor opt-in lld linking on other platforms and an opt-insccacheshared cache.
Community
Questions, showcases, and engine discussion happen on Discord. Issues and pull requests are welcome on GitHub.
License
Assets Used
- Connection Serif Font (SIL Open Font)
- Pixel Perfection by XSSheep, modified — licensed under CC BY-SA 4.0
Voxelize is an independent open-source project. It is not affiliated with, endorsed by, or connected to any commercial voxel game or its publishers.







