Semantic HTML for Local Business: How AI Reads Your Website
Learn how semantic HTML helps AI systems understand your local business website. Practical guide to headings, address tags, ARIA, and accessibility.
When AI systems crawl your website, they parse the HTML to understand what each piece of content means. Semantic HTML—using meaningful markup rather than generic containers—helps AI comprehend your business, services, and location. This technical guide explains how semantic HTML improves AI visibility for local businesses.
How AI Systems Parse Websites
AI processes your website differently than humans do. Humans see a visual layout; AI sees code structure.
When an AI crawler or training data collector encounters your website:
- It retrieves your HTML
- It parses the structure (headings, paragraphs, lists, etc.)
- It extracts text content
- It identifies relationships between elements
- It attempts to understand what the page is about
Well-structured HTML makes steps 4 and 5 easier. AI can confidently extract information when structure signals meaning.
Poorly structured HTML:
<div class="header">
<div class="title">Buffalo Plumbing Pros</div>
</div>
<div class="content">
<div class="section">We provide plumbing services...</div>
</div>
Semantically structured HTML:
<header>
<h1>Buffalo Plumbing Pros</h1>
</header>
<main>
<article>
<p>We provide plumbing services...</p>
</article>
</main>
Both might look identical to users. But AI understands the second version’s structure inherently—header contains the main title (h1), main content is in main/article, and content is in paragraphs.
What is Semantic HTML?
Semantic HTML uses elements that convey meaning about their content, not just presentation.
Non-semantic elements describe appearance:
<div>- Generic container<span>- Generic inline container<b>- Bold text (visual only)
Semantic elements describe meaning:
<header>- Introductory content<nav>- Navigation links<main>- Main page content<article>- Self-contained content<section>- Thematic grouping<h1>- Primary heading<address>- Contact information<time>- Date/time<strong>- Important text (semantic emphasis)
Semantic HTML tells browsers, screen readers, and AI what content means, not just how it looks.
Why Semantic HTML Matters for AI Visibility
Clear Structure = Confident Understanding
AI systems are more confident about content they can clearly parse. When headings establish hierarchy and elements signal meaning, AI understands with less ambiguity.
Ambiguous parsing leads to:
- Incorrect categorization
- Missing important information
- Lower confidence in recommendations
Clear parsing enables:
- Accurate content extraction
- Correct relationship understanding
- Confident AI recommendations
Extraction Accuracy
AI often needs to extract specific information: your business name, address, services, hours. Semantic elements mark this information explicitly:
<h1>likely contains the business/page name<address>contains contact information<nav>contains navigation (which AI might skip)<main>contains primary content (where AI should focus)
Context for Content
Semantic elements provide context. Content in <aside> is supplementary. Content in <article> is the main subject. Content in <footer> is typically boilerplate. AI uses these signals to weight content importance.
Connection to Accessibility
Accessibility best practices and AI optimization overlap significantly. Websites built for screen readers tend to be well-structured for AI parsing. Accessible sites:
- Have logical heading hierarchy
- Use ARIA labels for context
- Include alt text for images
- Have clear navigation structure
These same features help AI understand content.
Essential Semantic Elements for Local Business
Document Structure
<header>: Contains introductory content, typically your logo, business name, and primary navigation.
<header>
<a href="/"><img src="logo.png" alt="Buffalo Plumbing Pros"></a>
<nav>...</nav>
</header>
<nav>: Contains navigation links. Helps AI identify (and potentially skip) navigation when extracting content.
<nav aria-label="Main navigation">
<ul>
<li><a href="/services">Services</a></li>
<li><a href="/about">About</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
<main>: Contains the primary content of the page. There should be only one per page. AI can focus extraction here.
<main>
<!-- Primary page content -->
</main>
<article>: Self-contained content that could stand alone. Use for blog posts, service descriptions, or any independent content.
<article>
<h2>Emergency Plumbing Services</h2>
<p>When pipes burst at 2 AM, you need help fast...</p>
</article>
<section>: Thematic grouping of content, typically with its own heading.
<section>
<h2>Our Services</h2>
<!-- Service listings -->
</section>
<aside>: Supplementary content related to main content but not essential. Sidebars, related links, advertisements.
<aside>
<h3>Related Services</h3>
<ul>...</ul>
</aside>
<footer>: Footer content—copyright, secondary navigation, contact summary. AI knows this is supplementary.
<footer>
<p>© 2024 Buffalo Plumbing Pros</p>
<address>123 Main Street, Buffalo, NY</address>
</footer>
Heading Hierarchy
Headings establish content hierarchy. AI uses headings to understand page structure.
Rules:
- One
<h1>per page (the primary topic) - Headings should nest logically (h1 → h2 → h3, not h1 → h3)
- Headings describe content below them
Good hierarchy:
<h1>Buffalo Plumbing Pros - Licensed Plumbers</h1>
<h2>Our Services</h2>
<h3>Emergency Plumbing</h3>
<h3>Drain Cleaning</h3>
<h3>Water Heater Repair</h3>
<h2>Service Area</h2>
<h3>Buffalo</h3>
<h3>Amherst</h3>
<h2>Contact Us</h2>
Bad hierarchy:
<h1>Buffalo Plumbing Pros</h1>
<h3>Emergency Plumbing</h3> <!-- Skipped h2 -->
<h2>Drain Cleaning</h2> <!-- Wrong level -->
<h1>Contact Us</h1> <!-- Multiple h1s -->
AI parses heading hierarchy to understand content relationships. Broken hierarchy creates parsing confusion.
Contact Information
<address>: Specifically for contact information. Helps AI identify your NAP.
<address>
Buffalo Plumbing Pros<br>
123 Main Street<br>
Buffalo, NY 14201<br>
<a href="tel:+17165551234">(716) 555-1234</a><br>
<a href="mailto:info@buffaloplumbing.com">info@buffaloplumbing.com</a>
</address>
The <address> element explicitly marks contact information, making extraction reliable.
Navigation
<nav>: Wrap all navigation blocks. Use aria-label to distinguish multiple nav elements.
<nav aria-label="Main navigation">
<!-- Primary menu -->
</nav>
<nav aria-label="Service navigation">
<!-- Secondary service menu -->
</nav>
Clear navigation markup helps AI understand site structure and focus on content.
Lists and Tables
<ul> and <ol>: Use lists for services, features, areas served.
<h2>Areas We Serve</h2>
<ul>
<li>Buffalo</li>
<li>Amherst</li>
<li>Cheektowaga</li>
<li>Tonawanda</li>
</ul>
<table>: Use for tabular data like hours, pricing.
<h2>Business Hours</h2>
<table>
<tr>
<th>Day</th>
<th>Hours</th>
</tr>
<tr>
<td>Monday - Friday</td>
<td>7:00 AM - 7:00 PM</td>
</tr>
<tr>
<td>Saturday</td>
<td>8:00 AM - 4:00 PM</td>
</tr>
</table>
Proper list and table structure helps AI extract structured data.
Links
Use descriptive anchor text that tells AI (and users) where the link leads.
Good:
<a href="/services/emergency">Learn about our emergency plumbing services</a>
Bad:
<a href="/services/emergency">Click here</a>
Descriptive links help AI understand page relationships.
Accessibility and AI: The Connection
Why Accessibility Helps AI
Accessible websites are designed for users who rely on assistive technology—screen readers, keyboard navigation, etc. These same structural features help AI:
- Screen reader compatibility: Screen readers need clear structure; so does AI
- Logical reading order: Makes content flow understandable
- Descriptive elements: ARIA labels provide additional context
- Text alternatives: Alt text describes non-text content
Building for accessibility often means building for AI.
ARIA Attributes
ARIA (Accessible Rich Internet Applications) attributes add context to elements.
aria-label: Provides an accessible name
<nav aria-label="Main navigation">
<button aria-label="Open menu">☰</button>
aria-describedby: Links to element providing description
<input type="text" aria-describedby="phone-format">
<span id="phone-format">Format: (555) 555-5555</span>
role: Defines element purpose when semantic elements aren’t available
<div role="navigation">...</div> <!-- Better: use <nav> -->
When semantic elements can do the job, use them. ARIA supplements when needed.
Alt Text for Images
Alt text describes images for screen readers—and for AI.
<img src="team.jpg" alt="Buffalo Plumbing Pros team of licensed plumbers standing in front of service van">
This tells AI what the image contains: your team, that you’re licensed, and that you have service vehicles.
Bad alt text:
<img src="team.jpg" alt="team">
<img src="team.jpg" alt=""> <!-- Empty alt -->
<img src="team.jpg"> <!-- No alt at all -->
For decorative images that add no information, use alt="" to tell AI to skip them.
Form Labels
Forms should have explicit labels:
<label for="phone">Phone Number</label>
<input type="tel" id="phone" name="phone">
This helps AI understand what information your forms collect.
Semantic HTML for Key Local Business Pages
Homepage
<header>
<h1>Buffalo Plumbing Pros</h1>
<nav aria-label="Main navigation">...</nav>
</header>
<main>
<section>
<h2>Licensed Plumbers Serving Buffalo, NY</h2>
<p>Buffalo Plumbing Pros provides residential and commercial
plumbing services throughout Western New York.</p>
</section>
<section>
<h2>Our Services</h2>
<ul>
<li><a href="/services/emergency">Emergency Plumbing</a></li>
<li><a href="/services/drains">Drain Cleaning</a></li>
<li><a href="/services/water-heaters">Water Heater Services</a></li>
</ul>
</section>
</main>
<footer>
<address>
123 Main Street, Buffalo, NY 14201<br>
<a href="tel:+17165551234">(716) 555-1234</a>
</address>
</footer>
Service Page
<main>
<article>
<h1>Emergency Plumbing Services</h1>
<section>
<h2>24/7 Emergency Plumbing in Buffalo</h2>
<p>When plumbing emergencies strike, Buffalo Plumbing Pros
responds fast—24 hours a day, 7 days a week.</p>
</section>
<section>
<h2>Emergency Services We Provide</h2>
<ul>
<li>Burst pipe repair</li>
<li>Severe drain backups</li>
<li>Gas leak detection</li>
<li>Water heater failures</li>
</ul>
</section>
<section>
<h2>What to Expect</h2>
<ol>
<li>Call our 24/7 emergency line</li>
<li>Speak with a licensed plumber</li>
<li>Technician dispatched within 30 minutes</li>
<li>Problem assessed and repair begun</li>
</ol>
</section>
</article>
</main>
Contact/Location Page
<main>
<h1>Contact Buffalo Plumbing Pros</h1>
<section>
<h2>Our Location</h2>
<address>
Buffalo Plumbing Pros<br>
123 Main Street<br>
Buffalo, NY 14201
</address>
</section>
<section>
<h2>Contact Information</h2>
<p>Phone: <a href="tel:+17165551234">(716) 555-1234</a></p>
<p>Email: <a href="mailto:info@buffaloplumbing.com">info@buffaloplumbing.com</a></p>
</section>
<section>
<h2>Business Hours</h2>
<table>
<tr><th>Day</th><th>Hours</th></tr>
<tr><td>Monday - Friday</td><td>7:00 AM - 7:00 PM</td></tr>
<tr><td>Saturday</td><td>8:00 AM - 4:00 PM</td></tr>
<tr><td>Sunday</td><td>Emergency Only</td></tr>
</table>
</section>
</main>
FAQ Page
<main>
<h1>Frequently Asked Questions</h1>
<article>
<h2>How much does a plumber cost in Buffalo?</h2>
<p>Most Buffalo plumbers charge $80-150 per hour for standard
service calls. Emergency and after-hours calls typically
include an additional service fee.</p>
</article>
<article>
<h2>Do you offer 24/7 emergency service?</h2>
<p>Yes, Buffalo Plumbing Pros offers 24/7 emergency plumbing
service throughout the Buffalo metropolitan area.</p>
</article>
</main>
Each FAQ as an <article> with question as <h2> creates clear structure for AI extraction.
Common Semantic HTML Mistakes
Using <div> for everything: Generic divs convey no meaning. Use semantic alternatives when appropriate.
Heading hierarchy jumps: Going from h1 to h4 breaks the outline. Nest headings properly.
No <main> element: Without main, AI doesn’t know where primary content lives.
Missing <address> for contact info: Putting contact info in generic paragraphs misses semantic opportunity.
Inaccessible navigation: Navigation without <nav> and proper structure confuses both AI and screen readers.
Images without alt text: AI can’t understand images without text descriptions.
How to Audit Your Semantic HTML
Manual Review
- View page source (Ctrl+U or Cmd+U)
- Search for semantic elements:
<header>,<main>,<nav>,<article>,<address> - Check heading structure: Find all
<h1>,<h2>, etc. - Verify heading hierarchy doesn’t skip levels
Browser DevTools
Modern browsers show accessibility trees:
- Open DevTools (F12)
- Go to Accessibility panel
- View computed accessibility tree
- Check for warnings or issues
Automated Tools
WAVE (wave.webaim.org): Checks accessibility including structural issues Lighthouse (built into Chrome): Includes accessibility audit HTML validators: Check valid HTML structure
Checklist for Local Business Sites
- One
<h1>per page describing page topic - Logical heading hierarchy (no skipped levels)
-
<main>element containing primary content -
<nav>wrapping navigation menus -
<address>containing contact information -
<header>and<footer>appropriately used - Alt text on all meaningful images
- Descriptive link text (no “click here”)
- Form inputs have associated labels
Quick Wins for Local Business Sites
If your site needs semantic improvements, start here:
-
Add
<main>around primary content: Wrap your main content area in a<main>element. Takes seconds. -
Add
<address>to contact info: Find your NAP in the footer or contact page. Wrap in<address>. -
Fix heading hierarchy: Check your h1 through h6 usage. Fix any skipped levels.
-
Wrap navigation in
<nav>: Find your navigation menus. Wrap in<nav>elements. -
Add alt text to images: Review images, especially your logo, team photos, and service images. Add descriptive alt text.
These changes take less than an hour and improve AI parsing immediately.
Semantic HTML + Schema: Complete AI Clarity
Semantic HTML and schema markup work together:
- HTML structure organizes content meaningfully
- Schema provides explicit machine-readable facts
Both help AI. A page with semantic HTML structure AND LocalBusiness schema markup gives AI maximum clarity.
Priority:
- Schema markup (more direct impact on AI understanding)
- Semantic HTML (structural foundation)
- Accessibility features (additional context)
Implement schema first if choosing between them. Then improve HTML structure. Both together provide the clearest signal.
Getting Started
- Audit current structure: Check for semantic elements and heading hierarchy
- Fix critical issues: Add
<main>, fix h1, wrap<address> - Add schema: LocalBusiness JSON-LD for explicit facts
- Test accessibility: Run WAVE or Lighthouse
- Monitor AI visibility: Track changes with Local SEO Data
Semantic HTML is foundational website quality. It helps all users—including AI—understand your content. Combined with schema markup, it creates the clearest possible signal about your local business.
Ready to try MCP for local SEO?
Connect Claude to Local SEO Data and start querying rankings, reviews, and citations through conversation.