{"id":47236,"date":"2026-07-07T09:00:00","date_gmt":"2026-07-07T16:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=47236"},"modified":"2026-07-07T14:06:23","modified_gmt":"2026-07-07T21:06:23","slug":"html5-semantic","status":"publish","type":"post","link":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/","title":{"rendered":"Semantic HTML Explained: Tags, Examples, and Best Practices"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The same word can mean different things in different places. &#8220;Cool&#8221; can describe a temperature or a shrug of agreement, depending on who says it and where. That&#8217;s semantics: how context gives words their meaning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML has semantics, too. Some tags tell a browser exactly what kind of content they hold. Others say nothing at all. The difference matters more than most beginners expect: it shapes how screen readers, search engines, and AI systems understand your pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this guide, we&#8217;ll define semantic HTML, list the elements you&#8217;ll actually use, walk through a before-and-after code example, and share the best practices that make your markup easier to read for humans and machines alike.<\/p>\n\n\n\n<h2 id=\"h2_what-is-semantic-html5\" class=\"wp-block-heading\">What Is Semantic HTML?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic HTML is the practice of using HTML elements that describe the meaning of their content \u2014 like <code>&lt;article&gt;<\/code>, <code>&lt;nav&gt;<\/code>, and <code>&lt;footer&gt;<\/code> \u2014 instead of generic containers like <code>&lt;div&gt;<\/code> and <code>&lt;span&gt;<\/code>. Semantic tags tell browsers, search engines, screen readers, and AI systems what each part of a page actually is.<\/p>\n\n\n\n\n\n<div class=\"glossary-term\">\n\t<a\n\t\tclass=\"glossary-term__above-title\"\n\t\thref=\"\"\n\t\ttarget=\"_blank\"\n\t\trel=\"noopener noreferrer\"\n\t>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\"><path d=\"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"\/><\/svg>\n\t\t<span><\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n    <h3>Semantic Markup<\/h3>\n    <p>Semantic markup is a process of structuring HTML to emphasize the content\u2019s meaning, rather than its appearance. This makes it easier for search engines and real users to understand the content.<\/p>\n            <a\n            href=\"https:\/\/www.dreamhost.com\/glossary\/web-design\/semantic-markup\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Read More                    <\/a>\n\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A <code>&lt;div&gt;<\/code> is just a box. It renders fine, but nothing about it says &#8220;this is the navigation&#8221; or &#8220;this is the main article.&#8221; A semantic element carries that meaning in its name, so anything reading your page knows what it&#8217;s looking at without guessing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re brand new to HTML, start with our <a href=\"https:\/\/www.dreamhost.com\/blog\/learn-html\/\">guide to learning HTML<\/a> and come back \u2014 this article builds on the basics.<\/p>\n\n\n\n<h2 id=\"h-what-is-html5\" class=\"wp-block-heading\">Is It &#8220;HTML5&#8221; or Just HTML?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Both, but &#8220;HTML&#8221; is the current name. HTML5 was the 2014 version of the language that introduced most of the semantic elements in this guide. Since then, HTML has become a <a target=\"_blank\" href=\"https:\/\/html.spec.whatwg.org\/multipage\/\" rel=\"noopener\">&#8220;Living Standard&#8221;<\/a> maintained by WHATWG: one continuously updated specification with no version numbers. That means there&#8217;s no &#8220;HTML6&#8221; on the way \u2014 the language just keeps evolving in place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;ll still see the phrase &#8220;HTML5 semantic elements&#8221; everywhere, and it&#8217;s not wrong \u2014 that&#8217;s the version that introduced <code>&lt;article&gt;<\/code>, <code>&lt;section&gt;<\/code>, <code>&lt;nav&gt;<\/code>, and friends. Just know that today they&#8217;re simply part of HTML, and browsers keep gaining support as the standard evolves.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/01_html_5_vs_semantic_html5-scaled.webp\" alt=\"HTML5 vs. semantic HTML5 comparison illustration\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/1120;\" \/><\/figure>\n\n\n\n<h2 id=\"h2_examples-of-semantic-html5\" class=\"wp-block-heading\">Semantic HTML Elements: The Essential List<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here are the semantic elements you&#8217;ll use most, and what each one is for:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Tag<\/strong><\/td><td><strong>What it means<\/strong><\/td><td><strong>Use it for<\/strong><\/td><\/tr><tr><td><code>&lt;article&gt;<\/code><\/td><td>A self-contained piece of content that would make sense on its own<\/td><td>Blog posts, news stories, product cards, comments<\/td><\/tr><tr><td><code>&lt;section&gt;<\/code><\/td><td>A thematic grouping of content, usually with its own heading<\/td><td>Chapters of a page: features, testimonials, pricing<\/td><\/tr><tr><td><code>&lt;header&gt;<\/code><\/td><td>Introductory content for a page or section<\/td><td>Logos, site titles, taglines, top navigation areas<\/td><\/tr><tr><td><code>&lt;footer&gt;<\/code><\/td><td>Closing content for a page or section<\/td><td>Copyright lines, contact details, related links<\/td><\/tr><tr><td><code>&lt;nav&gt;<\/code><\/td><td>A block of navigation links<\/td><td>Menus, tables of contents, breadcrumbs<\/td><\/tr><tr><td><code>&lt;main&gt;<\/code><\/td><td>The dominant content of the page \u2014 use only one visible per page<\/td><td>The article body, the product page content, the app&#8217;s working area<\/td><\/tr><tr><td><code>&lt;aside&gt;<\/code><\/td><td>Content related to, but separate from, the main content<\/td><td>Sidebars, pull quotes, &#8220;related posts&#8221; boxes<\/td><\/tr><tr><td><code>&lt;figure&gt;<\/code><\/td><td>Self-contained media referenced by the content<\/td><td>Images, diagrams, charts, code snippets<\/td><\/tr><tr><td><code>&lt;figcaption&gt;<\/code><\/td><td>A caption for its parent <code>&lt;figure&gt;<\/code><\/td><td>Image credits, chart explanations<\/td><\/tr><tr><td><code>&lt;details&gt;<\/code><\/td><td>A widget the visitor can open and close<\/td><td>FAQ answers, spoilers, advanced options<\/td><\/tr><tr><td><code>&lt;summary&gt;<\/code><\/td><td>The always-visible label for a <code>&lt;details&gt;<\/code> widget<\/td><td>The question line of a collapsible FAQ<\/td><\/tr><tr><td><code>&lt;time&gt;<\/code><\/td><td>A date or time, with a machine-readable format<\/td><td>Publish dates, event times, opening hours<\/td><\/tr><tr><td><code>&lt;mark&gt;<\/code><\/td><td>Text highlighted for relevance<\/td><td>Search-term matches, key phrases<\/td><\/tr><tr><td><code>&lt;address&gt;<\/code><\/td><td>Contact information for a page or article<\/td><td>Author contact blocks, the page owner&#8217;s contact details (not just any street address in prose)<\/td><\/tr><tr><td><code>&lt;hgroup&gt;<\/code><\/td><td>A heading grouped with a subtitle or tagline paragraph<\/td><td>A title plus the paragraph right under it<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Plenty of older elements are semantic, too. <code>&lt;table&gt;<\/code> means tabular data, <code>&lt;form&gt;<\/code> means user input, <code>&lt;h1&gt;<\/code> through <code>&lt;h6&gt;<\/code> mean headings in order of rank, with <code>&lt;h1&gt;<\/code> the top level. Those predate HTML5, but they follow the same principle: the tag&#8217;s name tells you what its content is.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h2 id=\"h2_how-semantic-html5-tags-structure-content\" class=\"wp-block-heading\">Semantic vs. Non-Semantic HTML: A Before-and-After Example<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fastest way to understand semantic HTML is to see the same page written both ways. Here&#8217;s a simple blog layout built entirely from <code>&lt;div&gt;<\/code> elements \u2014 often called &#8220;div soup&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;div class=\"header\"&gt;\n  &lt;div class=\"nav\"&gt;...&lt;\/div&gt;\n&lt;\/div&gt;\n&lt;div class=\"content\"&gt;\n  &lt;div class=\"post\"&gt;\n    &lt;div class=\"post-title\"&gt;My First Post&lt;\/div&gt;\n    &lt;div class=\"post-date\"&gt;July 7, 2026&lt;\/div&gt;\n    &lt;div class=\"post-body\"&gt;...&lt;\/div&gt;\n  &lt;\/div&gt;\n  &lt;div class=\"sidebar\"&gt;...&lt;\/div&gt;\n&lt;\/div&gt;\n&lt;div class=\"footer\"&gt;...&lt;\/div&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">It works. It renders. But every element is an anonymous box: a machine reading this page learns nothing about what any part of it means. Now the same layout with semantic elements:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;header&gt;\n  &lt;nav&gt;...&lt;\/nav&gt;\n&lt;\/header&gt;\n&lt;main&gt;\n  &lt;article&gt;\n    &lt;h1&gt;My First Post&lt;\/h1&gt;\n    &lt;p&gt;Published &lt;time datetime=\"2026-07-07\"&gt;July 7, 2026&lt;\/time&gt;&lt;\/p&gt;\n    &lt;p&gt;...&lt;\/p&gt;\n  &lt;\/article&gt;\n  &lt;aside&gt;...&lt;\/aside&gt;\n&lt;\/main&gt;\n&lt;footer&gt;...&lt;\/footer&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Same page, same look. But now the structure explains itself. A screen reader can jump straight to <code>&lt;main&gt;<\/code> or list the links in <code>&lt;nav&gt;<\/code>. A search engine knows the <code>&lt;article&gt;<\/code> is the content that matters and can read the publish date from <code>&lt;time&gt;<\/code>. And the next developer who opens the file understands it at a glance.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/02_semantic_html5_tags_structure_content-scaled.webp\" alt=\"Infographic showing how semantic HTML5 tags structure content, with header at the top, nav, section and article in the middle, aside on the right, and footer at the bottom\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2473px; --smush-placeholder-aspect-ratio: 2473\/2560;\" \/><\/figure>\n\n\n\n<h2 id=\"h-why-semantic-html-matters\" class=\"wp-block-heading\">Why Semantic HTML Matters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic HTML pays off in three big ways: accessibility, search visibility, and maintainability.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Accessibility<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Screen readers navigate pages by landmarks: the regions that semantic elements create. A user can jump directly to the navigation, the main content, or the footer instead of listening to the whole page in order. Build your page from anonymous <code>&lt;div&gt;<\/code> boxes and those shortcuts disappear.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The web has a long way to go here: per <a target=\"_blank\" href=\"https:\/\/webaim.org\/projects\/million\/\" rel=\"noopener\">WebAIM&#8217;s 2026 Million report<\/a>, 95.9% of the top one million home pages had detected WCAG 2 failures. Semantic structure is one of the simplest, cheapest ways to be part of the fix. For inspiration, see our roundup of <a href=\"https:\/\/www.dreamhost.com\/blog\/great-web-accessibility-examples\/\">great web accessibility examples<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SEO and AI Visibility<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Search engines parse your page&#8217;s structure to understand what it&#8217;s about and which parts matter. Semantic elements make that job easier: <code>&lt;main&gt;<\/code> and <code>&lt;article&gt;<\/code> point crawlers at your primary content, <code>&lt;nav&gt;<\/code> and <code>&lt;footer&gt;<\/code> help them tell the main content apart from repeated page furniture like menus and footers, and <code>&lt;time&gt;<\/code> gives them machine-readable dates. Clean semantics won&#8217;t rank a page by itself, but it removes guesswork from how your content gets indexed. It&#8217;s also a foundation for the <a href=\"https:\/\/www.dreamhost.com\/blog\/improve-seo\/\">rest of your SEO work<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same logic now applies to AI. Tools like ChatGPT, Claude, and Google&#8217;s AI Overviews extract answers from web pages, and clearly structured markup makes your content easier to parse, quote, and cite correctly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Maintainability and Future-Proofing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic markup is self-documenting. Six months from now, <code>&lt;aside class=\"promo\"&gt;<\/code> tells you far more than <code>&lt;div class=\"box3\"&gt;<\/code>. And because semantic elements are part of the HTML Living Standard, browsers will keep supporting and improving them, so your structure stays valid for years without rewrites.<\/p>\n\n\n\n<h2 id=\"h2_semantic-html5-tips-and-best-practices\" class=\"wp-block-heading\">Semantic HTML Tips and Best Practices<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Four habits will get you most of the value:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Use the Right Tag for the Job<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before you reach for a <code>&lt;div&gt;<\/code>, ask whether a semantic element already describes what you&#8217;re building. Standalone piece of content? <code>&lt;article&gt;<\/code>. Group of navigation links? <code>&lt;nav&gt;<\/code>. A <code>&lt;div&gt;<\/code> is fine when nothing else fits \u2014 it&#8217;s the generic container of last resort, not the default.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Avoid Over-Nesting<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Keep your structure as flat as the design allows. Wrappers inside wrappers inside wrappers make code hard to read and hard to maintain, and they usually signal that styling problems are being solved with markup instead of CSS.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/03_over_nested_element-scaled.webp\" alt=\"Example of over-nested HTML elements with many redundant wrapper divs\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/2270;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Be Consistent Across Your Site<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If blog posts are <code>&lt;article&gt;<\/code> on one page, they should be <code>&lt;article&gt;<\/code> everywhere. Consistent structure makes templates easier to maintain and gives assistive technology a predictable map of your site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Let Native Elements Do the Accessibility Work<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Native semantic elements come with accessibility behavior built in, so use them before reaching for ARIA (Accessible Rich Internet Applications) attributes \u2014 a <code>&lt;nav&gt;<\/code> element doesn&#8217;t need <code>role=\"navigation\"<\/code> bolted on. Add descriptive alt text to images and meaningful link text, then check your work with testing tools like <a target=\"_blank\" href=\"https:\/\/wave.webaim.org\/\" rel=\"noopener\">WAVE<\/a>, <a target=\"_blank\" href=\"https:\/\/www.deque.com\/axe\/\" rel=\"noopener\">axe<\/a>, or Lighthouse.<\/p>\n\n\n\n<h2 id=\"h-semantic-html-faqs\" class=\"wp-block-heading\">Semantic HTML FAQs<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What&#8217;s the difference between semantic and non-semantic HTML?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic elements describe their content&#8217;s meaning (<code>&lt;article&gt;<\/code>, <code>&lt;nav&gt;<\/code>, <code>&lt;footer&gt;<\/code>); non-semantic elements are generic containers that say nothing about what&#8217;s inside (<code>&lt;div&gt;<\/code>, <code>&lt;span&gt;<\/code>). Both render the same content \u2014 only one explains it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is &lt;div&gt; a semantic element?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No. A <code>&lt;div&gt;<\/code> carries no meaning \u2014 it&#8217;s a generic box for grouping and styling. That doesn&#8217;t make it bad; it makes it a last resort. Use it when no semantic element fits what you&#8217;re building.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does semantic HTML help SEO?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It helps search engines understand and index your content accurately, which supports your SEO \u2014 but it isn&#8217;t a magic ranking switch. Think of it as removing friction: clear structure makes your content easier to crawl, interpret, and feature.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What are the most commonly used semantic HTML elements?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The structural workhorses: <code>&lt;header&gt;<\/code>, <code>&lt;nav&gt;<\/code>, <code>&lt;main&gt;<\/code>, <code>&lt;article&gt;<\/code>, <code>&lt;section&gt;<\/code>, <code>&lt;aside&gt;<\/code>, and <code>&lt;footer&gt;<\/code>. Learn those seven and you can structure almost any page semantically.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is HTML5 still the latest version of HTML?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s no &#8220;latest version&#8221; anymore. HTML is now a Living Standard, maintained by WHATWG and updated continuously without version numbers. HTML5 was the 2014 release that introduced most semantic elements, and the name stuck.<\/p>\n\n\n\n<h2 id=\"h2_build-your-semantically-structured-accessible-website-with-dreamhost\" class=\"wp-block-heading\">Build Your Semantically Structured, Accessible Website With DreamHost<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Semantic HTML makes your site easier to understand for every reader \u2014 human, crawler, or AI. The markup only gets seen when your site is up, though, and that part is the host&#8217;s job.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DreamHost <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/hosting\/\" rel=\"noopener\">web hosting<\/a> comes with a 100% uptime guarantee, unmetered bandwidth, and 24\/7 expert support, so your well-structured pages are always there when visitors (and search engines) come looking.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Navigate HTML5 semantic elements effortlessly with our guide. Learn what they are and how to use them to enhance your site&#8217;s structure and accessibility.<\/p>\n","protected":false},"author":1058,"featured_media":47237,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"Semantic HTML Explained: Tags, Examples, and Best Practices","_yoast_wpseo_opengraph-description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","_yoast_wpseo_twitter-title":"Semantic HTML Explained: Tags, Examples, and Best Practices","_yoast_wpseo_twitter-description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","toc_headlines":"[[\"h2_what-is-semantic-html5\",\"What Is Semantic HTML?\"],[\"h-what-is-html5\",\"Is It \\\"HTML5\\\" or Just HTML?\"],[\"h2_examples-of-semantic-html5\",\"Semantic HTML Elements: The Essential List\"],[\"h2_how-semantic-html5-tags-structure-content\",\"Semantic vs. Non-Semantic HTML: A Before-and-After Example\"],[\"h-why-semantic-html-matters\",\"Why Semantic HTML Matters\"],[\"h2_semantic-html5-tips-and-best-practices\",\"Semantic HTML Tips and Best Practices\"],[\"h-semantic-html-faqs\",\"Semantic HTML FAQs\"],[\"h2_build-your-semantically-structured-accessible-website-with-dreamhost\",\"Build Your Semantically Structured, Accessible Website With DreamHost\"]]","hide_toc":false,"show_updated_at":"1","footnotes":""},"categories":[12852],"tags":[],"class_list":["post-47236","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-website-design"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Semantic HTML: Tags, Examples &amp; Best Practices - DreamHost<\/title>\n<meta name=\"description\" content=\"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Semantic HTML Explained: Tags, Examples, and Best Practices\" \/>\n<meta property=\"og:description\" content=\"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-07T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T21:06:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1220_x_628_ogimage_semantic_elements_in_html5.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"942\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Ian Hernandez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Semantic HTML Explained: Tags, Examples, and Best Practices\" \/>\n<meta name=\"twitter:description\" content=\"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.\" \/>\n<meta name=\"twitter:creator\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ian Hernandez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Semantic HTML: Tags, Examples & Best Practices - DreamHost","description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/","og_locale":"en_US","og_type":"article","og_title":"Semantic HTML Explained: Tags, Examples, and Best Practices","og_description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","og_url":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2026-07-07T16:00:00+00:00","article_modified_time":"2026-07-07T21:06:23+00:00","og_image":[{"width":1800,"height":942,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1220_x_628_ogimage_semantic_elements_in_html5.webp","type":"image\/webp"}],"author":"Ian Hernandez","twitter_card":"summary_large_image","twitter_title":"Semantic HTML Explained: Tags, Examples, and Best Practices","twitter_description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","twitter_creator":"@dreamhost","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Ian Hernandez","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#article","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/"},"author":{"name":"Ian Hernandez","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96"},"headline":"Semantic HTML Explained: Tags, Examples, and Best Practices","datePublished":"2026-07-07T16:00:00+00:00","dateModified":"2026-07-07T21:06:23+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/"},"wordCount":1492,"publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1460_x_1095_blog_hero_semantic_elements_in_html5.webp","articleSection":["Website Design"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/","url":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/","name":"Semantic HTML: Tags, Examples & Best Practices - DreamHost","isPartOf":{"@id":"https:\/\/www.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#primaryimage"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1460_x_1095_blog_hero_semantic_elements_in_html5.webp","datePublished":"2026-07-07T16:00:00+00:00","dateModified":"2026-07-07T21:06:23+00:00","description":"Semantic HTML gives your markup meaning. See the key semantic tags, before-and-after code examples, and best practices for accessibility and SEO.","breadcrumb":{"@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dreamhost.com\/blog\/html5-semantic\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#primaryimage","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1460_x_1095_blog_hero_semantic_elements_in_html5.webp","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2024\/06\/1460_x_1095_blog_hero_semantic_elements_in_html5.webp","width":1460,"height":1095,"caption":"HTML5 Semantic Elements Explained"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dreamhost.com\/blog\/html5-semantic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Semantic HTML Explained: Tags, Examples, and Best Practices"}]},{"@type":"WebSite","@id":"https:\/\/www.dreamhost.com\/blog\/#website","url":"https:\/\/www.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www.dreamhost.com\/blog\/#\/schema\/person\/220faf2464d5ae08e41cf5f3b28fdc96","name":"Ian Hernandez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","contentUrl":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2022\/04\/ian-hernandez-dreamhost-150x150.png","caption":"Ian Hernandez"},"description":"Ian is a Product Designer based in Los Angeles, California. He is responsible for driving brand and product design at DreamHost, developing and maintaining our internal design system, and writing frontend code when he can. In his free time, he enjoys walking his dog, learning history, and discovering new music online and irl. Connect with him on LinkedIn: https:\/\/www.linkedin.com\/in\/ianhernandez23\/","url":"https:\/\/www.dreamhost.com\/blog\/author\/ianh\/"}]}},"lang":"en","translations":{"en":47236,"es":47255,"de":51219,"pt":53044,"pl":53047,"uk":53053,"ru":53081,"it":67793,"nl":69179,"fr":69183},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/47236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/1058"}],"version-history":[{"count":0,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/47236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/47237"}],"wp:attachment":[{"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=47236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=47236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=47236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}