Accessibility / Analysis / First Accessible Paint
The First Accessible Paint bookmarklet estimates when the page becomes keyboard-usable for assistive technology users. Measures time from start until both landmark regions (main, nav, region, header, footer) and focusable elements exist, uses MutationObserver to detect when these elements appear in the DOM, attempts to focus the first focusable element to confirm, and displays an alert with the elapsed time in milliseconds. If page is already usable, reports current elapsed time. Useful for measuring performance impacts on keyboard/screen reader users.
WCAG SC 2.4.1: Bypass Blocks
Run First Accessible Paint
Test run or drag to
bookmarklets bar to install
javascript:%21function()%7B%22use%20strict%22%3Btry%7Bconst%20e%3Dperformance.now()%3Bfunction%20t()%7Breturn%20document.querySelector(%27main%2C%5Brole%3D%22main%22%5D%2Cnav%2C%5Brole%3D%22navigation%22%5D%2C%5Brole%3D%22region%22%5D%2Cheader%2Cfooter%27)%7Dfunction%20n()%7Breturn%20document.querySelector(%27a%5Bhref%5D%2Cbutton%2Cinput%2Cselect%2Ctextarea%2C%5Btabindex%5D%3Anot(%5Btabindex%3D%22-1%22%5D)%27)%7Dif(t()%26%26n())return%20void%20alert(%22Already%20usable.%20Elapsed%20%22%2B(performance.now()-e%7C0)%2B%22ms%22)%3Bconst%20o%3Dnew%20MutationObserver(()%3D%3E%7Bif(t()%26%26n())%7Bo.disconnect()%3Bconst%20t%3Ddocument.querySelector(%27a%5Bhref%5D%2Cbutton%2Cinput%2Cselect%2Ctextarea%2C%5Btabindex%5D%3Anot(%5Btabindex%3D%22-1%22%5D)%27)%3Btry%7Bt.focus()%7Dcatch%7B%7Dalert(%22Usable%20after%20%22%2B(performance.now()-e%7C0)%2B%22ms%22)%7D%7D)%3Bo.observe(document.body%2C%7Bsubtree%3A%210%2CchildList%3A%210%7D)%2Cconsole.log(%22%5CnSource%3A%20https%3A%2F%2Fgithub.com%2Falejandrogiga98%2FA11y-Bookmarklets%5CnBookmarklet%20name%3A%20First%20accessible%20paint%5CnAuthor%3A%20alejandrogiga98%5CnLicense%3A%20MIT%20License%5Cn%22)%7Dcatch(r)%7Balert(%22Bookmarklet%20Error%3A%20%22%2Br.message)%7D%7D()%3B
← Back to all bookmarklets