Accessibility scan

Penpot

https://penpot.app

F

41 automated issues detected

Impact-weighted score: 205 · critical 0 · serious 41 · moderate 0 · minor 0

Automated axe-core 4.11.4 scan of the homepage only, run on June 23, 2026. Results are reproducible: the same engine, the same page.

Automated testing detects roughly 30–50% of WCAG issues. Many barriers — keyboard traps, screen-reader flow, focus order, meaningful alt text — need manual review by a person. A clean automated scan is not the same as an accessible site.

A clean automated scan is not a determination of ADA compliance, legal compliance, or full accessibility. These results describe only what an automated scan found on one page on one date.

Detected issues

Links must have discernible text

Serious · 10 elements

WCAG: wcag2a, wcag244, wcag412 · rule: link-name

.ρsVuuj
<a class="ρd__all ρd__a ρd__a__spkLb ρsVuuj" target="_blank" href="https://www.reddit.com/r/Penpot/">
.ρq7Zx7
<a class="ρd__all ρd__a ρd__a__spkLb ρq7Zx7" target="_blank" href="https://peertube.kaleidos.net/">
.ρq9QWy
<a class="ρd__all ρd__a ρd__a__spkLb ρq9QWy" target="_blank" href="https://www.linkedin.com/company/penpot/">
.ρs6B8B
<a class="ρd__all ρd__a ρd__a__spkLb ρs6B8B" target="_blank" href="https://bsky.app/profile/penpot.app">
.ρiVgEn
<a class="ρd__all ρd__a ρd__a__spkLb ρiVgEn" target="_blank" href="https://github.com/penpot">
.ρf2VX2
<a class="ρd__all ρd__a ρd__a__spkLb ρf2VX2" target="_blank" href="https://twitter.com/penpotapp">
.ρvbg0F
<a class="ρd__all ρd__a ρd__a__spkLb ρvbg0F" target="_blank" href="https://www.youtube.com/@Penpot">
.ρmHljp
<a class="ρd__all ρd__a ρd__a__spkLb ρmHljp" target="_blank" href="https://instagram.com/penpot.app">
.ρhILiS
<a class="ρd__all ρd__a ρd__a__spkLb ρhILiS" target="_blank" href="https://fosstodon.org/@penpot/">
.ρfJb6
<a class="ρd__all ρd__a ρd__a__spkLb ρfJb6" target="_blank" href="https://www.digitalpublicgoods.net/r/penpot">

<svg> elements with an img role must have alternative text

Serious · 31 elements

WCAG: wcag2a, wcag111 · rule: svg-img-alt

.ρr6KIz
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" height="1em" class="plasmic-default__svg ρd__all ρr6KIz" role="img"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
.ρ_2T5RM
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" height="1em" class="plasmic-default__svg ρd__all ρ_2T5RM" role="img"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
.ρaYfcc
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" height="1em" class="plasmic-default__svg ρd__all ρaYfcc" role="img"><path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>
.ρmMoj0
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 16 16" height="1em" class="plasmic-default__svg ρd__all ρmMoj0 ρmMoj0Zrc8H" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρbrCxi[viewBox="0 0 840 159"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 840 159" height="1em" class="plasmic-default__svg ρd__all ρbrCxi" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρzbM7M[viewBox="0 0 602 105"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 602 105" height="1em" class="plasmic-default__svg ρd__all ρzbM7M" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρmBCen[viewBox="0 0 838 120"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 838 120" height="1em" class="plasmic-default__svg ρd__all ρmBCen" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρuKfBd[viewBox="0 0 336 149.583"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 336 149.583" height="1em" class="plasmic-default__svg ρd__all ρuKfBd" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρxcBz1[viewBox="0 0 393 207"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 393 207" height="1em" class="plasmic-default__svg ρd__all ρxcBz1" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρdXkvo[viewBox="0 0 726 205"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 726 205" height="1em" class="plasmic-default__svg ρd__all ρdXkvo" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρlsdR7[viewBox="0 0 705 177"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 705 177" height="1em" class="plasmic-default__svg ρd__all ρlsdR7" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρhxjnu[viewBox="0 0 848 151.001"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 848 151.001" height="1em" class="plasmic-default__svg ρd__all ρhxjnu" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρuh4Bc[viewBox="0 0 654 200"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 654 200" height="1em" class="plasmic-default__svg ρd__all ρuh4Bc" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρdlbeB[viewBox="0 0 574 200"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 574 200" height="1em" class="plasmic-default__svg ρd__all ρdlbeB" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρed711[viewBox="0 0 772.054 207"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 772.054 207" height="1em" class="plasmic-default__svg ρd__all ρed711" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρreylE[viewBox="0 0 414 201"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 414 201" height="1em" class="plasmic-default__svg ρd__all ρreylE" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρ_5Qf9V[viewBox="0 0 780 209.001"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 780 209.001" height="1em" class="plasmic-default__svg ρd__all ρ_5Qf9V" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρbdJr3[viewBox="0 0 1111 207.001"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 1111 207.001" height="1em" class="plasmic-default__svg ρd__all ρbdJr3" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρv50Wb[viewBox="0 0 394 207"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 394 207" height="1em" class="plasmic-default__svg ρd__all ρv50Wb" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρt6Ywe[viewBox="0 0 1246 166"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 1246 166" height="1em" class="plasmic-default__svg ρd__all ρt6Ywe" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρcJFgF[viewBox="0 0 540 148"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 540 148" height="1em" class="plasmic-default__svg ρd__all ρcJFgF" role="img">
.Marquee_marqueeItem__eIFz7:nth-child(1) > .ρsd5Nt[viewBox="0 0 823 207"][version="1.1"]
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 823 207" height="1em" class="plasmic-default__svg ρd__all ρsd5Nt" role="img">
.ρ_35BQr
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="8907 1943 220 220" height="1em" class="plasmic-default__svg ρd__all ρ_35BQr" role="img">
.ρjX8Iw
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 222 222" height="1em" class="plasmic-default__svg ρd__all ρjX8Iw" role="img">
.ρvAa9
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="4628 1549 42 42" height="1em" class="plasmic-default__svg ρd__all ρvAa9" role="img">
.ρiaGl2
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="4912.5 3531 16 16" height="1em" class="plasmic-default__svg ρd__all ρiaGl2" role="img">
.ρgtwSg
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="4920 3489.5 16 15.988" height="1em" class="plasmic-default__svg ρd__all ρgtwSg" role="img">
.ρjlnDo
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="7292 3490 16 16" height="1em" class="plasmic-default__svg ρd__all ρjlnDo" role="img">
.ρsnmzk
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="8785 1164 220 220" height="1em" class="plasmic-default__svg ρd__all ρsnmzk" role="img">
.ρwezS1
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 220 220" height="1em" class="plasmic-default__svg ρd__all ρwezS1" role="img">
.ρ_5QBwO
<svg xmlns="http://www.w3.org/2000/svg" fill="none" version="1.1" viewBox="0 0 220 220" height="1em" class="plasmic-default__svg ρd__all ρ_5QBwO" role="img">

Are you Penpot?

This is a free, automated, homepage-only snapshot. Re-scan penpot.app live, get the full element-level worklist across every page, or set up monitoring that re-checks on a schedule and alerts only on new issues.