WebAR Image Tracker brings image-target augmented reality to the mobile and desktop web, with no app and no native SDK. Point a camera at a target image and your Unity content locks onto it in real time, compiled to WebAssembly and running in the browser people already have, with nothing to install.
Why it exists: Unity's AR Foundation targets native ARKit and ARCore and does not build for WebGL, and browser-native WebXR image tracking is still experimental and off by default in Safari on iOS and iPadOS. WebAR Image Tracker uses the open-source mind-ar-js tracker (TensorFlow.js, GPU-accelerated on WebGL2), so one WebAssembly build runs across iOS, Android, and desktop browsers with no WebXR and no native AR SDK.
🌐 Made for the open web
- Delivered as a web page: open from a link or QR code, no app store, no install.
- One WebGL build serves iOS, Android, and desktop visitors with a camera.
- Plain static files, no runtime backend: deploy on standard hosting; the tracker runs on the visitor's device.
- Modern web stack: your Unity content runs as WebAssembly (WASM) for near-native speed, with GPU-accelerated image tracking on the visitor's device.
🎯 Tracking quality
- Tracks images: any photo or artwork with enough detail is a target.
- Adaptive smoothing: steadier when held still, looser in motion (driven by the accelerometer and gyroscope), so content sits stable at rest without lagging your hand.
- Outlier rejection: physically impossible tracker jumps are dropped before they reach your content.
- Stable on flat images: resolves the two equally-valid poses a flat picture presents (IPPE plus gyroscope), so the image can lie on any surface and move while tracked.
- Rides out brief dropouts: the gyroscope keeps content pinned to the image, then re-syncs cleanly when it returns.
🛠️ Set up inside Unity
- One-click rig: GameObject > WebAR > Controller builds the camera rig and reuses your scene camera; one more click adds a tracker.
- Compile a target in-editor: Create Marker opens the local target compiler, scores trackability, and posts the target back into your project.
- Test on a real device: a bundled local server hosts over HTTPS, shows a QR to open it on a phone, and streams the device console into the editor.
- Real-world scale: Unity works in metres, so a 30 cm model is 30 cm wide on a 30 cm print.
🚀 Built for production
- Multiple targets per project: compile several images into one file, each with its own content.
- Pipelines: URP (recommended, most tested) and Built-in; HDRP via an Unlit fallback.
- Self-contained: mind-ar-js and three.js are bundled into the WebGL template, no CDN at load time.
- Scripting and events: start, stop, and swap targets from C#; subscribe to target-found, target-lost, and per-frame pose.
- WebGPU-ready rendering: detects the browser graphics backend and applies a matching post-processing profile. On Unity 6's WebGPU backend the extra rendering headroom lets you push post-processing, real-time shadows, and anti-aliasing for higher visual fidelity, while WebGL2 stays the broad-compatibility default.
🔗 Links