# Semantics Lens > An accessibility audit for one Flutter screen. Paste the Dart (or drop a .dart file); the browser masks comments and > strings, matches every widget call to its closing bracket and reads its named arguments, then finds icon buttons with > no tooltip, custom tap targets with no label or button role, images neither labelled nor excluded, tap targets under > 48 x 48 or shrink-wrapped, text scaling switched off or capped, fixed heights that clip enlarged text, literal colours > under 4.5:1 (3:1 for large text and icons), tappable rows read in pieces, and Flutter web with no semantics tree. > Metered runs write the audit and the Semantics-patched code. Built on the SkillSafe skills > @flutter/flutter-improving-accessibility and @flutter/flutter-accessibility-audit, from flutter/skills > (BSD-3-Clause), by the Flutter team. An independent tool, not affiliated with or endorsed by > Google or the Flutter team. https://semantics-lens.skillsafe.ai/ ## What is free - The scan: every finding with an id (S1, S2, ...), a severity (blocker, major, minor), the line, the widget, what the page saw and the fix. - Contrast measured for every literal text or icon colour against the literal background that encloses it (Color(0x...), Color.fromARGB, Colors.* and their shades and alpha variants). - The skill's checklist marked from the scan (pass, fix, check by hand), test/a11y_test.dart asserting androidTapTargetGuideline, iOSTapTargetGuideline, labeledTapTargetGuideline and textContrastGuideline for the screen's widget class, a findings CSV and everything as JSON. ## The metered lanes Two tasks on gpt-terra, metered per run, routed by `task`. Input string fields: `task` (audit or patch), `screen`, `code`, `carry` (patch only: the audit's decisions) and `facts` (the page's scan). - `audit` replies with `summary`, `findings` (confirmed ids with the barrier, the fix and a short code fix), `cleared` (ids that are not barriers, with why), `extra` (up to five barriers a scan cannot see, on real lines), `reading_order` and `caveats`. - `patch` replies with `summary`, `code` (the whole patched file), `changes`, `kept`, `test` and `caveats`. The page holds every reply to its scan: each finding id accounted for exactly once; for the patch, every widget class and the whole file kept, the test asserting all four guidelines, and the patched code re-scanned - a claimed fix the re-scan still finds, or a new finding the patch introduces, is flagged. ## What it cannot see Colours from the theme, sizes set by layout, focus order and live announcements need the widget test, TalkBack or VoiceOver. ## Links - API tutorial: https://semantics-lens.skillsafe.ai/api.html - Source skills: https://skillsafe.ai/skill/@flutter/flutter-improving-accessibility and https://skillsafe.ai/skill/@flutter/flutter-accessibility-audit