Training 8 min read

Stop the set when the bar slows down

How gostrong uses within-set velocity loss to end sets on the compound lifts, and how that fits with RIR, load progression and deloads.

Every lifter has been asked the same question after a hard set: “How many reps did you have left?” The honest answer is usually a shrug followed by a guess. Reps in reserve (RIR) is a good idea, and we use it everywhere in gostrong. But a guess is still a guess, and on the lifts where we can do better, we think we should.

This post explains what we do on the compound lifts instead of, or rather alongside, a guess: we watch the bar.

The problem with “I had two left”

RIR asks you to judge your own proximity to failure while you are in the middle of it. Our own notes on progressive overload put it bluntly: far from failure, reps-in-reserve is guesswork, and estimates built on it are unreliable. That is why gostrong only lets a set feed its strength estimate when it was logged near failure (RIR of 4 or lower) and at 12 reps or fewer. Beyond that, the number you typed in is not trustworthy enough to learn from.

Self-reported effort is not useless. It is a coarse instrument, and coarse instruments are fine for planning a block but weak for deciding, rep by rep, whether this set is done.

What the bar already tells you

When you grind, the bar slows down. Nobody needs a study to believe that, but the useful question is how to turn it into a rule.

Our approach is self-referential. Within a set, we compare each rep’s mean concentric velocity to the fastest rep of that same set. The percentage drop is the velocity loss. When it crosses a target, the set has done its work and we cue you to stop.

Because the reference is the set’s own fastest rep, this needs no calibration, no load-velocity profile and no minimum-velocity threshold. It works on the very first set you ever record with an encoder.

What the research says about the cutoff

The velocity-loss literature points in a consistent direction, and it points differently for different goals:

  • Pareja-Blanco 2017 compared a 20 % loss with a 40 % loss. The 20 % group gained strength equal to the 40 % group while doing far less total work, and it preserved type-II fibre cross-sectional area that the higher-loss group lost.
  • Pareja-Blanco 2020 compared four loss levels (0, 15, 25 and 50 %). Higher velocity loss drove more hypertrophy and more total volume, at a higher fatigue cost. Lower loss favoured strength and force output.
  • Weakley 2021, a review, consolidated the practical bands: 10-20 % for strength and power, 20-40 % for hypertrophy.

The takeaway is not “less is always better”. It is that the right amount of slowdown depends on what you are training for. For strength, stopping earlier looks efficient. For size, a bit more slowdown is the price of a bit more growth.

How gostrong turns that into rules

Which lifts

Velocity-based effort applies to the lifts a single tethered bar-velocity encoder can measure: squat, bench press, deadlift, overhead press and single-implement rows. This is a flag on each exercise in the catalogue, not something we infer. A two-dumbbell row is a compound pull, but it has two implements and one tether, so the encoder cannot read it. You can also edit the flag on your own exercises.

Accessories do not use velocity. They keep RIR entirely.

Which cutoffs

Each training block has its own target, defined once and read per week of the cycle:

BlockVelocity loss (start to end)Shape
Hypertrophy25 % to 25 %flat
Strength15 % to 20 %rises
Peaking10 % to 15 %low
Active rest10 % to 10 %flat

Deload weeks drop every velocity-based slot to a conservative 10 %.

The shapes follow the logic of the evidence. Hypertrophy sits near the middle of the 20-40 % band, held flat because the engine already raises hypertrophy work by adding volume. Strength stays inside the efficient 10-20 % band and widens as the block intensifies. Peaking is a taper, so we keep the loss low to preserve bar speed. Active rest stops well short of anything demanding.

The inversion that trips people up

RIR descends to raise effort: RIR 3 down to RIR 1 is harder. Velocity loss ascends to raise effort: 15 % up to 20 % is harder. They express the same intent in opposite directions. We say this explicitly in the code and the docs, because reading the two schedules as if they moved together is an easy mistake.

What you see in the set

In the companion app, a velocity-based slot shows a live panel with mean and peak velocity and the percentage loss against your fastest rep. When the loss crosses the target, the panel flashes a cutoff cue.

That cue is advisory. You still tap Done and log your reps. Without the app or an encoder, the set logs exactly as it always has, with weight, reps and RIR.

Velocity loss and RIR are the same story

Here is the part we find most useful. The within-set velocity loss does not only tell you when to stop. It also estimates how close to failure you were.

