COMPARISON
voxelkloud and Potree,
side by side.
Potree is the reason a point cloud can be looked at in a browser at all, and this project verifies its own Potree v2 driver against Potree’s own implementation. What follows is about architecture, API and integration — and then about speed, measured on the same hardware, the same data and the same camera, with the conditions written next to the numbers.
Performance, measured
All four arms render the same cloud, from the same origin, at the same camera, to the same on-screen point count — about 2,999,500 points and 105 MB transferred each. That equalisation is what makes the rows below a comparison rather than four unrelated numbers.
The voxelkloud column is what npm install gives you: sinkMode defaults to "auto", which is the compute rasteriser wherever WebGPU provides a device. That default is itself a measurement — the instanced path costs ~320 ms of INP at this budget where compute costs 56.
Conditions. Median of 2 cold runs, 26 August 2026. Chrome running headed on a real GPU — headless has no WebGPU adapter and would score a software rasteriser against WebGL. One origin serving every arm and the dataset, throttled to 20 Mbit with 40 ms RTT. Autzen, camera at 0.25 of the longest extent, 3M point budget. The raw JSON is versioned in the monorepo. An earlier sitting was discarded: idle fps came back as exactly 50.0 for two different engines and exactly 25.0 for the third, and figures that round are missed vsync rather than a result — a background updater was taking 27% of a core. With it closed the same arms read 60.2, 59.5 and 29.9.
Why these deltas can be trusted. potree-core is unchanged code between this round and the previous one, so it doubles as a control — it reproduced its own first contentful paint, first ink and INP to within a few percent. The same control also shows that visually complete and Speed Index shifted scale for every arm between rounds, which is why neither is compared here against any earlier number.
Speed Index measures each arm against its own final frame. A renderer whose finished image is sharper has further to travel and scores worse for it, and ours is sharper than Potree’s — verified by screenshot. Some of that 1,918 against 1,493 is the metric, not latency. How much, nobody has isolated, so the row stands as a loss.
What Potree still does better
- Potree is a complete application — measuring tools, annotations, clipping volumes, the profile tool. voxelkloud is a rendering library, and a library is not an application.
- Potree has years of exposure to real-world clouds and real-world browsers. That is not a feature list, it is scar tissue, and it cannot be shortcut.
- WebGL runs everywhere today. voxelkloud wants WebGPU for its fast path, which is still a narrower set of machines.
- Potree is one artifact people have deployed for a decade. voxelkloud is fifteen packages at 0.5.1 and a CLI at 0.5.2 — every row above is installable today, but “installable” and “battle-tested” are not the same claim.
- PotreeConverter has converted a great deal of the world’s LiDAR and is fast and IO-bound.
voxelkloud convertis new. It is checked against PotreeConverter’s own output on the same file — same quantum, same origin, same cube, same spacing, same record — but the two have never been timed against each other, and this table is the wrong place to claim a number nobody has earned. - The GPU-side frame time has not been characterised.
Already running Potree? What switching involves — the short version is that your existing directory is read as it is.