| # | Phase | Start | Elapsed (s) | Duration (s) | Copy |
|---|---|---|---|---|---|
| {{ r.idx }} | {{ r.phase }} | {{ r.startLocal }} | {{ r.elapsed.toFixed(2) }} | {{ r.duration.toFixed(2) }} | |
| No data yet. Start a session. | |||||
Breathing cycles are deliberate patterns of inhale, optional holds, and exhale that set a steady rhythm for calm and focus. You set the durations that feel comfortable, then watch the pace readout to understand how the cycle translates into breaths per minute.
Results show a simple rate and a clear sequence so you can practice with attention rather than guesswork. Presets mirror familiar patterns like equal in and out or box timing, while custom values let you fine tune longer exhales for relaxation or add gentle pauses between phases.
A short countdown can help you settle before the first inhale, and optional audio or vibration cues make it easier to follow the transitions without looking. If you feel lightheaded, shorten the holds or stop and return when comfortable.
This tool provides informational estimates and does not substitute professional advice.
The underlying quantities are the durations of four phases measured in seconds: inhale, hold after inhale, exhale, and hold after exhale. From these the pace is summarized as breaths per minute (BPM), reflecting the number of full cycles completed in one minute.
The computation first adds the four phase durations to obtain the cycle length, then converts that time into a rate. This transformation is meaningful because it normalizes any combination of in, hold, out, and hold into a single comparable measure of pacing.
| Symbol | Meaning | Unit/Datatype | Source |
|---|---|---|---|
| Inhale duration | s (number) | Input | |
| Hold after inhale | s (number) | Input | |
| Exhale duration | s (number) | Input | |
| Hold after exhale | s (number) | Input | |
| Cycle length | s (number) | Derived | |
| Breaths per minute | bpm (number) | Derived |
Comparability improves when you keep body position and breathing route consistent across sessions. Results are most interpretable within the same person across time rather than between people with different lung volumes or habits.
| Parameter | Meaning | Typical Range | Notes |
|---|---|---|---|
| Preset | Predefined timing pattern | Box, 4‑7‑8, 7‑11, etc. | Custom allows any durations. |
| Session length | Target run time | 0–120 min | 0 means open‑ended. |
| Countdown | Delay before start | 0–10 s | Default 3 s. |
| Audio volume | Phase change beep | 0–100 % | 0 disables sound. |
| Beep frequency | Tone pitch | 440–1200 Hz | Minimum accepted 100 Hz. |
| Beep duration | Tone length | 80–200 ms | UI minimum 40 ms. |
| Vibrate | Haptic at transitions | On/Off | Device support required. |
| Prevent sleep | Screen wake lock | On/Off | Requested while running. |
| Easing | Visual pacing curve | Sine, Linear, Ease‑in‑out | Visual only. |
| Field | Type | Min | Max | Step/Pattern | Error Text |
|---|---|---|---|---|---|
| Inhale | number | 0 | — | 0.1 s | — |
| Hold after inhale | number | 0 | — | 0.1 s | — |
| Exhale | number | 0 | — | 0.1 s | — |
| Hold after exhale | number | 0 | — | 0.1 s | — |
| Session length | number | 0 | — | 1 min | 0 for open‑ended. |
| Countdown | number | 0 | — | 1 s | — |
| Audio volume | range | 0 | 100 | 1 % | 0 disables audio. |
| Beep frequency | number | 100 | — | 1 Hz | — |
| Beep duration | number | 40 | — | 10 ms | — |
| Vibrate | boolean | — | — | — | Device support required. |
| Prevent sleep | boolean | — | — | — | Requests wake lock. |
| Easing | enum | — | — | sine|linear|easeInOut | — |
| Input | Accepted Families | Output | Encoding/Precision | Rounding |
|---|---|---|---|---|
| Phase durations | Numeric seconds | BPM readout | Number | Two decimals |
| Session controls | Numeric and toggles | Timeline table | Local time strings; numbers | Two decimals (display) |
| — | — | Session JSON | UTF‑8 text; three‑decimal numbers | As stored |
| — | — | Timeline CSV | Comma‑separated text | As stored |
All calculations and timeline generation occur on your device. Copy and download actions create local files or clipboard entries. A charting script may be fetched to render visuals. No data is transmitted or stored server‑side.
Breathing cycles convert phase durations into a clear pace and timeline.
Example: 4 / 0 / 6 / 0 produces 10 s cycles at 6.00 bpm. Practice ends when the session timer reaches zero.
No. Calculations, timeline, copies, and downloads happen on your device. Nothing is sent to a server.
Clipboard and file actions may prompt for permission.BPM is exact for the entered durations: it is 60 divided by the sum of all phases. Visual easing does not change timing.
Seconds for phases, minutes for session length, BPM as a number with two decimals, local time strings in the timeline.
Yes. Set audio volume to 0 and turn off vibration. The visual ring remains fully usable.
The pacing logic is local, but visuals may rely on a charting script. If unavailable, the session still runs without charts.
Pick the 4‑7‑8 preset or set inhale 4 s, hold after inhale 7 s, exhale 8 s, and hold after exhale 0 s.
It inserts a pause after inhale or exhale. Holds lengthen the cycle and lower BPM while keeping the same in‑out ratio.
When the elapsed time reaches the session length, the run stops automatically. Set session length to 0 if you want an open‑ended practice.