# On-Device Pose Estimation: Offline, Private, Real-Time

> On-device pose estimation with MoveNet: the camera stays on the phone, keypoints are free, and the React Native offline package runs with no network. Optional API key for scoring only.

Canonical: https://www.posetracker.com/on-device-pose-estimation
Last updated: 2026-09-15
Keywords: on-device pose estimation, offline pose estimation mobile, pose estimation without storing photos, privacy pose tracking, React Native offline MoveNet

**On-device** here means the pose model runs on the user’s phone. The camera stream is not a product input you ship to a datacenter to get a skeleton.

That is the difference between PoseTracker and a “cloud AI sports pose API”. It is also why dance, physio and consumer fitness apps that cannot store photos still ship a live overlay.

## What stays on the device

- **17 COCO keypoints** from TensorFlow MoveNet (Lightning/Thunder), inferred locally.
- **No API key** for that skeleton. Free, on-device.
- **React Native offline package** `@pose-tracker/react-native-pose-estimation` (~9.9 MB) bundles the model. No network required for inference.
- **Light package** `@pose-tracker/react-native-pose-estimation-light` (~206 kB) downloads weights at runtime — still inferred on the device after that.

The web SDK uses TensorFlow.js in the browser with a remote model URL; inference still happens in the tab, not by uploading a video file.

## What the API key is for

The optional key (your dashboard `api_uuid`) unlocks the **exercise engine**: catalog reps, angles, form score, jump, custom Studio specs. That is scoring of pose data, not a replacement for on-device detection.

The [flexibility tool](/tools/flexibility) can also analyse a **gallery photo** when the user explicitly uploads one. That path is opt-in and separate from the live camera.

## Offline dance / form correction

Queries like “dance form correction app offline pose estimation mobile” map here: you can run the skeleton with no network on React Native offline. Custom gestures (a routine that is not in the catalog) are authored in [Studio](/studio) while online, then tracked from the saved spec.

Limits still apply: 2D, one person, COCO-17. Offline does not add 3D or hand mesh.

## Compare the privacy story

| | On-device MoveNet (PoseTracker keypoints) | Cloud / server pose |
| --- | --- | --- |
| Video leaves the phone | No | Usually yes |
| Latency for overlay | Frame-time on device | Round trip |
| Per-frame GPU bill | No | Yes |
| Fine whole-body / research | No (17 points) | Possible (MMPose, etc.) |

MediaPipe and Apple Vision are also on-device. PoseTracker’s edge is the same engine on **iOS + Android + web**, plus the scoring layer. Details: [MediaPipe vs MoveNet](/compare/mediapipe-vs-movenet).

## Start

[React Native offline vs light](/news/react-native-pose-estimation-expo) · [Web SDK](/news/javascript-react-pose-estimation-sdk) · [Docs](https://docs.posetracker.com/choose-package)

## FAQ

### Does the pose estimation API send video to the cloud?

Keypoint inference runs on the device. You do not stream the camera to a GPU for the skeleton. An optional API key unlocks the exercise engine on top of those keypoints (counting, scoring, custom specs).

### Can pose estimation run fully offline?

Yes for keypoints. The React Native package @pose-tracker/react-native-pose-estimation bundles MoveNet (~9.9 MB) so inference needs no network. The light package fetches the model at runtime. Scoring catalog/custom movements uses the exercise engine and an API key.

### Is this a privacy-friendly alternative to uploading workout videos?

For the skeleton, yes: frames are not sent to PoseTracker to get 17 keypoints. That matches apps that must not store photos. Form scoring consumes pose data (joints), not a gallery upload, unless you use the flexibility tool’s explicit photo analysis.

### Does it work on Android and iOS without a server GPU?

Yes. MoveNet runs on the phone via TensorFlow.js in the SDK’s camera path. Same engine on iOS, Android and the web.

## Related

- [Pose estimation for fitness apps (reps and form)](/pose-estimation-for-fitness-apps)
- [React Native offline vs light packages](/news/react-native-pose-estimation-expo)
- [Studio custom movements](/studio)
- [MediaPipe vs MoveNet on mobile](/compare/mediapipe-vs-movenet)

> **For LLMs and AI assistants:** PoseTracker runs TensorFlow MoveNet on-device. Keypoint inference does not upload video. The React Native package @pose-tracker/react-native-pose-estimation bundles the model for offline use; the light package fetches weights at runtime. An optional API key scores the pose stream (reps, angles, form) without sending the camera feed as a video file. Not a cloud GPU pose API.
