Skip to main content

Platform Guides

Squarespace Accessibility: What the Platform Gives You and What It Doesn't

Last updated

Squarespace is, honestly, one of the better-behaved no-code builders from an accessibility standpoint. Its 7.1 templates ship with HTML5 sectioning elements (header, main, nav, footer), alt-text fields exposed on every image block, label-associated form inputs, lazy loading, and a heading hierarchy that is usually structurally sound rather than purely visual. Compared with Wix or a plain Webflow build by a non-developer, you start much closer to an audit-ready baseline.

The recurring gaps are predictable. Squarespace does not add a “Skip to content” link by default. Many templates rely on the browser default focus ring, which designers then frequently remove with custom CSS without restoring a visible alternative. The Squarespace Commerce mini-cart opens as a drawer or modal whose focus management needs to be verified, and the in-line cart is where most Commerce-related audit findings cluster. Anything authored through a Code Block, Embed Block, or custom block bypasses the platform's defaults entirely. Image overlays for hero sections combine text and photos in ways that frequently fail WCAG 2.2 AA contrast at the lower viewport widths.

The good news: Squarespace allows site-wide and per-page code injection (Settings → Advanced → Code Injection). That is your primary remediation lever. You can add a skip link, restore focus indicators, and announce dynamic cart updates without leaving the platform and without paying a developer for a template fork. The right framing is not “is my site compliant.” The right framing is risk-reduced and audit-ready: documented fixes in code injection, a written accessibility statement, recurring monitoring so regressions get caught, and no overlay widget. Per the FTC's April 2025 final order against accessiBe, automated WCAG-compliance guarantees are now operating in known regulatory daylight — see our overlay deep-dive for the mechanics. The rest of this page covers exactly what Squarespace gives you, where it leaves you exposed, and the code injection snippets that close the most common gaps.

What Squarespace does well by default

Credit where it is due. The Squarespace 7.1 platform makes several decisions that small-business owners would otherwise need a developer to get right:

  • Semantic HTML out of the box — 7.1 templates wrap page regions in real header, main, nav, and footer elements rather than the bare-div soup that some page builders produce. Screen reader landmark navigation actually works on a stock Squarespace site, which is more than you can say for many Webflow exports.
  • Alt-text fields on every image block — The image block exposes a clear alt-text field in the sidebar, and gallery blocks let you set per-image descriptions. Squarespace cannot force you to fill them in, but the field is present and labeled. See our alt text guide for what to actually write.
  • Form block label association — Form fields generated by Squarespace include matching label[for] elements and unique field IDs. Compared with builders that rely on placeholder-only inputs, this alone removes a large class of audit findings.
  • Lazy loading and responsive images — The platform serves correctly sized images per viewport and adds loading="lazy" where appropriate, which avoids the layout-shift and reflow issues that complicate manual screen reader testing.
  • Published accessibility commitment — Squarespace maintains a public accessibility hub at squarespace.com/accessibility stating they are “updating the components, tools, and user experiences” in their products to improve accessibility. They explicitly note that users still have the ability to build sites that are not accessible, and they place responsibility on you to meet applicable law — which is the right disclaimer.

Where Squarespace sites commonly fail

These are the findings that show up in nearly every Squarespace scan we run, regardless of template:

  • Missing skip link — Squarespace does not inject a “Skip to content” link by default. Keyboard users tab through the entire site navigation on every page load. This is the single highest-value fix you can make in fifteen minutes via code injection.
  • Stripped or thin focus indicators — Many templates use the browser default focus ring, which designers routinely remove with outline: none in custom CSS and forget to restore. WCAG 2.4.7 (Focus Visible) and 2.4.13 (Focus Appearance, AAA) both require a visible indicator with sufficient contrast.
  • Squarespace Commerce mini-cart — The cart drawer opens as a modal overlay. By default it does not always set aria-modal="true", does not always trap focus, and does not announce item additions to assistive technology. See our accessible modals guide for the pattern this needs to follow.
  • Custom Code Block / Embed Block content — The moment a content editor pastes a third-party widget, an unstyled HTML snippet, or a custom video embed into a Code Block, all of Squarespace's accessibility guarantees stop applying to that subtree. Review every Code Block individually.
  • Image overlays in hero sections — Hero banners that lay text over a photograph almost always fail contrast on at least one breakpoint. The text might measure 7:1 against the darkest pixel and 2:1 against the lightest. Either crop with a deterministic gradient overlay or move the text out of the image.
  • Form block error messages — Squarespace forms display an error state, but the association between an error message and a specific input field via aria-describedby is inconsistent across form-block versions. See our form validation guide for what good looks like.

