---
description: Capacitor plugin to retrieve motion data, such as the number of steps and other information about the distance traveled.
title: Capacitor Pedometer Plugin for Android & iOS - Capawesome
image: https://capawesome.io/docs/assets/images/social/sdks/capacitor/pedometer.png
---

<!doctype html> 

[Skip to content ](#capacitor-pedometer-plugin) 

[🖥️ Introducing the **Capacitor Electron Platform** — build desktop apps for macOS, Windows, and Linux. Free & open source. ](/blog/announcing-the-capacitor-electron-platform/) 

* [ SDKs ](/docs/sdks/)
* [ Formbricks ](/docs/sdks/capacitor/formbricks/)
* [ Geocoder ](/docs/sdks/capacitor/geocoder/)
* [ Google Sign-In ](/docs/sdks/capacitor/google-sign-in/)
* [ Grafana Faro ](/docs/sdks/capacitor/grafana-faro/)
* [ Gyroscope ](/docs/sdks/capacitor/gyroscope/)
* [ Haptics ](/docs/sdks/capacitor/haptics/)
* [ Home Indicator ](/docs/sdks/capacitor/home-indicator/)
* [ In-App Browser ](/docs/sdks/capacitor/in-app-browser/)
* [ Install Referrer ](/docs/sdks/capacitor/install-referrer/)
* [ Intercom ](/docs/sdks/capacitor/intercom/)
* [ Intune ](/docs/sdks/capacitor/intune/)
* [ Keep Awake ](/docs/sdks/capacitor/keep-awake/)
* [ libSQL ](/docs/sdks/capacitor/libsql/)
* [ Light Sensor ](/docs/sdks/capacitor/light-sensor/)
* [ Live Update ](/docs/sdks/capacitor/live-update/)
* [ Localization ](/docs/sdks/capacitor/localization/)
* [ Mail Composer ](/docs/sdks/capacitor/mail-composer/)
* [ Managed Configurations ](/docs/sdks/capacitor/managed-configurations/)
* [ Maps Launcher ](/docs/sdks/capacitor/maps-launcher/)
* [ Media Session ](/docs/sdks/capacitor/media-session/)
* [ ML Kit ](/docs/sdks/capacitor/mlkit/)
* [ Navigation Bar ](/docs/sdks/capacitor/navigation-bar/)
* [ Network ](/docs/sdks/capacitor/network/)
* [ NFC ](/docs/sdks/capacitor/nfc/)
* [ Node.js ](/docs/sdks/capacitor/nodejs/)
* [ OAuth ](/docs/sdks/capacitor/oauth/)
* [ Passkeys ](/docs/sdks/capacitor/passkeys/)
* [ Password Autofill ](/docs/sdks/capacitor/password-autofill/)
* [ PDF Generator ](/docs/sdks/capacitor/pdf-generator/)
* [ PDF Viewer ](/docs/sdks/capacitor/pdf-viewer/)
* Pedometer [ Pedometer ](/docs/sdks/capacitor/pedometer/)
* [ iOS ](#ios)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ Breaking Changes ](#breaking-changes)
* [ License ](#license)
* [ Permissions ](/docs/sdks/capacitor/permissions/)
* [ Phone Dialer ](/docs/sdks/capacitor/phone-dialer/)
* [ Photo Editor ](/docs/sdks/capacitor/photo-editor/)
* [ Photo Manipulator ](/docs/sdks/capacitor/photo-manipulator/)
* [ PixLive ](/docs/sdks/capacitor/pixlive/)
* [ PostHog ](/docs/sdks/capacitor/posthog/)
* [ Printer ](/docs/sdks/capacitor/printer/)
* [ Privacy Screen ](/docs/sdks/capacitor/privacy-screen/)
* [ Proximity Sensor ](/docs/sdks/capacitor/proximity-sensor/)
* [ Purchases ](/docs/sdks/capacitor/purchases/)
* [ RealtimeKit ](/docs/sdks/capacitor/realtimekit/)
* [ Root Detection ](/docs/sdks/capacitor/root-detection/)
* [ Screen Brightness ](/docs/sdks/capacitor/screen-brightness/)
* [ Screen Orientation ](/docs/sdks/capacitor/screen-orientation/)
* [ Screen Reader ](/docs/sdks/capacitor/screen-reader/)
* [ Screenshot ](/docs/sdks/capacitor/screenshot/)
* [ Secure Preferences ](/docs/sdks/capacitor/secure-preferences/)
* [ Settings Launcher ](/docs/sdks/capacitor/settings-launcher/)
* [ Shake ](/docs/sdks/capacitor/shake/)
* [ Silent Mode ](/docs/sdks/capacitor/silent-mode/)
* [ SIM ](/docs/sdks/capacitor/sim/)
* [ SMS Composer ](/docs/sdks/capacitor/sms-composer/)
* [ Speech Recognition ](/docs/sdks/capacitor/speech-recognition/)
* [ Speech Synthesis ](/docs/sdks/capacitor/speech-synthesis/)
* [ Share Target ](/docs/sdks/capacitor/share-target/)
* [ Square Mobile Payments ](/docs/sdks/capacitor/square-mobile-payments/)
* [ SQLite ](/docs/sdks/capacitor/sqlite/)
* [ Superwall ](/docs/sdks/capacitor/superwall/)
* [ System WebView ](/docs/sdks/capacitor/system-webview/)
* [ Tauri ](/docs/sdks/capacitor/tauri/)
* [ Text Interaction ](/docs/sdks/capacitor/text-interaction/)
* [ Text Zoom ](/docs/sdks/capacitor/text-zoom/)
* [ Thermal State ](/docs/sdks/capacitor/thermal-state/)
* [ Toast ](/docs/sdks/capacitor/toast/)
* [ Torch ](/docs/sdks/capacitor/torch/)
* [ Vault ](/docs/sdks/capacitor/vault/)
* [ Volume ](/docs/sdks/capacitor/volume/)
* [ Wallet ](/docs/sdks/capacitor/wallet/)
* [ Wifi ](/docs/sdks/capacitor/wifi/)
* [ YouTube Player ](/docs/sdks/capacitor/youtube-player/)
* [ Zip ](/docs/sdks/capacitor/zip/)
* [ Cordova ](/docs/sdks/cordova/)
* [ Cloud ](/docs/cloud/)
* [ Integrations ](/docs/cloud/live-updates/integrations/)
* Concepts
* Reference
* [ Troubleshooting ](/docs/cloud/live-updates/troubleshooting/)
* [ FAQ ](/docs/cloud/live-updates/faq/)
* [ Native Builds ](/docs/cloud/native-builds/)
* [ Set Up Environments ](/docs/cloud/native-builds/environments/)
* [ Overwrite Native Configurations ](/docs/cloud/native-builds/native-configurations/)
* [ Auto-Increment Build Numbers ](/docs/cloud/native-builds/auto-incrementing-build-numbers/)
* [ Configure the Web Build Script ](/docs/cloud/native-builds/web-build-script/)
* [ Build from a Monorepo ](/docs/cloud/native-builds/monorepo/)
* [ Use pnpm, Yarn, or bun ](/docs/cloud/native-builds/package-managers/)
* [ Install Private npm Packages ](/docs/cloud/native-builds/npm-private-registry/)
* [ Override the Java Version ](/docs/cloud/native-builds/override-java-version/)
* [ Custom iOS Provisioning Profiles ](/docs/cloud/native-builds/custom-ios-provisioning-profiles/)
* [ Build without Git ](/docs/cloud/native-builds/build-without-git/)
* [ Access Git Behind a Firewall ](/docs/cloud/native-builds/firewall-access/)
* [ Integrations ](/docs/cloud/native-builds/integrations/)
* Reference
* [ Troubleshooting ](/docs/cloud/native-builds/troubleshooting/)
* [ FAQ ](/docs/cloud/native-builds/faq/)
* [ App Store Publishing ](/docs/cloud/app-store-publishing/)
* [ Submit a Build ](/docs/cloud/app-store-publishing/submit-a-build/)
* [ Submit Automatically After a Build ](/docs/cloud/app-store-publishing/submit-automatically/)
* [ Troubleshooting ](/docs/cloud/app-store-publishing/troubleshooting/)
* [ FAQ ](/docs/cloud/app-store-publishing/faq/)
* [ Automations ](/docs/cloud/automations/)
* [ Reference ](/docs/cloud/automations/reference/)
* [ Troubleshooting ](/docs/cloud/automations/troubleshooting/)
* [ FAQ ](/docs/cloud/automations/faq/)
* [ Assist ](/docs/cloud/assist/)
* [ CLI ](/docs/cloud/cli/)
* APIs and SDKs
* [ Webhooks ](/docs/cloud/webhooks/)
* [ Integrations ](/docs/cloud/integrations/)
* Account
* [ Organization ](/docs/cloud/organizations/)
* [ Two-Factor Enforcement ](/docs/cloud/organizations/two-factor-authentication/)
* [ Audit Logs ](/docs/cloud/organizations/audit-logs/)
* [ Billing ](/docs/cloud/organizations/billing/)
* [ License Keys ](/docs/cloud/license-keys/)
* [ AI ](/docs/ai/)
* [ Insiders ](/docs/insiders/)
* [ Billing & Plans ](/docs/insiders/billing-and-plans/)
* [ FAQ ](/docs/insiders/faq/)
* [ License ](https://capawesome.io/legal/eula/)
* [ Support ](/docs/support/)
* [ Contributing ](/docs/contributing/)
* Contributing code
* [ Code of Conduct ](/docs/contributing/code-of-conduct/)
* [ Questions ](https://docs.github.com/en/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion)
* [ Blog ](/blog/)
* Categories

* [ iOS ](#ios)
* [ Usage ](#usage)
* [ API ](#api)
* [ Type Aliases ](#type-aliases)
* [ FAQ ](#faq)
* [ Related Plugins ](#related-plugins)
* [ Newsletter ](#newsletter)
* [ Changelog ](#changelog)
* [ Breaking Changes ](#breaking-changes)
* [ License ](#license)

# Capacitor Pedometer Plugin[¶](#capacitor-pedometer-plugin "Permanent link")

Capacitor plugin to retrieve motion data, such as the number of steps and other information about the distance traveled.

[ ![Deliver Live Updates to your Capacitor app with Capawesome Cloud](../../../assets/external/cloud.capawesome.io/assets/banners/cloud-build-and-deploy-capacitor-apps.69628c3f.png) ](https://cloud.capawesome.io/) 

## Features[¶](#features "Permanent link")

The Capacitor Pedometer plugin is one of the most complete motion tracking solutions for Capacitor apps. Here are some of the key features:

* 🖥️ **Cross-platform**: Supports Android and iOS.
* 🚶 **Motion Tracking**: Retrieve step count, distance, pace, cadence, and floor counting data.
* 📊 **Real-time Updates**: Stream live pedometer data with event listeners for continuous monitoring.
* 📅 **Historical Data**: Query pedometer measurements for specific time ranges and periods.
* 🔍 **Feature Detection**: Check device capability for different pedometer features (steps, distance, floors, etc.).
* 🤝 **Compatibility**: Works alongside the [Accelerometer](https://capawesome.io/docs/sdks/capacitor/accelerometer/), [Barometer](https://capawesome.io/docs/sdks/capacitor/barometer/) and [Gyroscope](https://capawesome.io/docs/sdks/capacitor/gyroscope/) plugins.
* 📦 **CocoaPods & SPM**: Supports CocoaPods and Swift Package Manager for iOS.
* 🔁 **Up-to-date**: Always supports the latest Capacitor version.
* ⭐️ **Support**: Priority support from the Capawesome Team.
* ✨ **Handcrafted**: Built from the ground up with care and expertise, not forked or AI-generated.

Missing a feature? Just [open an issue](https://github.com/capawesome-team/capacitor-plugins/issues) and we'll take a look!

## Use Cases[¶](#use-cases "Permanent link")

The Pedometer plugin is typically used whenever an app needs to track the user's physical activity, for example:

* **Fitness and step tracking**: Show the user's step count in a health or fitness app.
* **Workout sessions**: Stream live pedometer data with the `measurement` event to display real-time progress during a walk or run.
* **Distance and pace insights**: Display the distance traveled, current pace, and cadence of the user on iOS.
* **Floor climbing challenges**: Count the floors ascended and descended by the user on iOS.
* **Activity history**: Query pedometer measurements for a specific time range to build daily or weekly summaries.

## Compatibility[¶](#compatibility "Permanent link")

| Plugin Version | Capacitor Version | Status         |
| -------------- | ----------------- | -------------- |
| 8.x.x          | \>=8.x.x          | Active support |
| 7.x.x          | 7.x.x             | Deprecated     |

## Guides[¶](#guides "Permanent link")

* [The Complete Guide to Capacitor Device Sensors](https://capawesome.io/blog/capacitor-device-sensors-guide/): Fitness-tracking use cases and how this plugin compares to the raw Accelerometer.

## Installation[¶](#installation "Permanent link")

This plugin is only available to [Capawesome Insiders](https://capawesome.io/insiders/). First, make sure you have the Capawesome npm registry set up. You can do this by running the following commands:

`[](#%5F%5Fcodelineno-0-1)npm config set @capawesome-team:registry https://npm.registry.capawesome.io
[](#%5F%5Fcodelineno-0-2)npm config set //npm.registry.capawesome.io/:_authToken <YOUR_LICENSE_KEY>
`

**Attention**: Replace `<YOUR_LICENSE_KEY>` with the license key you received from Polar. If you don't have a license key yet, you can get one by becoming a [Capawesome Insider](https://capawesome.io/insiders/).

Next, you can use our **AI-Assisted Setup** to install the plugin. Add the [Capawesome Skills](https://github.com/capawesome-team/skills) to your AI tool using the following command:

`[](#%5F%5Fcodelineno-1-1)npx skills add capawesome-team/skills --skill capacitor-plugins
`

Then use the following prompt:

`` [](#%5F%5Fcodelineno-2-1)Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome-team/capacitor-pedometer` plugin in my project.
 ``

If you prefer **Manual Setup**, install the plugin by running the following commands and follow the platform-specific instructions below:

`[](#%5F%5Fcodelineno-3-1)npm install @capawesome-team/capacitor-pedometer
[](#%5F%5Fcodelineno-3-2)npx cap sync
`

### Android[¶](#android "Permanent link")

#### Proguard[¶](#proguard "Permanent link")

If you are using Proguard, you need to add the following rules to your `proguard-rules.pro` file:

`[](#%5F%5Fcodelineno-4-1)-keep class io.capawesome.capacitorjs.plugins.** { *; }
`

### iOS[¶](#ios "Permanent link")

#### Privacy Descriptions[¶](#privacy-descriptions "Permanent link")

Add the `NSMotionUsageDescription` key to the `ios/App/App/Info.plist` file, which tells the user why your app needs access to the user's contacts:

`[](#%5F%5Fcodelineno-5-1)<key>NSMotionUsageDescription</key>
[](#%5F%5Fcodelineno-5-2)<string>The app needs to access the motion activity.</string>
`

## Usage[¶](#usage "Permanent link")

The following examples show how to check which pedometer features are available, retrieve a measurement, receive live measurement updates, and check and request permissions.

### Check which features are available[¶](#check-which-features-are-available "Permanent link")

Not every device supports every pedometer feature. Use `isAvailable()` to check whether step counting, distance tracking, pace, cadence, and floor counting are supported before relying on them:

`[](#%5F%5Fcodelineno-6-1)import { Pedometer } from '@capawesome-team/capacitor-pedometer';
[](#%5F%5Fcodelineno-6-2)
[](#%5F%5Fcodelineno-6-3)const isAvailable = async () => {
[](#%5F%5Fcodelineno-6-4)  const { cadence, distance, floorCounting, pace, stepCounting } = await Pedometer.isAvailable();
[](#%5F%5Fcodelineno-6-5)  console.log('Cadence available:', cadence);
[](#%5F%5Fcodelineno-6-6)  console.log('Distance available:', distance);
[](#%5F%5Fcodelineno-6-7)  console.log('Floor counting available:', floorCounting);
[](#%5F%5Fcodelineno-6-8)  console.log('Pace available:', pace);
[](#%5F%5Fcodelineno-6-9)  console.log('Step counting available:', stepCounting);
[](#%5F%5Fcodelineno-6-10)};
`

### Retrieve a pedometer measurement[¶](#retrieve-a-pedometer-measurement "Permanent link")

Retrieve the pedometer data, such as the number of steps taken by the user. On iOS, you must provide the `start` and `end` options to query a specific time range. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-7-1)import { Pedometer } from '@capawesome-team/capacitor-pedometer';
[](#%5F%5Fcodelineno-7-2)
[](#%5F%5Fcodelineno-7-3)const getMeasurement = async () => {
[](#%5F%5Fcodelineno-7-4)  const { measurement } = await Pedometer.getMeasurement();
[](#%5F%5Fcodelineno-7-5)  console.log(measurement);
[](#%5F%5Fcodelineno-7-6)};
`

### Receive live measurement updates[¶](#receive-live-measurement-updates "Permanent link")

Add a listener for the `measurement` event and call `startMeasurementUpdates()` to continuously receive pedometer data, for example during a workout session. Call `stopMeasurementUpdates()` when you no longer need updates. Only available on Android and iOS:

`[](#%5F%5Fcodelineno-8-1)import { Pedometer } from '@capawesome-team/capacitor-pedometer';
[](#%5F%5Fcodelineno-8-2)
[](#%5F%5Fcodelineno-8-3)const startMeasurementUpdates = async () => {
[](#%5F%5Fcodelineno-8-4)  Pedometer.addListener('measurement', (event) => {
[](#%5F%5Fcodelineno-8-5)    console.log('New measurement:', event);
[](#%5F%5Fcodelineno-8-6)  });
[](#%5F%5Fcodelineno-8-7)  await Pedometer.startMeasurementUpdates();
[](#%5F%5Fcodelineno-8-8)};
[](#%5F%5Fcodelineno-8-9)
[](#%5F%5Fcodelineno-8-10)const stopMeasurementUpdates = async () => {
[](#%5F%5Fcodelineno-8-11)  await Pedometer.stopMeasurementUpdates();
[](#%5F%5Fcodelineno-8-12)};
`

### Check and request permissions[¶](#check-and-request-permissions "Permanent link")

Check and request the permission for the activity recognition feature before accessing pedometer data:

`[](#%5F%5Fcodelineno-9-1)import { Pedometer } from '@capawesome-team/capacitor-pedometer';
[](#%5F%5Fcodelineno-9-2)
[](#%5F%5Fcodelineno-9-3)const checkPermissions = async () => {
[](#%5F%5Fcodelineno-9-4)  const status = await Pedometer.checkPermissions();
[](#%5F%5Fcodelineno-9-5)  console.log('Permission status:', status);
[](#%5F%5Fcodelineno-9-6)};
[](#%5F%5Fcodelineno-9-7)
[](#%5F%5Fcodelineno-9-8)const requestPermissions = async () => {
[](#%5F%5Fcodelineno-9-9)  const status = await Pedometer.requestPermissions();
[](#%5F%5Fcodelineno-9-10)  console.log('Permission status after request:', status);
[](#%5F%5Fcodelineno-9-11)};
`

## API[¶](#api "Permanent link")

* [getMeasurement(...)](#getmeasurement)
* [isAvailable()](#isavailable)
* [startMeasurementUpdates()](#startmeasurementupdates)
* [stopMeasurementUpdates()](#stopmeasurementupdates)
* [checkPermissions()](#checkpermissions)
* [requestPermissions()](#requestpermissions)
* [addListener('measurement', ...)](#addlistenermeasurement-)
* [removeAllListeners()](#removealllisteners)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)

### getMeasurement(...)[¶](#getmeasurement "Permanent link")

`[](#%5F%5Fcodelineno-10-1)getMeasurement(options?: GetMeasurementOptions | undefined) => Promise<GetMeasurementResult>
`

Retrieve the pedometer data (for a specific time range).

Only available on Android and iOS.

| Param       | Type                                            |
| ----------- | ----------------------------------------------- |
| **options** | [GetMeasurementOptions](#getmeasurementoptions) |

**Returns:** `Promise<[Measurement](#measurement)>`

**Since:** 7.0.0

---

### isAvailable()[¶](#isavailable "Permanent link")

`[](#%5F%5Fcodelineno-11-1)isAvailable() => Promise<IsAvailableResult>
`

Check which features are available on the device.

**Returns:** `Promise<[IsAvailableResult](#isavailableresult)>`

**Since:** 7.0.0

---

### startMeasurementUpdates()[¶](#startmeasurementupdates "Permanent link")

`[](#%5F%5Fcodelineno-12-1)startMeasurementUpdates() => Promise<void>
`

Start receiving updates for the pedometer data.

Only available on Android and iOS.

**Since:** 7.0.0

---

### stopMeasurementUpdates()[¶](#stopmeasurementupdates "Permanent link")

`[](#%5F%5Fcodelineno-13-1)stopMeasurementUpdates() => Promise<void>
`

Stop receiving updates for the pedometer data.

Only available on Android and iOS.

**Since:** 7.0.0

---

### checkPermissions()[¶](#checkpermissions "Permanent link")

`[](#%5F%5Fcodelineno-14-1)checkPermissions() => Promise<PermissionStatus>
`

Check permissions for the plugin.

**Returns:** `Promise<[PermissionStatus](#permissionstatus)>`

**Since:** 7.0.0

---

### requestPermissions()[¶](#requestpermissions "Permanent link")

`[](#%5F%5Fcodelineno-15-1)requestPermissions() => Promise<PermissionStatus>
`

Request permissions for the plugin.

**Returns:** `Promise<[PermissionStatus](#permissionstatus)>`

**Since:** 7.0.0

---

### addListener('measurement', ...)[¶](#addlistenermeasurement "Permanent link")

`[](#%5F%5Fcodelineno-16-1)addListener(eventName: 'measurement', listenerFunc: (event: MeasurementEvent) => void) => Promise<PluginListenerHandle>
`

Called when the pedometer data is updated.

When the app is suspended, the delivery of updates stops temporarily. When the app is resumed, the updates will continue from where they left off.

**Note:** The `startMeasurementUpdates` method must be called before this event can be received.

Only available on Android and iOS.

| Param            | Type                                         |
| ---------------- | -------------------------------------------- |
| **eventName**    | 'measurement'                                |
| **listenerFunc** | (event: [Measurement](#measurement)) => void |

**Returns:** `Promise<[PluginListenerHandle](#pluginlistenerhandle)>`

**Since:** 6.0.0

---

### removeAllListeners()[¶](#removealllisteners "Permanent link")

`[](#%5F%5Fcodelineno-17-1)removeAllListeners() => Promise<void>
`

Remove all listeners for this plugin.

**Since:** 7.0.0

---

### Interfaces[¶](#interfaces "Permanent link")

#### Measurement[¶](#measurement "Permanent link")

| Prop                  | Type   | Description                                                                             | Since |
| --------------------- | ------ | --------------------------------------------------------------------------------------- | ----- |
| **averageActivePace** | number | The average pace of the user, measured in seconds per meter. Only available on iOS.     | 7.0.0 |
| **currentCadence**    | number | The rate at which steps are taken, measured in steps per second. Only available on iOS. | 7.0.0 |
| **currentPace**       | number | The current pace of the user, measured in seconds per meter. Only available on iOS.     | 7.0.0 |
| **distance**          | number | The estimated distance traveled by the user, measured in meters. Only available on iOS. | 7.0.0 |
| **end**               | number | The end date of the data in milliseconds since epoch.                                   | 7.0.0 |
| **floorsAscended**    | number | The number of floors ascended by the user. Only available on iOS.                       | 7.0.0 |
| **floorsDescended**   | number | The number of floors descended by the user. Only available on iOS.                      | 7.0.0 |
| **numberOfSteps**     | number | The number of steps taken by the user.                                                  | 7.0.0 |
| **start**             | number | The start date of the data in milliseconds since epoch.                                 | 7.0.0 |

#### GetMeasurementOptions[¶](#getmeasurementoptions "Permanent link")

| Prop      | Type   | Description                                                                                                                                                                                   | Since |
| --------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| **end**   | number | The end date for the query in milliseconds since epoch. On **iOS**, this option must be provided. Only available on iOS.                                                                      | 7.0.0 |
| **start** | number | The start date for the query in milliseconds since epoch. On **Android**, this is always set to the boot time of the device. On **iOS**, this option must be provided. Only available on iOS. | 7.0.0 |

#### IsAvailableResult[¶](#isavailableresult "Permanent link")

| Prop              | Type    | Description                                                                                                                                      | Since |
| ----------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----- |
| **cadence**       | boolean | Indicates whether cadence tracking is available on the device. On **Android**, this is always false because cadence tracking is not supported.   | 7.0.0 |
| **distance**      | boolean | Indicates whether distance tracking is available on the device. On **Android**, this is always false because distance tracking is not supported. | 7.0.0 |
| **floorCounting** | boolean | Indicates whether floor counting is available on the device. On **Android**, this is always false because floor counting is not supported.       | 7.0.0 |
| **pace**          | boolean | Indicates whether pace tracking is available on the device. On **Android**, this is always false because pace tracking is not supported.         | 7.0.0 |
| **stepCounting**  | boolean | Indicates whether step counting is available on the device.                                                                                      | 7.0.0 |

#### PermissionStatus[¶](#permissionstatus "Permanent link")

| Prop                    | Type                                | Description                                                | Since |
| ----------------------- | ----------------------------------- | ---------------------------------------------------------- | ----- |
| **activityRecognition** | [PermissionState](#permissionstate) | The permission state for the activity recognition feature. | 7.0.0 |

#### PluginListenerHandle[¶](#pluginlistenerhandle "Permanent link")

| Prop       | Type                |
| ---------- | ------------------- |
| **remove** | () => Promise<void> |

### Type Aliases[¶](#type-aliases "Permanent link")

#### GetMeasurementResult[¶](#getmeasurementresult "Permanent link")

`[Measurement](#measurement)`

#### PermissionState[¶](#permissionstate "Permanent link")

`'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'`

#### MeasurementEvent[¶](#measurementevent "Permanent link")

`[Measurement](#measurement)`

## FAQ[¶](#faq "Permanent link")

### Does the plugin work on the web?[¶](#does-the-plugin-work-on-the-web "Permanent link")

No, the plugin only supports Android and iOS. The pedometer methods such as `getMeasurement(...)` and `startMeasurementUpdates()` rely on the native motion APIs of the device and are therefore not available on the web.

### Why are distance, pace, cadence, and floor counts missing on Android?[¶](#why-are-distance-pace-cadence-and-floor-counts-missing-on-android "Permanent link")

On Android, only step counting is supported. Distance tracking, pace, cadence, and floor counting are only available on iOS. You can use the `isAvailable()` method to check at runtime which features are supported on the current device, as shown in the [usage example](#check-which-features-are-available) above.

### Do I need any permissions to use the plugin?[¶](#do-i-need-any-permissions-to-use-the-plugin "Permanent link")

Yes. The plugin provides the `checkPermissions()` and `requestPermissions()` methods to check and request the permission for the activity recognition feature. On iOS, you also need to add the `NSMotionUsageDescription` key to your `Info.plist` file, as described in the [Installation](#installation) section.

### Can I query pedometer data for a specific time range?[¶](#can-i-query-pedometer-data-for-a-specific-time-range "Permanent link")

Yes, the `getMeasurement(...)` method accepts `start` and `end` options in milliseconds since epoch. On iOS, both options must be provided. On Android, the start date is always set to the boot time of the device.

### Why do I stop receiving measurement events while the app is suspended?[¶](#why-do-i-stop-receiving-measurement-events-while-the-app-is-suspended "Permanent link")

When the app is suspended, the delivery of updates stops temporarily. When the app is resumed, the updates will continue from where they left off. Also note that the `startMeasurementUpdates()` method must be called before the `measurement` event can be received.

### Can I use this plugin with Ionic, React, Vue or Angular?[¶](#can-i-use-this-plugin-with-ionic-react-vue-or-angular "Permanent link")

Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects.

## Related Plugins[¶](#related-plugins "Permanent link")

* [Accelerometer](https://capawesome.io/docs/sdks/capacitor/accelerometer/): Capture the acceleration force along the x, y, and z axes.
* [Barometer](https://capawesome.io/docs/sdks/capacitor/barometer/): Obtain the static air pressure measured in hectopascals.
* [Gyroscope](https://capawesome.io/docs/sdks/capacitor/gyroscope/): Read the device's gyroscope sensor.

## Newsletter[¶](#newsletter "Permanent link")

Stay up to date with the latest news and updates about the Capawesome, Capacitor, and Ionic ecosystem by subscribing to our [Capawesome Newsletter](https://cloud.capawesome.io/newsletter/).

## Changelog[¶](#changelog "Permanent link")

See [CHANGELOG.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/pedometer/CHANGELOG.md).

## Breaking Changes[¶](#breaking-changes "Permanent link")

See [BREAKING.md](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/pedometer/BREAKING.md).

## License[¶](#license "Permanent link")

See [LICENSE](https://github.com/capawesome-team/capacitor-plugins/blob/main/packages/pedometer/LICENSE).

July 8, 2026 

Back to top

```json
{"@context": "https://schema.org", "@graph": [{"@type": "TechArticle", "@id": "https://capawesome.io/docs/sdks/capacitor/pedometer/#article", "headline": "Capacitor Pedometer Plugin for Android & iOS", "name": "Capacitor Pedometer Plugin for Android & iOS", "description": "Capacitor plugin to retrieve motion data, such as the number of steps and other information about the distance traveled.", "inLanguage": "en", "url": "https://capawesome.io/docs/sdks/capacitor/pedometer/", "mainEntityOfPage": "https://capawesome.io/docs/sdks/capacitor/pedometer/", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "about": {"@id": "https://capawesome.io/docs/sdks/capacitor/pedometer/#software"}}, {"@type": "SoftwareSourceCode", "@id": "https://capawesome.io/docs/sdks/capacitor/pedometer/#software", "name": "Capacitor Pedometer Plugin for Android & iOS", "description": "Capacitor plugin to retrieve motion data, such as the number of steps and other information about the distance traveled.", "url": "https://capawesome.io/docs/sdks/capacitor/pedometer/", "programmingLanguage": "TypeScript", "runtimePlatform": "Capacitor", "codeRepository": "https://github.com/capawesome-team", "author": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}, "publisher": {"@type": "Organization", "name": "Capawesome", "url": "https://capawesome.io", "logo": {"@type": "ImageObject", "url": "https://capawesome.io/assets/images/logo.svg"}}}]}
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Does the plugin work on the web?", "acceptedAnswer": {"@type": "Answer", "text": "No, the plugin only supports Android and iOS. The pedometer methods such as getMeasurement(...) and startMeasurementUpdates() rely on the native motion APIs of the device and are therefore not available on the web."}}, {"@type": "Question", "name": "Why are distance, pace, cadence, and floor counts missing on Android?", "acceptedAnswer": {"@type": "Answer", "text": "On Android, only step counting is supported. Distance tracking, pace, cadence, and floor counting are only available on iOS. You can use the isAvailable() method to check at runtime which features are supported on the current device, as shown in the usage example above."}}, {"@type": "Question", "name": "Do I need any permissions to use the plugin?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. The plugin provides the checkPermissions() and requestPermissions() methods to check and request the permission for the activity recognition feature. On iOS, you also need to add the NSMotionUsageDescription key to your Info.plist file, as described in the Installation section."}}, {"@type": "Question", "name": "Can I query pedometer data for a specific time range?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the getMeasurement(...) method accepts start and end options in milliseconds since epoch. On iOS, both options must be provided. On Android, the start date is always set to the boot time of the device."}}, {"@type": "Question", "name": "Why do I stop receiving measurement events while the app is suspended?", "acceptedAnswer": {"@type": "Answer", "text": "When the app is suspended, the delivery of updates stops temporarily. When the app is resumed, the updates will continue from where they left off. Also note that the startMeasurementUpdates() method must be called before the measurement event can be received."}}, {"@type": "Question", "name": "Can I use this plugin with Ionic, React, Vue or Angular?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, the plugin is framework-agnostic. It works in any Capacitor app regardless of the web framework, including Ionic with Angular, React, or Vue, as well as plain JavaScript projects."}}], "url": "https://capawesome.io/docs/sdks/capacitor/pedometer/"}
```
