Native interactive controls
A div with a click handler is invisible to an agent driving the page by keyboard or accessibility tree.
- Category
- Agent experience
- Standard
- Recommended
Who supports it
ClaudeSupported (announced)
Published 1 Aug 2026 · last checked 9 Oct 2026: Claude API docs: Browser use toolread_page 'Returns the page's accessibility tree as text' (role + accessible name per element, e.g. button "Search"); Claude also uses screenshots. Date is approximate, taken from the toolset version id browser_toolset_20260801; page shows no date. The same read_page tool is exposed by the Claude in Chrome extension. read_page filter 'interactive' returns only interactive elements by role.
ChatGPT AtlasSupported (announced)
Published 1 Sept 2026 · last checked 9 Oct 2026: OpenAI Help Center: Publishers and Developers - FAQHelp Center article shows 'Updated: last month' as of 2026-10-09 (month-only date). Text: 'ChatGPT Atlas uses ARIA tags—the same labels and roles that support screen readers—to interpret page structure and interactive elements.' Recommends descriptive roles on buttons, menus and forms.
Gemini in ChromePartial support
Published 5 May 2026 · last checked 9 Oct 2026: Chrome for Developers: Accessibility for agents (Lighthouse Agentic browsing)Chrome team guidance for agents in general ('Agents review the accessibility tree to identify interactive elements'; 'Agents rely on the accessibility tree ... as their primary data model', toolkit blog 2026-06-22). It does not name Gemini in Chrome explicitly, hence partial.
24 others: no evidence yet. See every agent and browser
What it checks
The extension counts the interactive elements on the rendered page and sorts them into two groups:
- Native controls:
<button>,<a href>,<select>,<textarea>and<input>(other than hidden inputs). - Non-native controls: anything else with an
onclickattribute,role="button"orrole="link".
Hidden elements are ignored. So is a tabindex="-1" child inside a native or
focusable parent, since that is part of a larger widget rather than a separate
control.
An agent driving the page through the keyboard or the accessibility tree can
reach native controls. It often cannot reach, or even recognise, a <div> or
<span> that only responds to clicks.
Results
| Status | When |
|---|---|
| Pass | Every interactive element is a native control |
| Warn | Some are non-native, up to 25% of all interactive elements |
| Fail | More than 25% of interactive elements are non-native |
| N/A | The page has no interactive elements |
| Unmeasured | The extension could not read the page (open it in the active tab) |
The result lists locators for the non-native elements, such as div.icon-btn,
so you can find them.
How to fix
Replace click handlers on generic elements with the element that does the job:
<!-- Before -->
<div class="icon-btn" onclick="addToBasket()">Add to basket</div>
<!-- After -->
<button type="button" onclick="addToBasket()">Add to basket</button>
Use <a href> for anything that navigates and <button> for anything that acts.
Both are focusable and exposed to agents without extra ARIA.
Once the controls are native, check they have names: Accessible names on controls.
Support by agent and browser
Announced means the vendor’s own docs or announcement say so. Published is the date on the vendor’s own page, where it has one. Checked is the last time our weekly research found that page still saying so.
| Agent | Status | Source |
|---|---|---|
| AI assistants | ||
| Claude Anthropic | Supported (announced) | Claude API docs: Browser use tool Published · Checked read_page 'Returns the page's accessibility tree as text' (role + accessible name per element, e.g. button "Search"); Claude also uses screenshots. Date is approximate, taken from the toolset version id browser_toolset_20260801; page shows no date. The same read_page tool is exposed by the Claude in Chrome extension. read_page filter 'interactive' returns only interactive elements by role. |
| AI browsers | ||
| ChatGPT Atlas OpenAI | Supported (announced) | OpenAI Help Center: Publishers and Developers - FAQ Published · Checked Help Center article shows 'Updated: last month' as of 2026-10-09 (month-only date). Text: 'ChatGPT Atlas uses ARIA tags—the same labels and roles that support screen readers—to interpret page structure and interactive elements.' Recommends descriptive roles on buttons, menus and forms. |
| Gemini in Chrome Google | Partial support | partial Chrome for Developers: Accessibility for agents (Lighthouse Agentic browsing) Published · Checked Chrome team guidance for agents in general ('Agents review the accessibility tree to identify interactive elements'; 'Agents rely on the accessibility tree ... as their primary data model', toolkit blog 2026-06-22). It does not name Gemini in Chrome explicitly, hence partial. |
No evidence yet24
- ChatGPT
- Gemini
- Perplexity
- Copilot
- Meta AI
- Comet
- Dia
- Edge Copilot Mode
- Claude Code
- Cursor
- Codex
- GitHub Copilot
- Windsurf
- CCBot
- Applebot
- Amazonbot
- Bytespider
- Cohere
- Mistral
- DuckAssist
- Chrome
- Edge
- Firefox
- Safari
Names and marks belong to their owners and are used only to identify products. None of these vendors is affiliated with Sitebulb. Spotted something out of date? Send a correction.
Adoption on the top 100 sites
83 of 100 measured sites implement it
Sites implementing it83
- #1 google.com
- #2 cloudflare.com
- #3 aws.amazon.com (via amazonaws.com)
- #5 gstatic.com
- #8 googleapis.com
- #9 microsoft.com
- #11 youtube.com
- #12 apple.com (with warnings)
- #13 instagram.com (with warnings)
- #15 mail.ru (with warnings)
- #16 x.com (via twitter.com)
- #18 linkedin.com
- #20 dzen.ru
- #23 googletagmanager.com
- #24 azure.microsoft.com (via azure.com) (with warnings)
- #26 m365.cloud.microsoft (via office.com)
- #32 github.com
- #33 wikipedia.org
- #37 fastly.com (via fastly.net)
- #39 whatsapp.com (via whatsapp.net)
- #42 bing.com (with warnings)
- #43 netflix.com
- #44 triplinkintl.com (with warnings)
- #45 googleusercontent.com
- #48 gandi.net (with warnings)
- #50 marketingplatform.google.com (via doubleclick.net)
- #55 wordpress.org
- #56 teams.live.com (via skype.com)
- #57 cloudflare.net
- #59 goo.gl
- #60 digicert.com
- #67 domains.google (via googledomains.com)
- #68 zoom.com (via zoom.us)
- #69 uk.yahoo.com (via yahoo.com)
- #70 sso.myfritz.net (via myfritz.net)
- #71 endpoints.news
- #72 api.whatsapp.com (via wa.me)
- #75 roblox.com (with warnings)
- #76 opera.com (with warnings)
- #80 baidu.com
- #83 ya.ru (via yandex.net)
- #84 nginx.org
- #85 ntp.org
- #86 msn.com
- #87 qq.com (with warnings)
- #90 vimeo.com
- #91 primevideo.com (via amazonvideo.com)
- #93 bunny.net (via b-cdn.net)
- #94 blogger.com (via blogspot.com)
- #95 mozilla.org
- #96 f5.com (with warnings)
- #98 telegram.org (via t.me)
- #99 store.epicgames.com (via epicgames.com)
- #101 wordpress.com
- #103 reddit.com (with warnings)
- #106 sentry.io (with warnings)
- #107 letsencrypt.org (via lencr.org)
- #109 ui.com
- #110 european-union.europa.eu (via europa.eu)
- #112 chatgpt.com (with warnings)
- #116 bitly.com (via bit.ly) (with warnings)
- #117 ipify.org
- #120 samsung.com
- #122 intuit.com (with warnings)
- #127 openai.com
- #128 one.one.one.one (via cloudflare-dns.com) (with warnings)
- #130 registrar-servers.com
- #131 pages.github.com (via github.io)
- #132 dropbox.com
- #135 discord.com (via discord.gg) (with warnings)
- #136 developer.adobe.com (via adobe.io)
- #139 apache.org (with warnings)
- #140 android.com (with warnings)
- #141 nih.gov
- #144 vk.ru (with warnings)
- #150 t-online.de
- #152 forms.gle
- #153 webex.com (with warnings)
- #154 snapchat.com
- #156 godaddy.com
- #158 kaspersky.co.uk (via kaspersky.com)
- #159 firebase.google.com (via crashlytics.com)
- #160 tumblr.com
Overview
How this rating is worked out8 of 9 points
| Factor | Points | Why |
|---|---|---|
| Vendor support | 2 / 3 | 2 vendors supporting, 1 partly or planned |
| Top-100 adoption | 3 / 3 | 83% of measured sites |
| Spec maturity | 3 / 3 | Published standard |
8 or more points is Established, 5 to 7 is Gaining traction, 2 to 4 is Speculative and under 2 is Stalled. A feature is also Stalled when more vendors have said no than yes. Read the spec.
Community insights
No community insights for this feature yet.
Quotes are from public posts, checked against the original before they appear here. Suggest an insight, or ask for yours to be removed.