Sánchez-Medina and González-Badillo (2011) reported that the loss of mean concentric velocity in a set tracks the percentage of the maximum possible repetitions completed, closely and largely independent of load, in the bench press and the full squat. Because it does not depend on %1RM, it works from the first velocity-based set.

We invert that relationship. For each lift we hold a velocity loss at failure, and we compute how much of the set’s maximum you completed:

p   = min(loss / lossAtFailure, 1)
RIR = round(repsDone * (1 - p) / p)     // capped at 10

The loss-at-failure defaults are:

LiftLoss at failureOur confidence in the default
Back squat40 %good
Bench press60 %good
Deadlift35 %fair
Overhead press55 %provisional

We label the confidence on purpose. The squat and bench values rest on the cited literature. The deadlift is less standardised, so it is a starting estimate. The overhead press is the least characterised of the four and is modelled as a press near the bench.

Two design choices keep this honest:

  • The estimate fills the RIR field; it does not lock it. It is editable, the manual field always renders, and nothing is shown until the set has actually lost speed.
  • The defaults personalise. Loss at failure varies between people. If you take a velocity-based set to genuine failure with the encoder on, we record your own number and use it from then on. The check is strict: the last rep’s bar speed must reach the lift’s minimum-velocity threshold, so a set you racked early can never record a falsely low anchor. Deload sets are submaximal and never calibrate.

Guarding the reference rep

The cutoff trusts the set’s fastest rep, so a single throw-it-up half rep could distort it. The encoder reports range of motion for each rep, and we flag a rep that is a low outlier against the set’s own median range, or grossly short of it. Flagged reps are excluded from the velocity-loss reference and reported after the set.

This is not a ban on partials. Deliberate lengthened partials are legitimate hypertrophy training, and a set of uniformly short reps has no outlier in it. We compare against your own range, not a textbook one. We also say plainly that these thresholds are provisional until they have been recalibrated against real logged data.

How it interacts with load progression and deloads

Velocity decides where each set ends. It does not decide how much work you do.

  • Set count stays with the periodisation engine. Velocity loss is intra-set execution, not a planning input, so these constants are not sent to the solver. The solver plans how much work; velocity decides where each set stops.
  • Velocity is additive to RIR. A velocity-based slot still carries a target RIR and still records an RIR estimate. Accessories use RIR alone.
  • Deloads ease off on both axes. Deload weeks use the conservative 10 % loss cap on velocity-based slots, alongside the usual reduction in sets and effort for the week.
  • The between-cycle deload trigger prefers bar speed where it exists. When logged velocity is available, our volume-ceiling detection prefers an objective signal, a drop in mean bar speed at a matched load or fewer measured reps week over week, over the self-reported rep drop. Our notes describe the reasoning simply: speed falls before reps do. Where a lift is not velocity-based, or the encoder was off, soreness and the self-reported rep drop remain the fallback. The thresholds were not retuned; velocity is a better input, not a different rule.

What we do not claim

We think a rigorous product should list its limits.

  • Velocity loss is a proxy for fatigue cost, and the cutoffs are population-level evidence applied to one person.
  • Several loss-at-failure defaults are explicitly labelled fair or provisional.
  • We do not use absolute velocity targets here. Turning raw metres per second into a one-rep max needs a per-exercise load-velocity profile, which is a separate part of the system and out of scope for the cutoff.
  • The ROM thresholds are provisional.

gostrong does this for you

If you train with a bar-velocity encoder, gostrong handles the arithmetic: the per-block cutoff, the live cue, the RIR estimate and the personalised failure anchor. If you do not, nothing changes, and your sets log with weight, reps and RIR as before.

See how gostrong plans your training

References

  • Sánchez-Medina L, González-Badillo JJ (2011). Velocity loss as an indicator of neuromuscular fatigue during resistance training. Med Sci Sports Exerc.
  • Pareja-Blanco F, et al. (2017). Effects of velocity loss during resistance training on athletic performance, strength gains and muscle adaptations (VL20 vs VL40). Scand J Med Sci Sports.
  • Pareja-Blanco F, et al. (2020). Velocity loss as a critical variable determining the adaptations to strength training (VL0/15/25/50). Med Sci Sports Exerc.
  • Weakley J, et al. (2021). Velocity-based training: from theory to application. Strength Cond J.