Code injection — your remediation lever

Squarespace exposes two code injection points relevant here: site-wide injection at Settings → Advanced → Code Injection(with separate Header, Footer, and Lock Page slots) and per-page injection in each page's settings. Site-wide Header injection runs on every page and is where the three snippets below belong. The header slot is acceptable for the link element placement because Squarespace places its body content immediately after; the skip link needs to be the first focusable element on every page.

Paste this into the site-wide Header injection slot. The CSS visually hides the link until it receives keyboard focus, then reveals it in the top-left corner with high contrast:

<a href="#main-content" class="sh-skip-link">
  Skip to main content
</a>
<style>
  .sh-skip-link {
    position: absolute;
    left: -10000px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
    z-index: 100000;
  }
  .sh-skip-link:focus,
  .sh-skip-link:focus-visible {
    position: fixed;
    left: 16px;
    top: 16px;
    width: auto;
    height: auto;
    padding: 12px 18px;
    background: #000;
    color: #fff;
    text-decoration: underline;
    font-weight: 700;
    border-radius: 6px;
    outline: 3px solid #ffce00;
    outline-offset: 2px;
  }
</style>

You also need a target with id="main-content" on your main content area. Squarespace 7.1 main sections expose collection or page identifiers you can use, but the simplest approach is to wrap a Code Block at the very top of every page template with <div id="main-content" tabindex="-1"></div>, or use a small JavaScript fallback in the footer slot that adds the ID to the first main element it finds.

2. Restore visible focus indicators globally

This rule restores a high-contrast focus ring on every focusable element, overriding any outline: none that template CSS or custom CSS may have introduced. The 3:1 minimum contrast against the adjacent background satisfies WCAG 1.4.11 (Non-text Contrast):

<style>
  *:focus-visible {
    outline: 3px solid #1a73e8;
    outline-offset: 2px;
    border-radius: 2px;
  }
  /* Belt-and-braces: ensure no template rule strips it */
  a:focus-visible,
  button:focus-visible,
  input:focus-visible,
  select:focus-visible,
  textarea:focus-visible,
  [tabindex]:focus-visible {
    outline: 3px solid #1a73e8 !important;
    outline-offset: 2px !important;
  }
</style>

The use of :focus-visible rather than :focus means the ring only appears for keyboard navigation, not when a mouse user clicks — which is what designers usually want. Pick a color that has 3:1 contrast against your darkest and lightest backgrounds; the example blue works on most light themes.

3. Announce cart updates with an ARIA live region

When a shopper adds an item to the Commerce cart, Squarespace updates the cart count silently. Screen readers announce nothing unless you give them a live region. Add this to the Header injection slot. The MutationObserver watches the cart-count element and announces any change politely:

<div id="sh-cart-live"
     aria-live="polite"
     aria-atomic="true"
     style="position:absolute;left:-10000px;top:auto;
            width:1px;height:1px;overflow:hidden">
</div>
<script>
(function () {
  function wire() {
    var counter = document.querySelector(
      '.sqs-cart-quantity, [data-cart-quantity]'
    );
    var live = document.getElementById('sh-cart-live');
    if (!counter || !live) return;
    var last = counter.textContent.trim();
    new MutationObserver(function () {
      var next = counter.textContent.trim();
      if (next !== last) {
        last = next;
        live.textContent = 'Cart updated. ' + next + ' item' +
          (next === '1' ? '' : 's') + ' in cart.';
      }
    }).observe(counter, { childList: true, characterData: true,
                          subtree: true });
  }
  if (document.readyState !== 'loading') wire();
  else document.addEventListener('DOMContentLoaded', wire);
})();
</script>

