Fact-checked by Grok 2 weeks ago

HTML element

An HTML element is a fundamental unit in documents, representing semantic content or structure through tags that define its type, attributes, and nested content, forming a hierarchical tree that browsers parse into the (DOM). Elements convey intrinsic meaning, known as semantics, which informs user agents like web browsers on how to render, style, and interact with the content—for instance, a <p> element denotes a , while an <a> element creates a . In source code, most elements are delimited by a start tag (e.g., <body>) and an end tag (e.g., </body>), but HTML recognizes six parsing categories: void elements (like <img>, which cannot contain content and lack end tags), the <template> element (inert until activated), raw text elements (e.g., <script>, <style>), escapable raw text elements (e.g., <title>, <textarea>), foreign elements (from other namespaces like ), and normal elements (the default category). Additionally, elements fall into content model categories such as flow content (for block-level structure), phrasing content (for inline text and media), sectioning content (for outlining documents), and interactive content (for user actions), ensuring proper nesting and document validity. Attributes on elements provide further configuration, such as id for identification or class for styling, while custom elements extend HTML's vocabulary for web components.

Fundamental Concepts

Elements versus Tags

In HTML, an element is a fundamental unit of document structure that consists of a start tag, optional content (such as text or nested elements), and an end tag, or in the case of void elements, a start tag without content or an end tag. Elements represent semantic components of the document, such as paragraphs, headings, or links, forming a that browsers parse to render the page. Tags, by contrast, are the syntactic delimiters used to mark the beginning and end of s in the source code, such as <p> as the start tag and </p> as the end tag for a . For example, the <p>This is a [paragraph](/page/Paragraph).</p> includes the tags <p> and </p> enclosing the textual content, while a void like <br> is represented solely by its start tag to insert a without enclosing content. This distinction originates from HTML's roots in the (SGML), an ISO standard (ISO 8879:1986) where elements are defined as logical constructs representing the document's structure and meaning, and tags serve as the syntactic markup to delimit those elements in the markup language. In SGML applications like early HTML, the (DTD) specifies element types and their content models, with tags providing the concrete syntax for implementation.

Syntax and Types

The basic syntax of an HTML element consists of a start , optional attributes within the start tag, content (if applicable), and an end . The start tag begins with an opening angle bracket <, followed by the element's name (a sequence of characters matching the production for a qualified name), optional whitespace, optional attributes, optional whitespace, and a closing angle bracket >. For example, <p class="intro"> represents a start tag for a element with a attribute. The corresponding end tag mirrors this structure but uses a closing angle bracket / after the opening angle bracket, such as </p>, and must not include attributes. Certain elements allow the omission of the end tag if followed by specific other elements or the end of the parent element, but explicit closing is recommended for clarity. Void elements, which have no content model, require only a start tag and prohibit an end tag; they may optionally be written in self-closing form with a trailing slash before the closing angle bracket, though this is not semantically required in . Examples include <meta>, <link>, <img src="example.jpg" alt="Description">, and <br>. Attempting to include content or an end tag for void elements results in invalid markup, as the parser will ignore such additions. This design ensures efficiency for elements that solely convey or serve as insertion points without nested structure. HTML elements are classified into six parsing categories based on how their content is parsed: normal elements (the default, such as <div> or <p>, which accept parsed content including nested elements and text following HTML rules); raw text elements (e.g., <script> and <style>, which treat content as unparsed raw text to preserve scripts or stylesheets without HTML interpretation); escapable raw text elements (e.g., <textarea> and <title>, similar to raw text but allowing end tag escaping); elements (only <template>, whose content is inert until activated via scripting and stored in a DocumentFragment); foreign elements (from other namespaces like or , e.g., <svg> or <math>, parsed with namespace rules); and void elements (a subset with no content or end tags, e.g., <img>, <br>). These categories dictate parsing behavior and content restrictions. Additionally, certain elements fall into the rendering category of replaced elements, which are rendered using external resources or generated content independent of their inner , such as <img>, <video>, and <canvas>. For example, <img src="photo.jpg" alt="A landscape"> displays the file in place of the element. Replaced elements overlap with categories (e.g., <img> is void and replaced) but primarily affect display rather than . Nesting rules enforce a hierarchical , where elements must open and close in a last-in-first-out to maintain validity; improper nesting, such as <p><div>Nested incorrectly</p></div>, triggers modes that may imply missing tags but produces non-conforming documents. The model of each element specifies permissible children, preventing, for example, block-level elements like <div> inside inline phrasing elements like <span> without causing layout issues or validation errors. This ensures the (DOM) forms a well-formed tree, with the containing head and children. In HTML5, element and attribute names in tags are case-insensitive, meaning <P> equates to <p> during parsing, but the specification recommends lowercase for consistency and readability across tools and teams. Uppercase tags may preserve case in the DOM for custom elements but can complicate authoring and compatibility with case-sensitive contexts like XML.

Attributes

