Viewer & walkable experiences
Built for both: orbit-and-inspect viewers and first-person, walkable worlds. View-direction heatmaps show what seated users look at; floor-plan heatmaps show where visitors stand and roam.
Open-source · Privacy-first · Self-hostable
Uptimizr is Google-Analytics-for-3D. Whether users orbit a model in a viewer or walk through a first-person world, capture view-direction and click heatmaps, mesh interactions, performance and session replay — then understand exactly what your users look at, click, and miss.
Each marker is a camera look-direction mapped onto a sphere — the blue line is forward, the ring is the horizon. Size and color scale with how often that direction was viewed.
What you get
Drop in one connector and Uptimizr captures the spatial signals that flat web analytics can't — then aggregates them into heatmaps, rankings and replays.
Built for both: orbit-and-inspect viewers and first-person, walkable worlds. View-direction heatmaps show what seated users look at; floor-plan heatmaps show where visitors stand and roam.
See where users actually look. Gaze density is projected into world space and onto meshes — in 2D panels and full 3D.
Every hover and click, ray-cast into the scene and aggregated into spatial heat on the surfaces users touch.
Which objects get hovered, picked, and ignored — ranked, with dwell time and interaction counts per mesh.
FPS, frame time, draw calls and device class over the session, with percentile aggregation so p95 is one query away.
Re-drive a recorded session inside your own scene from an ordered, timestamped event stream — no video, just data.
Babylon.js first, plus Babylon Lite, three.js, PlayCanvas, react-three-fiber and A-Frame. One schema, every engine.
Cookieless, no client persistent IDs and no PII by default. The visitor ID is a server-side, daily-rotating hash.
A single collector binary with an embedded store runs locally with zero infrastructure. Scale up to ClickHouse + Postgres when you need to.
Inside the dashboard
The self-hostable dashboard turns raw spatial events into panels you can act on: 2D heatmaps, rankings and performance charts, plus interactive 3D reconstructions of where people looked, clicked and moved.
The dashboard reconstructs your scene in 3D — gaze, clicks and movement in world space. The interactive demo at the top of the page renders these live. Back to the demo ↑
Gaze direction on a hemisphere
Pointer-hit density in world space
Each click joined to its viewpoint
Gaze direction → clicked mesh
One schema, every engine
Every connector emits the same versioned event contract, so heatmaps and replay work identically no matter which renderer you use. Pick one to preview its setup below
Uptimizr targets 3D on the web — WebGL/WebGPU engines that run in the browser. Native runtimes like Unity and Godot aren't supported yet.
Three lines to first heatmap
Install the connector for your engine, point it at a collector, and Uptimizr starts capturing gaze, clicks, mesh interactions and performance — batched and sent over a beacon, cookieless by default.
trackScene with your project id and collector endpoint.# install the connector for your engine
npm i @uptimizr/babylon
// instrument an existing Babylon scene
import { trackScene } from "@uptimizr/babylon";
const tracker = trackScene(scene, {
projectId: "my-3d-app",
endpoint: "https://collector.example.com",
});
// later, on teardown
tracker.dispose(); Privacy by architecture
Uptimizr was designed privacy-first from the ground up. The collector is built so that the responsible default is also the easy default.
No cookies, no localStorage identifiers, no fingerprinting. Nothing persistent is written to the visitor's device.
Visitors are counted with a hash computed on the server that rotates every day, so individuals can't be tracked across days.
Events carry spatial and performance signals — not personal data. Raw per-session retention is strictly opt-in.
Self-host the collector and store. Your events never leave your infrastructure unless you choose to send them.
Open-source, self-hostable, and free. Clone the repo and have heatmaps running locally in minutes.