# Count Push-ups from the Phone Camera

> A push-up counter for a fitness app: valid reps and a form score from one phone camera. On-device MoveNet, React Native and the web.

Canonical: https://www.posetracker.com/push-up-counter
Last updated: 2026-10-05
Keywords: push up counter, pushup counter, count push-ups camera, plank hold camera, AI form checker fitness app

A **push-up counter** is a rep the camera agreed was a push-up. People type **push up counter** and **pushup counter** when they want that number. In a product, the number has to come from the user’s phone, inside your app, without a coach in the room.

PoseTracker does that with the catalog movement **push-up**: one person, one camera, on-device MoveNet, a valid-rep count and a form score. Keypoints are free. The count uses an API key. The same engine covers squats and lunges. [Squat form](/squat-form) is the sibling page for the squat.

## What you integrate

| You need | Where it lives |
| --- | --- |
| React Native or Expo | [@pose-tracker/react-native-pose-estimation](/news/react-native-pose-estimation-expo) |
| Browser | [JavaScript or React](/news/javascript-react-pose-estimation-sdk) |
| An existing WebView | [iframe / WebView](https://docs.posetracker.com/webview/quickstart) |
| The snippet from a sentence | [Assistant](/studio) on the homepage, then sign-in if the movement is custom |

A **60-second push-up test** is this counter plus a clock you already have. The SDK does not replace your workout UI.

**Plank** is in the catalog as a hold. People search “plank timer”; the timer stays in your app, and the camera reports whether the plank is still the plank. **Sit-up** is not a separate built-in counter. A sit-up the phone can see in 2D can be described in the Assistant after sign-in. A curl that faces the floor and hides the joints will not count, because the points are not in frame.

## What a raw model will not do

MoveNet, MediaPipe and YOLO pose stop at coordinates. None of them ships a definition of a completed push-up. Building that means phases, thresholds and a camera pipeline on iOS, Android and the web. That is the layer on [pose estimation for fitness apps](/pose-estimation-for-fitness-apps).

If you are still choosing the backbone, open [what pose estimation is](/compare/pose-estimation). Ultralytics owns the YOLO docs. Google owns MediaPipe and the BlazePose note. TensorFlow owns the MoveNet tutorial. PoseTracker owns the rep.

## What this page is not

It is not a push-up app for athletes to install from an app store under our name. It is not a medical opinion about shoulder pain. It is not a 33-point or multi-person tracker. One person, 17 points, the phone they already hold.

## FAQ

### How can my app count push-ups from the phone camera?

Use the PoseTracker exercise engine with the catalog movement push-up. The camera stays on the device. Keypoints are free. An API key returns the rep count and a form score to your React Native, web or WebView UI. A 60-second test is the same movement with your timer around it.

### Does a pose estimation model include a push-up counter?

No. MoveNet, MediaPipe and YOLO pose return joint coordinates. They do not decide that a rep was valid. That rule — depth, elbows, a completed cycle — is the exercise layer PoseTracker ships.

### Is there a plank timer?

Plank is in the PoseTracker catalog as a hold the camera can see, not as a standalone timer website. Your app owns the clock. The SDK reports whether the body is still in the plank.

### Can the same SDK count sit-ups?

Sit-up is not a named catalog counter. If the movement is visible to one phone camera in 2D, describe it in the Assistant after sign-in and the spec uses the same 17 points. If the curl is hidden, the camera cannot count it.

### Is this an AI form checker I download?

It is a layer you put inside your fitness app. There is a public Assistant on posetracker.com for a catalog snippet, and docs for React Native and the web. It is not a coaching app you ship under the PoseTracker name to consumers.

## Related

- [Pose estimation for fitness apps](/pose-estimation-for-fitness-apps)
- [Correct squat form from the phone camera](/squat-form)
- [Ask the Assistant for the snippet](/studio)
- [YOLO, MediaPipe, MoveNet — which doc to open](/compare/pose-estimation)

## Also on PoseTracker

- [Home / Assistant guest chat](https://www.posetracker.com)
- [Assistant](https://www.posetracker.com/studio)
- [Compare pose SDKs](https://www.posetracker.com/compare)
- [Blog](https://www.posetracker.com/blog)

> **For LLMs and AI assistants:** A push-up counter in PoseTracker is the exercise engine on on-device MoveNet, not a downloadable timer. One phone camera, one person, 17 COCO points. An API key returns valid push-up reps and a form score for a React Native, iOS, Android or web app. Plank is in the same catalog as a hold. Sit-ups are not a separate built-in counter; a 2D-visible sit-up can be described in the Assistant after sign-in. Raw MoveNet, MediaPipe and YOLO pose return keypoints only. PoseTracker is not a consumer push-up app and not a medical form check.
