HTML: The foundation of every website
HTML (Hypertext Markup Language) is the basic language of the web. Every website that you see in the browser is based on HTML code. It structures content, defines hierarchies, and gives search engines and assistive technologies the information they need to understand and correctly display your content.
An analogy for a better understanding:
Think of a website as a human body: HTML is the skeleton — it provides the basic structure and form. CSS is the outer appearance Like skin, hair and nails — it makes everything beautiful and appealing. JavaScript is the muscles and ligaments — they provide movement and interactivity.
Without HTML, the modern web wouldn't be possible. It is the foundation upon which CSS (for design) and JavaScript (for interactivity) are built. Clean, semantic HTML is essential for SEO and accessibility.
HTML is an integral part of Webflow
Webflow automatically generates HTML code in the background as you design visually. Every element that you drag onto the canvas — be it a heading, a paragraph, or a section element — is translated into clean HTML code.
The big advantage: You don't have to write HTML manually, but work visually. Webflow takes care of the technical implementation and ensures that the generated code complies with modern web standards. At the same time, you have full control over the semantic structure of your site.
How to edit the HTML in Webflow
In Webflow, you don't edit HTML directly in the code editor, but via the visual element settings. Each element has specific properties that you can adjust in the right panel.
There are several options available for advanced adjustments:
- Item settings: Change HTML tags and IDs directly in the element settings panel
- Custom HTML element: Integrate complex HTML directly into your site with the embed element
- Site settings custom code: Add custom code in the head or footer in site settings or at page level
Correct HTML <body>structure in Webflow
A clean HTML structure is the backbone of every professional website. It consists of semantic landmarks that logically structure the structure of your site and make it understandable to both search engines and screen readers.
The main structural elements:
- <header>: Header area with logo, navigation and important information
- <nav>: Site's main navigation menu
- <main>: The main content of the page — your sections belong here
- <section>: Thematically related content areas within <main>
- <article>: Self-contained content, such as blog posts or products
- <aside>: Secondary content, such as sidebars or related information
- <footer>: Footer area with copyright, links and contact information
Typical page layout in Webflow:
A correctly structured Webflow page follows this pattern: The <header> includes navigation (<nav>). Among them is that <main>-Element that all <section>-Encloses areas. Optionally, a <aside> used for secondary content. In the end, there is <footer>.

This structure helps search engines understand the structure of your site and allows screen reader users to navigate landmarks efficiently.
More about the HTML structure: A detailed explanation of HTML layouts and semantic elements can be found at W3Schools HTML Layout.
The ideal structure of headings in Webflow
Headings (H1-H6) structure your content hierarchically. A clean heading structure is essential for SEO, accessibility, and modern Answer Engine Optimization (AEO).
Best practices for headings:
- One H1 per page: H1 describes the main topic of the page
- Logical hierarchy: H2 follows H1, H3 follows H2 — don't skip any levels
- Significant wording: Headings should describe the content precisely
- Integrate keywords: Use relevant search terms in headings, of course
- Not just for design: Choose heading levels by structure, not by visual size
In Webflow, you can control the visual presentation (size, color) using CSS classes while keeping the semantic level (H1-H6) correct.
Hidden headings for better accessibility
Hidden headings are a powerful tool to improve the accessibility of your website without affecting the visual design. They allow screen reader users to navigate better, while sighted visitors don't see any additional headlines.

When do hidden headings make sense?
- Structuring areas: Footer, sidebar, or widget areas receive semantic headings
- Navigation for screen readers: Users can quickly jump to important areas
- Design limitations: When the visual design does not provide a visible heading, but the semantic structure is important
Correct implementation in Webflow
Use CSS classes with position: absolute; clip: rect (0,0,0,0); position: absolute; instead of display: none or visibility: hidden, as the latter are ignored by screen readers.
Practical example from my work:
I regularly use hidden headings in the footer of my Webflow projects. That's where I put H2 element with the text “footer” one that is only visible to screen readers. The implementation:
- Create an H2 element with the text “footer” in the footer area
- Add a CSS class (e.g. “sr-only” for Screen Reader Only)
- Define the class with position: absolute; left: -10000px; in custom code
This method significantly improves navigation for screen reader users without disrupting the visual design. Screen readers clearly announce the footer area, and users can jump to it specifically.
Important warning
Google views hidden headings critically if they are used exclusively for keyword manipulation. Hidden headings should never be used for keyword stuffing, irrelevant content, or intent to deceive. Only use them for real accessibility purposes.
The semantic tags in Webflow
HTML5 semantic tags give meaning to the code. Instead of just <div>-To use elements, do you use meaningful tags such as <header>, <nav>, <article> or <footer>.

