Tab Thrashing: The Keyboard Signal Nobody Talks About
Tab thrashing fires when a user presses Tab 6+ times in under 3 seconds, trying to reach something they can't get to directly. Weight 15. Invisible to everyone except the user experiencing it.
Tab thrashing is what happens when a user is trying to get to a specific element on the page and can't reach it efficiently by tabbing. They press Tab rapidly, counting focus indicators, trying to land on the thing they want.
The signal fires at 6 tab keypresses within 3 seconds. That's a pace that no one uses for deliberate navigation. Six tabs in three seconds means the user is trying to get somewhere fast and the page's tab order is making it hard.
Who this affects
Tab navigation is the primary navigation method for four overlapping groups: keyboard-only users, screen reader users, users with motor impairments who find mouse targeting difficult, and power users who prefer keeping their hands on the keyboard.
The last group is larger than most product teams assume. A developer doing end-to-end testing, a customer success manager processing tickets, a user doing data entry: all of them benefit from efficient keyboard navigation. Tab thrash isn't just an accessibility signal. It's a productivity signal.
The focus trap signal is the severe case: keyboard users who literally can't continue. Tab thrashing is the moderate case: they can continue, but it's slow and frustrating. Both are worth fixing. Focus traps block users. Tab thrash discourages them.
What causes it
Poor tab order is the most common cause. The default browser tab order follows DOM order, which doesn't always match visual order. A two-column layout where the DOM has all left-column elements first, then all right-column elements, creates a tab order that jumps across the page visually. Users expecting to tab through the left column find themselves suddenly in the right one.
The fix is usually tabindex on key elements to establish logical order. Not positive tabindex values (those create a different set of problems by overriding document flow) but reorganizing the DOM to match the visual layout, which makes default tab order correct.
The second cause: too many focusable elements. Navigation menus with 20 links, footers with 30+ links, and decorative elements that received tabindex="0" accidentally all add tab stops that users have to pass through to get to content. A user trying to reach the search input on a page with a navigation containing 25 links has to press Tab 25+ times before they get there if there's no skip link.
Skip links solve this. A visually hidden "Skip to main content" link as the first focusable element on the page lets keyboard users bypass navigation entirely. They're invisible to mouse users and essential for keyboard users. Most products don't have them.
The interaction with rage clicks
Tab thrashing and rage clicks rarely co-occur on the same element in the same session. They're usually sequential. A user tab-thrashes to an element, focuses it, and then if it doesn't respond as expected, starts rage-clicking.
When both signals cluster on the same page, the pattern is usually an interactive element that's hard to reach via keyboard and also unreliable when focused. A custom component that has a click handler but no keyboard handler. Clicking it sometimes works. Keyboard-triggering it (Enter or Space) doesn't work at all.
That's a significant bug. The element is interactive for mouse users and broken for keyboard users. The confusion score catches it through the combined signal, even if neither signal alone would trigger an alert.
Tab order and the confusion score
Tab thrash weight is 15 in the confusion score. Not as high as loop navigation (20) or dead clicks (15), but weighted to contribute meaningfully to page scores when it's happening at volume.
A page where 12% of keyboard sessions include tab thrashing has a real problem. At meaningful traffic levels, that's dozens of users per day hitting friction that slows them down or causes them to abandon.
The signal clusters on pages with complex navigation, dense interactive layouts, and modal dialogs that don't properly return focus on close. All three are fixable without visual redesign.
Fixing tab order without breaking the design
The most common fix: reorder DOM elements to match visual flow. Sounds simple. Often requires refactoring a layout that was built with CSS grid or flexbox in a way that separated visual order from source order.
The order CSS property and flexbox row-reverse are the most common offenders. Both let you visually reorder elements without changing DOM order, which means the tab order diverges from the visual order silently.
When DOM reordering isn't practical, tabindex can patch specific elements. The rule: use only tabindex="0" (include in natural order) and tabindex="-1" (exclude from tab order, but focusable via JavaScript). Never use positive tabindex values; they create global ordering that's nearly impossible to maintain.
For complex applications, testing tab order manually once per release takes about 20 minutes. Tab through the entire page from the address bar and document what you reach in what order. If the order is illogical, fix the DOM. Run the test again. When it's logical, you're done.
The confusion score's keyboard accessibility signals tell you when to run that test. If tab thrash or focus trap signals spike after a deploy, that's the cue.