Tutorial · 10 min read

Accessibility Audit: From HTML Audit to Figma Redesign

A WCAG audit identifies accessibility failures in your live HTML. Getting those failures into Figma — as editable layers you can redesign against — is where most teams get stuck. Here's the complete audit-to-redesign workflow.

HF

HTML to Figma Team

Last reviewed: March 2026

An accessibility audit to Figma redesign workflow means running automated and manual WCAG checks on your live HTML, identifying failing components, importing those components into Figma as editable layers using html2design, and redesigning them for compliance — then handing annotated Figma specs to developers as remediation instructions. The key advantage: designers work with the real implementation as their baseline, not a Figma file that may have drifted from the live site.

Why Start the Accessibility Redesign in Figma?

Accessibility remediation typically follows one of two paths: fix directly in code (fast for isolated issues like missing alt text) or redesign in Figma and hand off to developers (necessary when failures are visual and systemic — contrast, focus indicators, component structure, touch target sizing).

The Figma path makes sense when:

The challenge: your Figma file probably doesn't match the live implementation. You'd be redesigning against an approximation. Importing the actual failing HTML into Figma with html2design gives you the real implementation as your starting point — every pixel, every color, every font value exactly as it exists in production.

Key workflow principle: Import the failing HTML section before designing the fix. The imported Figma frame becomes your "current state" layer. Build the "fixed state" as a separate frame beside it. Showing before/after in the same Figma file makes designer review, stakeholder sign-off, and developer handoff significantly clearer.

Step 1: Run the Accessibility Audit

Automated tools catch approximately 30–40% of WCAG failures — the rest require manual review. Start with automation to get a prioritized issue list, then supplement with manual checks.

Automated audit tools

Manual checks to add

Common trap: Automated tools score contrast based on the computed background/foreground color pair for each element. They can miss contrast failures on gradient backgrounds, text over images, and semi-transparent overlays — these require manual checking with a contrast analyzer tool like TPGi Colour Contrast Analyser.

Step 2: Prioritize Failures for Figma Redesign

Not every audit failure needs a Figma redesign. Triage your findings:

Issue type Fix in code directly? Needs Figma redesign?
Missing alt text Yes — content fix No
Missing form labels Usually yes Only if visual label needs design change
Insufficient color contrast No — visual design decision Yes
Focus indicator missing/invisible No — visual design decision Yes
Touch targets too small (<44px) No — layout/sizing decision Yes
Missing ARIA landmarks Yes — semantic HTML fix No
Text spacing overrides fail Usually code fix No
Color as sole info indicator No — visual design decision Yes

Focus your Figma work on issues that require visual design decisions: contrast, focus styles, touch targets, and color-as-information patterns. These are the issues where a Figma redesign and annotated spec is genuinely useful to developers.

Step 3: Import Failing Sections into Figma

Step 3a

Open the failing page in Chrome

Navigate to the live page with the accessibility violation. If the issue is on a specific component (a button, a form, a card), scroll to it. Open DevTools → Elements panel and locate the component's root element.

Step 3b

Copy the failing component's outerHTML

Right-click the root element → Copy → Copy outerHTML. For page-level issues (overall contrast, layout at zoom), copy the entire <main> or relevant section. For component-level issues (button contrast, input focus ring), copy just the failing component.

Step 3c

Import into Figma with html2design

Open Figma, run html2design → Paste HTML. The failing component appears as a native Figma frame. Label this frame "Current State — WCAG Fail" so it's clearly distinct from your redesign work.

Step 3d

Duplicate the frame as your working copy

Duplicate the imported frame and move the copy beside the original. Label it "Fixed State — WCAG Pass." Work on the copy — the original remains as your before-state reference throughout the redesign process.

Step 4: Redesign for Compliance in Figma

With the live implementation as your Figma baseline, you can now redesign precisely for each WCAG criterion.

Color contrast (WCAG 1.4.3)

WCAG 2.1 Level AA requires 4.5:1 contrast for normal text and 3:1 for large text (18pt+ or 14pt+ bold). In your imported Figma frame, select a text layer. Open the Stark or Contrast plugin — it reads the fill color and background fill and calculates the ratio instantly. Adjust the text color or background fill until the ratio passes. Record the passing color pair in a Figma annotation beside the frame.

For teams on a design token system: this is the moment to update the token, not just the one instance. If your text-muted color fails contrast, every component that uses it needs the fix. Update the Figma Color Variable (or Style) and watch all component instances update automatically.

