ARIA Roles Cheat Sheet
If you using semantic tag then no need add role, Minor cause need.
1. Landmark Roles (Page Structure)
banner
Site-wide header
Once per page, top header
<header role="banner">...</header>
navigation
Navigation menus
For main or secondary navigation
<nav role="navigation" aria-label="Main menu">...</nav>
main
Main content area
Once per page
<main role="main">...</main>
complementary
Related content sidebar
Sidebars, secondary content
<aside role="complementary">...</aside>
contentinfo
Site-wide footer
Footer section
<footer role="contentinfo">...</footer>
search
Search region
Dedicated search forms
<form role="search">...</form>
region
Generic landmark region
Any important section with label
<div role="region" aria-label="User settings">...</div>
form
Grouping form controls
Forms
<form role="form">...</form>
2. Widget Roles (User Interface Controls)
button
Clickable button
Buttons or links acting as buttons
<button role="button">Click me</button>
checkbox
Checkable box
Checkboxes
<input type="checkbox" role="checkbox">
radio
Radio button
Radio buttons
<input type="radio" role="radio">
radiogroup
Group of radio buttons
Group radios
<div role="radiogroup">...</div>
combobox
Dropdown with search/filter
Dropdowns
<div role="combobox" aria-expanded="false">...</div>
listbox
List of selectable options
Select lists
<div role="listbox">...</div>
option
Option in a listbox
Items in listbox
<div role="option" aria-selected="false">Option</div>
slider
Adjustable slider
Sliders
<div role="slider" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100"></div>
spinbutton
Numeric input with increment/decrement
Numeric inputs
<input role="spinbutton" aria-valuenow="1" aria-valuemin="0" aria-valuemax="10">
textbox
Text input
Text fields
<input role="textbox" type="text">
searchbox
Search input
Search fields
<input role="searchbox" type="search">
menu
Menu container
Menus
<ul role="menu">...</ul>
menubar
Menu bar
Menu bars
<nav role="menubar">...</nav>
menuitem
Item in a menu
Menu items
<li role="menuitem">Save</li>
menuitemcheckbox
Checkable menu item
Checkable menu items
<li role="menuitemcheckbox" aria-checked="false">...</li>
menuitemradio
Radio menu item
Radio menu items
<li role="menuitemradio" aria-checked="true">...</li>
tab
Tab in tablist
Tabs
<button role="tab" aria-selected="true">Tab 1</button>
tablist
Container for tabs
Tabs container
<div role="tablist">...</div>
tabpanel
Tab panel
Panels controlled by tabs
<div role="tabpanel">...</div>
tooltip
Tooltip information
Tooltips
<div role="tooltip">More info</div>
scrollbar
Scrollbar control
Custom scrollbars
<div role="scrollbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
3. Document Structure Roles
article
Self-contained content
Articles, blog posts, comments
<article role="article">...</article>
section
Thematic grouping of content
Sections within pages
<section role="region" aria-label="News">...</section>
heading
Section heading
Headings with levels
<h2 role="heading" aria-level="2">Title</h2>
list
List of items
Lists
<ul role="list">...</ul>
listitem
Item in a list
List items
<li role="listitem">...</li>
row
Row in a grid or table
Table rows
<tr role="row">...</tr>
rowgroup
Group of rows
Table body or header groups
<tbody role="rowgroup">...</tbody>
columnheader
Column header
Table column headers
<th role="columnheader">Name</th>
rowheader
Row header
Table row headers
<th role="rowheader">...</th>
table
Table container
Tables
<table role="table">...</table>
grid
Grid or spreadsheet
Complex tabular data
<table role="grid">...</table>
gridcell
Cell in grid
Grid cells
<td role="gridcell">...</td>
tree
Tree widget
Trees
<ul role="tree">...</ul>
treeitem
Item in tree
Tree nodes
<li role="treeitem">...</li>
treegrid
Tree with grid structure
Complex trees
<table role="treegrid">...</table>
aria-level
Work like h1, h2 etc tag
If you not use like h1,h2 etc tags then you can declear using aria-level, browser will understand its heading tag. aria-level-1 to aria-level-6 same as h1 to h6
<div aria-level="1"><div>
4. Live Regions and Status
alert
Important, usually time-sensitive info
For error messages and alerts
<div role="alert">Error loading data</div>
alertdialog
Modal alert requiring interaction
Critical dialogs needing immediate attention
<div role="alertdialog" aria-modal="true">...</div>
log
Live region with log updates
For live logs
<div role="log" aria-live="polite">...</div>
marquee
Scrolling text live region
Scrolling news or info
<div role="marquee">Breaking news</div>
status
Status messages
Informational live updates
<div role="status" aria-live="polite">Saved!</div>
timer
Time-related live region
Countdown timers
<div role="timer" aria-live="assertive">1:00</div>
5. Miscellaneous Roles
application
Complex web application
Rare, for apps with custom keyboard interactions
<div role="application">...</div>
group
Grouping related elements
Group form fields or controls
<div role="group">...</div>
note
Advisory or supplementary info
Side notes or tips
<aside role="note">...</aside>
presentation
Layout or decoration only
Elements ignored by assistive tech
<div role="presentation">...</div>
separator
Divider between sections
Dividers in menus/toolbars
<div role="separator"></div>
📌 Notes
Use only one
main
,banner
, andcontentinfo
per page for proper landmark usage.Combine roles with
aria-*
attributes to enhance accessibility (e.g.,aria-expanded
,aria-checked
).Use semantic HTML first; add roles only if native tags don’t convey the correct meaning.
Always test with screen readers and keyboard navigation.
Last updated