HTML attributes are pieces of metadata that provide additional information about HTML elements, typically specified as key-value pairs within the opening tag of an element. For example, in <div id="main">, the id attribute assigns a unique identifier "main" to the div element. These attributes influence the element's behavior, properties, or rendering in the browser. According to the HTML Living Standard, attributes are expressed inside an element's start tag, with the name and value separated by an equals sign (=), and attribute names must consist of one or more characters in the ASCII range, excluding certain control characters. All elements can use a set of global attributes, which apply universally regardless of the element type and are reflected in the DOM as properties of the element interface. Key global attributes include id, which specifies a for an element within the document; class, which assigns one or more CSS class names for styling or scripting; style, which defines inline CSS declarations; title, which provides advisory text displayed as a ; lang, which indicates the primary language of the element's content; dir, which sets the text direction (e.g., "ltr" for left-to-right); and data-* attributes, which allow custom via a namespace-prefixed format like data-value. These global attributes ensure consistent functionality across the document, such as support or scripting hooks. In contrast, local attributes (also called element-specific or intrinsic attributes) are defined only for particular elements and control features unique to them. For instance, the src attribute on the img element specifies the URL of the image resource, while the href attribute on the a element defines the hyperlink destination. The HTML specification details these per-element requirements, ensuring that only valid local attributes are meaningfully processed for each tag. Attributes vary in their value types to accommodate different use cases. String attributes accept arbitrary text values, often URLs or identifiers, and are case-sensitive unless specified otherwise. Enumerated attributes restrict values to a predefined set, such as the type attribute on the input element, which can be "text", "password", or other enumerated options to determine input behavior. Boolean attributes represent a true/false state solely by their presence or absence on the element; if present, they are true (e.g., <input disabled> disables the input), and if absent, false, with optional values like the empty string or the attribute name itself being ignored for the state but allowed in syntax. The specification mandates that boolean attributes' presence toggles the feature without requiring a value. Attribute values must follow strict quoting rules for proper : they are typically enclosed in double quotes (") or single quotes ('), especially if containing spaces, special characters, or quotes of the opposite type. Unquoted values are permitted only if they contain no whitespace or any of "&<'=, but the standard recommends always quoting to avoid parsing ambiguities. HTML parsers, as defined in the syntax section, tokenize attributes during the "before attribute name" and "attribute name" states, converting names to lowercase (since HTML attribute names are case-insensitive) and handling values through dedicated states like "attribute value (double-quoted) state," which escapes certain characters and reports errors for malformed input without halting parsing. This error-tolerant approach ensures robust document handling, though conformance requires valid attribute usage per the element's definition.

Standards and Compatibility

Element Standards and Specifications

The development of HTML element standards began in the early 1990s with informal proposals by , leading to the first basic specifications that defined core elements for hypertext documents. The initial formal standard, , was published by the in 1995, establishing a foundational set of elements for basic document structure, links, and images while aiming for interoperability across early web browsers. By 1997, the released , which expanded support for tables, forms, and basic styling, though it remained a compromise to accommodate browser vendors' implementations. The W3C's specification in 1999 marked a significant advancement, introducing with variants like Strict (emphasizing semantic markup without deprecated presentational elements), Transitional (allowing legacy features for backward compatibility), and Frameset (for framed layouts), thereby promoting cleaner separation of content from presentation. In 2000, reformulated as an XML application, enforcing stricter syntax rules such as case-sensitivity and well-formedness to enable integration with XML ecosystems. The advent of HTML5 in the mid-2000s addressed the limitations of prior versions by fostering a more dynamic and semantic web. Initiated by the Web Hypertext Application Technology Working Group (WHATWG) in 2004 as a "living standard" to continuously evolve without version snapshots, HTML5 was jointly developed with the W3C starting in 2007. The W3C published HTML5 as a Candidate Recommendation in 2012 and as a full Recommendation on October 28, 2014, introducing semantic elements such as <article> for independent content pieces and <nav> for navigation sections to enhance document meaning and accessibility. This version also standardized multimedia elements like <video> and <audio>, reducing reliance on plugins, and incorporated for interactive applications. Post-HTML5 developments, maintained primarily through the 's living standard as of November 2025, have focused on enhancing and modularity without major version overhauls. Key integrations include expanded support for Accessible Rich Internet Applications () attributes directly in HTML elements, as detailed in the W3C's in HTML specification updated in August 2025, allowing authors to map elements to accessibility roles and states. , comprising Custom Elements, Shadow DOM, and HTML Templates, were formalized in the living standard to enable reusable, encapsulated components, with ongoing refinements for better browser interoperability. The W3C continues to produce periodic snapshots, such as HTML 5.3 in 2021, but defers to the for day-to-day maintenance. Standardization is overseen by the W3C, , and historically the IETF, with the W3C emphasizing stable recommendations and the prioritizing an agile, browser-implemented living standard. In May 2019, the W3C and signed an agreement to collaborate on a single version of the HTML standard, with the maintaining the living standard and the W3C publishing periodic Recommendations based on it. A notable point of convergence is HTML5's polyglot mode, described in the HTML Living Standard (), which allows documents to be valid as both HTML and by adhering to shared syntactic constraints, bridging the gap between forgiving HTML parsing and strict XML requirements. This collaborative yet distinct approach ensures HTML elements remain robust across diverse environments.

Element Status and Deprecation

HTML elements are classified into conformance levels based on the HTML Living Standard maintained by the WHATWG, which defines what constitutes valid, recommended markup for modern web documents. Valid elements, such as <div>, <p>, and <a>, are fully recommended for use as they conform to the current specification and ensure consistent rendering across compliant user agents. In contrast, obsolete elements like <font> and <center> are explicitly discouraged because they were removed from the HTML5 specification in favor of semantic and stylistic alternatives, though they may still be parsed by browsers for backward compatibility. Non-conforming elements, such as invalid nesting like a <p> inside another <p>, trigger parsing errors in user agents, potentially leading to unpredictable document tree construction as described in the HTML parsing algorithm. The deprecation process for HTML elements involves community feedback, specification updates by the , and validation tools that flag non-recommended usage. The W3C Markup Validator, for instance, issues warnings for obsolete elements and non-conforming structures, helping developers identify issues during authoring. Browser support for deprecated elements is tracked on platforms like CanIUse, which aggregates data from major user agents; for example, <font> receives partial support in legacy modes but is not recommended for new content due to inconsistent styling. This process ensures a gradual phase-out, with specifications updating to reflect real-world implementation without breaking existing sites. Experimental elements often appear as vendor-prefixed attributes or tags during early adoption, such as -webkit- prefixed properties for layout features, which are later standardized to avoid fragmentation. Elements proposed in the living standard, like <dialog>, transitioned from experimental status in the early to stable implementation by the , with full cross-browser support achieved around 2022. Developers are advised to check specification maturity levels via the tracker before deployment. For migrating away from deprecated elements, particularly presentational ones, the recommended approach is to use CSS for styling; for instance, replace <font size="3"> with <span style="font-size: 1.2em;"> or, preferably, external stylesheets to separate from , aligning with web standards principles. Tools like the HTML5 Doctor provide guidance on these transitions, emphasizing for better and .

Content versus Presentation

The principle of separating from in emphasizes using markup to describe the semantic structure and meaning of document , while delegating visual styling to external stylesheets like CSS. This allows to focus on the inherent meaning of elements, such as using the <strong> element to indicate text of strong importance rather than the presentational <b> element for bold styling alone. Similarly, behavior and interactivity should be separated from HTML structure by using JavaScript, avoiding inline event attributes like onclick that embed scripts directly in markup. Instead, modern practices recommend attaching event listeners via the DOM API, such as addEventListener(), to keep code modular and maintainable. This approach yields significant benefits, including improved accessibility for assistive technologies that can parse semantic structure independently of visual presentation, and enhanced maintainability by allowing changes to styling or behavior without altering the underlying HTML. For instance, deprecated presentational elements like <font> for specifying text color or size can be refactored to neutral containers like <span class="highlight">, paired with CSS rules, enabling easier updates and broader device compatibility. HTML5 further strengthens this principle through the introduction of semantic elements, such as <header> for introductory content or navigational aids, which convey meaning beyond mere layout and reduce reliance on generic <div> elements for structural purposes. These elements promote clearer document outlines for search engines and screen readers, reinforcing the separation while improving overall web interoperability.

Document Structure Elements

Root and Doctype Elements

The element serves as the root container for an HTML document, encapsulating all other and defining the document's overall structure. It typically includes the lang attribute to specify the primary ; obsolete attributes such as manifest (previously used for application caching, now replaced by service workers) and version (for indicating the HTML ) should not be used. The element's content consists of a <head> section for and a <body> for visible content, establishing the document's hierarchical foundation. The precedes the <html> element and instructs web browsers to render the document in standards mode, ensuring consistent parsing and layout according to the specification. This short declaration, lacking a full DTD reference, triggers no-quirks mode in parsers, avoiding legacy rendering quirks from earlier browser implementations. Without it, or with an invalid doctype, browsers default to quirks mode, which emulates behaviors from 3.2 and earlier to support outdated pages but can lead to inconsistent results. Historically, doctypes were more verbose to reference specific Document Type Definitions (DTDs), such as the HTML 4.01 Strict doctype: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">, which enforced separation of structure from presentation by disallowing deprecated elements and attributes. This strict variant, part of the HTML 4.01 specification, aimed to promote cleaner markup without framesets or presentational hints, contrasting with transitional doctypes that permitted legacy features during migration. For XHTML compatibility, the <html> element requires the xmlns attribute set to "http://www.w3.org/1999/xhtml", declaring the to align with XML syntax rules and enable processing by XML tools. This attribute distinguishes 1.0 documents, which must be well-formed and case-sensitive, from traditional , while a corresponding doctype like <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> reinforces strict conformance. Such usage facilitates but is optional in pure contexts.

Head Elements

The <head> element serves as a for that describes the HTML document, including its , linked resources, and other non-rendered information essential for browsers, search engines, and developers. It is required within the <html> element and must appear before the <body> element, containing only elements classified as content to ensure proper document parsing and rendering. Key child elements within <head> provide specific functionalities. The <title> element defines the document's title, displayed in tabs, bookmarks, and search results; it is mandatory, should be unique per page, and limited to 60 characters for optimal display. For example: <title>Document Title</title>. This element aids in user navigation and (SEO) by summarizing page content. The <meta> element supplies machine-readable , such as to prevent display issues (<meta charset="UTF-8">), configuration for responsive design on mobile devices (<meta name="viewport" content="width=device-width, initial-scale=1">), and descriptive tags for SEO (<meta name="description" content="A brief summary of the page.">). meta tags enable s to scale content appropriately, improving usability across devices, while description metas influence search result snippets. supports specific <meta> attributes like name="description" for enhanced visibility in search results, but ignores outdated ones like keywords. The <link> element establishes relationships to external resources, most commonly for cascading stylesheets (<link rel="stylesheet" href="styles.css">) to apply visual formatting or favicons (<link rel="icon" type="image/x-icon" href="/favicon.ico">) for in interfaces. Multiple <link> elements can be used, but they should specify rel, href, and appropriate type attributes for correct processing. Embedded styles are defined using the <style> element, which includes CSS rules directly in the document (<style>body { font-family: Arial; }</style>), useful for small stylesheets or overrides without external files. However, for maintainability, external <link> references are preferred over extensive <style> usage. The <base> element sets a base for resolving relative hyperlinks and resources within the document (<base href="https://example.com/">), allowing consistent addressing without full paths in other elements; only one <base> is permitted per document and should appear early in <head>. Scripts can be included via the <script> element in <head>, loading for functionality (<script src="script.js"></script>); to avoid blocking page rendering, use defer for non-critical scripts that execute after or async for independent loading (<script defer src="script.js"></script>). Placing blocking scripts in <head> can degrade , so deferral is recommended for better load times. These elements collectively support by providing search engines with , , and canonical links to avoid duplicate content issues, while aiding rendering through encoding, URLs, and settings. For instance, proper meta descriptions can improve click-through rates in search results. Best practices emphasize placing no visible content in <head>, as it is non-rendered; start with <meta charset>, followed by <title>, other <meta>, <link>, <style>, <base>, and finally <script> to optimize and . Critical resources like stylesheets should preload if necessary (<link rel="preload" as="style" href="styles.css">), and the overall <head> should remain concise to minimize initial download size.

Body Structure Elements

The <body> element in HTML serves as the primary container for the visible content of a , encapsulating all user-facing material such as text, images, and interactive components within the structure. It must appear as the second child of the <html> element, following the <head>, and there can be only one <body> per to maintain semantic integrity. This element plays a crucial role in the document flow, defining the boundaries where rendering begins for the viewport, thereby influencing how content is laid out and displayed across devices. The <body> element supports all global attributes defined in , including onload, which fires a when the entire has loaded, enabling initialization tasks like setting up listeners or loading additional resources. Additionally, it accommodates attributes such as onresize, which triggers when the is resized; however, the use of inline attributes like these is discouraged in modern in favor of JavaScript's addEventListener method for better and maintainability. As part of the , the <body> behaves as a block-level , generating a rectangular that contains its , , borders, and margins, which collectively determine its positioning and styling in the layout. In valid HTML documents, the <body> start and end tags are optional under certain conditions; if omitted, user agents infer an implicit <body> element to wrap the document's , ensuring consistent and rendering across browsers. This implicit handling promotes flexibility in authoring while adhering to the Living Standard's conformance requirements, which emphasize a single, well-defined for the document's visible portion.

Body Content Elements

Block-level Elements

Block-level elements in HTML are elements that create a block-level box in the document's layout, starting on a new line after the previous element and extending to fill the available horizontal width of their containing block. These elements participate in the normal flow of block layout, where they stack vertically from top to bottom within their parent container, such as the <body> element. Their height is typically determined by the content they enclose, though this can be influenced by CSS properties. Headings provide hierarchical structure to content using the <h1> through <h6> elements, where <h1> denotes the highest-level heading and <h6> the lowest, aiding in outlining the document's sections. Paragraphs are defined by the <p> element, which represents a block of text forming a single , automatically adding margins to separate it from adjacent blocks. For generic grouping without specific semantics, the <div> element serves as a neutral container that holds other block or inline content, often styled via CSS for layout purposes. introduced semantic alternatives like <section>, which groups thematically related content usually headed by a heading; <article>, for independent, self-contained compositions such as posts; and <aside>, for supplementary content like sidebars that relates indirectly to the main flow. Lists organize content in block form, with the <ul> element creating unordered (bulleted) lists containing <li> items; <ol> for ordered (numbered) lists, also using <li>; and <dl> for description lists comprising <dt> terms and <dd> descriptions. Additional block elements include <hr>, which inserts a thematic break between paragraphs or sections, often rendered as a horizontal line; <blockquote>, for quoting content from another source, typically indented; and <pre>, which displays preformatted text while preserving whitespace and line breaks exactly as authored. In terms of flow behavior, block-level elements arrange sequentially in the vertical direction, with each subsequent element positioned below the previous one, respecting any applied margins and padding through CSS to manage spacing and borders. This layout ensures that content within blocks does not mix inline with surrounding text flows, maintaining structural integrity unless altered by CSS display properties. For instance, the following markup demonstrates basic block stacking:
html
<h2>Sample Heading</h2>
<p>This paragraph follows the heading on a new line.</p>
<div>Generic [block](/page/Block) container with content.</div>
<ul>
  <li>First list item</li>
  <li>Second list item</li>
</ul>
<hr>
<blockquote>A quoted [block](/page/Block).</blockquote>
Such elements form the backbone of structure, enabling clear delineation of content sections.

Inline Elements

Inline elements, also known as phrasing content in the HTML specification, consist of text and embedded elements that do not create new line breaks or -level boxes, allowing them to flow seamlessly within the surrounding text of a . These elements are designed to annotate or stylize portions of text without disrupting the overall layout, forming the building blocks of paragraphs and other flow content. Unlike -level elements, inline elements occupy only the space necessary for their content and adjacent inline elements wrap around them as needed. Phrasing elements include semantic tags that convey meaning about the text they enclose, such as the <em> element for stressed emphasis, which indicates a change in tone or mood, and the <strong> element for content of strong importance, like warnings or key points. The <cite> element marks the title of a , such as a or , providing bibliographic context. For presentational effects, elements like <i> and <b> serve as alternatives, where <i> denotes text set apart for idiomatic, technical, or foreign language purposes, and <b> draws attention to content without implying importance; however, these are not recommended for pure styling, as CSS should handle visual presentation, and semantic markup should be used to convey meaning where appropriate. The <a> element, or anchor, is a fundamental inline element for creating hyperlinks, using the href attribute to specify the destination URL, which can link to external web pages, files, email addresses, or internal document sections via fragment identifiers. The target attribute controls the display context, such as opening the link in a new window or tab with values like _blank, while ensuring the linked content remains interactive only if no other interactive elements are nested within. For example:
html
<a href="https://example.com" target="_blank">Visit Example</a>
This creates a clickable link that opens in a new tab. Other inline elements include those for denoting code and input, such as <code> for short fragments of computer code, <kbd> for user keyboard input, and <samp> for sample program output, all of which typically render in a monospace font to distinguish them from regular text. Subscript and superscript are handled by <sub> and <sup>, respectively, for typographical needs like chemical formulas (e.g., H2O) or mathematical exponents (e.g., x2), without altering document structure. The <br> element inserts a within text, acting as a void element with no closing tag, useful for addresses or but avoided for layout purposes in favor of CSS. Inline elements must nest within block-level containers that accept flow content, and they can only contain other phrasing content to maintain text flow integrity, preventing the inclusion of that would break the inline context. The generic <span> element provides a non-semantic container for grouping inline content, often used with CSS classes for targeted styling without implying meaning. For instance:
html
<p>This is <span class="highlight">important text</span> in a paragraph.</p>
This allows precise control over inline portions while preserving the document's semantic structure.

Media and Embedded Elements

Media and embedded elements in HTML enable the integration of non-textual content such as images, audio, video, and external resources into documents, enhancing interactivity and visual appeal while supporting accessibility requirements. These elements belong to the embedded content category and are typically used within the body of an HTML page to reference or play multimedia without disrupting the document flow. The <img> element is a void element used to embed images, requiring the src attribute to specify the image's and the alt attribute to provide a textual alternative for , which screen readers use to describe the image to users. For responsive design, the srcset attribute allows multiple image sources with descriptors for different screen density or sizes, while the sizes attribute indicates the layout width to help browsers select the appropriate source. The <img> element supports formats like , , and , and its dimensions can be controlled via width and height attributes to prevent layout shifts. The <picture> provides advanced control for responsive images and art direction, acting as a for multiple <source> elements that specify conditions (e.g., via media attributes matching CSS ) and formats, with a nested <img> element serving as fallback for unsupported cases. Each <source> uses srcset and type attributes to offer format-specific sources, allowing browsers to choose the best match based on device capabilities and size. This approach optimizes and visual quality across devices. For embedding external plugins or resources, the <object> element uses the data attribute for the resource URL and type for the type, falling back to nested content if the resource fails to load. The <embed> element, a legacy void element, similarly embeds external content via src and type attributes but lacks fallback support and is less flexible. These are often used for legacy plugins like , though modern alternatives like <iframe> are preferred. The <iframe> element embeds another as an inline browsing context, specified by the src attribute, creating a nested independent of the parent . The sandbox attribute applies restrictions like preventing scripts or forms from executing in the embedded content for , with granular permissions via space-separated tokens. It supports width, height, and name attributes for integration and targeting. The <canvas> provides a drawable for generated by , such as animations, games, or data visualizations. It is a block-level by default but can be styled, with width and height attributes setting the coordinate space in pixels (default 300x150). Content is rendered using the Canvas API, typically via a 2D rendering context obtained with getContext('2d'), allowing drawing of shapes, text, and images. Unlike static images, <canvas> starts blank and requires scripting to display content. Multimedia playback is handled by the <video> and <audio> elements, both media elements that reference content via src or nested <source> children for multiple formats (e.g., , for video; , Ogg for audio) to ensure cross-browser compatibility. The controls attribute adds default playback UI, while attributes like autoplay, loop, and muted control behavior; <video> also supports poster for a preload image. These elements implement the media API for programmatic control. Image maps enable clickable regions on images using the <map> element, which defines a named map via the name attribute, referenced by an <img>'s usemap attribute pointing to that name. Within <map>, <area> elements specify hyperlinks or actions with href, shape (rect, circle, poly, default), and coords attributes defining the region boundaries as integer coordinates. This allows interactive hotspots without overlaying additional elements. Accessibility for media elements emphasizes descriptive text and structure. The alt attribute on <img> is essential for conveying image purpose to non-visual users, while the longdesc attribute, once used for linking to detailed descriptions, is now obsolete and unsupported in the HTML Living Standard; alternatives include linking via <a> elements, image maps, or ARIA aria-describedby pointing to off-page content. The <figure> element groups self-contained media like images or code with an optional <figcaption> child for captions, improving semantic association and navigation.

Interactive and Layout Elements

Forms

HTML forms enable users to input data and interact with web applications by collecting information through various controls and submitting it to a server. The <form> element serves as the container for these controls, defining the structure and submission behavior of the form. Forms are essential for tasks such as user registration, search queries, and , allowing data to be sent via HTTP requests. The <form> element defines a form and its submission details through key attributes. The action attribute specifies the to which the form data is sent upon submission, typically a endpoint for processing. The method attribute determines the HTTP used, with "GET" appending data to the URL as query parameters for retrieval operations, and "POST" including data in the request body for secure or large data submissions. The enctype attribute, applicable when method is "POST", controls the encoding of form data, with options like "application/x-www-form-urlencoded" for standard key-value pairs, "multipart/form-data" for uploads, and "text/plain" for unencoded text. The <input> element is a versatile control for user input, rendered differently based on its type attribute. Common types include "text" for single-line text entry, "password" for obscured input, "checkbox" for binary selections, "radio" for mutually exclusive choices within a group, "submit" for triggering form submission, and "button" for custom actions. Attributes such as name assign an identifier for data submission, value sets a default or selected value, and placeholder provides hint text displayed when the field is empty. These attributes ensure data is properly captured and transmitted. Additional controls expand form functionality. The <select> element creates a dropdown menu populated by <option> child elements, each with a value attribute for submission and optional selected to preselect an item. The <textarea> element allows multi-line text input, configurable via rows and cols attributes for size. The <button> element provides clickable buttons with type values like "submit", "reset", or "button", labeled by its content. The <label> element associates descriptive text with a control using the for attribute matching the control's id, improving by making labels clickable and enhancing navigation. For grouping related controls, <fieldset> encloses them, with a <legend> child providing a caption for the group, aiding semantic organization and . HTML5 introduced built-in validation to enforce without scripting. The required attribute mandates a non-empty value for submission. The pattern attribute applies a to validate input format, such as or phone numbers. Numeric constraints use min and max for range limits on types like "number" or "". The novalidate attribute on <form> or specific elements disables validation for that submission. These features provide immediate feedback, reducing errors before server-side processing. Upon submission, typically via a <input type="submit"> or <button type="submit">, the browser collects named controls' values into an entry list and sends them according to the form's method and enctype. For accessibility, proper use of <label> and semantic elements like <fieldset> ensures screen readers convey structure; ARIA attributes, such as aria-required for required fields or aria-invalid for errors, can supplement native semantics when needed, though HTML's built-in features are preferred for core functionality. Example of a basic form:
html
<form action="/submit" method="post" enctype="multipart/form-data">
  <fieldset>
    <legend>Personal Information</legend>
    <label for="name">Name:</label>
    <input type="text" id="name" name="name" required placeholder="Enter your name">
    <br>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" required>
    <br>
    <label>
      <input type="checkbox" name="subscribe"> Subscribe to [newsletter](/page/Newsletter)
    </label>
    <br>
    <button type="submit">Submit</button>
  </fieldset>
</form>
This structure demonstrates grouping, labeling, validation, and submission.

Tables

The <table> element acts as the primary container for presenting tabular data in HTML, structuring information in a two-dimensional of rows and columns to facilitate clear organization and comprehension of multidimensional datasets. This element participates in the HTML table model, which defines how descendant elements form the table's structure, ensuring semantic integrity for both visual rendering and assistive technologies. Accompanying the <table> is the optional <caption> element, placed as the first child, which provides a descriptive title or summary for the table's content, enhancing user orientation especially for users. Tables are semantically divided into sections using <thead>, <tbody>, and <tfoot> elements, which group rows logically: <thead> contains header rows, <tbody> holds the main data rows (with multiple <tbody> elements possible for complex tables), and <tfoot> encapsulates footer rows, often for summaries. Column groups can be defined using the <colgroup> element, which may contain <col> elements to specify properties for one or more columns via the span attribute, allowing and targeted styling without embedding in row sections. Within these sections, <tr> elements define individual rows, serving as containers for cells and maintaining the grid's horizontal alignment. This sectional structure promotes maintainability and accessibility by allowing targeted styling or scripting of different table parts without affecting the overall layout. Row cells are specified using <th> for headers and <td> for data content, where <th> cells are typically bolded and centered by default to distinguish them from regular data. The scope attribute on <th> elements clarifies the header's direction—values like row, [col](/page/Col), rowgroup, or colgroup—to associate headers with their intended data cells, improving navigation for assistive technologies. Cells can merge across the grid using the colspan attribute to span multiple columns or rowspan to span multiple rows, enabling flexible representations of irregular data without breaking the table model. Accessibility in HTML tables was enhanced in HTML5 with attributes like headers on <td> or <th> elements, which reference the id attributes of corresponding header cells to explicitly link data with headers, particularly useful in complex tables with irregular spanning. Native HTML tables imply an ARIA role of "table." For interactive data grids, implement the ARIA grid pattern using appropriate container elements (e.g., <div> with role="grid") rather than overriding table semantics. The summary attribute on <table>, once used for descriptions, is deprecated in favor of <caption> and ARIA attributes like aria-describedby for more robust, non-visual context. For visual presentation, table styling should rely on CSS properties such as border, padding, and background applied to <table>, <tr>, <th>, and <td> elements, rather than deprecated HTML attributes like border or cellspacing, which were removed in HTML5 to separate content from presentation and ensure consistent rendering across user agents. The following example illustrates a basic accessible table structure:
html
<table>
  <caption>Monthly Sales Report</caption>
  <thead>
    <tr>
      <th id="product" scope="col">Product</th>
      <th id="january" scope="col">January</th>
      <th id="february" scope="col">February</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td headers="product january">Widget A</td>
      <td headers="product february">150</td>
      <td headers="product february">200</td>
    </tr>
  </tbody>
</table>
This code uses semantic elements and attributes to ensure the table is both functional and accessible.

Frames and Windows

The legacy frame mechanism in HTML enabled the division of the browser window into multiple independent viewing areas, each loading a separate document. The <frameset> element served as a replacement for the <body> element in frameset documents, containing one or more <frame> child elements to define the of these areas, typically using attributes like rows or cols to specify dimensions in pixels, percentages, or relative units. Each <frame> element specified the content for its area via the src attribute, which pointed to the of an document to display, and could include a name attribute for targeting links. Additionally, the <noframes> element allowed authors to provide alternative content for user agents that did not support , ensuring basic in non-frame environments. This system was introduced in HTML 4.01 to facilitate complex layouts, such as navigation menus alongside main content, but it often led to challenges like broken back-button navigation and difficulties in bookmarking individual sections. Despite its historical utility, the <frameset>, <frame>, and <noframes> elements are obsolete in and must not be used in conforming documents, as they violate the single-document principle of the web and introduce significant issues, including poor support for responsive design and screen readers. The HTML Living Standard explicitly lists them under obsolete but conforming features, recommending their removal in favor of modern alternatives. In , the <body> element remains mandatory, and framesets are invalid, prompting a shift away from this approach since the standard's 2014 recommendation. The contemporary equivalent for embedding content is the <iframe> element, which creates a nested browsing context to inline another HTML page without dividing the entire window. Essential attributes include name, which assigns an identifier for link targeting; allowfullscreen, a boolean that permits the embedded content to enter full-screen mode when supported; and sandbox, which applies a set of restrictions (e.g., no scripts, no forms, no plugins) to enhance security, with optional tokens to selectively enable features like navigation or downloads. For instance, <iframe src="https://example.com" sandbox="allow-scripts allow-same-origin" allowfullscreen></iframe> embeds a document with controlled permissions. Unlike legacy frames, <iframe> integrates seamlessly into the document flow and supports CSS styling for responsive behavior. To navigate between frames or iframes, the target attribute on <a> (anchor) elements specifies the destination browsing . Common values include _blank for a new unnamed or tab, _self for the current , _parent for the immediate , or _top to break out of all ; alternatively, a custom name matching an <iframe> or <frame>'s name attribute loads the link within that specific area. This targeting mechanism persists in modern but is most relevant for iframes, as legacy are phased out. Iframes find primary use in embedding third-party content, such as interactive maps from services like or payment gateways, where isolation prevents interference with the host page. However, for overall page layouts once handled by framesets, responsive alternatives using CSS Flexbox or are preferred, as they adapt to varying screen sizes without the fragmentation issues of frames. Accessibility remains a concern with iframes; the title attribute must provide a concise, descriptive label for the embedded content (e.g., title="Embedded interactive map"), aiding screen reader users in understanding its purpose, while avoiding empty or vague titles that could confuse assistive technologies. Overuse of iframes can also impact due to additional HTTP requests, so they should be employed judiciously. The deprecation of framesets in underscores a broader evolution toward unified, accessible documents, with <iframe> as the endorsed replacement for embedding scenarios, though even it is advised only when necessary to avoid security risks like . Legacy frame code encountered in older sites should be migrated to CSS-based layouts or iframes to ensure compliance and future-proofing.

Legacy and Extensions

Historical Elements

Historical elements in HTML refer to tags that were defined in earlier specifications, such as HTML 4.01 and 1.0, some of which were declared entirely obsolete in the recommendation due to their redundancy with CSS styling capabilities, lack of semantic value, or association with insecure or outdated technologies. Others, like <s> and <u>, were redefined with semantic meanings, and <menu> was restricted in scope. These elements often encouraged mixing presentation with content, which violated the principle central to modern web standards, leading to their removal or alteration to promote more maintainable and accessible code. While some were completely dropped from conformance requirements, others shifted from purely presentational roles to semantic annotations in later specifications. The pre-HTML5 elements that are obsolete in HTML5 include <applet>, <basefont>, <big>, <center>, <dir>, <font>, <isindex>, <noembed>, <plaintext>, <strike>, <tt>, and <xmp>. Their stemmed primarily from redundancy with CSS for formatting tasks—such as text alignment, size, and font changes—and security issues with plugin-based embedding, as seen with <applet> which facilitated Java applets prone to vulnerabilities like remote code execution. Elements like <isindex> and <noembed> were tied to legacy form handling and fallback mechanisms that became unnecessary with improved HTML parsing and the <object> element. The elements <s>, <u>, and <menu> are not obsolete but were repurposed in HTML5.
ElementOriginal PurposeReason for Removal or RedefinitionReplacement Example
<applet>Embedding applets for interactive contentSecurity risks from Java plugins; superseded by general-purpose embedding<object> with type="application/x-java-applet" or <embed> for plugins
<basefont>Setting default font properties for the documentPresentational; CSS handles defaults betterCSS body { font-family: ...; font-size: ...; color: ...; }
<big>Increasing text size by one levelPresentational; lacks semanticsCSS font-size: larger; or semantic elements like <strong>
<center>Centering block-level contentPresentational; CSS provides precise controlCSS text-align: center; or Flexbox/ for layout
<dir>Creating directory-style listsRedundant with unordered lists; poor semantics<ul> with appropriate styling
<font>Specifying font face, size, and colorPresentational; leads to inconsistent renderingCSS font-family: ...; font-size: ...; color: ...;
<isindex>Simple single-input search formObsolete form syntax; modern forms are more flexible<form> with <input type="search">
<menu>Defining lists (pre- full use)Overlap with <ul>; restricted in HTML5 to context menus only<ul> or <ol> for lists; <menu type="context"> for semantic menus
<noembed>Fallback content for unsupported embedsRedundant with <noscript> and improved object fallbacks<object> with nested <p> for fallback text
<plaintext>Rendering raw text without HTML parsingInconsistent parsing; no semantic benefit<pre> for preformatted text
<s>Striking through text (presentational)Presentational; repurposed for inaccurate/irrelevant content<del> for deletions; CSS text-decoration: line-through; for styling
<strike>Striking through textDuplicate of <s>; presentational<del> or <s> for semantics; CSS for styling
<tt>Monospace teletype-style textPresentational; better alternatives for code-like text<code> or <kbd> for semantics; CSS font-family: monospace;
<u>Underlining text (presentational)Presentational; repurposed for non-textual annotations like misspellings<ins> for insertions; CSS text-decoration: underline; or <bdo> for direction
<xmp>Displaying raw HTML source as textParsing issues; redundant with preformatted text<pre> or <code> with escaped content
This table summarizes the elements based on HTML5 specifications, emphasizing conceptual shifts over exhaustive details. In terms of browser support, these obsolete elements receive legacy rendering in antiquated browsers like versions prior to 9, where they might display as intended due to historical quirks mode handling. However, contemporary browsers such as , , and conform to HTML5 standards by not supporting the obsolete ones, often treating them as unknown elements that do not affect layout or functionality. Polyfills are discouraged, as they complicate maintenance without providing meaningful benefits in modern contexts. Transitioning from these historical elements involves their behaviors to current standards, such as replacing <center> with CSS text-align: center on a parent container or using <bdo dir="rtl"> for bidirectional overrides where <u> was misused for emphasis. This approach ensures , improves —for instance, by avoiding visual-only cues—and aligns with the web's evolution toward semantic markup. The process, as outlined in standards bodies, warns against their use in conformance checkers while allowing parsing rules for .

Non-standard Elements

Non-standard HTML elements refer to tags introduced by specific browser vendors or developers that were never incorporated into official HTML specifications, often to address layout, presentation, or interactive needs not yet covered by standards. These elements typically originated in the early days of the web, during the of the 1990s, when companies like and extended HTML independently to enhance user experience or compete in features. Although some gained temporary popularity, they led to fragmentation in web rendering and compatibility issues, prompting the web standards community to discourage their use in favor of standardized alternatives. Prominent examples include the element, developed by for , which creates scrolling or sliding text and other content across the page. Similarly, Netscape introduced the element to make enclosed text flash on and off, intended for drawing attention but often criticized for being distracting. Another Netscape extension was the element, used to insert fixed horizontal, vertical, or rectangular whitespace for layout purposes, mimicking the effect of invisible images without requiring actual image files. These elements were proprietary and non-conforming, meaning they violated HTML parsing rules and were not guaranteed to work consistently across browsers. In the pre-HTML5 era, vendors like experimented with prefixed or experimental s and attributes to prototype features before they became ; for instance, early implementations of the

References

  1. [1]
    Living Standard - HTML
    4.8.1 The picture element · 4.8.2 The source element · 4.8.3 The img element · 4.8.4 Images · 4.8.4.1 Introduction · 4.8.4.1.1 Adaptive images · 4.8.4.2 Attributes ...Elements · 13 The HTML syntax · HTML5 specification · Version for Web Devs /dev
  2. [2]
  3. [3]
  4. [4]
    HTML Standard
    ### Summary of HTML Comments from WHATWG HTML Specification
  5. [5]
  6. [6]
  7. [7]
  8. [8]
  9. [9]
  10. [10]
  11. [11]
  12. [12]
    Understanding HTML and SGML
    Understanding HTML and SGML. HTML is an application conforming to International Standard ISO 8879 -- Standard Generalized Markup Language (SGML).
  13. [13]
  14. [14]
  15. [15]
  16. [16]
  17. [17]
  18. [18]
  19. [19]
  20. [20]
  21. [21]
  22. [22]
    HTML Standard
    HTML documents consist of a tree of elements and text. Each element is denoted in the source by a start tag, such as " <body> ", and an end tag, such as " ...Multipage Version /multipage · The Living Standard · MIME Sniffing
  23. [23]
    ARIA in HTML - W3C
    Aug 5, 2025 · 23 July 2025 - Addition: Update the label element to allow role and aria-* attributes to be specified when the element is not associated with a ...
  24. [24]
    Polyglot Markup: A robust profile of the HTML5 vocabulary - W3C
    Sep 29, 2015 · A document that uses polyglot markup is a document that is a stream of bytes that parses into identical document trees (with some exceptions)
  25. [25]
    HTML Design Principles - W3C
    Nov 26, 2007 · 3.4. Separation of Concerns. HTML should allow separation of content and presentation. For this reason, markup that expresses structure is ...Missing: versus | Show results with:versus
  26. [26]
    Separation of semantic and presentational markup, to the ... - W3C
    Jun 30, 2003 · Separating the concepts content, presentation, and interaction allows more easily composable specifications.Missing: concerns | Show results with:concerns
  27. [27]
    The principles of unobtrusive JavaScript - W3C Wiki
    Oct 9, 2014 · Summary · separates structure and behaviour, in order to make your code cleaner and script maintenance easier · pre-empts browser ...Missing: behavior | Show results with:behavior
  28. [28]
    G140: Separating information and structure from presentation ... - W3C
    An HTML document uses the structural features of HTML, such as paragraphs, lists, headings, etc., and avoids presentational features such as font changes, ...Missing: concerns | Show results with:concerns
  29. [29]
  30. [30]
  31. [31]
    G115: Using semantic elements to mark up structure - W3C
    The objective of this technique is to mark up the structure of the Web content using the appropriate semantic elements.
  32. [32]
    7 The global structure of an HTML document - W3C
    The HTML 4.01 Strict DTD includes all elements and attributes that have not been deprecated or do not appear in frameset documents. · The HTML 4.01 Transitional ...
  33. [33]
    XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)
    ### Summary of XHTML Namespace Usage with xmlns Attribute for XML Compatibility
  34. [34]
  35. [35]
  36. [36]
  37. [37]
    Meta Tags and Attributes that Google Supports | Documentation
    This page explains what meta tags are, which meta tags and HTML attributes Google supports to control indexing, and other important points to notemeta tags · robots and googlebot · notranslate · google-site-verification
  38. [38]
  39. [39]
  40. [40]
  41. [41]
    How to Write Meta Descriptions | Google Search Central
    A meta description tag generally informs and interests users with a short, relevant summary of what a particular page is about.
  42. [42]
  43. [43]
  44. [44]
    Block-level content - Glossary - MDN Web Docs - Mozilla
    A block-level element always starts on a new line. In horizontal writing modes, like English or Arabic, it occupies the entire horizontal space of its parent ...
  45. [45]
    Block and inline layout in normal flow - CSS - MDN Web Docs
    Jul 14, 2025 · Block elements lay out vertically, one after the other, while inline elements lay out horizontally, one after the other, with horizontal ...
  46. [46]
    4.4.1 The p element - HTML Standard - whatwg
    The p element represents a paragraph. While paragraphs are usually represented in visual media by blocks of text that are physically separated from adjacent ...
  47. [47]
  48. [48]
  49. [49]
    Inline-level content - Glossary - MDN Web Docs
    Most text sequences, replaced elements, and generated content are inline-level by default. In inline layout, a mixed stream of text, replaced elements, and ...
  50. [50]
    <em>: The Emphasis element - HTML - MDN Web Docs
    Jul 9, 2025 · The <em> HTML element marks text that has stress emphasis. The <em> element can be nested, with each level of nesting indicating a greater degree of emphasis.
  51. [51]
    The Strong Importance element - HTML - MDN Web Docs - Mozilla
    Jul 9, 2025 · The <strong> element is for content that is of "strong importance," including things of great seriousness or urgency (such as warnings).
  52. [52]
    <cite>: The Citation element - HTML - MDN Web Docs
    Jul 9, 2025 · The <cite> HTML element is used to mark up the title of a creative work. The reference may be in an abbreviated form according to context-appropriate ...
  53. [53]
    <i>: The Idiomatic Text element - HTML - MDN Web Docs - Mozilla
    Jul 9, 2025 · The <i> HTML element represents a range of text that is set off from the normal text for some reason, such as idiomatic text, technical terms, taxonomical ...<|separator|>
  54. [54]
    <b>: The Bring Attention To element - HTML - MDN Web Docs
    Jul 9, 2025 · The <b> HTML element is used to draw the reader's attention to the element's contents, which are not otherwise granted special importance.
  55. [55]
    <a>: The Anchor element - HTML | MDN
    Aug 13, 2025 · The <a> HTML element (or anchor element), with its href attribute, creates a hyperlink to web pages, files, email addresses, locations in the same page, or ...: The Ordered List element · Abbr · Javascript: URLs · Attribution-Reporting-Eligible
  56. [56]
    HTMLAnchorElement: target property - Web APIs | MDN
    Apr 10, 2025 · The target property of the HTMLAnchorElement interface is a string that indicates where to display the linked resource.
  57. [57]
    The Inline Code element - HTML - MDN Web Docs - Mozilla
    Oct 13, 2025 · The <code> HTML element displays its contents styled in a fashion intended to indicate that the text is a short fragment of computer code.Try it · Examples · Technical summary
  58. [58]
    <kbd>: The Keyboard Input element - HTML - MDN Web Docs
    Oct 18, 2025 · The <kbd> HTML element represents a span of inline text denoting textual user input from a keyboard, voice input, or any other text entry device.
  59. [59]
    <samp>: The Sample Output element - HTML - MDN Web Docs
    Aug 13, 2025 · The <samp> HTML element is used to enclose inline text which represents sample (or quoted) output from a computer program.
  60. [60]
    <sub>: The Subscript element - HTML - MDN Web Docs - Mozilla
    Oct 26, 2025 · The <sub> HTML element specifies inline text which should be displayed as subscript for solely typographical reasons.
  61. [61]
    <sup>: The Superscript element - HTML - MDN Web Docs - Mozilla
    Jul 9, 2025 · The <sup> HTML element specifies inline text which is to be displayed as superscript for solely typographical reasons.
  62. [62]
    <br>: The Line Break element - HTML - MDN Web Docs - Mozilla
    Jul 9, 2025 · The <br> HTML element produces a line break in text (carriage-return). It is useful for writing a poem or an address, where the division of lines is ...
  63. [63]
    The Content Span element - HTML - MDN Web Docs - Mozilla
    Aug 6, 2025 · The <span> HTML element is a generic inline container for phrasing content, which does not inherently represent anything.
  64. [64]
  65. [65]
  66. [66]
    <img>: The Image Embed element - HTML - MDN Web Docs - Mozilla
    This element includes the global attributes. Defines text that can replace the image in the page. Note: Browsers do not always display images.Image file type and format guide · HTMLImageElement.srcset · Aspect ratio
  67. [67]
  68. [68]
  69. [69]
  70. [70]
    The Embed External Content element - HTML - MDN Web Docs
    Aug 18, 2025 · The <embed> HTML element embeds external content at the specified point in the document. This content is provided by an external application or other source of ...
  71. [71]
  72. [72]
    <iframe>: The Inline Frame element - HTML - MDN Web Docs
    The HTML element represents a nested browsing context, embedding another HTML page into the current one.Permissions Policy · Permissions-Policy header · Browsing context
  73. [73]
  74. [74]
  75. [75]
    The Video Embed element - HTML - MDN Web Docs - Mozilla
    Sep 22, 2025 · The <video> HTML element embeds a media player which supports video playback into the document. You can use <video> for audio content as well.Autoplay guide for media and... · Adding captions and subtitles... · Wbr
  76. [76]
  77. [77]
  78. [78]
  79. [79]
    HTMLImageElement: longDesc property - Web APIs | MDN
    The deprecated longDesc property of the HTMLImageElement interface specifies the URL of a text or HTML file which contains a long-form description of the image.
  80. [80]
    Technique H45:Using longdesc - W3C
    The longdesc attribute is obsolete in the HTML Living Standard, and was never widely supported. Use an a element or an image map to link to the description.Missing: deprecation | Show results with:deprecation
  81. [81]
    4.9.1 The table element - HTML Standard - whatwg
    The table element represents data with more than one dimension, in the form of a table. The table element takes part in the table model.
  82. [82]
    Grid (Interactive Tabular Data and Layout Containers) Pattern | APG
    WAI-ARIA Roles, States, and Properties. The grid container has role grid. Each row container has role row and is either a DOM descendant of or owned by the grid ...
  83. [83]
    Tables Tutorial | Web Accessibility Initiative (WAI) - W3C
    Accessible tables need `<th>` for header cells and `<td>` for data cells. Without structural markup, tables create accessibility barriers.Caption & Summary · Tips and Tricks · Multi-Level Headers · One Header
  84. [84]
    HTML Standard
    ### Confirmation of Deprecation of `<font>` Element and Reason Related to Presentation
  85. [85]
  86. [86]
    Text labels and names - Accessibility - MDN Web Docs - Mozilla
    Oct 21, 2025 · Use title attribute to describe <iframe> content. Make sure that <iframe> elements have a title attribute to describe the contents of the frame.
  87. [87]
    blink element (<blink> tag) - Glossary - MDN Web Docs
    Jul 11, 2025 · The <blink> element (blink tag) is an obsolete HTML feature no longer supported by web browsers, and no longer documented on MDN.Missing: spacer | Show results with:spacer
  88. [88]
    The spacer Element Is Gone - Henri Sivonen
    Sep 17, 2010 · The spacer element was introduced by Netscape as a means of achieving the effect of a single-pixel layout GIF without actually having to use the GIF.
  89. [89]
  90. [90]
    Using HTML comments <!-- … --> - HTML - MDN Web Docs
    Jul 9, 2025 · An HTML comment is used to add explanatory notes to the markup or to prevent the browser from interpreting specific parts of the document.
  91. [91]
  92. [92]
    Conditional Comments | HTML Dog
    Conditional comments, which are nothing more than simple HTML comments that IE (up to version 9) happens to take a peep at, are used to throw a chunk of HTML ...
  93. [93]
    Cross Site Scripting Prevention - OWASP Cheat Sheet Series
    HTML Sanitization will strip dangerous HTML from a variable and return a safe string of HTML. OWASP recommends DOMPurify for HTML Sanitization. let clean = ...