Accessibility scan

Bubble

https://bubble.io

F

39 automated issues detected

Impact-weighted score: 277 · critical 17 · serious 21 · moderate 1 · 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

Buttons must have discernible text

Critical · 17 elements

WCAG: wcag2a, wcag412 · rule: button-name

.cphaIaU1
<button class="clickable-element bu..." title="" style="background-color: va..." tabindex="22">
.cpayw0
<button style="display: flex; color: var(--color_cnqsu2_default); border-radius: 4px; opacity: 1; place-self: center; min-width: 32px; max-width: 32px; min-height: 32px; max-height: 32px; width: 32px; height: 32px; margin: 0px; z-index: 2;" class="bubble-element Icon cpayw0" tabindex="">
.cpaFce > .cpaFaq.column[data-outline="true"] > .cpaFas.bubble-r-container-wrapper.Group > .relative.bubble-r-container > .cpaFax.row.flex > .cpaFay.Icon
<button style="display:flex" class="bubble-element Icon cpaFay" tabindex=""><svg viewBox="0 0 32 32" data-icon-set="phosphor" style="width: 100%; height: 100%; fill: currentcolor;"><use width="32" height="32" href="/static/icon_libraries/phosphor-2.1.0-fill.svg#play"></use></svg></button>
.cpaFdaA > .cpaFaq.column[data-outline="true"] > .cpaFas.bubble-r-container-wrapper.Group > .relative.bubble-r-container > .cpaFax.row.flex > .cpaFay.Icon
<button style="display:flex" class="bubble-element Icon cpaFay" tabindex=""><svg viewBox="0 0 32 32" data-icon-set="phosphor" style="width: 100%; height: 100%; fill: currentcolor;"><use width="32" height="32" href="/static/icon_libraries/phosphor-2.1.0-fill.svg#play"></use></svg></button>
.cpaFdaI > .cpaFaq.column[data-outline="true"] > .cpaFas.bubble-r-container-wrapper.Group > .relative.bubble-r-container > .cpaFax.row.flex > .cpaFay.Icon
<button style="display:flex" class="bubble-element Icon cpaFay" tabindex=""><svg viewBox="0 0 32 32" data-icon-set="phosphor" style="width: 100%; height: 100%; fill: currentcolor;"><use width="32" height="32" href="/static/icon_libraries/phosphor-2.1.0-fill.svg#play"></use></svg></button>
.cpaMaDaY19
<button style="visibility: unset;" class="bubble-element Icon cpaMaDaY19" tabindex="">
.cpaMaDu19
<button style="visibility: unset;" class="bubble-element Icon cpaMaDu19" tabindex="">
.cpaMaEaH19
<button style="visibility: unset;" class="bubble-element Icon cpaMaEaH19" tabindex="">
.cpaMaEaU19
<button style="visibility: unset;" class="bubble-element Icon cpaMaEaU19" tabindex="">
.entry-1.group-item.column > .cqaSaaS5.CustomElement.row > .coaAzm0.column.flex > .coepaO1.clickable-element.row > .coeraK1.relative.Group > .coeraE1.Icon
<button style="display: flex; color: var(--color_text_default); border-radius: 4px; opacity: 1; place-self: center; min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px; width: 24px; height: 24px; margin: 0px; z-index: 1;" class="bubble-element Icon coeraE1" tabindex="">
.entry-2.group-item.column > .cqaSaaS5.CustomElement.row > .coaAzm0.column.flex > .coepaO1.clickable-element.row > .coeraK1.relative.Group > .coeraE1.Icon
<button style="display: flex; color: var(--color_text_default); border-radius: 4px; opacity: 1; place-self: center; min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px; width: 24px; height: 24px; margin: 0px; z-index: 1;" class="bubble-element Icon coeraE1" tabindex="">
.entry-3.group-item.column > .cqaSaaS5.CustomElement.row > .coaAzm0.column.flex > .coepaO1.clickable-element.row > .coeraK1.relative.Group > .coeraE1.Icon
<button style="display: flex; color: var(--color_text_default); border-radius: 4px; opacity: 1; place-self: center; min-width: 24px; max-width: 24px; min-height: 24px; max-height: 24px; width: 24px; height: 24px; margin: 0px; z-index: 1;" class="bubble-element Icon coeraE1" tabindex="">
.cpaEaGy3
<button style="display: flex; color..." class="bubble-element Icon ..." tabindex="">
.cpaEaHaW3
<button style="display: flex; color..." class="bubble-element Icon ..." tabindex="">
.cpaEaHh3
<button style="display: flex; color..." class="bubble-element Icon ..." tabindex="">
.cpaEaHs3
<button style="display: flex; color..." class="bubble-element Icon ..." tabindex="">
.cpaEaIaA3
<button style="display: flex; color..." class="bubble-element Icon ..." tabindex="">

Elements must only use permitted ARIA attributes

Serious · 4 elements

WCAG: wcag2a, wcag412 · rule: aria-prohibited-attr

