Accessible Free Shipping Progress Bars in the Cart
2026-10-16
Add 12 dollars more for free shipping is one of the hardest working messages in the cart, and it is usually built as a colored bar with a number. For screen reader users, that bar is commonly silent: no amount announced, no update when items change, and no confirmation when free shipping unlocks. The store runs a motivational tool that a whole class of shoppers never hears about.
Making it accessible is not complicated, but it does require treating the progress indicator as information first and decoration second. The bar can stay. It just cannot be the only place the information lives.
State the progress in words, always
Beside or beneath the bar, render the same information as text: you are 12 dollars away from free shipping, or free shipping unlocked. That text is what assistive technology reads, what low vision users can enlarge, and what every shopper gets when the bar styling fails to load. It should exist even if it is visually styled small for sighted users.
When the threshold is reached, the text change is the celebration. Pair it with the shipping option updating to free in the totals, so the message and the money agree. A progress message claiming free shipping while the total still charges for it is worse than no message at all.
Announce changes without nagging
Cart changes should update the message through a polite live region, so a screen reader user who adds an item hears the new remaining amount when they are ready, not as an interruption mid action. Assertive announcements for a marketing progress bar would be hostile design. Polite, delayed, and batched is the correct temperament.
Debounce the updates during rapid quantity changes. A shopper tapping a quantity button five times should hear the final state once, not a countdown of every intermediate amount competing with the quantity announcements themselves.
Keep the bar itself honest and labeled
If the bar uses a progressbar role, it needs an accessible name and accurate values that match the text. A mismatched bar, filled three quarters while the text says halfway, is the kind of inconsistency audits flag and users distrust. Simpler and safer for many carts: mark the bar decorative and let the text carry the information alone.
Threshold honesty matters too. If some cart items are excluded from the free shipping calculation, the text must say the progress counts eligible items only. A bar that fills on ineligible items and then refuses free shipping at checkout is an accessibility failure and a conversion failure wearing the same coat.
Related reading
These earlier guides go deeper on connected questions: Promo Code Fields in the Cart: Small Box, Big Accessibility Failures, Cart Error Messages People Can Actually Act On, and Accessible Cart Quantity Controls: Making Plus, Minus, and Remove Work for Everyone.
Frequently asked questions
How do screen reader users experience free shipping progress bars?
Usually not at all, because the information lives only in a visual bar. An accessible version states the remaining amount or unlocked state as text and updates it through a polite live region when the cart changes.
Should progress updates be announced assertively?
No. Use a polite live region so updates arrive when the shopper is between actions. Assertive announcements are for errors and critical changes, and using them for a marketing progress message would disrupt the shopping task.
Does the visual bar need a progressbar role?
Only if it is kept as the information carrier, in which case it needs a name and accurate values matching the text. Many carts are better served marking the bar decorative and letting the text version carry the information.
What if some products do not count toward free shipping?
Say so in the progress text itself, that progress counts eligible items only, and make sure the bar math matches. A bar that promises progress on excluded items and fails at checkout misleads every shopper, not only assistive technology users.