---
title: "Accessibility"
canonical: "https://aifitnessapi.com/accessibility"
type: "cluster-index"
pages: "12"
last_reviewed: "2026-08-22"
publisher: "AIFitnessAPI"
---

# Accessibility

> 12 pages. Each entry below shows the question the page owns, followed by its answer capsule.

## VoiceOver and the numbers that change during a set

- Question: voiceover live workout metrics
- HTML: https://aifitnessapi.com/accessibility/voiceover-live-workout-metrics
- Markdown: https://aifitnessapi.com/accessibility/voiceover-live-workout-metrics.md
- Last reviewed: 2026-08-22

A live workout number is not something you announce to VoiceOver; it is something you let VoiceOver read when it asks. Apple documents the updatesFrequently trait as one you use to characterize an accessibility element that updates its label or value too frequently to send update notifications, and says to include it when you want an assistive app to avoid handling continual notifications and, instead, poll for changes when it needs updated information. A timer, rep count, pace or live heart rate is exactly that element, so the work moves from how often you push the value to how the value reads when it is polled. Discrete events that genuinely interrupt, such as rest ending or a set finishing, belong instead to Apple's announcement notification, which Apple describes as a notification an app posts when it needs to convey an announcement to the assistive app. Anything that auto-dismisses needs isVoiceOverRunning, documented by Apple as a Boolean value indicating whether VoiceOver is in an enabled state, with the example that you might want UI elements that usually disappear quickly to persist onscreen for VoiceOver users.

## TalkBack and the Android workout screen

- Question: talkback workout screen android
- HTML: https://aifitnessapi.com/accessibility/talkback-workout-screens
- Markdown: https://aifitnessapi.com/accessibility/talkback-workout-screens.md
- Last reviewed: 2026-08-22

A TalkBack user meets a workout screen as a sequence of stops, and the quality of that sequence is decided by the semantics you attach. Google's documentation states that semantic properties convey the meaning of the corresponding composable, describes contentDescription as conveying in text what the meaning of an icon is, and describes the state description as how the On state should be referenced, which can be made more specific based on the context. An exercise row should be one stop rather than four: Google documents that calling Modifier.semantics with mergeDescendants set to true indicates the semantics properties should be merged, and its principles page says consolidating related elements helps users of assistive technology discover the information on the screen more efficiently. For the alert-like moment when rest ends, Google documents the liveRegion semantics property, with LiveRegionMode.Polite in the documented example, allowing accessibility services to automatically notify the user of changes to that component or its children. This is what Google's documentation states rather than device behaviour we measured, and two things it does not cover are an Android equivalent of Reduce Motion and how Voice Access or Switch Access behave.

## What to call an exercise, a set and a rep range

- Question: accessible labels for exercises and sets
- HTML: https://aifitnessapi.com/accessibility/labelling-exercises-and-sets
- Markdown: https://aifitnessapi.com/accessibility/labelling-exercises-and-sets.md
- Last reviewed: 2026-08-22

A screen reader reads the string you wrote, not the layout that gave it meaning, so 3x10 at 60kg arrives as characters rather than three sets of ten reps at sixty kilograms. Google's principles page states that users must be able to understand the content and purpose of each interactive and meaningful UI element within your app, and Apple describes VoiceOver as a screen reader that lets people experience your app's interface without needing to see the screen. Neither company writes your strings, so the work is editorial: expand the gym shorthand, name the unit once, put the exercise first, and read numbers as quantities rather than glyphs. Completion belongs in state rather than the name, and Google documents a state description as describing how the On state should be referenced, noting it can be made more specific based on the context. Group the row first, since Google documents merging descendants' semantics properties as the way to make related elements one unit, then write the sentence that one unit should say.

## Making a health chart readable without the chart

- Question: accessible health charts
- HTML: https://aifitnessapi.com/accessibility/accessible-health-charts
- Markdown: https://aifitnessapi.com/accessibility/accessible-health-charts.md
- Last reviewed: 2026-08-22

