---
title: "Positive tabIndex (a11y/tabindex-positive)"
description: "A tabIndex above 0 moves the element ahead of the natural tab order, which confuses keyboard users (Lighthouse: some elements have a tabindex value greater than 0)."
url: http://localhost:4173/rules/a11y/tabindex-positive
updated: 2026-11-11
---

# Positive tabIndex

> `a11y/tabindex-positive` is a vetd rule. It flags: Positive tabIndex. It runs on every `check`, together with the TypeScript check.

| Fact | Value |
| --- | --- |
| Rule id | `a11y/tabindex-positive` |
| Severity | warning |
| Group | Accessibility |
| Tags | accessibility, lighthouse |

## Why it matters

A tabIndex above 0 moves the element ahead of the natural tab order, which confuses keyboard users (Lighthouse: some elements have a tabindex value greater than 0).

## How to fix it

Use tabIndex 0 or -1, and order the DOM instead.

## Credit

Based on work by:

- [Deque](https://www.deque.com): The axe rule tabindex flags tabindex values greater than zero because they override the natural tab order.
- [W3C Web Accessibility Initiative](https://www.w3.org/WAI/): WCAG 2.4.3 requires a meaningful focus order.

## References

- [Elements should not have tabindex greater than zero](https://dequeuniversity.com/rules/axe/4.10/tabindex), Deque University
- [Understanding Success Criterion 2.4.3: Focus Order](https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html), W3C
- [tabindex HTML global attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex), MDN Web Docs

## Related rules

- [`a11y/aria-hidden-focus`](http://localhost:4173/rules/a11y/aria-hidden-focus.md)
- [`ui/click-on-non-interactive`](http://localhost:4173/rules/ui/click-on-non-interactive.md)

## Get this text from vetd

MCP: call `explain` with `{ "diagnosticId": "a11y/tabindex-positive" }`. CLI: `npx vetd explain a11y/tabindex-positive`.

---

[All 92 rules](http://localhost:4173/rules.md) · Previous: [`a11y/form-label`](http://localhost:4173/rules/a11y/form-label.md) · Next: [`a11y/aria-hidden-focus`](http://localhost:4173/rules/a11y/aria-hidden-focus.md)
