EMOM Workout Timer
Build an EMOM workout timer with minute targets, rest-buffer checks, live finish logging, coach checks, and a minute-flow chart.{{ summaryHeading }}
EMOM session runner
| Minute | Target | Category | Finish estimate | Rest buffer | Read | Cue | Copy |
|---|---|---|---|---|---|---|---|
| {{ row.minuteLabel }} | {{ row.target }} | {{ row.category }} | {{ formatDuration(row.workSec) }} | {{ formatDuration(row.restSec) }} | {{ row.status }} | {{ row.cue }} |
| Check | Read | Value | Action | Copy |
|---|---|---|---|---|
| {{ row.label }} | {{ row.status }} | {{ row.value }} | {{ row.note }} |
| Time | Event | Minute | Target | Note | Copy |
|---|---|---|---|---|---|
| Start a session or log a finish to create session events. | |||||
| {{ event.elapsedLabel }} | {{ event.type }} | {{ event.minuteLabel }} | {{ event.target }} | {{ event.note }} | |
{{ jsonPayload }}
EMOM means every minute on the minute. A new movement target starts at the top of each 60-second minute, and any time left after the work is finished becomes rest before the next minute starts.
The format is useful because it makes pace visible. A set of 8 push-ups that takes 25 seconds leaves 35 seconds to breathe, reset, and prepare. The same target taking 52 seconds leaves only 8 seconds, so the next minute begins before the athlete has really recovered.
That built-in rest is the main coaching lever. EMOM work can be used for strength skill practice, repeatable conditioning, mixed bodyweight circuits, or simple home workouts, but each use needs a different finish target. Strength work usually needs more rest so the reps stay crisp. Conditioning can run closer to the next minute as long as the movement still remains safe and repeatable.
An EMOM timer can organize time and expose pacing problems, but it cannot judge pain, technique, heart rate, medical risk, or whether an exercise is right for a person. Treat the plan as training information, scale the work to the athlete, and stop if symptoms or unsafe form appear.
How to Use This Tool:
Build the minute plan first, then use the live timer only after the rest checks look usable.
- Choose
Plan type.Strength skill,Conditioning,Mixed bodyweight, andCustom coachingset the default total minutes, finish target, rest floor, density limit, badge color, and coaching cue style. - Set
Total minutesfrom4to40. EMOM minutes are both the workout duration and the number of target slots in the plan. - Set
Default finish targetfrom10to59seconds andRest buffer floorfrom0to45seconds. A movement row with its own seconds value overrides the default finish target for that row. - Enter
Movement rotationwith one target per line. The compact format ismovement | seconds | category | cue, such as12 goblet squats | 35s | legs | smooth reps. CSV, TSV, and TXT files can be browsed for or dropped onto the text area. - Use
Strength sample,Conditioning sample,Mixed sample, orNormalizeto check the expected row shape. Normalize rewrites parsed rows into movement, seconds, category, and cue columns. - Open
Advancedwhen the run needs setup or device cues.Prep countdownaccepts0to60seconds, whileCue sound,Vibrate cues, andKeep screen awakedepend on browser and device support. - Review the summary, warning box,
Minute Plan, andCoach Checks. If the plan saysFix timingor any row readsOver minute, shorten that movement before starting. If it saysScale targets, the timer can run, but the tight minutes should be changed before treating the plan as repeatable. - Press
Startto freeze the current settings for the run. UsePause,Log finish,Skip, andResetduring the session, then reviewSession Logfor start, pause, minute-cue, finish, skip, reset, and completion events.
If an import fails, check the file type and size first. Files larger than 256 KB are rejected, blank lines and comment lines are ignored, and an empty rotation falls back to a generic movement target so the timing model can still render.
Interpreting Results:
Start with the summary badges. Ready means every planned minute fits inside 60 seconds and every rest buffer is at or above the selected floor. Scale targets means at least one minute is below the rest floor but still fits inside the minute. Fix timing means at least one work estimate is longer than 60 seconds, so the live timer is blocked until the row is shortened.
Minute Plan is the row-by-row audit surface. Check Finish estimate, Rest buffer, Read, and Cue before running the session. A Roomy read has at least 12 seconds more than the rest floor. A Tight read means the planned work fits, but the recovery window is smaller than requested.
Coach Checks summarizes the same plan from a coaching view: minimum and average rest, work density, movement-category variety, session length, and timer setup. A clean Coach Checks table does not prove the workout is safe or hard enough. Confirm movement quality, loading, warm-up, equipment layout, and the actual logged finish times in Session Log.
- Use
Minute Flowto spot minutes where estimated work presses against the finish-limit line. - Use
Session Logto review interruptions and finish marks from the current browser session, not to measure intensity. - Use
JSONwhen you need the full structured plan, including assumptions, warnings, readiness score, minute rows, coach checks, and session events.
Technical Details:
EMOM timing fixes the start cadence and lets the rest interval vary. Each planned minute has a target, an estimated work duration, and a rest buffer. The top of the next minute does not move because the previous minute was slow, so the rest buffer is the part that shrinks when work takes longer.
Rest-buffer planning is different from ordinary interval timing. A 35-second target and a 45-second target both fit inside a minute, but the second target leaves 10 fewer seconds to breathe, transition, and prepare. That lost recovery can change the workout even when the total duration stays unchanged.
Formula Core
The core timing math is deterministic once the minute count and movement rows are set. Per-minute rest is calculated first, then totals and density are accumulated across the repeated rotation.
The movement rotation repeats until the requested minute count is filled. A four-row rotation in a 12-minute plan appears three times.
| Read | Rest-buffer rule | Meaning |
|---|---|---|
Over minute |
rest buffer < 0 |
The estimated work exceeds 60 seconds, so the plan is invalid for a live run. |
Tight |
0 <= rest buffer < rest floor |
The work fits inside the minute, but leaves less rest than requested. |
Ready |
rest floor <= rest buffer < rest floor + 12 |
The minute preserves the selected rest floor without much extra room. |
Roomy |
rest buffer >= rest floor + 12 |
The minute leaves the floor plus at least 12 extra seconds. |
Plan Profiles and Density Limits
Profiles change defaults and coaching reads rather than the EMOM formula. The density limit is a warning threshold: going above it adds a work-density warning and lowers the readiness score, but it does not by itself block the timer.
| Plan type | Default minutes | Default work | Rest floor | Density limit | Coaching intent |
|---|---|---|---|---|---|
Strength skill |
12 |
34s |
18s |
72% |
Keep reps high-quality and preserve enough rest to repeat the skill. |
Conditioning |
16 |
42s |
10s |
86% |
Allow tighter buffers while scaling before every minute becomes a sprint finish. |
Mixed bodyweight |
20 |
36s |
14s |
80% |
Rotate movement patterns so local fatigue does not stack every minute. |
Custom coaching |
12 |
35s |
15s |
82% |
Use the rest-floor check to tune the plan for the athlete in front of you. |
Readiness and Warning Rules
The readiness status is strict about over-minute rows and more permissive about tight rows. Over-minute rows make the plan invalid for the live timer. Tight rows keep the timer available, but the status changes to Scale targets because the entered work estimate no longer protects the selected rest floor.
T is tight minute count, O is over-minute count, D is work density percent, L is the profile density limit, and N is 10 only when one movement category fills more than four minutes.
| Condition | Warning or status | Practical effect |
|---|---|---|
| No usable movement rows | Fallback target warning | A generic target is used so the plan can render, but the rotation should be filled before use. |
| Any estimated work is over 60 seconds | Fix timing |
The live run cannot start until those rows fit inside a minute. |
| Any rest buffer is below the selected floor | Scale targets |
The timer can run, but the plan is flagged for shorter reps, lighter load, or simpler movements. |
| Work density is above the profile limit | High work density |
The plan may be too dense for the selected training intent. |
| One category fills more than four minutes | Narrow rotation warning | Local fatigue may stack because the same movement pattern repeats. |
| Total minutes are greater than 30 | Long session length |
Conservative loading and exit options matter more for longer EMOMs. |
Movement Parsing and Bounds
Movement rows are read line by line. Blank lines and lines starting with # are ignored. A row can use pipe columns or tab columns; without those separators, the whole line is treated as the movement target. Leading bullets, numbered prefixes, and labels such as Minute 1: are removed from the target text.
| Input element | Accepted or normalized rule | Effect |
|---|---|---|
| Movement row | movement | seconds | category | cue |
Creates the target, estimated work seconds, category, and cue for each repeated minute. |
| Seconds value | Number, seconds text, or minutes text, clamped to 5 to 90 seconds |
Overrides the default finish target when supplied in the row or embedded in the target text. |
| Default finish target | 10 to 59 seconds |
Used when a movement row does not supply a valid seconds value. |
| Total minutes | 4 to 40 |
Controls both workout duration and the number of plan rows. |
| Rest buffer floor | 0 to 45 seconds |
Sets the threshold used by Tight, Ready, and Roomy reads. |
| Prep countdown | 0 to 60 seconds |
Adds a setup phase before minute one without changing the exported EMOM duration. |
| Imported file | CSV, TSV, or TXT up to 256 KB |
Loads the movement text area; larger files are rejected with a size message. |
When no category is supplied, movement names are matched to broad categories. Row, bike, run, sprint, burpee, jump, calorie, skierg, machine, and shuttle terms map to engine. Squat, lunge, step-up, thruster, wall ball, box jump, deadlift, clean, snatch, and swing terms map to legs. Push or press terms map to upper push, pull or chin terms map to upper pull, and plank, sit-up, hollow, V-up, crunch, toes-to-bar, or shoulder-tap terms map to core. Other targets use general.
Safety, Privacy, and Accuracy Notes:
EMOM timing can create high effort because the next minute starts whether recovery is complete or not. The timer helps plan and record the session, but it does not measure readiness, safe loading, technique, heart rate, or pain.
- Use this as general fitness information, not medical advice, diagnosis, or clearance for vigorous exercise.
- Scale reps, load, range of motion, or total minutes when the
Rest bufferis tight or movement quality breaks down. - Warm up before high-intensity work, and stop for chest pain, dizziness, unusual shortness of breath, sharp pain, or symptoms that feel unsafe.
- Audio cues, vibration, and screen wake lock can be blocked by browser support, device settings, permissions, battery policy, or tab visibility.
- The workout plan, logs, chart data, and JSON are calculated in the browser. Chart rendering may use network-loaded charting code, and private exercise notes can still appear in copied text, downloads, screenshots, or URLs you share.
Worked Examples:
Strength skill sample with repeatable rest
The Strength sample loads a 12-minute plan with pull-ups, push-ups, goblet squats, and a hollow hold. The tightest Rest buffer is 22 seconds, average rest is about 28 seconds, and Work density is about 54%. Readiness status stays Ready, and Coach Checks should show a ready rest buffer plus a varied rotation.
Conditioning plan with shorter rests
The Conditioning sample starts at 16 minutes with targets such as kettlebell swings, burpees, lunges, and machine work. Work estimates from 35 to 45 seconds leave 15 to 25 seconds of rest against a 10-second floor, so Minute Plan should mostly read Ready or Roomy. The density is about 68%, below the conditioning profile limit of 86%.
Tight custom plan that needs scaling
A 10-minute Custom coaching plan with rows such as 12 burpees | 48s | engine and 10 thrusters | 50s | legs leaves 12 and 10 seconds of rest. With an 18-second Rest buffer floor, the affected rows read Tight, the summary changes to Scale targets, and Coach Checks tells you to reduce reps, load, or movement complexity.
Over-minute row that blocks the timer
A row like 25 burpees | 75s | engine | too long produces an Over minute read because the estimated work is longer than 60 seconds. The warning box reports minutes that estimate more than 60 seconds of work, the readiness status becomes Fix timing, and Start remains unavailable until the target is shortened.
FAQ:
What does EMOM mean?
EMOM means every minute on the minute. In this timer, each row starts at the top of a 60-second minute, and the remaining seconds become the planned rest buffer.
Why is Start disabled?
Start is disabled when a row reads Over minute. Shorten that movement estimate below 60 seconds, reduce the reps, or remove the explicit seconds value so the default finish target can be used.
Can I still run a plan with Tight rows?
Yes. Tight rows fit inside the minute, so the timer can run, but the result says Scale targets because the plan does not preserve the selected Rest buffer floor.
How should I format movement rows?
Use one target per line. The richest format is movement | seconds | category | cue, while a plain line such as 8 push-ups uses the default finish target and an inferred category.
Why did my category change after Normalize?
Normalize writes the parsed target, seconds, category, and cue back into the movement field. If a row did not include a category, the timer infers one from movement words such as squat, pull, push, row, bike, plank, or burpee.
Does the timer measure actual finish time?
Only when you press Log finish. The planned Finish estimate comes from the movement row or default finish target, while Session Log records finish marks, pauses, skips, and completion events from the live run.
Are my workout rows uploaded?
The plan, timer, logs, tables, charts, and JSON are handled in the browser. Charts may use network-loaded charting code, and anything you copy, download, screenshot, or share can include your movement text.
Glossary:
- EMOM
- Every minute on the minute, a workout format where a new target starts at each 60-second boundary.
- Rest buffer
- The planned seconds left in a minute after the estimated work is finished.
- Finish target
- The estimated work duration used to decide how much rest remains in a minute.
- Work density
- The percentage of total EMOM time assigned to estimated work.
- Movement rotation
- The list of target rows that repeats until the total minute count is filled.
- Readiness status
- The plan-level result, such as
Ready,Scale targets, orFix timing. - Prep countdown
- An optional setup countdown before minute one starts.
References:
- What Counts as Physical Activity for Adults, Centers for Disease Control and Prevention, December 6, 2023.
- Physical Activity Guidelines for Americans, 2nd edition, U.S. Department of Health and Human Services, 2018.
- ACSM Information On High-Intensity Interval Training, American College of Sports Medicine.
- Every Minute on the Minute Express Workout, American Council on Exercise, August 25, 2017.