A private, local-first VRM 0.x / VRM 1.0 model viewer. Models are processed entirely in your browser and are never uploaded.
No analytics, trackers, model uploads, or cloud account.
| Platform | How to run |
|---|---|
| Windows | Double-click Deez VRM Viewer.bat |
| macOS / Linux / dev | npm install then npm run dev |
Requires Node.js 20 or newer.
Double-click Deez VRM Viewer.bat. On the first run it installs the app's local dependencies, starts the viewer, and opens it in your browser. Later runs start immediately.
The launcher requires Node.js 20 or newer. If Node.js is missing and Windows Package Manager is available, it installs the current Node.js LTS release automatically.
- Local drag-and-drop and file picker for
.vrm,.glb, and.gltf - VRM 0.x and 1.0 rendering through
@pixiv/three-vrm - Orbit, pan, zoom, camera presets, grid, and turntable
- Scene tree, expressions, metadata, and diagnostics
- All 86 animations from Quaternius' CC0 Universal Animation Library 1 and 2 Standard packs, retargeted to VRM humanoids in the browser
- Local
.vrmaimport with retargeting, timeline scrubbing, speed, loop, root-motion, pause, stop, and pose-reset controls - Cancellable local mesh baking for supported
.vrmfiles, with clean bind poses and a separate-baked.vrmoutput - Local PNG screenshots, including transparent 2× capture
- Responsive desktop/mobile UI and installable offline PWA shell
git clone https://github.com/DeaconDP/deez-vrm-viewer.git
cd deez-vrm-viewer
npm install
npm run dev # local dev server at http://127.0.0.1:5173
npm run build # production build to dist/
npm test # vitest unit tests
npm run preview # serve the production build locallyStack: Preact, Vite, Three.js, @pixiv/three-vrm.
- Open a VRM 0.x or VRM 1.0 humanoid. Animation retargeting is deliberately disabled for ordinary glTF models because they do not provide the standardized humanoid bone map VRMA requires.
- Open the Animation tab. Choose one of the 86 bundled Quaternius motions, or import a local
.vrmafile. Imported motion data stays inside the browser. - Use the timeline and transport controls to inspect individual poses or play the clip. Playback speed, end behavior, and horizontal root motion are independently controllable.
- Stop returns to the first frame; the pose-reset button stops playback and restores the humanoid rest pose.
The bundled motions and mannequin models are from Quaternius' Universal Animation Library 1 and Universal Animation Library 2, dedicated to the public domain under CC0 1.0. Please consider supporting Quaternius on Patreon.
Further reading: VRM Animation specification, three-vrm-animation, and BVH-to-VRMA converter.
- Open a local binary
.vrm, then select Bake Meshes (beta). - Merge compatible meshes is enabled by default and can be turned off. It concatenates same-material, non-morph geometry using the same skeleton while keeping different materials, expression-bound, weight-animated, and custom-extension meshes separate.
- Choose Bake and download VRM. A worker checks the file against conservative memory, geometry, morph, and skin limits before changing its in-memory copy. It also reconnects detached armatures only when at least three joints exactly match the canonical humanoid chain, preserving secondary hair and clothing bones. Sparse accessors are expanded only inside that temporary copy.
- The result downloads as
<name>-baked.vrm. The selected source is read-only and is never overwritten. Compressed, malformed, remote, and otherwise unsupported models are refused without producing a partial file.
This project is open source under the MIT License. You may use, modify, and distribute it freely, provided you retain the copyright and permission notice. Use is also subject to the Terms of Use and Privacy Notice. See THIRD_PARTY_NOTICES.md for bundled open-source components and their licences.
The in-app first-run notice records acceptance locally on the user's device.
Changing LEGAL_VERSION in src/main.tsx will require users to accept the
updated documents again.