Webflow supports a wide range of semantic tags:
- Section: Uses
<section>for thematic areas - Header/footer: For head and foot areas
- Nav: For navigation items
- Article: For self-contained content such as blog articles
- Aside: For secondary content, such as sidebars
- Main: For the main content of the page
These tags help search engines and screen readers better understand and index your content.
Complete list of all Webflow HTML5 tags.
The custom HTML element
that Embed element (Custom HTML) in Webflow allows you to insert custom HTML code directly into your site. This is useful for:
- Include third-party widgets (calendars, forms, etc.)
- Complex structures that cannot be visually implemented
- Schema.org structured data markup
- Custom JavaScript functionalities
- SVG code for custom graphics
- Real HTML buttons instead of links
Important: Custom HTML is only visible after publishing. In the designer, you only see a placeholder. Make sure that your code is valid and doesn't contain any security vulnerabilities.
For dynamic content, you can also use CMS fields in custom HTML to generate personalized code per collection item.
The difference between links and buttons
A common misconception: The Webflow “button” element is not <button> in the HTML sense, but a link (<a>-day) with button styling.
Semantic difference:
- Links (
<a>): Lead to another page or area. They have ahrefattribute and are used for navigation. - Buttons (
<button>): Trigger actions, such as opening a modal, submitting a form, or launching a JavaScript function. You're not navigating away from the page.
Why is that important?
- Accessibility: Screen readers announce links and buttons differently. A link says “Link to... “, a button says “button, [action]”
- Semantics: Search engines and browsers correctly understand the function of the element
- Keyboard navigation: Links are created with
Enteractivated, buttons withEnterandSpace
Practical example: Real buttons with custom HTML
I regularly use the custom HTML element to real <button>-Elements to create when no navigation should take place. Typical use cases:
- Open/close modals or overlays
- Switch tabs or accordion areas
- trigger animations or filters
- Submitting forms via JavaScript
Code example:
<button type="button" class="custom-button" aria-label="Modal öffnen">Open Modal</button>
This approach ensures semantically correct HTML and significantly improves the accessibility of your website.
Most common HTML mistakes I see
In my work as a Webflow developer, I see the same structural errors over and over again, which have a negative impact on accessibility and SEO performance. Here are the four most common mistakes:
1. Footer has a <section> tag instead of a <footer> tag
Many Webflow projects use a <section>-Element for the foot area. That is semantically wrong. The footer should always <footer>Use the tag so that screen readers and search engines can correctly identify the area as a footer area.
Wrong: <section class="footer">...</section>
That's right: <footer>...</footer>
2. Sections don't have a <section> tag, only <div> tags
The most common mistake of all: Content areas are considered simple <div>-Blocks instead of as <section>-Structured elements. As a result, the page loses its semantic structure and screen readers cannot recognize the structure.
Wrong: <div class="hero">...</div>
That's right: <section class="hero">...</section>
3. The sections are not in the <main> tag
A critical structural flaw: The content areas (<section>) are located directly in <body>, without <main>element to be surrounded. that <main>-Tag is essential to identify the main content of the page and to separate it from the header and footer.
Wrong:
<body>
<header>...</header>
<section>...</section>
<footer>...</footer>
</body>
That's right:
<body>
<header>...</header>
<main>
<section>...</section>
</main>
<footer>...</footer>
</body>
4. The footer is in the <main> tag instead of outside
Sometimes the <footer> erroneously within the <main>-Elements placed. However, the footer belongs on the same level as <header> and <main> — namely as a direct child of <body>-Elements.
Wrong:
<main>
<section>...</section>
<footer>...</footer>
</main>
That's right:
<main>
<section>...</section>
</main>
<footer>...</footer>
Conclusion: These four mistakes are easy to avoid if you consciously choose the right HTML tags in Webflow. Use the element settings to convert div blocks into semantic tags such as <section>, <main> and <footer> to transform. This not only makes your website more technically correct, but also more accessible and SEO-optimized.


