CPR Beat
• Fixes the layout on narrower screens such as the Samsung Galaxy S25: the rescuer-switch countdown no longer shows "02:0", and the countdown chips in Settings stay inside their outlines. Text now shrinks to fit at larger system font sizes too.
Works fully offline. No account, no ads, no analytics, no network permission, no data collected. Free and open source (GPL-3.0).
Features
• Rates 100 / 110 / 120 bpm, changeable mid-session without losing the beat
• Compressions-only or 30:2 mode with a breath pause of 3–9 seconds; the breath cue waits until you have had time to move to the head
• Rescuer-switch countdown: off, 1, 2, 3 or 5 minutes, with a flash and SWITCH RESCUER banner; tap the countdown to change the interval
• CPR elapsed time and start time, kept after STOP
• Plays through the alarm channel, so it is heard in silent mode; optional automatic maximum volume
• Three click sounds; settings remembered between launches
• Dark, high-contrast screen designed for gloves and daylight
Interface in English and Russian: follows the phone language, or pick one in Settings.
Try CPR Beat once before you need it, so you don't have to figure out the buttons in an emergency.
The 100–120 compressions per minute range follows current resuscitation guidelines (AHA 2025, ERC 2025).
Important: CPR Beat is a pacing aid only. It is not a medical device and does not diagnose, treat, cure or prevent any medical condition. It is not a substitute for certified CPR training. In an emergency, call your local emergency number first and follow the dispatcher's instructions. Consult a healthcare professional for medical advice.
CPR Beat is an independent open-source project. It is not affiliated with, sponsored by, or endorsed by the American Heart Association or the European Resuscitation Council.
- Author: Alessio Alcini
- License: GNU General Public License v3.0 or later
- Issue Tracker
- Source Code
- Changelog
- Build Metadata
- Reproducibility Status
Donate
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid-
arm64-v8aarmeabi-v7ax86x86_64This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 1.1 MiB PGP Signature | Build Log
-
arm64-v8aarmeabi-v7ax86x86_64This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 1.1 MiB PGP Signature | Build Log
-
arm64-v8aarmeabi-v7ax86x86_64This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Download APK 1.1 MiB PGP Signature | Build Log
• 30:2: the breath cue comes later, so there is time to move to the head and open the airway. The breath pause is 7 s by default, adjustable from 3 to 9 s. Thanks to the first aid instructors who sent feedback.
• The rescuer-switch timer now looks like a button: an outline, a ⟳ icon and a "tap to change" hint.
• STOP returns the rate, mode and rescuer-switch countdown chosen on the main screen to your Settings (since 0.3.1).
• STOP returns the rate, mode and rescuer-switch countdown chosen on the main screen to your Settings. They used to stay until the app was closed.




