Bench Press.
Just bench press.
It took an embarrassing amount of work to make sure that "Bench Press," "BB Bench," "flat barbell press," and the inevitable "benchprses" all map to a single, canonical lift. We did it because the alternative — a library that fragments your bench into eight competing entries — is the reason most lifting-app analytics quietly lie to their users.
Hundreds of exercises. Thousands of ways to spell each one.
Search and import don't care about your spelling. They care about your intent.
-
benchprsesBench Press -
db row 1armDumbbell Row (one-arm) -
rdlRomanian Deadlift -
ohpOverhead Press -
lat pullLat Pulldown -
split sqtBulgarian Split Squat -
curl spiderSpider Curl -
kasKas Glute Bridge
Filters across six honest facets.
No taxonomy theater. Every filter exists because lifters actually reach for it — and every one of them is also a column in the export.
Equipment
Movement pattern
Skill level
Mechanic
Posture
Variants stay distinct. Analytics still group.
"Incline DB Bench" is its own row in the library — its own PRs, its own e1RM trend. But when you ask the analytics for "chest volume," all seven bench variants roll up correctly. Family is metadata, not hierarchy.
A cable row at your gym is not the cable row at mine.
The exercise definition is shared. The context is yours. flexRep keeps machine instances, cable heights, grips, and tempos at the per-performance layer — without bloating the library.
Per-gym machine instances
The hack squat at your home gym and the hack squat at the commercial gym are not the same lift. Same exercise definition, different machine instance — tracked as separate context so progressive overload isn't fictional when you travel.
Per-instance modifiers
Cable height. Grip width. Foot placement. Pulley ratio. The metadata lives on the performance, not the definition, so you can record exactly which version of cable row you did today — without polluting the library with thirty cable-row entries.
Tempo and grip carry-through
Log a 3-1-1-0 tempo or a snatch-grip variant once; the next time you select the same exercise, the variant carries forward as a suggestion — never as a force.
For the machine your gym invented.
Some gyms have equipment that has never been in a database — the one labelled MULTI-HIP that no other gym owns, or the kettlebell-on-a-cable rig in the corner. flexRep lets you add it, name it, and forget the rest.
- 01
Tap "Add custom"
From the picker, when nothing in the library quite matches what your gym actually has.
- 02
Name it once
Use whatever your gym calls it. Or whatever you call it. The normalizer will handle the rest of your life's typos.
- 03
Tag it with attributes
Muscle group, equipment, movement pattern. These power filtering, analytics, and substitutions. Skip what doesn't apply.
- 04
Use it forever
It syncs to your other devices via iCloud. It survives seed updates. It exports alongside everything else.
Four behaviors that compound over time.
Every choice the picker makes is reversible, but the defaults are calibrated to where you already trained yesterday — not to the alphabetical accident of a 1990s gym membership form.
Most-used floats up.
The exercises you actually do appear at the top of the picker — sorted by recent frequency, broken by recency on ties. Your three favorite lifts are one tap away on every open.
Stickiness across sessions.
Started bench day yesterday? The picker remembers. The next session at the same time of week opens with bench pre-selected, ready to log.
Substitution suggestions.
Squat rack taken? Tap "Find a substitute" — flexRep suggests exercises that share the movement pattern, equipment style, and skill level, weighted by what you've done before.
Last-session prefill.
Selecting any exercise pre-loads the weights and reps you did the last time, in this gym, on this exercise. "Last time: 225×5 @ RPE 8 · Iron & Oak · 6 days ago."
Library data travels with you.
Every set carries its canonical exercise name, its variant attributes, its machine instance (if any), and its family rollup. Your custom exercises export with full metadata. If you ever leave flexRep, you'll leave with a clean library — not a tangle of "Bench Press 2", "BBP", and "Pressss (Bench)".
Find the exercise. Log the set.
The picker should take a fraction of a second. We treat that fraction as sacred.