WCAG contrast quick reference: Normal text needs 4.5:1 (AA) or 7:1 (AAA). Large text (18pt+ / 14pt+ bold) needs 3:1 (AA) or 4.5:1 (AAA). UI components and graphical objects need 3:1 against adjacent colors. Decorative elements and disabled UI are exempt.

Focus indicators (WCAG 2.4.7 and 2.4.11)

The most common focus indicator failure: the browser default outline was removed with outline: none and nothing replaced it. In Figma:

  1. Select the button, input, or link in the imported frame.
  2. Add a stroke to the shape using the Stroke property in Figma. Choose a color with 3:1 contrast against the background (WCAG 2.4.11 minimum area requirement).
  3. If the element has a rounded background, make the focus ring a slightly larger rectangle with a gap — matching the WCAG 2.2 "focus appearance" model (2px minimum, offset by 2px).
  4. Create the focus state as a Figma Component Variant so developers see both default and focused states.

Touch target sizing (WCAG 2.5.8)

WCAG 2.2 Success Criterion 2.5.8 (Level AA) requires interactive targets to be at least 24x24 CSS pixels (upgraded from the older 44x44px WCAG 2.5.5 AAA guideline, though 44x44px remains best practice for mobile). In Figma:

  1. Select the interactive element in the imported frame.
  2. Check its dimensions in the Figma layout panel. If under 44x44px (or 24x24px at minimum), annotate it with a red overlay rectangle showing the minimum size requirement.
  3. In the fixed state frame, show the element with sufficient padding or explicit min-width/min-height to meet the target.

Color as sole information indicator (WCAG 1.4.1)

Patterns that fail this criterion: error states shown only in red (no error icon or text), status badges where the label is color-only (a green badge says "active," a red one says "error," but the text inside is the same), required form fields marked only with a colored asterisk.

In Figma, redesign to add a second visual cue: an icon, a text label, a shape change, or an underline. The test is: if you convert the design to grayscale, does the same information remain conveyed? If yes, WCAG 1.4.1 passes.

Step 5: Annotate the Figma File for Developer Handoff

The goal of the Figma annotation is unambiguous developer instructions — specific enough that the developer doesn't need to make design decisions during implementation.

Standard accessibility annotation elements in Figma:

Step 6: Review and Ship the Remediation

Before handing off the Figma file:

  1. Designer review — Verify the fixed design still meets brand and aesthetic standards. Accessibility fixes shouldn't look like afterthoughts — they should feel native to the design system.
  2. Check with a screen reader — Test the key user flows with VoiceOver or NVDA before the developer implements the fix, so you catch annotation gaps before code is written.
  3. Validate contrast with a plugin — Run Stark or Contrast on the fixed state frames in Figma. Every text/background combination should show a passing ratio.
  4. Post-implementation audit — After the developer implements the fix, re-run axe DevTools on the live page. The fixed criterion should no longer appear in the violations list.

Frequently Asked Questions

How do I design accessible components in Figma?

Import the live non-compliant component with html2design to get the real implementation as a Figma baseline. Duplicate the frame, then redesign for the specific WCAG criteria that failed: adjust colors for contrast, add focus indicator styles, increase touch target padding. Use Figma accessibility plugins (Stark, Contrast, Able) to validate the redesign before handoff.

What WCAG level should I target?

WCAG 2.1 Level AA is the standard required by most accessibility regulations globally — including the European EN 301 549, Section 508 in the US, and WCAG 2.2 AA (which supersedes 2.1 AA with minor additions). Targeting AA is both the legal baseline and a meaningful accessibility improvement for users. Level AAA is aspirational and not required for compliance — include AAA criteria where achievable without significant design compromise.

Can Figma designs be accessibility-checked before developers build them?

Yes — use Stark, Contrast, or Able plugins to check contrast ratios and simulate color blindness directly in Figma. These plugins cover the visual layer of accessibility. Semantic, keyboard, and screen reader accessibility can't be fully validated in Figma — that requires testing the live HTML. The Figma audit catches visual failures early; the code audit catches structural failures after implementation.

Accessibility Audit to Figma Checklist

Key Takeaways


Related Articles

Try it now

Import your failing component and redesign for compliance

Copy the non-compliant section's outerHTML from DevTools, paste it into html2design, and get an editable Figma baseline for your accessibility redesign — in under 60 seconds.

Install from Figma Community →

$12/mo · $96/yr · Cancel anytime

← Back to Blog