A trend chart is usually the least accessible element in a health app, because the information lives in the shape of the line and nothing in the view says what that shape is. Apple documents one answer for its platforms: its audio graphs page says to define an accessible representation of your chart for VoiceOver to generate an audio graph, and that you use the audio graphs API to provide all the information VoiceOver needs to construct an audible representation of the data in your charts and graphs, making the data accessible to people who are blind or have low vision. We found no verified Android equivalent in this pass, which is a real gap in the guidance rather than a claim that none exists. The fallback that works on every platform and needs no API is a written summary of the series covering direction, range, latest value and any missing days, exposed as the chart's accessible description, plus a table view of the same numbers. Generate that summary from the data at render time so it cannot go stale, and expose the table to everybody rather than only to detected assistive technology.

## Dynamic Type on a workout screen: what breaks at 200 percent

- Question: dynamic type workout screen
- HTML: https://aifitnessapi.com/accessibility/dynamic-type-workout-screens
- Markdown: https://aifitnessapi.com/accessibility/dynamic-type-workout-screens.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines say to ideally give people the option to enlarge text by at least 200 percent, or 140 percent in watchOS apps, and note that an interface can support enlargement either through custom UI or by adopting Dynamic Type. On a workout screen that is a layout problem rather than a typography one, because a timer, a rep count and a weight sharing one row have no spare width between them. Three changes carry most of the work: let rows grow instead of fixing their height, stack horizontal groups of numerics vertically above a size threshold, and never truncate the value itself, only its label. Thin weights fail first, and Apple's advice there is to increase the font size when using one, which costs you the space you were trying to save. On watchOS the ceiling is lower and the canvas is smaller, so plan for one primary value per screen.

## Touch targets when the hand is shaking

- Question: touch target size fitness app
- HTML: https://aifitnessapi.com/accessibility/touch-targets-during-a-workout
- Markdown: https://aifitnessapi.com/accessibility/touch-targets-during-a-workout.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines say to strive to meet the recommended minimum control size for each platform, and publish a default of 44x44 pt for iOS, iPadOS and watchOS with a 28x28 pt minimum. Google's Android guidance recommends a touch target of at least 48dpx48dp for touch interfaces and says larger is even better, noting that many built-in Material components in Jetpack Compose already enforce that minimum. Size alone is not enough: Apple asks you to consider spacing between controls as important as size, and to include enough padding to reduce the chance that someone taps the wrong control. During a workout that padding is the whole game, because the hand is wet, gloved or shaking and the phone is often on a mount at arm's length. Keep destructive controls such as end workout physically separated from pause, and keep control positions stable as the workout state changes.

## Colour contrast when the screen is in sunlight

- Question: color contrast for outdoor fitness apps
- HTML: https://aifitnessapi.com/accessibility/colour-contrast-outdoors
- Markdown: https://aifitnessapi.com/accessibility/colour-contrast-outdoors.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines say to strive to meet color contrast minimum standards and to ensure there is enough contrast between foreground text and icons and background colors. Google's Android guidance is numeric: text smaller than 18sp, or bold text smaller than 14sp, should use colours giving a contrast ratio of at least 4.5:1, and all other text at least 3:1, checked with an online colour contrast checker or the Accessibility Scanner app. Apple also asks apps to provide a higher contrast colour scheme when the system Increase Contrast setting is on, and recommends preferring system-defined colours because they have accessible variants that adapt automatically. Outdoors the practical answer is to design above those thresholds rather than at them, since sunlight, sweat and reading distance all work against you. The most common failure in fitness apps is not a weak ratio at all: it is heart-rate zones and form feedback that carry their meaning through hue alone.

## Reduce Motion in a coaching interface

- Question: reduce motion fitness app
- HTML: https://aifitnessapi.com/accessibility/reduced-motion-coaching-ui
- Markdown: https://aifitnessapi.com/accessibility/reduced-motion-coaching-ui.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines ask that when the Reduce Motion accessibility setting is active, an app responds by reducing automatic and repetitive animations, including zooming, scaling and peripheral motion, and warn that excessive fast-moving or blinking effects can be distracting, cause dizziness and in some cases result in epileptic episodes. Apple documents isReduceMotionEnabled as a Boolean value indicating whether the setting is in an enabled state, which is how an iOS app reads it. For a coaching product the useful split is decoration versus information: confetti, parallax, bounce and transition flourish are decoration and should be cut, while a countdown ring and a looping exercise demonstration carry facts the user needs. Replace the informational ones rather than deleting them, with a still frame, a user-driven scrubber, a play control instead of autoplay, and a written description of the movement. We could not verify an Android equivalent of the setting from Google's own documentation this session, so we do not describe one.

