Tags Have Meaning: Why div Soup Fails
What native semantics give you for free.
Tags Have Meaning: Why div Soup Fails is a free Web Accessibility Academy lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Web Accessibility Academy learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
What Is div Soup?
When a page is built from nothing but div and span tags, we call it div soup. The markup looks fine on screen but means nothing underneath.
Tags Carry Meaning
Most HTML tags carry built-in semantics: a button is a button, a heading is a heading. The browser already knows what each one is for.
div Means Nothing
A div is a generic box with zero meaning. It groups things visually but tells the browser and assistive tech nothing about its role.
<div class="btn">Submit</div>Free Behavior
Pick the right tag and you get behavior for free. A real button is focusable, clickable by keyboard, and announced as a button. A styled div is none of that.
<button>Submit</button>Screen Readers Need Meaning
A screen reader reads the page from its semantics, not its pixels. Div soup gives it nothing to announce, so users hear a flat, confusing blur.
Keyboard Comes Built In
Native interactive tags like button and a join the keyboard tab order automatically. A clickable div is invisible to keyboard-only users.
Bolting Meaning Back On
You can fake a div into a button with ARIA roles and key handlers, but that is fragile extra code reinventing what HTML already gave you.
<div role="button" tabindex="0">Submit</div>Less Code, Fewer Bugs
Semantic tags mean less code to write and maintain. The platform handles focus, clicks, and announcements, so there is simply less for you to break.
Where div Still Belongs
The div is not evil. It is the right tool for pure layout grouping, like a flex wrapper, where no meaning is needed at all.
A Quick Heuristic
Before you type div, ask: is there a meaningful tag for this? A nav, a header, a button, a list? Reach for that first, fall back to div last.
Accessible by Default
Choosing real elements makes a page accessible before you add a single attribute. Good markup is the cheapest accessibility win there is.
Quick Check
Let us test the cost of div soup.
Recap
Tags have meaning, and a div has none. Reach for real elements first to get focus, keyboard, and screen reader support for free. Save div for layout. 🎉
Frequently asked questions
Is the “Tags Have Meaning: Why div Soup Fails” lesson free?
Yes — the full text of “Tags Have Meaning: Why div Soup Fails” is free to read here on the web, and the Web Accessibility Academy course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Web Accessibility Academy course, upgrade to CoddyKit PRO.
What will I learn in “Tags Have Meaning: Why div Soup Fails”?
What native semantics give you for free. You practise Web Accessibility Academy with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Web Accessibility Academy?
No prior experience is required. Web Accessibility Academy on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Tags Have Meaning: Why div Soup Fails” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Web Accessibility Academy lesson?
Yes. Every Web Accessibility Academy lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Tags Have Meaning: Why div Soup Fails
- Text Elements: Paragraphs, Lists, and Emphasis
- The Accessibility Tree: What Screen Readers Hear
- Native vs Custom: When to Reach for a Real Element