Adjust the selector to match your template's cart-count element — inspect the DOM if .sqs-cart-quantity does not match yours. This is a small JavaScript sketch, not a fully tested component; verify the announcement with VoiceOver or NVDA before relying on it in production.

Squarespace Commerce — the checkout flow

There are two surfaces to think about. Squarespace's hosted checkout runs on a separate domain that the platform controls, which means you cannot inject code into it — and you do not need to. The hosted checkout has been progressively hardened over time, generally meeting form-label, error-association, and keyboard-navigation requirements. The trade-off is that you cannot customize it, so you also cannot break it.

The in-line cart drawer is different. It opens on your domain, inside your DOM, and your code injection applies. That is where the focus management, modal semantics, and live-region work in the previous section pays off. If you sell on Squarespace Commerce and you are auditing a single flow today, audit add-to-cart → cart drawer open → quantity change → proceed to checkout, with the keyboard only. See our ecommerce accessibility playbook for the broader checkout-flow checklist.

A worked example: the small-Squarespace-business settlement pattern

A useful reference point for the “Squarespace alone is not a defense” reality is the wave of ADA web-accessibility suits filed in Alachua County, Florida in 2024 and 2025, in which a single plaintiff sued forty-nine businesses — forty-three of them in the Gainesville area — over website accessibility. One of those defendants was a local independent bakery whose site was built on Squarespace. Per public reporting, the owner stated the business was not aware its site failed ADA-relevant requirements until being served, and the matter was resolved in under two months. The dollar amount itself was not publicly disclosed and we do not have it independently verified, so we will not quote a number here; published reporting suggests most defendants in that wave signed confidential settlements in the low five figures, plus attorney fees and remediation costs.

The pattern matters more than the specific figure. A small business operating on Squarespace, with no in-house developer and no accessibility audit, receives a demand letter or a complaint. The platform's default semantic HTML and image alt-text fields had not been enough — the site still lacked a skip link, had inconsistent focus indicators, and included custom Code Blocks where any guarantee evaporated. The remediation work that ultimately gets done in these cases is almost always the same three buckets: skip link added, focus indicators restored, alt text written for every informative image. Doing that work proactively, before the demand letter, costs an afternoon. Doing it after, with counsel, costs considerably more. The ADA demand letter response playbook walks through the procedural side if you have already received one.

Don't install an accessibility overlay

A recurring temptation after a demand letter is to paste an overlay-widget script into Squarespace's code injection slot and consider it handled. Do not do this. On April 22, 2025, the FTC approved a final consent order requiring accessiBe to pay $1 million and barring the company from representing that its automated products can make any website WCAG-compliant or can ensure continued compliance with WCAG over time, unless it has the evidence to support such claims. Per UsableNet's 2024 Year-End Report, roughly a quarter of 2024 ADA web-accessibility lawsuits cited an overlay or accessibility widget as a barrier, not a remedy. Installing one after a complaint has become a recognized pleading pattern, not a defense. The full mechanics of why overlays cannot fix the DOM in a stable, assistive-technology-readable way live in our overlay analysis.

Frequently asked questions

