AIA11y Image Auditor
AIA11y Link Auditor
Step 1 — Install the Scraper
This tool extracts all visible links and buttons into a JSON file.
If your browser supports drag-and-drop bookmarklets:
Drag this link to your bookmarks bar:
AIA11y Link Scraper
If the link disappears or doesn’t work:
1. Copy this code:
javascript:(()=>{const d=document,w=window;function isVisible(el){const r=el.getBoundingClientRect(),s=w.getComputedStyle(el);if(r.width<=2||r.height<=2)return false;if(r.bottom<=0||r.right<=0)return false;if(s.visibility==='hidden'||s.display==='none'||parseFloat(s.opacity)===0)return false;return true;}function getDomPath(el){const parts=[];while(el&&el.nodeType===1&&el!==d.body){let part=el.tagName.toLowerCase();if(el.id){part+='#'+el.id;parts.unshift(part);break;}else{let idx=1,sib=el;while((sib=sib.previousElementSibling)!=null){if(sib.tagName===el.tagName)idx++;}if(idx>1)part+=`:nth-of-type(${idx})`;parts.unshift(part);el=el.parentElement;}}return 'body>'+parts.join('>');}function findNearbyHeading(el){let anc=el.closest('section,article,main,nav,aside,header,footer');if(anc){let h=anc.querySelector('h1,h2,h3,h4,h5,h6');if(h&&h.innerText.trim())return h.innerText.trim().slice(0,200);}let node=el;while(node){let p=node.previousElementSibling;while(p){if(/^H[1-6]$/.test(p.tagName))return p.innerText.trim().slice(0,200);p=p.previousElementSibling;}node=node.parentElement;}return '';}const cand=d.querySelectorAll('a,button,[role="button"],[role="link"],[role="menuitem"],[role="menuitemradio"],[role="menuitemcheckbox"],[role="tab"],[role="switch"],[role="checkbox"],[role="radio"]'),out=[];cand.forEach(el=>{if(!isVisible(el))return;const tag=el.tagName.toLowerCase(),href=(tag==='a'&&el.href)?el.href:'',text=(el.innerText||'').trim(),ariaLabel=(el.getAttribute('aria-label')||'').trim(),title=(el.getAttribute('title')||'').trim(),role=(el.getAttribute('role')||'').trim(),parentTag=(el.closest('header,nav,main,section,article,aside,footer,form')||el.parentElement||{}).tagName?.toLowerCase()||'',domPath=getDomPath(el),nearbyHeading=findNearbyHeading(el);out.push({text,ariaLabel,title,href,role,parentTag,domPath,nearbyHeading});});if(!out.length){alert('AIA11y Link Scraper: No visible elements found.');return;}const blob=new Blob([JSON.stringify(out,null,2)],{type:'application/json'});const a=d.createElement('a');a.href=URL.createObjectURL(blob);a.download='aia11y_links.json';d.body.appendChild(a);a.click();d.body.removeChild(a);})();
2. Right-click your bookmarks bar → Add page.
3. Name it AIA11y Link Scraper.
4. Paste the code into the URL field.
Step 2 — Use the Scraper
- Go to the webpage you want to audit.
- Click the AIA11y Link Scraper bookmark.
- Your browser will download aia11y_links.json.
Step 3 — Run the AIA11y Link Purpose Audit
Copy the full prompt below into ChatGPT.
Then either:
-
Upload
aia11y_links.json, OR - Paste the JSON when ChatGPT asks.
➡️ Click to show the AIA11y Audit Prompt
SYSTEM:
You are AIA11y, an autonomous accessibility engine performing WCAG 2.2 AA image audits using DOM-only JSON. Since no pixels are available, you must NEVER guess visual content.
YOUR INPUT FIELDS:
- src (image URL or filename clues only)
- current alt text
- parentTag (a/button)
- domPath
- nearbyText (captions, headings, category text)
- aria-label or role
MANDATORY CLASSIFICATION RULE:
If an image is inside an <a> tag AND has no nearbyText, classify it as an ACTION image.
YOUR TASKS (STRICT):
1. Classify each image as Decorative, Informative, or Action.
2. Suggest alt text (≤125 chars).
- Decorative → alt MUST be "".
- Action → alt must describe FUNCTION, not appearance.
3. Compute numeric confidence (0–100):
Start at 100, subtract:
- No alt & no nearbyText: -25
- Unclear filename: -20
- No parent context & no semantics: -15
- Only one weak clue: -10
- Conflicting meaning: -15
4. Convert score → level:
High = 90–100
Medium = 75–89
Low = 0–74
OUTPUT FORMAT (STRICT):
| # | File Name | Image URL | Location / Path | Current Alt | Suggested Alt | Image Type | Role | Mean Confidence | Level | WCAG | Notes |
Then provide:
6. Accessibility Summary
7. Coverage & Quality Stats
8. Confidence Level Definitions (Dynamic)
9. Confidence Breakdown per Image
10. What a Non-Technical Person Should Do Next (5 bullets)
USER:
Upload or paste your scraper JSON now.