Motion capture used to mean one of two things: a $100,000 studio with 50 cameras and a performer in a marker suit, or a $10,000 payment to a mocap studio for a few minutes of cleaned-up animation data. That was the reality for games, films, and even medical applications for decades. A new open-source project called LiteRT.js-Mocap changes this equation entirely. It runs full-body pose estimation in real time using nothing more than a laptop webcam and a browser tab. No cloud service. No dedicated GPU. No special sensors. And the code is free.
Created by developer andrisgauracs and released on July 17, 2026, the project had already accumulated 24 stars within its first day on GitHub. That number will grow quickly as developers discover what it can do. LiteRT.js-Mocap uses Google's LiteRT.js runtime to run the MediaPipe BlazePose model locally in the browser, tracking 33 body landmarks at inference latencies as low as 7 milliseconds on WebGPU. The landmarks drive a rigged 3D character in Three.js, creating a side-by-side view of the user and their animated avatar moving in real time.
What Makes It Different
The key innovation is architectural. LiteRT.js-Mocap runs everything client-side. The pose model, the Three.js runtime, and the character rigs are all served from a local development server after a single npm install. Once loaded, the entire system works offline. No video data leaves the machine. This matters in an era where biometric data is increasingly regulated under laws like Hawaii's Act 247 and the EU AI Act. For applications in healthcare, fitness, or any domain handling personal data, this architecture eliminates a whole category of privacy risk.
The performance is impressive for a browser-based solution. On an Apple Silicon MacBook, the WebGPU backend delivers inference in roughly 7 milliseconds per frame, while the CPU fallback using XNNPACK and Wasm runs at about 25 milliseconds. Both are well within the 33-millisecond budget needed for 30 frames per second. The app detects available backends at runtime and lets users switch between WebGPU and CPU from a dropdown menu, with a live HUD showing FPS and inference latency.
The BlazePose model itself tracks 33 keypoints including face, hands, and full body. The project ships with the full landmark model at about 6 MB, but users can swap in the lite or heavy variants by simply replacing the TFLite file. The system includes adaptive jitter smoothing using the One Euro filter, which keeps the character motion smooth without adding noticeable lag.
How It Works
The setup process is trivial. Clone the repository, run npm install, then npm run dev. The dev server copies the LiteRT Wasm runtime into the public directory and starts a local server. Point Chrome or any WebGPU-capable browser to localhost:5173, grant camera access, and the system is live.
Under the hood, the system follows a five-stage pipeline. The camera module captures webcam frames with typed error states for common failure modes. The detector module compiles the TFLite model using LiteRT.js, applies region-of-interest tracking from the previous frame's landmarks, and runs inference. The landmark module maps BlazePose's 33 keypoints into the coordinate system needed for retargeting. The retargeting module converts landmark positions into bone rotations by computing the live direction of each body segment relative to its bind pose, then applying the shortest-arc rotation. Finally, the Three.js scene renders the animated character with the computed bone rotations.
The retargeting math is the heart of the system. BlazePose outputs landmark positions, but a 3D rig needs bone rotations. The code solves this by computing the live direction of each body segment such as shoulder to elbow in the bone's parent space, then applying a shortest-arc rotation from the bind direction to the live direction. The pelvis and chest get full orientation bases using the hip line, shoulder line, and spine, which is what makes the character lean and turn naturally.
The project ships with two characters out of the box. RobotExpressive.glb is a fun on-camera character with an IK-style rig. Xbot.glb is a standard Mixamo humanoid rig that demonstrates clean retargeting. Users can swap in their own characters from Mixamo or Ready Player Me by dropping the GLB file into the characters folder and adding a bone mapping entry to a single config file.
Comparison to Alternatives
The closest comparable tool is Google's MediaPipe Pose, which also offers browser-based pose estimation. LiteRT.js-Mocap differentiates itself in three ways. First, it is a complete end-to-end application with 3D character retargeting, not just a pose detection library. Second, it includes a runtime backend switcher that lets users compare WebGPU and CPU performance live. Third, it ships with BVH export, meaning users can record motion data and import it into Blender for animation workflows.
Compared to professional motion capture solutions like Vicon or OptiTrack, LiteRT.js-Mocap cannot match sub-millimeter tracking accuracy or multi-person capture. But those systems cost tens of thousands of dollars and require dedicated studio space. For the use cases that matter most to indie developers and solo founders such as fitness form tracking, gesture-based UI control, game input, and accessibility tools the browser-based approach is more than sufficient and dramatically more accessible.
The project also includes a partial-framing system that handles the common scenario where only the upper body is visible in the webcam frame. When leg landmarks fall below a confidence threshold, the system gates them out and only drives the upper body, with a hysteresis mechanism that prevents jittery engagement and disengagement. The HUD shows the current tracking mode as FULL BODY, PARTIAL, or UPPER BODY.
Who This Is For
LiteRT.js-Mocap is for any developer who needs to understand human movement without sending data to a server. Fitness apps that track exercise form, accessibility tools that enable hands-free computer control, game developers building gesture-based inputs, and remote physical therapy platforms can all use this as a building block. The barrier to entry for computer vision startups just dropped from needing a PhD in computer vision to being able to write JavaScript. For solo founders and indie developers, that is the real story here. The infrastructure for understanding human movement is now a free npm install away.