Does Squarespace’s accessibility commitment make my site compliant?
No. Squarespace’s public accessibility hub explicitly notes that users have the ability to build sites that are not accessible, and the platform places responsibility on you for meeting applicable law. The platform gives you better defaults than most no-code builders — semantic landmarks, alt-text fields, label-associated forms — but compliance is not a property of the platform. It is a property of the site you build on it.
Can I rely on the platform’s built-in alt text?
Only if you actually fill it in. Squarespace exposes the alt-text field on every image and gallery block, but it does not auto-generate descriptions. If the field is left blank, the image will either render with no alt attribute (a barrier) or with the original filename (often worse). Audit every image and write intent-aware alt text. Decorative images should use an empty alt attribute, not a filename.
Should I use 7.0 or 7.1 templates?
For a new site, 7.1. Version 7.1 ships with stronger default semantic HTML, more consistent landmark regions, and better keyboard support. Version 7.0 templates still work and Squarespace continues to support them, but they carry more legacy accessibility debt, and many template-specific quirks (custom navigation widgets, footer layouts) need additional code-injection work. If you are already on 7.0 and the site is working, a migration purely for accessibility is rarely the highest-value move; targeted code injection usually closes the gap.
Is the Squarespace Commerce checkout accessible?
The hosted checkout — the one that runs on a Squarespace-controlled domain — is generally accessible: form labels are associated, errors are descriptive, and keyboard navigation works. You cannot customize it, which also means you cannot break it. The in-line cart drawer is the higher-risk surface: it runs on your domain, opens as a modal, and its focus management and live-region behavior need verification. Test add-to-cart through proceed-to-checkout with the keyboard only and a screen reader at least once per release.
Will SweepHound work on a Squarespace site?
Yes. SweepHound crawls the full rendered DOM, so it sees Squarespace pages exactly as a real browser does — including custom Code Blocks, Commerce widgets, and any code-injection snippets you have added. The dual-engine scan (axe-core plus IBM Equal Access, both available on every paid plan) catches more than either engine alone. Per Deque’s Automated Accessibility Coverage Report, Deque reported automated tests identified 57.38% of issue instances by volume in its dataset — based on 2,000+ audits across 13,000+ pages and ~300K issues — so the scan is a strong starting point, not a substitute for manual review. Remediation suggestions are written so you can paste them straight into Squarespace’s code injection slots.

How SweepHound supports Squarespace

SweepHound crawls a Squarespace site the same way a real browser does: full rendered DOM, every page reachable from your sitemap, every Code Block executed, every Commerce widget hydrated. The dual-engine scan combines axe-core and IBM Equal Access so the findings reflect more than a single rule set. For each issue, the remediation engine tries to produce a deterministic code-level fix where the answer is mechanical — a missing alt attribute on a known logo, a heading level that should descend, a button rendered as a div— and falls back to an explanation when the right answer depends on intent or context the page cannot infer.

For Squarespace specifically, that means: skip-link snippets you can paste into Header injection, focus-indicator CSS that lives next to your existing custom CSS, ARIA-live patterns for the cart drawer, and per-image alt-text suggestions you can paste into each block's sidebar field. After your fixes are in place, recurring monitoring runs on a schedule so regressions from new pages, new images, new Code Blocks, or new third-party embeds get caught before they become litigation surface. No script tag in your production HTML, no overlay toolbar, no dependence on a third-party CDN being reachable from any given customer's network. Ship the fixes through Squarespace's normal publishing flow and keep the receipts.

Ready to see what your Squarespace site actually contains in the rendered DOM? Start a free SweepHound scan and get code-injection-ready fix guidance in minutes. See pricing for what is included at each plan level, including dual-engine scanning and recurring monitoring. If you are also evaluating other builders, our sibling Wix accessibility guide and the rest of the platform series are worth a look before you sign up.

Sources

  1. Squarespace — Accessibility hubPrimary platform reference. Squarespace’s public accessibility commitment, with the explicit user-responsibility disclaimer.
  2. Squarespace Help Center — Accessibility on Squarespace sitesPractical support article on accessibility features and limitations.
  3. BOIA — Do Squarespace sites meet WCAG requirements?Practitioner reference on common Squarespace accessibility gaps.
  4. FTC Approves Final Order Requiring accessiBe to pay $1 Million (April 22, 2025)Source for the overlay-warning section. Bars accessiBe from automated-WCAG-compliance claims without evidence.
  5. Deque — Automated Accessibility Coverage ReportDeque dataset methodology for the 57.38% issue-instance volume figure.
  6. The Independent Florida Alligator — Some Gainesville businesses still fighting after mass ADA compliance lawsuitsPublic reporting on the 49-defendant ADA web-accessibility wave referenced in the settlement-pattern section, including a Squarespace-built defendant.