Open-source · Privacy-first · Self-hostable

Analytics for 3D scenes on the web.

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.

view-direction dome (3D) · where the audience looked

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

Everything you need to understand a 3D scene

Drop in one connector and Uptimizr captures the spatial signals that flat web analytics can't — then aggregates them into heatmaps, rankings and replays.

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.

View-direction heatmaps

See where users actually look. Gaze density is projected into world space and onto meshes — in 2D panels and full 3D.

Pointer & click heatmaps

Every hover and click, ray-cast into the scene and aggregated into spatial heat on the surfaces users touch.

Mesh interactions

Which objects get hovered, picked, and ignored — ranked, with dwell time and interaction counts per mesh.

Session & performance

FPS, frame time, draw calls and device class over the session, with percentile aggregation so p95 is one query away.

Session replay

Re-drive a recorded session inside your own scene from an ordered, timestamped event stream — no video, just data.

Multi-engine connectors

Babylon.js first, plus Babylon Lite, three.js, PlayCanvas, react-three-fiber and A-Frame. One schema, every engine.

Privacy-first by design

Cookieless, no client persistent IDs and no PII by default. The visitor ID is a server-side, daily-rotating hash.

Self-host in minutes

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

Flat panels and 3D views — every angle of your scene

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.

2D panels

Pointer heatmap 2D
View-direction heatmap 2D
Floor-plan heatmap 2D
Rendering performance p95
16.7 ms median 60 fps
Top meshes by interaction
  • ProductHero
  • CTA_Button
  • Floor_Plane
  • Backdrop
Event volume over time
24h window +18%

3D views Babylon

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 ↑

View dome 3D

Gaze direction on a hemisphere

World heatmap 3D

Pointer-hit density in world space

Click rays 3D

Each click joined to its viewpoint

Flow Sankey 3D

Gaze direction → clicked mesh

One schema, every engine

Connectors for the engines you ship

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

Instrument your scene in minutes

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.

  1. Install the connector package for your engine.
  2. Call trackScene with your project id and collector endpoint.
  3. Open the dashboard and watch heatmaps fill in.
Full integration guide
scene.ts
# 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

Analytics that respects your users

Uptimizr was designed privacy-first from the ground up. The collector is built so that the responsible default is also the easy default.

Cookieless, no client IDs

No cookies, no localStorage identifiers, no fingerprinting. Nothing persistent is written to the visitor's device.

Server-side rotating visitor hash

Visitors are counted with a hash computed on the server that rotates every day, so individuals can't be tracked across days.

No PII by default

Events carry spatial and performance signals — not personal data. Raw per-session retention is strictly opt-in.

You own the data

Self-host the collector and store. Your events never leave your infrastructure unless you choose to send them.

Start measuring your 3D scene today

Open-source, self-hostable, and free. Clone the repo and have heatmaps running locally in minutes.