UX/UI design / DIJION
Stuck at 99 percent: designing honest progress indicators
A state guide separating determinate and indeterminate progress, with meaningful percentages, waiting and cancellation across stages.
A process sitting at 99 percent leaves people uncertain about the remaining work. A precise percentage can mislead when the application cannot measure the complete operation. In an illustrative transfer, uploading may be finished while verification continues. Explaining the current stage can be more useful than displaying a number without a reliable meaning.
Define what the percentage measures
Bytes, processed records and finished stages are different units. If the total amount of work is unknown, avoid inventing smooth linear progress. An indeterminate indicator may be more accurate. Name a new stage when the measured stage finishes so that 100 percent for an upload does not imply that every part of the task is complete.
Describe the actual stages
Scroll the table horizontally to see all columns.
| Stage | Known information | Suitable presentation |
|---|---|---|
| File transfer | Total and sent bytes | Measured progress |
| Content validation | Total work unknown | Stage name and waiting state |
| Persistent save | Outcome not confirmed | Wait before announcing completion |
Announce meaningful changes, not every tick
Web status messages can be exposed to assistive technology without moving focus, as addressed by W3C’s status-message criterion. Announcing every small percentage change with high urgency can make a task harder to follow. Decide separately how to communicate start, meaningful stage transitions, failure and completion.
Be precise about cancellation and waiting
Cancel may stop the operation while Close may only dismiss its presentation. Explain the distinction if both actions exist. Avoid exact remaining seconds when the estimate is unreliable. For a long wait, provide useful network or stage context and consider how restarting avoids repeating work that may already have been completed.
Compare the indicator with the real outcome
- Delay the final stage; overall completion must not appear early.
- Disconnect and reconnect during transfer.
- Listen to stage and error announcements with a screen reader.
- Inspect stored data and retry after cancellation.
The acceptance artifact defines each stage’s unit of work and evidence of completion. Progress then communicates a trustworthy state rather than merely animating a shape.