dotlottie-player,#\31 7470
<g id="17470" fill="rgb(138,138,138)" font-size="12.00441" font-family="Open Sans" font-style="normal" font-weight="normal" aria-label="Responsive" transform="matrix(2.5,0,0,2.5,90.75149536132812,230.7840118408203)" opacity="1" style="display: block;">
dotlottie-player,#\31 7472
<g id="17472" fill="rgb(26,26,26)" font-size="11.9971" font-family="Open Sans" font-style="normal" font-weight="normal" aria-label="Builder" transform="matrix(2.5,0,0,2.5,-76.69649505615234,234.07150268554688)" opacity="1" style="display: block;">
dotlottie-player,#\31 7473
<g id="17473" fill="rgb(138,138,138)" font-size="12.00138" font-family="Open Sans" font-style="normal" font-weight="400" aria-label="Search elements" transform="matrix(2.5,0,0,2.5,59.3129997253418,320.1625061035156)" opacity="1" style="display: block;">
dotlottie-player,#\31 7478
<g id="17478" fill="rgb(18,18,18)" font-size="12.00138" font-family="Open Sans" font-style="normal" font-weight="normal" aria-label="Elements Tree" transform="matrix(2.5,0,0,2.5,-228.83950805664062,403.18450927734375)" opacity="1" style="display: block;">

Elements must meet minimum color contrast ratio thresholds

Serious · 4 elements

WCAG: wcag2aa, wcag143 · rule: color-contrast

h1
<h1 class="bubble-element Text ..." title="" id="" style="white-space: pre-wra...">
Contrast ratio: 3.34:1text: #8a8a8abg: #fbfbfeuse #747474 (passes AA on this background)
.cpaFdaA > .cpaFaq.column[data-outline="true"] > .cpaFbaE.column.flex > .cpaFbaI.Text.bubble-element
<div class="bubble-element Text cpaFbaI">Bubble is the best no-code platform, and it has the most capability of any platform I've ever tried. Trust me, I've tried all of them. It's really a game changer. If you're going to go no-code, start with Bubble. You won't regret it.</div>
Contrast ratio: 1.52:1text: #d1d1d1bg: #ffffffuse #767676 (passes AA on this background)
.cpaFdaA > .cpaFaq.column[data-outline="true"] > .cpaFbaE.column.flex > .cpaFbaJ.row.flex > .cpaFbaO.column.flex > .cpaFbaP.Text.bubble-element
<div class="bubble-element Text cpaFbaP">Michael Ong</div>
Contrast ratio: 1.3:1text: #d2e2fdbg: #ffffffuse #6f7786 (passes AA on this background)
.cpaFdaA > .cpaFaq.column[data-outline="true"] > .cpaFbaE.column.flex > .cpaFbaJ.row.flex > .cpaFbaO.column.flex > .cpaFbaQ.Text.bubble-element
<div class="bubble-element Text cpaFbaQ">Product Manager at Seagate</div>
Contrast ratio: 1.52:1text: #d1d1d1bg: #ffffffuse #767676 (passes AA on this background)

Links must have discernible text

Serious · 11 elements

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

.cpaMaCaU19
<a class="bubble-element Link cpaMaCaU19 clickable-element" target="_self" href="https://bubble.io/for-enterprise"><div></div></a>
.cpaMaCi19
<a class="bubble-element Link cpaMaCi19 clickable-element" target="_self" href="https://bubble.io/experts-directory"><div></div></a>
.cpaMaCy19
<a class="bubble-element Link cpaMaCy19 clickable-element" target="_self" href="https://bubble.io/for-developers"><div></div></a>
.cpaMaDaL19
<a class="bubble-element Link cpaMaDaL19 clickable-element" target="_self" href="https://bubble.io/for-founders"><div></div></a>
.cpaGwc5
<a class="bubble-element Link ..." target="_self" style="word-break: break-wo..." href="https://bubble.io/">
.cpaEaHaO3
<a class="bubble-element Link ..." target="_blank" style="word-break: break-wo..." href="https://www.youtube....">
.cpaEaHa3
<a class="bubble-element Link ..." target="_blank" style="word-break: break-wo..." href="https://x.com/bubble">
.cpaEaHi3
<a class="bubble-element Link ..." target="_blank" style="word-break: break-wo..." href="https://www.facebook...">
.cpaEaHt3
<a class="bubble-element Link ..." target="_blank" style="word-break: break-wo..." href="https://www.instagra...">
.cpaEaIaE3
<a class="bubble-element Link ..." target="_blank" style="word-break: break-wo..." href="https://www.linkedin...">
.baTaLaZaM
<a class="bubble-element Link baTaLaZaM clickable-element" target="_self" href="https://bubble.io/"><div></div></a>

Scrollable region must have keyboard access

Serious · 2 elements

WCAG: wcag2a, wcag211, wcag213 · rule: scrollable-region-focusable

#logo_scroll_light
<div class="bubble-element Repea..." id="logo_scroll_light" style="overflow: auto; bord...">
#logo_scroll_dark
<div class="bubble-element Repea..." id="logo_scroll_dark" style="overflow: auto; bord...">

Zooming and scaling must not be disabled

Moderate · 1 element

WCAG: wcag2aa, wcag144 · rule: meta-viewport

meta[name="viewport"]
<meta name="viewport" content="width=device-width,initial-scale=1.0, user-scalable=no, minimal-ui">

Are you Bubble?

This is a free, automated, homepage-only snapshot. Re-scan bubble.io 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.