hidden vs invisible vs sr-only is one of the most common decision points we see. Here is the honest breakdown.

The short version#

Three ways to hide with different layout and a11y semantics.

Point by point#

AspectAnalysis
Layouthidden removes the box; invisible keeps it; sr-only keeps it 1px-clipped
Screen readershidden & invisible hide from AT; sr-only is FOR AT
Animationinvisible/sr-only can transition; hidden cannot
RecipesToggles: hidden; alignment ghosts: invisible; a11y labels: sr-only

Bottom line#

Pick based on your constraint, not ideology — and remember the comparison pages link to hands-on recipes so you can verify the claim in your own project within minutes.

comparisons/index|All comparisons