Skip to content
Voice & hands-free

Say it.
And it lands.

There’s a microphone next to the Log button. Hold it and say what you did — “two-twenty-five for five” — the steppers fill in, you tap to confirm, the set lands. That’s the whole interaction. Chalky hands, gloves on, phone in a locker, mid-rest: you’re never locked out of the log.

The category gap

The only one that ships both.

The voice-first apps replace the whole UI with voice. They’re voice-only, with no tap fallback when the parse goes wrong. The big-name fast loggers don’t ship in-app voice at all.

flexRep ships both. Voice fills the steppers and you tap to confirm, so the parse is always visible before the set lands. That’s the safety net that makes voice usable in a real gym — and as far as we can tell, no other iOS lifting app has it.

  • flexRepVoice + tap confirm
  • Voice-first appsVoice-only, no fallback
  • The big-name loggersNo in-app voice
Four triggers, one parser

Four ways in. The same brain behind each.

However you open the mic, the words run through one parser. The parse you see in hold-to-talk is the parse Siri uses from the Lock Screen.

Quick Log default

Hold-to-talk

Press the mic next to the Log button, say your set, release to parse. You control exactly when the mic is open — the most reliable mode in a loud gym.

Hands on the bar

Tap-to-toggle

One tap to start listening, another to stop — or let silence end it. Easier when both hands are gripping a bar and you can’t hold a button down.

Phone in a locker

AirPods press

A play/pause press on your AirPods opens the mic mid-workout. iOS routes the remote press to flexRep when it owns the now-playing slot — log without touching the phone at all.

Lock Screen · CarPlay

“Hey Siri, log a set in flexRep.”

An App Intent that runs anywhere Siri does. Same parser; the set lands the next time the app foregrounds. The bar never has to wait for your thumbs.

Natural language, not commands

Talk the way you’d tell a training partner.

The parser is regex-first with alias matching against your own exercise library — “bench” resolves to your most-used bench variant. Spelled-out numbers, unit overrides, RPE, and repeat-last-set all land.

  • “225 for 5” 225 lb × 5 reps, in your display unit
  • “two twenty-five for five” spelled-out numbers normalize
  • “squat 100 by 8” matches the lift, swaps exercise, fills 100 × 8
  • “100 kilos for 5” explicit unit override — stored as 100 kg
  • “bench at RPE 8” reads RPE when you say it
  • “again” · “one more” · “same as last” duplicates your last set, no further input
Hands-free mode

Phone face-down. Run the whole session by voice.

Start a workout, drop into hands-free, set the phone down. The mic re-opens between sets, earcons confirm each transition, and a spoken readback tells you what landed. Three tiers let you dial in exactly how much automation you want.

1

Press to Talk

The mic sleeps between sets and wakes on an AirPods or button press. Maximum control, zero false logs — the gym-noise-proof tier.

2

Rest Loop

The mic reopens near the end of each rest period, ready for your next set command. Earcons cue the transition so you know it’s listening without looking.

3

Full Auto

A continuous mic gated by a “log” lead word and a confidence threshold. Phone face-down, AirPods in, run the whole session by voice and let the earcons guide you.

SPEAK ANYTIME
“undo”“skip rest”“add 30 seconds”“status”“end workout”
Privacy, in detail

Your voice never leaves the phone.

Speech is recognized on-device via SFSpeechRecognizer with on-device recognition required when your locale model is installed. Audio is never uploaded. The session uses measurement mode for gym-noise robustness and ducks other audio — Apple Music softly drops in volume rather than pausing while you speak.

The mic button doesn’t even appear until you enable voice in Settings, and flexRep doesn’t request the microphone permission until the first time you tap it — permission at the point of use, never a pre-modal up front.

Keep the bar in your hands.

Voice fills the steppers; a tap confirms; the rest timer starts. The fastest way to log a set is to never put the weight down.