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

  1. Go to the webpage you want to audit.
  2. Click the AIA11y Link Scraper bookmark.
  3. 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.