How to play a BVH file
- 1
Open the .bvh
Drop the file or tap the box to choose one. No BVH at hand? Try the sample walk. The skeleton appears and starts playing straight away.
- 2
Watch and scrub
Use Play and Pause, drag the frame slider, or step one frame at a time to check a foot contact or a pop. Speed runs from 0.25x to 2x.
- 3
Check the facts
The side panel shows frames, frame rate, length, joint and channel counts, the skeleton height and how far the root travels, plus the full joint tree.
- 4
Fix the view
Turn on Follow for walks and runs that leave the frame. If the figure lies on its back, the file was recorded Z up: press Treat as Z up.
- 5
Save what you need
Take a PNG screenshot of the current frame, or download a GLB with a rigged stick figure and the whole animation for Blender, Unity or a web viewer.
Private by design. The BVH is read by JavaScript in your browser and played on your device. It is not uploaded anywhere, so paid mocap packs and unreleased capture sessions stay private.
What is inside a BVH file
BVHBiovision Hierarchy- A plain-text motion capture format from Biovision in the 1990s. It is still the common export of mocap suits, libraries and video-to-motion tools because almost every 3D app can read it.
HIERARCHYThe skeleton- A tree of joints from the ROOT (usually Hips) down to End Sites. Each joint has an OFFSET from its parent, which sets the bone lengths, and a CHANNELS line that says which values each frame holds.
CHANNELSRotation order- The root normally has 6 channels (X, Y and Z position, then three rotations) and every other joint 3 rotations. The order, such as Zrotation Xrotation Yrotation, decides how the angles combine, and the viewer follows it per joint.
MOTIONFrames- A Frames count, a Frame Time in seconds (0.0333333 is 30 fps, 0.0083333 is 120 fps) and then one line of numbers per frame, one number per channel.
Not in BVHMesh, skin, fingers- BVH holds only bones and motion: no character mesh, no skin weights and often no finger joints. That is why the viewer draws a stick figure; to see it on a character, retarget it in Blender or a game engine.
Units, scale and the up axis
BVH has no unit field. Most files are in centimetres (a person is about 170 units tall), some libraries use inches (about 67 units for a person) or their own scale, and a few tools write metres. The viewer shows the skeleton height in file units and guesses the unit from it; the guess sets the GLB scale so the figure comes out at a human size in metres, and you can change it before you download.
Nearly all BVH files are Y up, but some exporters write Z up and the figure then lies on the floor. The viewer detects the common case from the bone directions and you can switch it with one button. The GLB is always written Y up, the glTF standard.
Checking a clip before you use it
Scrub to the first and last frames to see whether the clip loops: a walk cycle should end in the pose it starts with. Step one frame at a time around foot contacts to spot sliding or a sudden pop, which usually means a lost marker in the capture. Root travel tells you whether the motion moves through space or stays in place, which matters for game locomotion.
The frame rate decides how smooth the motion is and how big the file gets. Mocap is often captured at 120 fps and kept that way in libraries; games and animation usually use 30 or 60. If your target app expects 30 fps, plan to resample on import rather than playing a 120 fps clip four times too slowly.
Using the GLB download
The GLB holds a skinned stick figure bound to the real joint tree and the full animation as one action. Blender imports it as an armature with its action, ready to retarget onto your character with a retargeting add-on or constraints. Unity and Godot import it as an animated rig, and three.js or model-viewer play it in a web page.
Joint names are kept, except that characters glTF cannot use in names, such as the colon in mixamorig:Hips, become underscores. If your retargeting setup matches bones by name, map mixamorig_Hips to mixamorig:Hips once and save the mapping.
What this BVH viewer does
Plays in 3D
The whole skeleton as a stick figure, left side blue and right side red, so mirrored or swapped limbs are easy to spot.
Frame control
Play, pause, loop, frame slider, single-frame steps and speeds from 0.25x to 2x.
Clip facts
Frames, fps, length, joints, end sites, channels, height and root travel at a glance.
Follow camera
Keeps a walking or running figure in view while you orbit and zoom.
Rigged GLB out
A skinned stick figure with the animation, scaled to metres and Y up.
Private by design
Runs in your browser. Files are never uploaded, no account needed.
Limits, honestly
- BVH has no mesh, so the motion is shown on a stick figure, not on a character.
- Retargeting onto another skeleton is not done here; use Blender or your game engine for that.
- The unit guess is based on skeleton height; very small or very large rigs may need the unit set by hand.
- Files with broken hierarchy brackets or fewer numbers per frame than channels cannot be read.
- Very long clips (hundreds of thousands of frames) can use a lot of memory, especially on phones.