216digital.
Web Accessibility

Phase 1
Web Remediation for Lawsuit Settlement & Prevention


Phase 2
Real-World Accessibility


a11y.Radar
Ongoing Monitoring and Maintenance


Consultation & Training

Is Your Website Vulnerable to Frivolous Lawsuits?
Get a Free Web Accessibility Audit to Learn Where You Stand
Find Out Today!

Web Design & Development

Marketing

PPC Management
Google & Social Media Ads


Professional SEO
Increase Organic Search Strength

Interested in Marketing?
Speak to an Expert about marketing opportunities for your brand to cultivate support and growth online.
Contact Us

About

Blog

Contact Us
  • Accessible Accordion vs Disclosure: Dev Best Practices

    Disclosures and accordions show up all over the place—FAQs, menus, settings panels—you name it. They seem simple enough, right? But making sure they actually work for everyone takes more than just toggling some content and calling it a day.

    If you’ve ever wondered when to use <details> versus building an accordion with buttons and ARIA, or how to keep screen reader users from getting lost in a sea of hidden panels, you’re not alone. This guide breaks it all down—what to use, when to use it, and how to build a truly accessible accordion without overcomplicating the code.

    What Are Disclosure and Accordion Widgets?

    Disclosure Widgets: Simple, Native, and Often Overlooked

    Disclosures—also known as show/hide widgets—are ideal for toggling a single section of content. Think expandable FAQs or inline help that doesn’t clutter the UI by default.

    Here’s a basic example using semantic HTML:

    <details>
      <summary>Need more info?</summary>
      <p>Here are more details you might find useful.</p>
    </details>

    This pattern is fully native and built into the browser, which means it comes with keyboard support and screen reader compatibility right out of the box. You also get the open attribute, which allows you to control whether the content is expanded by default.

    The main advantage here is simplicity—no JavaScript needed, and fewer chances to introduce accessibility issues.

    Accordion Widgets: More Complex, More Control

    An accessible accordion expands on the idea of disclosure by managing multiple content panels. In most implementations, only one section is open at a time, helping users stay focused and reducing cognitive overload.

    You can build an accordion using multiple <details> elements, but if you want to control behavior more precisely—like closing other panels when one opens—you’ll need JavaScript.

    Here’s what a minimal HTML-only version might look like:

    <details name="accordion">
      <summary>Step 1</summary>
      <p>Instructions for step one.</p>
    </details>

    But to meet WCAG standards for a true accessible accordion, you’ll need to manage keyboard navigation, state indicators, and focus behavior—topics we’ll cover next.

    Accessibility Considerations Developers Must Prioritize

    Keyboard Navigation That Works for Everyone

    An accessible accordion must support meaningful keyboard interactions. Here’s what users expect:

    • Tab and Shift + Tab to move between interactive elements.
    • Enter or Space to toggle a section open or closed.
    • Arrow Up/Down or Home/End to move between accordion headers in more advanced versions.

    Missing any of these can make your component unusable for keyboard users. The WAI-ARIA Authoring Practices offer detailed guidance on accordion interaction patterns—worth bookmarking for reference.

    Use Semantic Elements—Always

    If there’s one golden rule, it’s this: never sacrifice semantics for styling.

    That means:

    • Use <button> for interactive triggers—not <div>, <span>, or anchor tags without href.
    • If you’re toggling visibility, it’s a button, not a link.
    • Ensure that elements behave as users (and assistive technologies) expect.

    Using semantic elements is one of the most effective ways to ensure your accessible accordion behaves predictably across screen readers and input types.

    Add ARIA Where Needed, Not Everywhere

    ARIA should enhance native HTML—not replace it. But when you’re building a custom accordion in JavaScript, ARIA becomes essential for communicating component state.

    Here’s a basic implementation:

    <button aria-expanded="false" aria-controls="info">More Info</button>
    <div id="info" hidden>
      <p>Here’s the additional info.</p>
    </div>
    
    const btn = document.querySelector('button');
    const content = document.getElementById('info');
    btn.addEventListener('click', () => {
      const expanded = btn.getAttribute('aria-expanded') === 'true';
      btn.setAttribute('aria-expanded', String(!expanded));
      content.hidden = expanded;
    });

    This ensures screen readers can track whether content is visible or hidden, creating a seamless experience for all users.

    Common Accessibility Mistakes (and How to Fix Them)

    Even seasoned devs slip up. Here are a few common issues that can break accessibility—and how to address them:

    MistakeProblemSolution
    Non-focusable triggers<div>s with onclick don’t work for keyboard usersUse <button> or add tabindex="0"
    Links used instead of buttons<a> without href doesn’t convey intentReplace with semantic <button>
    Missing state feedbackScreen readers can’t detect if content is expandedDynamically update aria-expanded
    Focusable elements in hidden contentUsers tab into content they can’t seeUse hidden or display: none correctly

    Most of these issues stem from skipping semantic HTML or relying too heavily on JavaScript without proper state management. An accessible accordion avoids these pitfalls by focusing on clarity, intent, and interaction feedback.

    Best Practices for Developers

    Building an accessible accordion that holds up in the real world means going beyond code snippets. Here’s what to keep in mind:

    Start with Progressive Enhancement

    Whenever possible, begin with HTML <details> and <summary>. They’re accessible by default and supported in all major browsers. Use JavaScript only when additional behavior—like limiting panels to one open at a time—is truly needed.

    Prioritize Focus Visibility

    An accordion is only as accessible as its focus states. Make sure every interactive element has a visible focus indicator, and don’t override :focus-visible in your CSS. This isn’t just a WCAG 2.2 requirement—it’s also just good UX.

    Avoid Overengineering with ARIA

    Don’t reach for ARIA unless you need to. Native HTML tends to be more robust across assistive technologies, and using ARIA incorrectly can make things worse. When in doubt, simplify.

    Test Like a User

    If you’re not testing with a keyboard, you’re flying blind. Add screen reader testing with NVDA, JAWS, or VoiceOver into your QA flow. Run Lighthouse and WAVE scans, but don’t rely on them alone—they won’t catch everything an actual user would encounter.

    Real-World Application: From Good to Great

    Let’s say you’re rebuilding a legacy FAQ section. It uses JavaScript to toggle open answers, but it’s riddled with <div>s and missing ARIA.

    Start by replacing the markup with semantic HTML:

    <details>
      <summary>What’s your return policy?</summary>
      <p>You can return items within 30 days.</p>
    </details>

    Then, enhance with JavaScript if you want only one section open at a time. Layer in ARIA attributes to improve screen reader support. Suddenly, you’ve turned a clunky widget into a polished, accessible accordion that works for everyone.

    Wrapping It Up

    Disclosures and accordions might seem interchangeable, but the differences matter—especially when accessibility is on the line. Whether you’re working on a quick FAQ or building a fully dynamic interface, an accessible accordion ensures users with different abilities can navigate and interact with your content.

    At the end of the day, accessibility isn’t about checking boxes—it’s about building better interfaces for everyone.

    Need help auditing your components?

    216digital offers in-depth accessibility support. Schedule an ADA compliance consultation to review your current implementation and ensure everything meets WCAG standards—without compromising design or performance.

    Greg McNeil

    May 8, 2025
    How-to Guides
    Accessibility, accessible accordion, Disclosure, How-to, HTML, semantic HTML, web developers, web development
  • How Semantic HTML Improves Your Accessibility & SEO

    When creating a website, it’s easy to get caught up in how it looks and how it functions. But have you ever paused to think about how your website is structured behind the scenes? If you’re simply filling your code with <div> and <span> tags, you might be missing an opportunity to make your site better—not just for search engines, but for users, too.

    Semantic HTML is more than just good coding practice; it’s a way to make your website more accessible and easier for search engines to understand. This isn’t just about technicalities—it’s about creating a smoother, more meaningful experience for your visitors. Whether you’re a seasoned developer or just starting out, understanding and implementing semantic HTML can make a real difference in how people interact with your site, especially those using assistive technologies.

    In this article, we’ll explore what semantic HTML is, why it matters, and how it can improve both accessibility and SEO. We’ll also touch on practical tips, common mistakes to avoid, and how semantic HTML aligns with Web Content Accessibility Guidelines (WCAG) to make your site more inclusive.

    What is Semantic HTML?

    Let’s start with the basics. Semantic HTML refers to using HTML tags that have a specific meaning or role within the webpage. These elements are not just for visual structure; they provide information about the type of content within them, helping browsers and assistive technologies (like screen readers) better understand your webpage’s layout and content.

    Here are some common semantic HTML tags:

    • <header>: Represents the introductory content, often containing the website’s logo or navigation links.
    • <nav>: Defines a set of navigation links that help users explore your site.
    • <article>: Used for standalone content that could be reused or distributed, such as blog posts.
    • <section>: Groups related content together thematically, often with its own heading.

    By contrast, non-semantic elements like <div> and <span> don’t convey any meaning other than being containers. While they still have their place, relying solely on them can make your website harder to navigate for both users and search engines.

    Why Semantic HTML is Critical for Accessibility

    When we talk about accessibility, we’re referring to making sure that your website can be used by everyone, including people with disabilities. Many users rely on assistive technologies like screen readers, which read the content of a webpage out loud. Screen readers depend on the proper use of semantic HTML to interpret the structure of a page.

    For example, a screen reader can easily understand what a <header> or <nav> tag is, allowing users to navigate your website more efficiently. If you use a <div> for everything, the screen reader has no idea whether it’s a section of text, a navigation menu, or a footer. This makes the browsing experience confusing and frustrating for users with disabilities.

    Helping Screen Readers Navigate Your Website

    One of the primary ways semantic HTML improves accessibility is by helping screen readers announce different sections of your website. For example, if you have a blog post wrapped in an <article> tag, the screen reader can announce to the user that they’re about to read an article.

    Let’s compare:

    Non-Semantic Example:

    <div class="blog-post">My First Blog Post</div>

    Semantic Example:

    <article>My First Blog Post</article>

    The second example clearly defines that the content is an article. Assistive technologies will pick up on this and offer better navigation and context for the user.

    Structured Navigation for All Users

    Another advantage of using semantic HTML is structured navigation. Tags like <nav>, <header>, and <footer> help screen readers understand the hierarchy of the page. When users rely on a screen reader to navigate, they can quickly jump to important sections like the navigation bar or the main content by skipping through these well-defined landmarks.

    Imagine navigating a website by ear, trying to figure out where the navigation menu ends and where the main content begins—without semantic HTML, it’s a guessing game.

    How Semantic HTML Improves SEO

    The benefits of semantic HTML don’t stop at accessibility—it also plays a key role in your site’s search engine optimization (SEO). Google and other search engines rely on web crawlers to analyze your site, and these crawlers can better understand the context and structure of your content when you use semantic HTML.

    Better Crawling and Indexing

    Search engines are smart, but they can’t interpret your content as humans do. Using semantic HTML helps them figure out what each part of your page represents. For instance, wrapping your blog posts in <article> tags signals to search engines that this content is an article, making it easier for them to understand and categorize.

    This is how semantic HTML can help with SEO:

    • Improved Indexing: Using proper semantic tags can lead to better indexing, as search engines can more easily understand the structure of your content.
    • Rich Snippets: Semantic HTML can improve the likelihood of your site showing up with rich snippets in search results, such as a featured article or recipe, depending on the content.
    • Enhanced SEO Ranking: Google prioritizes websites that offer a good user experience. Since semantic HTML improves navigation for all users, including those using assistive technologies, your site is more likely to be seen as user-friendly, boosting your SEO.

    Best Practices for Using Semantic HTML

    Ready to start using semantic HTML? Here are some best practices to keep in mind:

    Use the Right Tag for the Right Purpose

    Each semantic HTML tag has a specific use, and you should apply them where they belong. For example:

    • Use <header> for the top section of your page that contains headings or introductory content.
    • Use <nav> for navigation links, not just random lists of links.
    • Use <article> for blog posts or other standalone content.
    • Use <section> to group related content, and <footer> for the bottom of your page.

    Avoid Overusing <div> and <span>

    While <div> and <span> are useful for general-purpose containers, overusing them can result in a loss of meaning in your page structure. Whenever possible, replace them with more descriptive elements like <section>, <aside>, or <figure>.

    Combine Semantic HTML with ARIA Roles

    In some cases, ARIA (Accessible Rich Internet Applications) roles can complement semantic HTML by providing additional context. For example, adding role="navigation" to a <nav> element makes it even clearer that the content is meant for navigation. Just be careful not to rely on ARIA roles as a substitute for semantic HTML—they should be used to enhance, not replace.

    Align with WCAG Guidelines

    WCAG offer clear recommendations on how to make your content accessible. One of their core principles is ensuring that content is perceivable and navigable by assistive technologies, which is where semantic HTML shines.

    • WCAG 1.3.1 (Info and Relationships): This guideline emphasizes the importance of using semantic elements so that content can be understood by assistive technologies.
    • WCAG 2.4.1 (Bypass Blocks): Using semantic HTML makes it easier for users with disabilities to bypass repetitive content and jump straight to the main sections, such as navigation menus or headers.

    Common Mistakes to Avoid

    While semantic HTML is straightforward, there are a few common mistakes that developers often make. Avoid these pitfalls to ensure your content is both accessible and SEO-friendly:

    • Overuse of <div> and <span>: These tags should be used sparingly and only when no other semantic element fits. Overloading your page with <div> tags makes it hard for search engines and screen readers to understand your content.
    • Forgetting to Add Alt Text: While it’s not directly related to semantic HTML, always remember to add alt attributes to your images. This ensures that screen readers can describe your images to visually impaired users, further enhancing accessibility.
    • Misusing ARIA: ARIA attributes are great when used correctly, but they should only be applied when there’s no semantic HTML option available. Overusing or misapplying ARIA can lead to confusion and even reduce accessibility.

    Examples of Effective and Ineffective Link Text

    Semantic HTML also plays a role in creating meaningful link text, which is crucial for both accessibility and SEO. Here are some examples:

    Ineffective Link Text

    <a href="https://example.com">Click here</a>

    This link doesn’t tell the user what they’re clicking on, which is confusing for screen readers and doesn’t provide context for search engines.

    Effective Link Text

    <a href="https://example.com">Read our guide on semantic HTML</a>

    This example clearly indicates the content of the linked page, which is helpful for screen readers and improves SEO.

    Conclusion

    Semantic HTML isn’t just a coding technique—it’s a way to make the web more understandable, usable, and welcoming for everyone. By using the right tags, you’re not just making your site easier to navigate for search engines; you’re improving the experience for people who rely on assistive technologies. The impact goes beyond lines of code—it’s about making the web a better place for all users.

    If you’re looking to enhance your site’s accessibility or simply want a clearer path to SEO success, start by rethinking your HTML structure. It’s a small change that can make a big difference. And if you’re unsure where to begin, 216digital can help. Schedule an ADA briefing with us to see how better accessibility can turn into a real opportunity for your business.

    Greg McNeil

    October 18, 2024
    How-to Guides
    How-to, HTML, semantic HTML, WCAG, Web Accessibility, web development
216digital Scanning Tool

Audit Your Website for Free

Find Out if Your Website is WCAG & ADA Compliant













    216digital Logo

    Our team is full of expert professionals in Web Accessibility Remediation, eCommerce Design & Development, and Marketing – ready to help you reach your goals and thrive in a competitive marketplace. 

    216 Digital, Inc. BBB Business Review

    Get in Touch

    2208 E Enterprise Pkwy
    Twinsburg, OH 44087
    216.505.4400
    info@216digital.com

    Support

    Support Desk
    Acceptable Use Policy
    Accessibility Policy
    Privacy Policy

    Web Accessibility

    Settlement & Risk Mitigation
    WCAG 2.1/2.2 AA Compliance
    Monitoring Service by a11y.Radar

    Development & Marketing

    eCommerce Development
    PPC Marketing
    Professional SEO

    About

    About Us
    Contact

    Copyright 2024 216digital. All Rights Reserved.