Two names for rating how hard a set was, one of which this app actually runs on. What they mean, how they convert, and every place in the program and the app that already uses them.
Never heard of RPE or RIR? Start with the definitions, then the conversion — the rest builds on those two ideas. The two scales
Already comfortable with the idea, want to see it in the app? Jump to where this program and this app actually use it. The built-in calculator · Meet-day attempt planning · The advanced phase’s own tables
RPE (Rate of Perceived Exertion) and RIR (Reps in Reserve) both answer the same question after a set: how much did you have left? RIR asks it directly — a set at 2 RIR means you could have gotten roughly two more reps with the same weight. RPE asks it backwards, as a 0–10 effort score where 10 means the set was an honest all-out max effort (0 reps left) and each point below that corresponds to one more rep you had in the tank.
The two are definitions of each other, not independent estimates — this app treats RPE = 10 − RIR as exact, always, the same identity a lifter thinking in either scale can convert in their head:
| RIR (reps left) | RPE |
|---|---|
| 0 | 10 |
| 0.5 | 9.5 |
| 1 | 9 |
| 1.5 | 8.5 |
| 2 | 8 |
| 3 | 7 |
| 4 | 6 |
Half-point steps are normal and this app's own inputs allow them — a set that felt harder than a clean 2-RIR but not quite a true 1-RIR is a real, useful 1.5. Neither scale claims more precision than that; treat a called number as a good-faith estimate, not a lab measurement.
Every server-side calculation in this app — the RPE calculator, the meet-day attempt planner — takes RIR as its actual input. RPE is a display-only convenience: this app remembers which scale you prefer on your own device and silently converts whichever one you type into RIR before anything is sent anywhere, using the same RPE = 10 − RIR identity above. Switch your preference at any time; every number you've already entered still means the same thing, just relabeled.
One practical consequence: the attempt planner's "from a recent set" mode only ever asks for RIR, never RPE, because that's the one shape the underlying calculation actually takes. If you think natively in RPE, convert once at the input field — 10 minus your RPE — rather than guessing.
The RPE/RIR calculator converts between a recent set (weight, reps, and RIR-or-RPE) and a target prescription, in either direction: tell it about a set you just did and it estimates your current one-rep max, or tell it a target rep count and effort and it prices the weight for that target against a known or estimated max.
The math is deliberately not a copy of any published RPE-percentage chart — those are one author's own interpolated table, not a public formula, and several different versions circulate under different names. Instead it treats "reps plus RIR" as an effective failure-adjacent rep count and runs it through the Epley formula (a public, decades-old equation, credited to Boyd Epley) in both directions. That makes it self-consistent — a set priced from a max and a max estimated from that same set always agree — but it deliberately won't match any one specific published chart number for number. A few worked examples, computed the same way the calculator does it:
| Reps | RIR | RPE | % of 1RM |
|---|---|---|---|
| 1 | 0 | 10 | 96.8% |
| 1 | 2 | 8 | 90.9% |
| 3 | 0 | 10 | 90.9% |
| 3 | 2 | 8 | 85.7% |
| 5 | 0 | 10 | 85.7% |
| 5 | 2 | 8 | 81.1% |
| 5 | 4 | 6 | 76.9% |
| 8 | 4 | 6 | 71.4% |
More reps at the same RIR always price out to a lower percentage, because the formula is counting total proximity to failure, not just the reps-left call on the final rep — five reps left at 2 RIR represents more accumulated fatigue than a single rep at 2 RIR, even though the RIR call is identical.
The meet-day attempt planner normally works from a declared true max, pricing openers and later attempts as percentages of it. Its second mode works from a recent autoregulated top set instead — weight, reps, and RIR — for a lifter who doesn't have a confident, current max to declare. That set is projected to an estimated true max using the exact same Epley-based math as the calculator above, and every attempt is then priced as a percentage of that projected number, shown back to you as "estimated true max: X" so the number behind your attempts is never left implicit.
This is the same estimation the advanced phase itself uses to recompute a training max at the end of every Intensification block — one formula, reused everywhere a max needs to be inferred rather than declared. If this is your first meet, see the first-meet logistics page for how this fits into the rest of competition day — weigh-in timing, what actually happens to a declared attempt, and what Resolve's own meet-day companion does with it.
The advanced phase's own Heavy/Medium/Light tables prescribe two numbers for every day: a percentage of training max, and a target RIR. Those aren't two independent design choices stated separately — they're the same reps-plus-RIR-to-percentage math as the calculator above, worked out in advance for each day's prescribed rep count and rounded to a whole percent. Line them up and the match is exact:
| Block | Day | Reps | RIR target | % training max |
|---|---|---|---|---|
| Accumulation | Heavy | 5 | 2 | 81% |
| Accumulation | Medium | 5 | 3 | 79% |
| Accumulation | Light | 8 | 4 | 71% |
| Intensification | Heavy | 3 | 1 | 88% |
| Intensification | Medium | 3 | 1.5 | 87% |
| Intensification | Light | 6 | 3 | 77% |
| Peak | Heavy | 2 | 1 | 91% |
| Peak | Medium | 2 | 1.5 | 90% |
| Peak | Light | 3 | 2 | 86% |
What that means practically: the percentage sets the actual weight you load, and the RIR column is what that weight should feel like on a normal day — not a separate autoregulation override, but a built-in honesty check. If a prescribed set consistently feels like more or fewer reps in reserve than its own column says, that's a real, current signal about where you actually are relative to your training max, worth noting for the next time it recomputes — it doesn't change today's prescribed weight on its own. See what actually happens at that recompute, including what a missed rep does to the number, not just a hit one.
Calling an accurate RIR is a skill, not an instinct, and it improves with practice more than with explanation. Most lifters new to it overestimate how many reps they actually have left, especially as a set gets close to failure — a call of "3 left" that turns out to be true for 1 is a common, ordinary miscalibration, not a sign you're doing it wrong.
The most direct way to calibrate is on a low-stakes lift with a spotter or safety pins set correctly — call your RIR before racking the bar, then, occasionally and deliberately, actually test it by asking for one more rep and seeing how it goes. Do this sparingly; the point is building an internal reference, not turning every set into a grinding max effort. Squat and bench should only ever be tested this way with real spotters or a rack's own safety pins properly set — see the squat's own bail-safety section for how to set those.