## Gestures and hands-free control during a workout

- Question: hands free controls fitness app
- HTML: https://aifitnessapi.com/accessibility/gestures-and-hands-free-control
- Markdown: https://aifitnessapi.com/accessibility/gestures-and-hands-free-control.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines say gestures can be less comfortable for people who have limited dexterity, so offer onscreen ways to achieve the same outcome, giving the example that if you use a swipe gesture to dismiss a view you should also make a button available so people can tap or use an assistive device. In a fitness app that rule covers more people than it first appears to, because hands-free is the normal operating condition: swipe to skip an exercise, long-press to end a set and pull-to-refresh mid-run all fail for somebody holding a barbell as surely as for somebody with a tremor. Apple also documents Voice Control, saying people can interact with their devices entirely by speaking commands, perform gestures, interact with screen elements and dictate text, which is another reason controls should be real named onscreen elements. Google's documentation notes that Android accessibility services include screen readers, Switch Access tools and voice control systems, and cautions that an accessibility service is a specialized tool, not a standard way to make your app accessible.

## Haptics when the audio channel is already busy

- Question: haptic feedback fitness app
- HTML: https://aifitnessapi.com/accessibility/haptics-when-audio-is-busy
- Markdown: https://aifitnessapi.com/accessibility/haptics-when-audio-is-busy.md
- Last reviewed: 2026-08-22

In a fitness app the audio channel is usually already occupied by the user's own music, a podcast or a coach voiceover, so a chime is an unreliable way to signal that a set is over. Apple's Human Interface Guidelines say to use haptics in addition to audio cues, and to consider pairing a sound such as a success chime or error sound with matching haptics for people who cannot perceive the audio or have their audio turned off. Haptics carry binary, expected events well: set complete, rest over, work interval starting, and a form warning treated as an alert to look at the screen rather than as a diagnosis. They cannot carry anything with more than a few distinguishable states, and a person wearing gloves, with reduced sensation, or with the phone in an armband may feel nothing at all. Treat a haptic as a second channel alongside sound and a persistent visual state, never as the only one.

## Captions, subtitles and audio descriptions for workout video

- Question: captions for workout videos
- HTML: https://aifitnessapi.com/accessibility/captions-for-workout-video
- Markdown: https://aifitnessapi.com/accessibility/captions-for-workout-video.md
- Last reviewed: 2026-08-22

Apple's Human Interface Guidelines define four distinct alternatives and a fitness library usually needs more than one: captions give the textual equivalent of audible information, subtitles let people read live onscreen dialogue in their preferred language, audio descriptions are interspersed between natural pauses in the main audio and supply spoken narration of important information presented only visually, and transcripts give a complete textual description covering both audible and visual information. Captions fix a coach's voiceover, but an exercise demo carries its information in the picture, so a blind user gets almost nothing from a soundtrack of breathing and music. That makes audio description the alternative this category cannot skip, and the script is usually close to what a good coach already says while demonstrating. This page is written from Apple's guidance only: we could not verify Android's captions API surface in this pass and describe none of it.

## Testing accessibility in a fitness app

- Question: test accessibility fitness app
- HTML: https://aifitnessapi.com/accessibility/testing-accessibility-fitness-app
- Markdown: https://aifitnessapi.com/accessibility/testing-accessibility-fitness-app.md
- Last reviewed: 2026-08-22

Tooling is the starting point, not the test. Google's documentation recommends using all four approaches together: manual testing with Android accessibility services, testing using analysis tools, automated testing with Compose testing APIs, and user testing with people who interact with your app. Google describes Accessibility Scanner as scanning your screen and suggesting improvements after looking at content labels, clickable items, contrast and more, and Apple describes Accessibility Inspector as a way to display, query and test accessibility information in your view hierarchy and to audit for issues such as clipped text and unlabeled elements. Neither can see the two failures that matter most in a fitness app: a screen reader that will not stop talking while a rep counter updates, and a flow that is impossible to complete while somebody is actually moving. Find those by starting a workout with the screen reader on and the display off, completing one set and ending the workout, then repeating the same task with people who use assistive technology every day.
