Paste HTML to see the page's landmark tree (banner/main/nav/aside/footer + ARIA roles) and structural a11y issues.
HTML is parsed in your browser. No DOM script is executed.
Landmarks by role
Paste HTML, see the H1-H6 outline as a tree, and get WCAG accessibility warnings for skipped levels, missing H1, and empty headings.
Paste HTML to audit <img>, <svg>, <input type=image> and role=img elements against WCAG 2.1 alt-text rules.
Paste an HTML form to verify every <input>, <select>, <textarea>, and <button> has an accessible name per WCAG 3.3.2.
Landmarks are the named regions screen-reader users jump between with a single keypress to skip past the parts they've already read — headers, navigation menus, the main content area, the sidebar, the footer. HTML5 added native landmark elements (<header>, <nav>, <main>, <aside>, <footer>) that don't need explicit ARIA roles, but the rules around when each becomes a landmark are subtle: <header> only becomes a banner if it's at the document root (not nested inside <article> or <section>); <section> only counts as a region landmark if it has an aria-label; <form> is a landmark only when named; and multiple landmarks of the same role need unique names or the screen reader announces them indistinguishably. This ARIA Landmark Visualizer parses any HTML you paste, identifies every landmark (native or role-based), renders the tree with their accessible names, and flags the structural problems an audit by axe-core or VoiceOver would surface — missing <main>, multiple <main>, redundant role attributes on native elements, region landmarks without names, and same-role landmarks that need disambiguation.
banner (page header, usually <header> at root), navigation (<nav>), main (<main>, exactly one per page), complementary (<aside>), contentinfo (page footer, <footer> at root), search (search box wrapper, no native element — use role="search"), form (named <form>), region (named <section>). Multiple landmarks of the same role are allowed but need unique aria-label or aria-labelledby. Native elements always beat ARIA roles — write <nav> not <div role="navigation">.