Back to Blog
·13 min read·A11yScope Team

Webflow Accessibility: How to Make Your Webflow Site WCAG Compliant

# Webflow Accessibility: How to Make Your Webflow Site WCAG Compliant

Key Takeaways:

  • Webflow gives you more control over HTML output than most site builders, making accessibility fixes more direct
  • The most common Webflow accessibility issues are missing alt text, empty links, missing form labels, and low color contrast
  • Webflow's custom attributes feature lets you add aria-label, role, and other ARIA attributes without custom code
  • Automated scanners can catch roughly 30–40% of WCAG issues — manual keyboard and screen reader testing covers the rest
  • Meeting WCAG 2.2 AA protects your site from ADA lawsuits and improves usability for all visitors

Webflow is a powerful visual web development platform. Unlike many site builders that generate opaque HTML, Webflow gives designers and developers significant control over the markup structure, CSS classes, and element attributes. This control is a double-edged sword for accessibility: Webflow will not automatically fix accessibility issues for you, but it gives you the tools to fix them properly.

This guide walks through the most common accessibility problems found on Webflow sites, explains why they matter under WCAG, and shows you exactly how to fix each one using Webflow's Designer interface. No custom code embed is required for most fixes.

The State of Webflow Accessibility

Webflow sites face the same core accessibility issues that affect the broader web. The WebAIM Million 2025 report found that 95.9% of home pages have detectable WCAG failures, with six recurring errors accounting for the vast majority of issues:

  • Low contrast text (79.1% of pages)
  • Missing image alt text (55.5%)
  • Missing form input labels (48.2%)
  • Empty links (45.4%)
  • Empty buttons (29.6%)
  • Missing document language (15.8%)
  • Webflow sites are not immune to any of these. In fact, some of them are particularly common in Webflow projects because of how the Designer handles images, navigation components, and form elements. The good news is that every one of these issues can be fixed directly in the Webflow Designer.

    Fix 1: Add Alt Text to Every Meaningful Image

    Missing alt text is the second most common accessibility error on the web, and Webflow makes it easy to introduce. When you drag an image element onto the canvas and upload a photo, Webflow does not require you to add alt text before publishing.

    How to fix it in Webflow

  • Select the image element on your canvas.
  • In the right panel, find the Image Settings section.
  • Enter descriptive alt text in the Alt Text field.
  • What to write

    • Product images: Describe the product. "Black leather crossbody bag with gold zipper" is useful. "Image" or "photo" is not.
    • Decorative images: If the image is purely decorative (background textures, ornamental dividers), check the "Decorative" option in Webflow's image settings. This sets alt="", which tells screen readers to skip the image.
    • Images with text: If an image contains text (a banner, an infographic, a quote card), the alt text must include that text content.
    • Logos: When a logo links to the homepage, the alt text should describe the destination, not the visual. "A11yScope home" is better than "A11yScope logo in blue and white".

    Bulk-check your images

    Open your Webflow project, go to the Assets panel, and review every uploaded image. Any image used in a visible context should have alt text set. For a comprehensive alt text strategy, review our guidance in how to fix common accessibility issues.

    Fix 2: Eliminate Empty Links

    Empty links are links that have no accessible name — screen readers announce them as just "link" with no indication of where they go. In Webflow, these typically appear in three places:

    Icon-only navigation links

    Webflow's navigation component often includes icon-only links for search, cart, or social media. If you place an icon (SVG or image) inside a link block without any text, the link is empty.

    How to fix:

  • Select the link block.
  • In the Element Settings panel, add a custom attribute: Name = aria-label, Value = a descriptive label like "Search" or "Shopping cart".
  • Image-only link blocks

    When you wrap a background image div or a plain image in a link block, and the image has no alt text, the link is empty.

    How to fix:

  • If using an element inside the link: add alt text to the image.
  • If using a background image div: add aria-label to the link block via custom attributes.
  • CMS-generated links with missing content

    Webflow CMS collection lists sometimes generate links where the bound text field is empty for certain items. Check your CMS entries to ensure all required text fields are populated.

    Fix 3: Label Every Form Input

    Missing form labels are the third most common accessibility error. In Webflow, this happens when you add form inputs without properly associating them with label elements, or when you hide labels for visual reasons.

    How Webflow handles labels

    When you drag a form block onto the canvas, Webflow creates elements automatically. However, designers frequently:

    • Delete the label element to achieve a cleaner visual design
    • Use placeholder text as the only indication of what a field expects
    • Break the label-input association by restructuring elements

    All three approaches create accessibility failures.

    How to fix it

    Keep visible labels. This is the best approach for both accessibility and usability. Placeholder text disappears when the user starts typing, leaving them with no indication of what the field expects. For detailed guidance on form labels, see our guide to fixing common accessibility issues found by scanners.

    If you must hide labels visually:

  • Keep the element in the DOM.
  • Apply a Combo Class that visually hides it. Create a class called visually-hidden with these styles in Webflow:
  • - Position: Absolute

    - Width: 1px

    - Height: 1px

    - Overflow: Hidden

    - Clip: set via custom attribute style="clip: rect(0,0,0,0)"

    This keeps the label available to screen readers while hiding it from sighted users.

    Always ensure the label's for attribute matches the input's id. In Webflow, this association is automatic when the label and input are siblings within the same form block, but it can break if you restructure the elements.

    Fix 4: Fix Color Contrast

    Low-contrast text is the single most common accessibility failure on the web, appearing on 79.1% of home pages. Webflow's visual design freedom makes it easy to create contrast failures — light gray text on white backgrounds, white text on light-colored hero images, or subtle placeholder text that falls below the minimum ratio.

    WCAG contrast requirements

    • Normal text (under 18pt or 14pt bold): minimum contrast ratio of 4.5:1
    • Large text (18pt+ or 14pt+ bold): minimum ratio of 3:1
    • UI components and graphical objects: minimum ratio of 3:1

    How to check in Webflow

    Webflow does not have a built-in contrast checker, but you can:

  • Use the browser's DevTools color picker — Chrome shows the contrast ratio when you inspect a text element's color.
  • Run a scan with A11yScope to identify every contrast failure on your published site.
  • Use the WebAIM Contrast Checker to test specific color pairs.
  • Common Webflow contrast traps

    • Text on images or gradients: When text sits on a background image, contrast varies across the image. Add a semi-transparent overlay between the image and text to ensure consistent contrast.
    • Placeholder text: Webflow's default placeholder color is often too light. Override it with a darker color that meets the 4.5:1 ratio.
    • Light gray "subtle" text: Body text in #999 on white (#fff) has a contrast ratio of only 2.85:1. Use #595959 or darker for WCAG AA compliance.

    For a complete guide to contrast requirements, see our color contrast accessibility guide.

    Fix 5: Set the Document Language

    Missing document language affects 15.8% of home pages. Without a lang attribute on the element, screen readers may use the wrong pronunciation rules, making content difficult or impossible to understand for users who rely on text-to-speech.

    How to set it in Webflow

  • Go to your project's Pages panel.
  • Click the gear icon on the page you want to edit.
  • Under Custom Code, add the language attribute in the Inside tag section:
  • 
    

    Alternatively, in newer Webflow versions:

  • Go to Project Settings > General.
  • Set the Localization settings, which automatically apply the correct lang attribute.
  • If your site uses multiple languages, ensure each page has the correct lang attribute for its primary language.

    Fix 6: Ensure Keyboard Navigation Works

    Keyboard accessibility is a WCAG Level A requirement, and it is one of the areas where Webflow sites most commonly fail. Every interactive element — links, buttons, form fields, dropdowns, modals, sliders — must be operable with a keyboard alone.

    Common keyboard issues in Webflow

    Custom dropdowns and interactions: Webflow's Interactions feature lets you create custom dropdown menus, modal dialogs, and tab interfaces. These look great visually, but they often lack keyboard support because Webflow's interaction triggers are typically click-based and do not respond to keyboard events like Enter or Space.

    How to fix:

  • Use Webflow's native Navbar and Dropdown components when possible. These include basic keyboard support out of the box.
  • For custom interactions, add tabindex="0" to the trigger element via custom attributes so it can receive keyboard focus.
  • Add role="button" if the trigger is a
    acting as a button.
  • Add custom JavaScript (via an Embed element) to listen for keydown events:
  • Focus visibility: Webflow allows you to remove the default focus outline with CSS, but never remove it without providing a visible replacement. In the Webflow Designer, add a :focus-visible state to your interactive elements with a visible outline. Our WCAG 2.2 guide covers the new focus appearance requirements in detail.

    Fix 7: Structure Your Headings Correctly

    Screen reader users navigate pages by heading structure. A logical heading hierarchy — H1, then H2, then H3, without skipping levels — allows users to understand the page structure and jump to relevant sections.

    Common Webflow heading mistakes

    • Using heading levels for visual sizing rather than document structure. Designers choose H3 because they want smaller text, even though the heading should logically be an H2.
    • Skipping heading levels (jumping from H1 to H4).
    • Having multiple H1 elements on a single page.

    How to fix

  • Every page should have exactly one H1 — typically the main page title or hero heading.
  • Subsections use H2, sub-subsections use H3, and so on.
  • If you need smaller text that is not a heading, use a paragraph with a custom class instead of a lower-level heading.
  • In Webflow, you can change any text element's tag in the Element Settings panel without affecting its visual styling.
  • Fix 8: Add ARIA Landmarks

    ARIA landmarks help screen reader users navigate to major sections of your page — the main content, navigation, footer, and sidebar. Webflow's semantic element options let you assign these roles.

    How to apply in Webflow

  • Select a section or container element.
  • In Element Settings, change the Tag from the default
    to the appropriate semantic element:
  • -

    for the site header

    -

    Check your website's accessibility now

    Free instant scan. No sign-up required.

    Scan Your Website Free