
model-viewer
https://github.com/google/model-viewer- Category
- Developer Tools
- Rank
- No. 281Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- GitHub
- 8.2k stars
- Latest release
- v4.3.1
- Date
About
Google's web component for easily displaying interactive 3D models on the web and in AR — one HTML tag, no Three.js required.
What it does
Model-viewer presents 3D content through a browser-native custom element. It manages rendering, user interaction, loading progress, posters, annotations, camera input, accessibility announcements, and several routes into augmented reality.
Why it's ranked here
The case is strong because the project covers more than basic rendering. It includes accessible defaults, customizable slots, browser capability checks, an effects package, an editor, documentation, and dedicated render-fidelity tooling. Its browser test matrix also spans mobile and desktop WebKit and Chromium contexts.
What's good
The component exposes practical interface layers instead of a bare canvas. Default controls cover loading, interaction prompts, AR entry, AR exit, and panning, while slots let applications replace those pieces. Build outputs support module and legacy bundle formats, minification, source maps, optional external Three.js, and bundled TypeScript declarations.
Tradeoffs
The repository is a sizable multi-package workspace with documentation, effects, editor, shared assets, and fidelity infrastructure. Development requires Node.js and npm. Windows contributors are directed toward WSL2, Chrome configuration is needed for tests there, and fidelity testing can require GUI support unavailable in the documented Windows 10 setup.
How to use it well
Use it for product pages, catalogs, documentation, or other browser experiences that need interactive models and optional AR with customizable controls. Adopt the effects package when post-processing matters. Use the companion editor when preparing or modifying GLTF and GLB assets. The viewer itself does not replace that asset-authoring workflow.
Technical notes+
The root package.json defines a private npm workspace spanning the viewer, effects, documentation site, render-fidelity tools, and editor, with shared build, test, lint, clean, and serve scripts. packages/model-viewer/rollup.config.js produces ESM and UMD builds, minified variants, source maps, variants with Three.js externalized, and bundled TypeScript declarations outside development mode. packages/model-viewer/web-test-ci.config.mjs runs Playwright coverage across iPhone X, Desktop Safari, Galaxy S9+, and Desktop Chrome device contexts. packages/model-viewer/src/template.ts defines Shadow DOM structure, named slots, AR controls, loading UI, interaction prompts, and live accessibility announcements. packages/model-viewer/src/constants.ts selects WebXR, Android Scene Viewer, and iOS Quick Look candidates through feature and user-agent checks.
Observed
- License
- Apache-2.0
- Primary language
- TypeScript
- Packaging
- Private npm workspace containing five packages
- Interface
- Browser web component library with ESM and UMD bundles
- Browser testing
- Playwright configurations cover mobile and desktop WebKit and Chromium contexts
- Repository structure
- Includes viewer, effects, documentation, render-fidelity tools, and model editor projects
Read from README.md, package.json, packages/space-opera/rollup.config.js, packages/model-viewer/rollup.config.js, packages/modelviewer.dev/rollup.config.js, packages/model-viewer/web-test-ci.config.mjs, packages/model-viewer-effects/rollup.config.js, packages/render-fidelity-tools/rollup.config.js, packages/space-opera/web-test-runner.config.mjs, packages/model-viewer/web-test-runner.config.mjs, packages/model-viewer-effects/web-test-runner.config.mjs, packages/space-opera/src/app.ts, packages/model-viewer/src/template.ts, packages/model-viewer/src/constants.ts, packages/model-viewer/src/utilities.ts.
What it can do
Display interactive 3D models in web browsers
3D model files (GLB, GLTF) → Interactive 3D visualization in HTML page
Enable augmented reality viewing of 3D models
3D model files and AR-capable device → AR experience with 3D model overlay
Embed 3D models with single HTML tag
HTML code with model-viewer tag and model file path → Rendered 3D model component in webpage
Provide camera controls for 3D model interaction
User mouse/touch input on displayed model → Rotated, zoomed, or panned 3D model view
Auto-resize 3D models to fit container
3D model and container dimensions → Properly scaled 3D model display
Load and render 3D models without Three.js dependency
3D model files in web environment → Rendered 3D visualization using built-in rendering engine
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.