SVG Accessibility Checker

Check SVG accessibility issues before they reach production.

SVG accessibility checks

Check SVG title, description and ARIA accessibility.

Paste SVG markup, upload a file or try the built-in sample, then run a heuristic accessibility check. The tool reviews title and description elements, ARIA attributes, accessible names, decorative versus informative usage, text content and reference elements, and lists issues and suggestions. It is a helper, not a full WCAG or axe replacement, and it never modifies your SVG. Everything runs locally; your file is not uploaded.

Local only Read-only No upload Heuristic report
Drop an SVG file here or paste SVG markup into the input editor below.
Status
Accessible name
Title / desc
ARIA refs
Issues
Safety
Preview

SVG preview

Paste SVG markup or try the sample, then click Check Accessibility.

Processed locally No upload Accessibility: — Scripts: — Events: — External: — foreignObject: —
Input

SVG markup

Paste a complete SVG document or inline SVG element, then click Check Accessibility. The markup is never changed.

How It Works

SVG Accessibility Checker runs a set of heuristic accessibility checks on an SVG entirely in your browser. Paste SVG markup, upload an .svg file or try the built-in sample, then click Check Accessibility. The tool looks at the things that matter for screen readers: whether the SVG has an accessible name (from aria-label, aria-labelledby or a non-empty <title>), whether it has a <desc> or aria-describedby description, whether it declares role="img", and whether it is marked decorative with aria-hidden or role="presentation"/"none". It validates that aria-labelledby and aria-describedby actually point to existing ids, reports text content and reference elements, and lists concrete issues (Critical, Warning, Info) and suggestions, plus a heuristic score and status. It is a helper to catch common problems early — not a full WCAG or axe replacement — and it never modifies your SVG. SVGTrim checks SVG accessibility metadata locally in your browser. Your SVG file is not uploaded, and the tool does not modify the original markup.

Use Cases

  • Confirming an icon or illustration has an accessible name before shipping it inline
  • Checking that aria-labelledby and aria-describedby actually reference existing title and desc ids
  • Deciding whether an SVG should be marked decorative with aria-hidden or given role="img" and a name
  • Reviewing exported SVGs for missing title, empty title or missing role in a quick pass
  • Spotting visible text that has no matching accessible name, or decorative SVGs that are still focusable

FAQ

Why is SVG accessibility important?

Inline SVGs are part of the page's accessibility tree, so screen readers may announce them. Without a proper accessible name an informative SVG can be confusing or silent, and a decorative SVG that is not hidden can add noise. Getting title, description and ARIA right makes graphics usable for everyone.

What do title and desc do for an SVG?

A non-empty <title> provides the accessible name a screen reader announces, while <desc> provides a longer description for complex graphics. Linking them with aria-labelledby and aria-describedby on the root <svg> makes the relationship explicit and reliable across browsers.

When should I use role="img"?

Use role="img" on a standalone informative SVG together with an accessible name (aria-label or a title referenced by aria-labelledby). It tells assistive technology to treat the SVG as a single image rather than walking its internal shapes.

How is a decorative SVG marked?

Mark a purely decorative SVG with aria-hidden="true", or role="presentation" / role="none", so it is skipped by screen readers. When the checker detects this it stops requiring a title and only warns if the decorative SVG is still keyboard focusable.

Is my SVG file sent to an external service?

No. SVGTrim checks SVG accessibility metadata locally in your browser. Your SVG file is not uploaded, and the tool does not modify the original markup. There is no API call, no AI involved and no external service involved in the analysis.