Table of contents

  1. 1 Introduction
    1. 1.1 Is this HTML5?
    2. 1.2 Background
    3. 1.3 Audience
    4. 1.4 Scope
    5. 1.5 History
    6. 1.6 Design notes
      1. 1.6.1 Compliance with other specifications
      2. 1.6.2 Extensibility
    7. 1.7 HTML vs XML syntax
    8. 1.8 Structure of this specification
      1. 1.8.1 Typographic conventions
    9. 1.9 A quick introduction to HTML
      1. 1.9.1 Writing secure applications with HTML
      2. 1.9.2 Common pitfalls to avoid when using the scripting APIs
      3. 1.9.3 How to catch mistakes when writing HTML: validators and conformance checkers
    10. 1.10 Conformance requirements for authors
      1. 1.10.1 Presentational markup
      2. 1.10.2 Syntax errors
      3. 1.10.3 Restrictions on content models and on attribute values
    11. 1.11 Suggested reading
  2. 2 Common infrastructure
    1. 2.1 Terminology
      1. 2.1.1 Resources
      2. 2.1.2 XML compatibility
      3. 2.1.3 DOM trees
      4. 2.1.4 Scripting
      5. 2.1.5 Plugins
      6. 2.1.6 Character encodings
      7. 2.1.7 Dependencies
      8. 2.1.8 Extensibility
    2. 2.2 Policy-controlled features
    3. 2.3 Common microsyntaxes
      1. 2.3.1 Boolean attributes
      2. 2.3.2 Keywords and enumerated attributes
      3. 2.3.3 Numbers
        1. 2.3.3.1 Signed integers
        2. 2.3.3.2 Non-negative integers
        3. 2.3.3.3 Floating-point numbers
        4. 2.3.3.4 Lists of floating-point numbers
      4. 2.3.4 Dates and times
        1. 2.3.4.1 Months
        2. 2.3.4.2 Dates
        3. 2.3.4.3 Yearless dates
        4. 2.3.4.4 Times
        5. 2.3.4.5 Local dates and times
        6. 2.3.4.6 Time zones
        7. 2.3.4.7 Global dates and times
        8. 2.3.4.8 Weeks
        9. 2.3.4.9 Durations
        10. 2.3.4.10 Vaguer moments in time
      5. 2.3.5 Colors
      6. 2.3.6 Space-separated tokens
      7. 2.3.7 Comma-separated tokens
      8. 2.3.8 References
      9. 2.3.9 Media queries
      10. 2.3.10 Unique internal values
    4. 2.4 URLs
      1. 2.4.1 Terminology
      2. 2.4.2 CORS settings attributes
      3. 2.4.3 Referrer policy attributes
      4. 2.4.4 Nonce attributes
      5. 2.4.5 Lazy loading attributes
      6. 2.4.6 Blocking attributes
      7. 2.4.7 Fetch priority attributes
    5. 2.5 Common DOM interfaces
      1. 2.5.1 Reflecting content attributes in IDL attributes
      2. 2.5.2 Collections
        1. 2.5.2.1 The HTMLAllCollection interface
        2. 2.5.2.2 The HTMLFormControlsCollection interface
        3. 2.5.2.3 The HTMLOptionsCollection interface
      3. 2.5.3 The DOMStringList interface
    6. 2.6 Safe passing of structured data
      1. 2.6.1 Serializable objects
      2. 2.6.2 Transferable objects
      3. 2.6.3 Structured cloning API
  3. 3 Semantics, structure, and APIs of HTML documents
    1. 3.1 Documents
      1. 3.1.1 The Document object
      2. 3.1.2 The DocumentOrShadowRoot interface
      3. 3.1.3 Resource metadata management
      4. 3.1.4 Reporting document loading status
      5. 3.1.5 Render-blocking mechanism
      6. 3.1.6 DOM tree accessors
    2. 3.2 Elements
      1. 3.2.1 Semantics
      2. 3.2.2 Elements in the DOM
      3. 3.2.3 Element definitions
        1. 3.2.3.1 Attributes
      4. 3.2.4 Content models
        1. 3.2.4.1 The "nothing" content model
        2. 3.2.4.2 Kinds of content
          1. 3.2.4.2.1 Metadata content
          2. 3.2.4.2.2 Flow content
          3. 3.2.4.2.3 Sectioning content
          4. 3.2.4.2.4 Heading content
          5. 3.2.4.2.5 Phrasing content
          6. 3.2.4.2.6 Embedded content
          7. 3.2.4.2.7 Interactive content
          8. 3.2.4.2.8 Palpable content
          9. 3.2.4.2.9 Script-supporting elements
        3. 3.2.4.3 Transparent content models
        4. 3.2.4.4 Paragraphs
      5. 3.2.5 Global attributes
        1. 3.2.5.1 The title attribute
        2. 3.2.5.2 The lang and xml:lang attributes
        3. 3.2.5.3 The translate attribute
        4. 3.2.5.4 The dir attribute
        5. 3.2.5.5 The style attribute
        6. 3.2.5.6 Embedding custom non-visible data with the data-* attributes
      6. 3.2.6 The innerText and outerText properties
      7. 3.2.7 Requirements relating to the bidirectional algorithm
  4. 4 The elements of HTML
    1. 4.1 The document element
      1. 4.1.1 The html element
    2. 4.2 Document metadata
      1. 4.2.1 The head element
      2. 4.2.2 The title element
      3. 4.2.3 The base element
      4. 4.2.4 The link element
        1. 4.2.4.1 Providing users with a means to follow hyperlinks created using the link element
      5. 4.2.5 The meta element
        1. 4.2.5.1 Standard metadata names
        2. 4.2.5.2 Other metadata names
        3. 4.2.5.3 Pragma directives
        4. 4.2.5.4 Specifying the document's character encoding
      6. 4.2.6 The style element
    3. 4.3 Sections
      1. 4.3.1 The body element
      2. 4.3.2 The article element
      3. 4.3.3 The section element
      4. 4.3.4 The nav element
      5. 4.3.5 The aside element
      6. 4.3.6 The h1, h2, h3, h4, h5, and h6 elements
      7. 4.3.7 The hgroup element
      8. 4.3.8 The header element
      9. 4.3.9 The footer element
      10. 4.3.10 The address element
      11. 4.3.11 Headings and outlines
        1. 4.3.11.1 Sample outlines
        2. 4.3.11.2 Exposing outlines to users
      12. 4.3.12 Usage summary
        1. 4.3.12.1 Article or section?
    4. 4.4 Grouping content
      1. 4.4.1 The p element
      2. 4.4.2 The hr element
      3. 4.4.3 The pre element
      4. 4.4.4 The blockquote element
      5. 4.4.5 The ol element
      6. 4.4.6 The ul element
      7. 4.4.7 The menu element
      8. 4.4.8 The li element
      9. 4.4.9 The dl element
      10. 4.4.10 The dt element
      11. 4.4.11 The dd element
      12. 4.4.12 The figure element
      13. 4.4.13 The figcaption element
      14. 4.4.14 The main element
      15. 4.4.15 The search element
      16. 4.4.16 The div element
    5. 4.5 Text-level semantics
      1. 4.5.1 The a element
      2. 4.5.2 The em element
      3. 4.5.3 The strong element
      4. 4.5.4 The small element
      5. 4.5.5 The s element
      6. 4.5.6 The cite element
      7. 4.5.7 The q element
      8. 4.5.8 The dfn element
      9. 4.5.9 The abbr element
      10. 4.5.10 The ruby element
      11. 4.5.11 The rt element
      12. 4.5.12 The rp element
      13. 4.5.13 The data element
      14. 4.5.14 The time element
      15. 4.5.15 The code element
      16. 4.5.16 The var element
      17. 4.5.17 The samp element
      18. 4.5.18 The kbd element
      19. 4.5.19 The sub and sup elements
      20. 4.5.20 The i element
      21. 4.5.21 The b element
      22. 4.5.22 The u element
      23. 4.5.23 The mark element
      24. 4.5.24 The bdi element
      25. 4.5.25 The bdo element
      26. 4.5.26 The span element
      27. 4.5.27 The br element
      28. 4.5.28 The wbr element
      29. 4.5.29 Usage summary
    6. 4.6 Links
      1. 4.6.1 Introduction
      2. 4.6.2 Links created by a and area elements
      3. 4.6.3 API for a and area elements
      4. 4.6.4 Downloading resources
      5. 4.6.5 Hyperlink auditing
        1. 4.6.5.1 The `Ping-From` and `Ping-To` headers
      6. 4.6.6 Link types
        1. 4.6.6.1 Link type "alternate"
        2. 4.6.6.2 Link type "author"
        3. 4.6.6.3 Link type "bookmark"
        4. 4.6.6.4 Link type "canonical"
        5. 4.6.6.5 Link type "dns-prefetch"
        6. 4.6.6.6 Link type "expect"
        7. 4.6.6.7 Link type "external"
        8. 4.6.6.8 Link type "help"
        9. 4.6.6.9 Link type "icon"
        10. 4.6.6.10 Link type "license"
        11. 4.6.6.11 Link type "manifest"
        12. 4.6.6.12 Link type "modulepreload"
        13. 4.6.6.13 Link type "nofollow"
        14. 4.6.6.14 Link type "noopener"
        15. 4.6.6.15 Link type "noreferrer"
        16. 4.6.6.16 Link type "opener"
        17. 4.6.6.17 Link type "pingback"
        18. 4.6.6.18 Link type "preconnect"
        19. 4.6.6.19 Link type "prefetch"
        20. 4.6.6.20 Link type "preload"
        21. 4.6.6.21 Link type "privacy-policy"
        22. 4.6.6.22 Link type "search"
        23. 4.6.6.23 Link type "stylesheet"
        24. 4.6.6.24 Link type "tag"
        25. 4.6.6.25 Link Type "terms-of-service"
        26. 4.6.6.26 Sequential link types
          1. 4.6.6.26.1 Link type "next"
          2. 4.6.6.26.2 Link type "prev"
        27. 4.6.6.27 Other link types
    7. 4.7 Edits
      1. 4.7.1 The ins element
      2. 4.7.2 The del element
      3. 4.7.3 Attributes common to ins and del elements
      4. 4.7.4 Edits and paragraphs
      5. 4.7.5 Edits and lists
      6. 4.7.6 Edits and tables
    8. 4.8 Embedded content
      1. 4.8.1 The picture element
      2. 4.8.2 The source element
      3. 4.8.3 The img element
      4. 4.8.4 Images
        1. 4.8.4.1 Introduction
          1. 4.8.4.1.1 Adaptive images
        2. 4.8.4.2 Attributes common to source, img, and link elements
          1. 4.8.4.2.1 Srcset attributes
          2. 4.8.4.2.2 Sizes attributes
        3. 4.8.4.3 Requirements for providing text to act as an alternative for images
          1. 4.8.4.3.1 General guidelines
          2. 4.8.4.3.2 A link or button containing nothing but the image
          3. 4.8.4.3.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
          4. 4.8.4.3.4 A short phrase or label with an alternative graphical representation: icons, logos
          5. 4.8.4.3.5 Text that has been rendered to a graphic for typographical effect
          6. 4.8.4.3.6 A graphical representation of some of the surrounding text
          7. 4.8.4.3.7 Ancillary images
          8. 4.8.4.3.8 A purely decorative image that doesn't add any information
          9. 4.8.4.3.9 A group of images that form a single larger picture with no links
          10. 4.8.4.3.10 A group of images that form a single larger picture with links
          11. 4.8.4.3.11 A key part of the content
          12. 4.8.4.3.12 An image not intended for the user
          13. 4.8.4.3.13 An image in an email or private document intended for a specific person who is known to be able to view images
      5. 4.8.5 The iframe element
      6. 4.8.6 The embed element
      7. 4.8.7 The object element
      8. 4.8.8 The video element
      9. 4.8.9 The audio element
      10. 4.8.10 The track element
      11. 4.8.11 Media elements
        1. 4.8.11.1 Error codes
        2. 4.8.11.2 Location of the media resource
        3. 4.8.11.3 MIME types
        4. 4.8.11.4 Network states
        5. 4.8.11.5 Loading the media resource
        6. 4.8.11.6 Offsets into the media resource
        7. 4.8.11.7 Ready states
        8. 4.8.11.8 Playing the media resource
        9. 4.8.11.9 Seeking
        10. 4.8.11.10 Media resources with multiple media tracks
          1. 4.8.11.10.1 AudioTrackList and VideoTrackList objects
          2. 4.8.11.10.2 Selecting specific audio and video tracks declaratively
        11. 4.8.11.11 Timed text tracks
          1. 4.8.11.11.1 Text track model
          2. 4.8.11.11.2 Sourcing in-band text tracks
          3. 4.8.11.11.3 Text track API
          4. 4.8.11.11.4 Best practices for metadata text tracks
        12. 4.8.11.12 Identifying a track kind through a URL
        13. 4.8.11.13 User interface
        14. 4.8.11.14 Time ranges
        15. 4.8.11.15 The TrackEvent interface
        16. 4.8.11.16 Events summary
        17. 4.8.11.17 Best practices for authors using media elements
      12. 4.8.12 The map element
      13. 4.8.13 The area element
      14. 4.8.14 Image maps
      15. 4.8.15 MathML
      16. 4.8.16 SVG
      17. 4.8.17 Dimension attributes
    9. 4.9 Tabular data
      1. 4.9.1 The table element
        1. 4.9.1.1 Techniques for describing tables
        2. 4.9.1.2 Techniques for table design
      2. 4.9.2 The caption element
      3. 4.9.3 The colgroup element
      4. 4.9.4 The col element
      5. 4.9.5 The tbody element
      6. 4.9.6 The thead element
      7. 4.9.7 The tfoot element
      8. 4.9.8 The tr element
      9. 4.9.9 The td element
      10. 4.9.10 The th element
      11. 4.9.11 Attributes common to td and th elements
      12. 4.9.12 Examples
    10. 4.10 Forms
      1. 4.10.1 Introduction
        1. 4.10.1.1 Writing a form's user interface
        2. 4.10.1.2 Implementing the server-side processing for a form
        3. 4.10.1.3 Configuring a form to communicate with a server
        4. 4.10.1.4 Client-side form validation
        5. 4.10.1.5 Enabling client-side automatic filling of form controls
        6. 4.10.1.6 Improving the user experience on mobile devices
        7. 4.10.1.7 The difference between the field type, the autofill field name, and the input modality
        8. 4.10.1.8 Date, time, and number formats
      2. 4.10.2 Categories
      3. 4.10.3 The form element
      4. 4.10.4 The label element
      5. 4.10.5 The input element
        1. 4.10.5.1 States of the type attribute
          1. 4.10.5.1.1 Hidden state (type=hidden)
          2. 4.10.5.1.2 Text (type=text) state and Search state (type=search)
          3. 4.10.5.1.3 Telephone state (type=tel)
          4. 4.10.5.1.4 URL state (type=url)
          5. 4.10.5.1.5 Email state (type=email)
          6. 4.10.5.1.6 Password state (type=password)
          7. 4.10.5.1.7 Date state (type=date)
          8. 4.10.5.1.8 Month state (type=month)
          9. 4.10.5.1.9 Week state (type=week)
          10. 4.10.5.1.10 Time state (type=time)
          11. 4.10.5.1.11 Local Date and Time state (type=datetime-local)
          12. 4.10.5.1.12 Number state (type=number)
          13. 4.10.5.1.13 Range state (type=range)
          14. 4.10.5.1.14 Color state (type=color)
          15. 4.10.5.1.15 Checkbox state (type=checkbox)
          16. 4.10.5.1.16 Radio Button state (type=radio)
          17. 4.10.5.1.17 File Upload state (type=file)
          18. 4.10.5.1.18 Submit Button state (type=submit)
          19. 4.10.5.1.19 Image Button state (type=image)
          20. 4.10.5.1.20 Reset Button state (type=reset)
          21. 4.10.5.1.21 Button state (type=button)
        2. 4.10.5.2 Common input element attributes
          1. 4.10.5.2.1 The maxlength and minlength attributes
          2. 4.10.5.2.2 The size attribute
          3. 4.10.5.2.3 The readonly attribute
          4. 4.10.5.2.4 The required attribute
          5. 4.10.5.2.5 The multiple attribute
          6. 4.10.5.2.6 The pattern attribute
          7. 4.10.5.2.7 The min and max attributes
          8. 4.10.5.2.8 The step attribute
          9. 4.10.5.2.9 The list attribute
          10. 4.10.5.2.10 The placeholder attribute
        3. 4.10.5.3 Common input element APIs
      6. 4.10.6 The button element
      7. 4.10.7 The select element
      8. 4.10.8 The datalist element
      9. 4.10.9 The optgroup element
      10. 4.10.10 The option element
      11. 4.10.11 The textarea element
      12. 4.10.12 The output element
      13. 4.10.13 The progress element
      14. 4.10.14 The meter element
      15. 4.10.15 The fieldset element
      16. 4.10.16 The legend element
      17. 4.10.17 Form control infrastructure
        1. 4.10.17.1 A form control's value
        2. 4.10.17.2 Mutability
        3. 4.10.17.3 Association of controls and forms
      18. 4.10.18 Attributes common to form controls
        1. 4.10.18.1 Naming form controls: the name attribute
        2. 4.10.18.2 Submitting element directionality: the dirname attribute
        3. 4.10.18.3 Limiting user input length: the maxlength attribute
        4. 4.10.18.4 Setting minimum input length requirements: the minlength attribute
        5. 4.10.18.5 Enabling and disabling form controls: the disabled attribute
        6. 4.10.18.6 Form submission attributes
        7. 4.10.18.7 Autofill
          1. 4.10.18.7.1 Autofilling form controls: the autocomplete attribute
      19. 4.10.19 APIs for the text control selections
      20. 4.10.20 Constraints
        1. 4.10.20.1 The constraint validation API
        2. 4.10.20.2 Security
      21. 4.10.21 Form submission
        1. 4.10.21.1 URL-encoded form data
        2. 4.10.21.2 Multipart form data
        3. 4.10.21.3 Plain text form data
        4. 4.10.21.4 The SubmitEvent interface
        5. 4.10.21.5 The FormDataEvent interface
    11. 4.11 Interactive elements
      1. 4.11.1 The details element
      2. 4.11.2 The summary element
      3. 4.11.3 Commands
        1. 4.11.3.1 Facets
      4. 4.11.4 The dialog element
    12. 4.12 Scripting
      1. 4.12.1 The script element
        1. 4.12.1.1 Scripting languages
        2. 4.12.1.2 Restrictions for contents of script elements
        3. 4.12.1.3 Inline documentation for external scripts
      2. 4.12.2 The noscript element
      3. 4.12.3 The template element
      4. 4.12.4 The slot element
      5. 4.12.5 The canvas element
        1. 4.12.5.1 The 2D rendering context
          1. 4.12.5.1.1 Implementation notes
          2. 4.12.5.1.2 The canvas state
          3. 4.12.5.1.3 Line styles
          4. 4.12.5.1.4 Text styles
          5. 4.12.5.1.5 Building paths
          6. 4.12.5.1.6 Path2D objects
          7. 4.12.5.1.7 Transformations
          8. 4.12.5.1.8 Image sources for 2D rendering contexts
          9. 4.12.5.1.9 Fill and stroke styles
          10. 4.12.5.1.10 Drawing rectangles to the bitmap
          11. 4.12.5.1.11 Drawing text to the bitmap
          12. 4.12.5.1.12 Drawing paths to the canvas
          13. 4.12.5.1.13 Drawing focus rings and scrolling paths into view
          14. 4.12.5.1.14 Drawing images
          15. 4.12.5.1.15 Pixel manipulation
          16. 4.12.5.1.16 Compositing
          17. 4.12.5.1.17 Image smoothing
          18. 4.12.5.1.18 Shadows
          19. 4.12.5.1.19 Filters
          20. 4.12.5.1.20 Working with externally-defined SVG filters
          21. 4.12.5.1.21 Best practices
          22. 4.12.5.1.22 Examples
        2. 4.12.5.2 The ImageBitmap rendering context
          1. 4.12.5.2.1 Introduction
          2. 4.12.5.2.2 The ImageBitmapRenderingContext interface
        3. 4.12.5.3 The OffscreenCanvas interface
          1. 4.12.5.3.1 The offscreen 2D rendering context
        4. 4.12.5.4 Serializing bitmaps to a file
        5. 4.12.5.5 Premultiplied alpha and the 2D rendering context
    13. 4.13 Custom elements
      1. 4.13.1 Introduction
        1. 4.13.1.1 Creating an autonomous custom element
        2. 4.13.1.2 Creating a form-associated custom element
        3. 4.13.1.3 Creating a custom element with default accessible roles, states, and properties
        4. 4.13.1.4 Creating a customized built-in element
        5. 4.13.1.5 Drawbacks of autonomous custom elements
        6. 4.13.1.6 Upgrading elements after their creation
        7. 4.13.1.7 Exposing custom element states
      2. 4.13.2 Requirements for custom element constructors and reactions
      3. 4.13.3 Core concepts
      4. 4.13.4 The CustomElementRegistry interface
      5. 4.13.5 Custom element reactions
      6. 4.13.6 Element internals
        1. 4.13.6.1 Shadow root access
        2. 4.13.6.2 Form-associated custom elements
        3. 4.13.6.3 Accessibility semantics
        4. 4.13.6.4 Custom state pseudo-class
    14. 4.14 Common idioms without dedicated elements
      1. 4.14.1 Breadcrumb navigation
      2. 4.14.2 Tag clouds
      3. 4.14.3 Conversations
      4. 4.14.4 Footnotes
    15. 4.15 Disabled elements
  5. 5 Microdata
    1. 5.1 Introduction
      1. 5.1.1 Overview
      2. 5.1.2 The basic syntax
      3. 5.1.3 Typed items
      4. 5.1.4 Global identifiers for items
      5. 5.1.5 Selecting names when defining vocabularies
    2. 5.2 Encoding microdata
      1. 5.2.1 The microdata model
      2. 5.2.2 Items
      3. 5.2.3 Names: the itemprop attribute
      4. 5.2.4 Values
      5. 5.2.5 Microdata and other namespaces
    3. 5.3 Sample microdata vocabularies
      1. 5.3.1 vCard
        1. 5.3.1.1 Conversion to vCard
        2. 5.3.1.2 Examples
      2. 5.3.2 vEvent
        1. 5.3.2.1 Conversion to iCalendar
        2. 5.3.2.2 Examples
      3. 5.3.3 Licensing works
        1. 5.3.3.1 Examples
  6. 6 User interaction
    1. 6.1 The hidden attribute
    2. 6.2 Page visibility
      1. 6.2.1 The VisibilityStateEntry interface
    3. 6.3 Inert subtrees
      1. 6.3.1 Modal dialogs and inert subtrees
      2. 6.3.2 The inert attribute
    4. 6.4 Tracking user activation
      1. 6.4.1 The UserActivation interface
    5. 6.5 Activation behavior of elements
      1. 6.5.1 The ToggleEvent interface
    6. 6.6 Focus
      1. 6.6.1 Introduction
      2. 6.6.2 Data model
      3. 6.6.3 The tabindex attribute
      4. 6.6.4 Focus management APIs
      5. 6.6.5 The autofocus attribute
    7. 6.7 Assigning keyboard shortcuts
      1. 6.7.1 Introduction
      2. 6.7.2 The accesskey attribute
    8. 6.8 Editing
      1. 6.8.1 Making document regions editable: The contenteditable content attribute
      2. 6.8.2 Making entire documents editable: the designMode getter and setter
      3. 6.8.3 Best practices for in-page editors
      4. 6.8.4 Spelling and grammar checking
      5. 6.8.5 Writing suggestions
      6. 6.8.6 Autocapitalization
      7. 6.8.7 Input modalities: the inputmode attribute
      8. 6.8.8 Input modalities: the enterkeyhint attribute
    9. 6.9 Find-in-page
      1. 6.9.1 Introduction
      2. 6.9.2 Interaction with details and hidden=until-found
      3. 6.9.3 Interaction with selection
    10. 6.10 Close requests and close watchers
      1. 6.10.1 Close requests
      2. 6.10.2 The CloseWatcher interface
    11. 6.11 Drag and drop
      1. 6.11.1 Introduction
      2. 6.11.2 The drag data store
      3. 6.11.3 The DataTransfer interface
        1. 6.11.3.1 The DataTransferItemList interface
        2. 6.11.3.2 The DataTransferItem interface
      4. 6.11.4 The DragEvent interface
      5. 6.11.5 Events summary
      6. 6.11.6 The draggable attribute
    12. 6.12 The popover attribute
      1. 6.12.1 The popover target attributes
      2. 6.12.2 Popover light dismiss
  7. 7 Loading web pages
    1. 7.1 Supporting concepts
      1. 7.1.1 Origins
        1. 7.1.1.1 Sites
        2. 7.1.1.2 Relaxing the same-origin restriction
      2. 7.1.2 Origin-keyed agent clusters
      3. 7.1.3 Cross-origin opener policies
        1. 7.1.3.1 The headers
      4. 7.1.4 Cross-origin embedder policies
        1. 7.1.4.1 The headers
      5. 7.1.5 Sandboxing
    2. 7.2 APIs related to navigation and session history
      1. 7.2.1 The Window object
        1. 7.2.1.1 Opening and closing windows
        2. 7.2.1.2 Indexed access on the Window object
        3. 7.2.1.3 Named access on the Window object
        4. 7.2.1.4 Accessing related windows
        5. 7.2.1.5 Historical browser interface element APIs
      2. 7.2.2 The WindowProxy exotic object
      3. 7.2.3 The Location interface
      4. 7.2.4 The History interface
      5. 7.2.5 The navigation API
        1. 7.2.5.1 Introduction
        2. 7.2.5.2 The Navigation interface
        3. 7.2.5.3 Core infrastructure
        4. 7.2.5.4 The NavigationHistoryEntry interface
        5. 7.2.5.5 The history entry list
        6. 7.2.5.6 Initiating navigations
        7. 7.2.5.7 Ongoing navigation tracking
        8. 7.2.5.8 The NavigationActivation interface
        9. 7.2.5.9 The navigate event
          1. 7.2.5.9.1 The NavigateEvent interface
          2. 7.2.5.9.2 The NavigationDestination interface
      6. 7.2.6 Event interfaces
        1. 7.2.6.1 The NavigationCurrentEntryChangeEvent interface
        2. 7.2.6.2 The PopStateEvent interface
        3. 7.2.6.3 The HashChangeEvent interface
        4. 7.2.6.4 The PageSwapEvent interface
        5. 7.2.6.5 The PageRevealEvent interface
        6. 7.2.6.6 The PageTransitionEvent interface
        7. 7.2.6.7 The BeforeUnloadEvent interface
      7. 7.2.7 The NotRestoredReasons interface
    3. 7.3 Infrastructure for sequences of documents
      1. 7.3.1 Navigables
        1. 7.3.1.1 Traversable navigables
        2. 7.3.1.2 Top-level traversables
        3. 7.3.1.3 Child navigables
        4. 7.3.1.4 Jake diagrams
        5. 7.3.1.5 Related navigable collections
        6. 7.3.1.6 Navigable destruction
        7. 7.3.1.7 Navigable target names
      2. 7.3.2 Browsing contexts
        1. 7.3.2.1 Creating browsing contexts
        2. 7.3.2.2 Related browsing contexts
        3. 7.3.2.3 Groupings of browsing contexts
      3. 7.3.3 Fully active documents
    4. 7.4 Navigation and session history
      1. 7.4.1 Session history
        1. 7.4.1.1 Session history entries
        2. 7.4.1.2 Document state
        3. 7.4.1.3 Centralized modifications of session history
        4. 7.4.1.4 Low-level operations on session history
      2. 7.4.2 Navigation
        1. 7.4.2.1 Supporting concepts
        2. 7.4.2.2 Beginning navigation
        3. 7.4.2.3 Ending navigation
          1. 7.4.2.3.1 The usual cross-document navigation case
          2. 7.4.2.3.2 The javascript: URL special case
          3. 7.4.2.3.3 Fragment navigations
          4. 7.4.2.3.4 Non-fetch schemes and external software
        4. 7.4.2.4 Preventing navigation
        5. 7.4.2.5 Aborting navigation
      3. 7.4.3 Reloading and traversing
      4. 7.4.4 Non-fragment synchronous "navigations"
      5. 7.4.5 Populating a session history entry
      6. 7.4.6 Applying the history step
        1. 7.4.6.1 Updating the traversable
        2. 7.4.6.2 Updating the document
        3. 7.4.6.3 Revealing the document
        4. 7.4.6.4 Scrolling to a fragment
        5. 7.4.6.5 Persisted history entry state
    5. 7.5 Document lifecycle
      1. 7.5.1 Shared document creation infrastructure
      2. 7.5.2 Loading HTML documents
      3. 7.5.3 Loading XML documents
      4. 7.5.4 Loading text documents
      5. 7.5.5 Loading multipart/x-mixed-replace documents
      6. 7.5.6 Loading media documents
      7. 7.5.7 Loading a document for inline content that doesn't have a DOM
      8. 7.5.8 Finishing the loading process
      9. 7.5.9 Unloading documents
      10. 7.5.10 Destroying documents
      11. 7.5.11 Aborting a document load
    6. 7.6 The `X-Frame-Options` header
    7. 7.7 The `Refresh` header
    8. 7.8 Browser user interface considerations
  8. 8 Web application APIs
    1. 8.1 Scripting
      1. 8.1.1 Introduction
      2. 8.1.2 Agents and agent clusters
        1. 8.1.2.1 Integration with the JavaScript agent formalism
        2. 8.1.2.2 Integration with the JavaScript agent cluster formalism
      3. 8.1.3 Script processing model
        1. 8.1.3.1 Runtime script errors
        2. 8.1.3.2 Unhandled promise rejections
      4. 8.1.4 Module specifier resolution
        1. 8.1.4.1 The resolution algorithm
        2. 8.1.4.2 Import maps
        3. 8.1.4.3 Module-related host hooks
      5. 8.1.5 Event loops
      6. 8.1.6 Events
        1. 8.1.6.1 Event handlers
        2. 8.1.6.2 Event handlers on elements, Document objects, and Window objects
    2. 8.2 The WindowOrWorkerGlobalScope mixin
    3. 8.3 Base64 utility methods
    4. 8.4 Dynamic markup insertion
      1. 8.4.1 Opening the input stream
      2. 8.4.2 Closing the input stream
      3. 8.4.3 document.write()
      4. 8.4.4 document.writeln()
    5. 8.5 DOM parsing
      1. 8.5.1 The DOMParser interface
      2. 8.5.2 Unsafe HTML parsing methods
    6. 8.6 Timers
    7. 8.7 Microtask queuing
    8. 8.8 User prompts
      1. 8.8.1 Simple dialogs
      2. 8.8.2 Printing
    9. 8.9 System state and capabilities
      1. 8.9.1 The Navigator object
        1. 8.9.1.1 Client identification
        2. 8.9.1.2 Language preferences
        3. 8.9.1.3 Browser state
        4. 8.9.1.4 Custom scheme handlers: the registerProtocolHandler() method
        5. 8.9.1.5 Cookies
        6. 8.9.1.6 PDF viewing support
    10. 8.10 Images
    11. 8.11 Animation frames
  9. 9 Communication
    1. 9.1 The MessageEvent interface
    2. 9.2 Server-sent events
      1. 9.2.1 Introduction
      2. 9.2.2 The EventSource interface
      3. 9.2.3 The `Last-Event-ID` header
      4. 9.2.4 The event stream format
      5. 9.2.5 Authoring notes
    3. 9.3 Cross-document messaging
      1. 9.3.1 Introduction
      2. 9.3.2 Security
      3. 9.3.3 Posting messages
    4. 9.4 Channel messaging
      1. 9.4.1 Introduction
        1. 9.4.1.1 Examples
        2. 9.4.1.2 Ports as the basis of an object-capability model on the web
        3. 9.4.1.3 Ports as the basis of abstracting out service implementations
      2. 9.4.2 Message channels
      3. 9.4.3 Message ports
      4. 9.4.4 Ports and garbage collection
    5. 9.5 Broadcasting to other browsing contexts
  10. 10 Web workers
    1. 10.1 Introduction
      1. 10.1.1 Scope
      2. 10.1.2 Examples
        1. 10.1.2.1 A background number-crunching worker
        2. 10.1.2.2 Using a JavaScript module as a worker
        3. 10.1.2.3 Shared workers introduction
        4. 10.1.2.4 Shared state using a shared worker
        5. 10.1.2.5 Delegation
        6. 10.1.2.6 Providing libraries
      3. 10.1.3 Tutorials
        1. 10.1.3.1 Creating a dedicated worker
        2. 10.1.3.2 Communicating with a dedicated worker
        3. 10.1.3.3 Shared workers
    2. 10.2 Infrastructure
      1. 10.2.1 The global scope
        1. 10.2.1.1 The WorkerGlobalScope common interface
        2. 10.2.1.2 Dedicated workers and the DedicatedWorkerGlobalScope interface
        3. 10.2.1.3 Shared workers and the SharedWorkerGlobalScope interface
      2. 10.2.2 The event loop
      3. 10.2.3 Runtime script errors
      4. 10.2.4 Creating workers
        1. 10.2.4.1 Properties present on both Worker and SharedWorker
        2. 10.2.4.2 Dedicated workers and the Worker interface
        3. 10.2.4.3 Shared workers and the SharedWorker interface
      5. 10.2.5 Concurrent hardware capabilities
    3. 10.3 APIs available to workers
      1. 10.3.1 The WorkerNavigator interface
      2. 10.3.2 The WorkerLocation interface
  11. 11 Worklets
    1. 11.1 Introduction
      1. 11.1.1 Motivations
      2. 11.1.2 Code idempotence
      3. 11.1.3 Speculative evaluation
    2. 11.2 Examples
      1. 11.2.1 Loading scripts
      2. 11.2.2 Registering a class and invoking its methods
    3. 11.3 Infrastructure
      1. 11.3.1 The global scope
        1. 11.3.1.1 Agents and event loops
      2. 11.3.2 The Worklet class
      3. 11.3.3 The worklet's lifetime
  12. 12 Web storage
    1. 12.1 Introduction
    2. 12.2 The API
      1. 12.2.1 The Storage interface
      2. 12.2.2 The sessionStorage getter
      3. 12.2.3 The localStorage getter
      4. 12.2.4 The StorageEvent interface
    3. 12.3 Privacy
      1. 12.3.1 User tracking
    4. 12.4 Security
      1. 12.4.1 DNS spoofing attacks
      2. 12.4.2 Cross-directory attacks
  13. 13 The HTML syntax
    1. 13.1 Writing HTML documents
      1. 13.1.1 The DOCTYPE
      2. 13.1.2 Elements
        1. 13.1.2.1 Start tags
        2. 13.1.2.2 End tags
        3. 13.1.2.3 Attributes
        4. 13.1.2.4 Optional tags
        5. 13.1.2.5 Restrictions on content models
        6. 13.1.2.6 Restrictions on the contents of raw text and escapable raw text elements
      3. 13.1.3 Text
        1. 13.1.3.1 Newlines
      4. 13.1.4 Character references
      5. 13.1.5 CDATA sections
      6. 13.1.6 Comments
    2. 13.2 Named character references
  14. 14 The XML syntax
  15. 15 Obsolete features
    1. 15.1 Obsolete but conforming features
    2. 15.2 Non-conforming features
  16. Index
    1. Elements
    2. Element content categories
    3. Attributes
    4. Element interfaces
    5. All interfaces
    6. Events
    7. HTTP headers
    8. MIME types
  17. References
  18. Acknowledgments
  19. Intellectual property rights

About this specification

This specification is like no other — it has been processed with you, the humble web developer, in mind.

The focus of this specification is readability and ease of access. Unlike the full HTML Standard, this "developer's edition" removes information that only browser vendors need know. It is automatically produced from the full specification by our build tooling, and thus always in sync with the latest developments in HTML.

To read about its conception, construction, and future, read the original press release, and the blog post about its relaunch.

Finally, feel free to contribute on GitHub to make this edition better for everyone!