Location-based WebXR

GPS alone is too inaccurate for AR. So we fused it.

The result: 3D content that sticks to real places and gets more precise the longer the user walks. One URL, no app, fully offline.

  • Walk around your content — WebXR anchors hold, nothing floats
  • Any ordinary QR code = door + instant position fix
  • Real 6DoF in the browser: Android + Chrome today
// the code — a GPS anchor in ~5 lines
// the whole flow — gps-plus-slam-app-framework
const store = createSlamAppStore({ storageBackend: new NullStorageBackend() });
await initAR(container);         // one tap → 6DoF AR in the browser
const world = getArWorldGroup()!;
world.add(marker);               // marker: any three.js Object3D
createGpsAnchor({ object3D: marker, arWorldGroup: world, camera: getCamera()!,
  gpsPoint: { lat: 48.137, lon: 11.575 },  // ← your real-world spot
  getAlignmentMatrix: () => selectAlignmentMatrix(store.getState()),
  getGpsZeroRef: () => selectZeroReference(store.getState()) });

Any ordinary QR code does two jobs.

One scan jumps straight into AR, no install — and pins the user to the exact spot they're standing on, before GPS has even warmed up.

Raw GPS scatters by meters. Fusion holds still.

Every GPS reading is an uncertainty circle around a different center. Averaging them nails the spot — and fusion with WebXR tracking keeps it nailed while the user moves.

This is what your users see.

Their own phone — or any WebXR-capable device — becomes the window. No download: arrows, labels and stories laid over the real world.

Works anywhere. Fully offline.

No cloud mapping, no scanning vans, no pre-scanned city centers — and no cloud positioning service that can be priced up or sunset. If the user can stand there, a story can live there. Dream up the real-world AR experience you always wanted to build: a forest with a magic portal that only opens at dawn, a plaza your users capture in 3D to take home, a park with your jump-and-run parkour.

The code is on GitHub.

The demos below run on Android phones with Chrome — same engine, same repo. No signup — everything you need comes included. Clone it, run it, bring your favorite place to life.

Fork & start building

Common questions

Which devices are supported?

Android phones support full 6-DoF tracking on Chrome today — that's why the framework currently works there and not on iOS. It targets standard WebXR, so any headset that fully supports that standard (including 6-DoF SLAM tracking) will work as well.

How accurate is the positioning?

Raw GPS is meters off; fusion averages it down. Try the demo apps to see whether it works for your use case — and use QR codes for extremely accurate, instant anchoring.

What's the license?
Does it need a server or an internet connection?

No. The GPS+WebXR alignment runs entirely on the device — there is no cloud positioning service involved. The page and content are static files you can host anywhere.

How do I start building?

Clone the repo and run the demo apps to learn the basics. The Minimal Example App is a good starting point, and the Recorder App is the most complex example — you can also use it to record realistic user input for your test-driven development.