W3C

HTML 5.1

W3C Working Draft 09 July 2015

This Version:
http://www.w3.org/TR/2015/WD-html51-20150709/
Latest Published Version:
http://www.w3.org/TR/html51/
Previous Version:
http://www.w3.org/TR/2015/WD-html51-20150506/
Editors:
WHATWG:
Ian Hickson, Google, Inc.
W3C:
Robin Berjon, W3C
Steve Faulkner, The Paciello Group
Travis Leithead, Microsoft
Erika Doyle Navara, Microsoft
Edward O'Connor, Apple Inc.
For the img and picture elements:
Tab Atkins (Google)
(Opera Software)
Yoav Weiss
Marcos Cáceres (Mozilla)
Mat Marquis

Abstract

This specification defines the 5th major version, first minor revision of the core language of the World Wide Web: the Hypertext Markup Language (HTML). In this version, new features continue to be introduced to help Web application authors, new elements continue to be introduced based on research into prevailing authoring practices, and special attention continues to be given to defining clear conformance criteria for user agents in an effort to improve interoperability.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

The management and production of this document follows a relatively complex setup. Details are provided as part of the introduction.

This document was published by the HTML Working Group as a Working Draft. If you wish to make comments regarding this document, please send them to public-html@w3.org (subscribe, archives). All comments are welcome.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

This document is governed by the 1 August 2014 W3C Process Document.

Table of Contents

  1. 1 Introduction
  2. 2 Common infrastructure
  3. 3 Semantics, structure, and APIs of HTML documents
  4. 4 The elements of HTML
  5. 5 User interaction
  6. 6 Loading Web pages
  7. 7 Web application APIs
  8. 8 The HTML syntax
  9. 9 The XHTML syntax
  10. 10 Rendering
  11. 11 Obsolete features
  12. 12 IANA considerations
  13. Index
  14. References
  15. Acknowledgements

Full Table of Contents

  1. 1 Introduction
    1. 1.1 Background
    2. 1.2 Audience
    3. 1.3 Scope
    4. 1.4 History
    5. 1.5 Design notes
      1. 1.5.1 Serialisability of script execution
      2. 1.5.2 Compliance with other specifications
      3. 1.5.3 Extensibility
    6. 1.6 HTML vs XHTML
    7. 1.7 Structure of this specification
      1. 1.7.1 How to read this specification
      2. 1.7.2 Typographic conventions
    8. 1.8 Privacy concerns
      1. 1.8.1 Cross-site communication
    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
    12. 1.12 About this document
  2. 2 Common infrastructure
    1. 2.1 Terminology
      1. 2.1.1 Resources
      2. 2.1.2 XML
      3. 2.1.3 DOM trees
      4. 2.1.4 Scripting
      5. 2.1.5 Plugins
      6. 2.1.6 Character encodings
    2. 2.2 Conformance requirements
      1. 2.2.1 Conformance classes
      2. 2.2.2 Dependencies
      3. 2.2.3 Extensibility
      4. 2.2.4 Interactions with XPath and XSLT
    3. 2.3 Case-sensitivity and string comparison
    4. 2.4 Common microsyntaxes
      1. 2.4.1 Common parser idioms
      2. 2.4.2 Boolean attributes
      3. 2.4.3 Keywords and enumerated attributes
      4. 2.4.4 Numbers
        1. 2.4.4.1 Signed integers
        2. 2.4.4.2 Non-negative integers
        3. 2.4.4.3 Floating-point numbers
        4. 2.4.4.4 Percentages and lengths
        5. 2.4.4.5 Lists of integers
        6. 2.4.4.6 Lists of dimensions
      5. 2.4.5 Dates and times
        1. 2.4.5.1 Months
        2. 2.4.5.2 Dates
        3. 2.4.5.3 Yearless dates
        4. 2.4.5.4 Times
        5. 2.4.5.5 Floating dates and times
        6. 2.4.5.6 Time zones
        7. 2.4.5.7 Global dates and times
        8. 2.4.5.8 Weeks
        9. 2.4.5.9 Durations
        10. 2.4.5.10 Vaguer moments in time
      6. 2.4.6 Colours
      7. 2.4.7 Space-separated tokens
      8. 2.4.8 Comma-separated tokens
      9. 2.4.9 References
      10. 2.4.10 Media queries
    5. 2.5 URLs
      1. 2.5.1 Terminology
      2. 2.5.2 Resolving URLs
      3. 2.5.3 Dynamic changes to base URLs
    6. 2.6 Fetching resources
      1. 2.6.1 Terminology
      2. 2.6.2 Processing model
      3. 2.6.3 Encrypted HTTP and related security concerns
      4. 2.6.4 Determining the type of a resource
      5. 2.6.5 Extracting character encodings from meta elements
      6. 2.6.6 CORS settings attributes
      7. 2.6.7 CORS-enabled fetch
    7. 2.7 Common DOM interfaces
      1. 2.7.1 Reflecting content attributes in IDL attributes
      2. 2.7.2 Collections
        1. 2.7.2.1 The HTMLAllCollection interface
        2. 2.7.2.2 The HTMLFormControlsCollection interface
        3. 2.7.2.3 The HTMLOptionsCollection interface
        4. 2.7.2.4 The HTMLPropertiesCollection interface
      3. 2.7.3 The DOMStringMap interface
      4. 2.7.4 DOMElementMap
      5. 2.7.5 Transferable objects
      6. 2.7.6 Safe passing of structured data
      7. 2.7.7 Callbacks
      8. 2.7.8 Garbage collection
    8. 2.8 Namespaces
  3. 3 Semantics, structure, and APIs of HTML documents
    1. 3.1 Documents
      1. 3.1.1 The Document object
      2. 3.1.2 Resource metadata management
      3. 3.1.3 DOM tree accessors
      4. 3.1.4 Loading XML documents
    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 id attribute
        2. 3.2.5.2 The title attribute
        3. 3.2.5.3 The lang and xml:lang attributes
        4. 3.2.5.4 The translate attribute
        5. 3.2.5.5 The xml:base attribute (XML only)
        6. 3.2.5.6 The dir attribute
        7. 3.2.5.7 The class attribute
        8. 3.2.5.8 The style attribute
        9. 3.2.5.9 Embedding custom non-visible data with the data-* attributes
      6. 3.2.6 Requirements relating to the bidirectional algorithm
        1. 3.2.6.1 Authoring conformance criteria for bidirectional-algorithm formatting characters
        2. 3.2.6.2 User agent conformance criteria
      7. 3.2.7 WAI-ARIA and HTML Accessibility API Mappings
        1. 3.2.7.1 ARIA Authoring Requirements
        2. 3.2.7.2 Conformance Checker Implementation Requirements
        3. 3.2.7.3 User Agent Implementation Requirements
          1. 3.2.7.3.1 ARIA Role Attribute
          2. 3.2.7.3.2 State and Property Attributes
      8. 3.2.8 ARIA roles, states and properties
  4. 4 The elements of HTML
    1. 4.1 The root 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
      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 Other pragma directives
        5. 4.2.5.5 Specifying the document's character encoding
      6. 4.2.6 The style element
      7. 4.2.7 Interactions of styling and scripting
    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 header element
      8. 4.3.8 The footer element
      9. 4.3.9 The address element
      10. 4.3.10 Headings and sections
        1. 4.3.10.1 Creating an outline
        2. 4.3.10.2 Sample outlines
        3. 4.3.10.3 Exposing outlines to users
      11. 4.3.11 Usage summary
        1. 4.3.11.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 li element
      8. 4.4.8 The dl element
      9. 4.4.9 The dt element
      10. 4.4.10 The dd element
      11. 4.4.11 The figure element
      12. 4.4.12 The figcaption element
      13. 4.4.13 The main element
      14. 4.4.14 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 rb element
      12. 4.5.12 The rt element
      13. 4.5.13 The rtc element
      14. 4.5.14 The rp element
      15. 4.5.15 The data element
      16. 4.5.16 The time element
      17. 4.5.17 The code element
      18. 4.5.18 The var element
      19. 4.5.19 The samp element
      20. 4.5.20 The kbd element
      21. 4.5.21 The sub and sup elements
      22. 4.5.22 The i element
      23. 4.5.23 The b element
      24. 4.5.24 The u element
      25. 4.5.25 The mark element
      26. 4.5.26 The bdi element
      27. 4.5.27 The bdo element
      28. 4.5.28 The span element
      29. 4.5.29 The br element
      30. 4.5.30 The wbr element
      31. 4.5.31 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 Following hyperlinks
      4. 4.6.4 Downloading resources
      5. 4.6.5 Link types
        1. 4.6.5.1 Link type "alternate"
        2. 4.6.5.2 Link type "author"
        3. 4.6.5.3 Link type "bookmark"
        4. 4.6.5.4 Link type "help"
        5. 4.6.5.5 Link type "icon"
        6. 4.6.5.6 Link type "license"
        7. 4.6.5.7 Link type "nofollow"
        8. 4.6.5.8 Link type "noreferrer"
        9. 4.6.5.9 Link type "prefetch"
        10. 4.6.5.10 Link type "search"
        11. 4.6.5.11 Link type "stylesheet"
        12. 4.6.5.12 Link type "tag"
        13. 4.6.5.13 Sequential link types
          1. 4.6.5.13.1 Link type "next"
          2. 4.6.5.13.2 Link type "prev"
        14. 4.6.5.14 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 Introduction
        1. 4.8.1.1 Adaptive images
      2. 4.8.2 Dependencies
      3. 4.8.3 The picture element
      4. 4.8.4 The source element when used with the picture element
      5. 4.8.5 The img element
        1. 4.8.5.1 Requirements for providing text to act as an alternative for images
          1. 4.8.5.1.1 Examples of scenarios where users benefit from text alternatives for images
          2. 4.8.5.1.2 General guidelines
          3. 4.8.5.1.3 A link or button containing nothing but an image
          4. 4.8.5.1.4 Graphical Representations: Charts, diagrams, graphs, maps, illustrations
          5. 4.8.5.1.5 Images of text
          6. 4.8.5.1.6 Images that include text
          7. 4.8.5.1.7 Images that enhance the themes or subject matter of the page content
          8. 4.8.5.1.8 A graphical representation of some of the surrounding text
          9. 4.8.5.1.9 A purely decorative image that doesn't add any information
          10. 4.8.5.1.10 Inline images
          11. 4.8.5.1.11 A group of images that form a single larger picture with no links
          12. 4.8.5.1.12 Image maps
          13. 4.8.5.1.13 A group of images that form a single larger picture with links
          14. 4.8.5.1.14 Images of Pictures
          15. 4.8.5.1.15 Webcam images
          16. 4.8.5.1.16 When a text alternative is not available at the time of publication
          17. 4.8.5.1.17 An image not intended for the user
          18. 4.8.5.1.18 Icon Images
          19. 4.8.5.1.19 Logos, insignia, flags, or emblems
          20. 4.8.5.1.20 CAPTCHA Images
          21. 4.8.5.1.21 An image in a picture element
          22. 4.8.5.1.22 Guidance for markup generators
          23. 4.8.5.1.23 Guidance for conformance checkers
      6. 4.8.6 The iframe element
      7. 4.8.7 The embed element
      8. 4.8.8 The object element
      9. 4.8.9 The param element
      10. 4.8.10 The video element
      11. 4.8.11 The audio element
      12. 4.8.12 The source element
      13. 4.8.13 The track element
      14. 4.8.14 Media elements
        1. 4.8.14.1 Error codes
        2. 4.8.14.2 Location of the media resource
        3. 4.8.14.3 MIME types
        4. 4.8.14.4 Network states
        5. 4.8.14.5 Loading the media resource
        6. 4.8.14.6 Offsets into the media resource
        7. 4.8.14.7 Ready states
        8. 4.8.14.8 Playing the media resource
        9. 4.8.14.9 Seeking
        10. 4.8.14.10 Media resources with multiple media tracks
          1. 4.8.14.10.1 AudioTrackList and VideoTrackList objects
          2. 4.8.14.10.2 Selecting specific audio and video tracks declaratively
        11. 4.8.14.11 Synchronising multiple media elements
          1. 4.8.14.11.1 Introduction
          2. 4.8.14.11.2 Media controllers
          3. 4.8.14.11.3 Assigning a media controller declaratively
        12. 4.8.14.12 Timed text tracks
          1. 4.8.14.12.1 Text track model
          2. 4.8.14.12.2 Sourcing in-band text tracks
          3. 4.8.14.12.3 Sourcing out-of-band text tracks
          4. 4.8.14.12.4 Guidelines for exposing cues in various formats as text track cues
          5. 4.8.14.12.5 Text track API
          6. 4.8.14.12.6 Text tracks exposing in-band metadata
          7. 4.8.14.12.7 Text tracks describing chapters
          8. 4.8.14.12.8 Event handlers for objects of the text track APIs
          9. 4.8.14.12.9 Best practices for metadata text tracks
        13. 4.8.14.13 User interface
        14. 4.8.14.14 Time ranges
        15. 4.8.14.15 The TrackEvent interface
        16. 4.8.14.16 Event summary
        17. 4.8.14.17 Security and privacy considerations
        18. 4.8.14.18 Best practices for authors using media elements
        19. 4.8.14.19 Best practices for implementors of media elements
      15. 4.8.15 The map element
      16. 4.8.16 The area element
      17. 4.8.17 Image maps
        1. 4.8.17.1 Authoring
        2. 4.8.17.2 Processing model
      18. 4.8.18 MathML
      19. 4.8.19 SVG
      20. 4.8.20 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 Processing model
        1. 4.9.12.1 Forming a table
        2. 4.9.12.2 Forming relationships between data cells and header cells
      13. 4.9.13 Table sorting model
      14. 4.9.14 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 E-mail state (type=email)
          6. 4.10.5.1.6 Password state (type=password)
          7. 4.10.5.1.7 Date and Time state (type=datetime)
          8. 4.10.5.1.8 Date state (type=date)
          9. 4.10.5.1.9 Month state (type=month)
          10. 4.10.5.1.10 Week state (type=week)
          11. 4.10.5.1.11 Time state (type=time)
          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 Colour 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 Implemention notes regarding localization of form controls
        3. 4.10.5.3 Common input element attributes
          1. 4.10.5.3.1 The maxlength and minlength attributes
          2. 4.10.5.3.2 The size attribute
          3. 4.10.5.3.3 The readonly attribute
          4. 4.10.5.3.4 The required attribute
          5. 4.10.5.3.5 The multiple attribute
          6. 4.10.5.3.6 The pattern attribute
          7. 4.10.5.3.7 The min and max attributes
          8. 4.10.5.3.8 The step attribute
          9. 4.10.5.3.9 The list attribute
          10. 4.10.5.3.10 The placeholder attribute
        4. 4.10.5.4 Common input element APIs
        5. 4.10.5.5 Common event behaviours
      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 keygen element
      13. 4.10.13 The output element
      14. 4.10.14 The progress element
      15. 4.10.15 The meter element
      16. 4.10.16 The fieldset element
      17. 4.10.17 The legend element
      18. 4.10.18 Form control infrastructure
        1. 4.10.18.1 A form control's value
        2. 4.10.18.2 Mutability
        3. 4.10.18.3 Association of controls and forms
      19. 4.10.19 Attributes common to form controls
        1. 4.10.19.1 Naming form controls: the name attribute
        2. 4.10.19.2 Submitting element directionality: the dirname attribute
        3. 4.10.19.3 Limiting user input length: the maxlength attribute
        4. 4.10.19.4 Setting minimum input length requirements: the minlength attribute
        5. 4.10.19.5 Enabling and disabling form controls: the disabled attribute
        6. 4.10.19.6 Form submission
          1. 4.10.19.6.1 Autofocusing a form control: the autofocus attribute
        7. 4.10.19.7 Input modalities: the inputmode attribute
        8. 4.10.19.8 Autofill
          1. 4.10.19.8.1 Autofilling form controls: the autocomplete attribute
          2. 4.10.19.8.2 Processing model
          3. 4.10.19.8.3 User interface for bulk autofill
          4. 4.10.19.8.4 The AutocompleteErrorEvent interface
      20. 4.10.20 APIs for the text field selections
      21. 4.10.21 Constraints
        1. 4.10.21.1 Definitions
        2. 4.10.21.2 Constraint validation
        3. 4.10.21.3 The constraint validation API
        4. 4.10.21.4 Security
      22. 4.10.22 Form submission
        1. 4.10.22.1 Introduction
        2. 4.10.22.2 Implicit submission
        3. 4.10.22.3 Form submission algorithm
        4. 4.10.22.4 Constructing the form data set
        5. 4.10.22.5 Selecting a form submission encoding
        6. 4.10.22.6 URL-encoded form data
        7. 4.10.22.7 Multipart form data
        8. 4.10.22.8 Plain text form data
      23. 4.10.23 Resetting a form
    11. 4.11 Interactive elements
      1. 4.11.1 The details element
      2. 4.11.2 The summary element
      3. 4.11.3 The menu element
      4. 4.11.4 The menuitem element
      5. 4.11.5 Context menus
        1. 4.11.5.1 Declaring a context menu
        2. 4.11.5.2 Processing model
        3. 4.11.5.3 The RelatedEvent interfaces
      6. 4.11.6 Commands
        1. 4.11.6.1 Facets
        2. 4.11.6.2 Using the a element to define a command
        3. 4.11.6.3 Using the button element to define a command
        4. 4.11.6.4 Using the input element to define a command
        5. 4.11.6.5 Using the option element to define a command
        6. 4.11.6.6 Using the menuitem element to define a command
        7. 4.11.6.7 Using the command attribute on menuitem elements to define a command indirectly
        8. 4.11.6.8 Using the accesskey attribute on a label element to define a command
        9. 4.11.6.9 Using the accesskey attribute on a legend element to define a command
        10. 4.11.6.10 Using the accesskey attribute to define a command on other elements
      7. 4.11.7 The dialog element
        1. 4.11.7.1 Anchor points
    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
        4. 4.12.1.4 Interaction of script elements and XSLT
      2. 4.12.2 The noscript element
      3. 4.12.3 The template element
        1. 4.12.3.1 Interaction of template elements with XSLT and XPath
      4. 4.12.4 The canvas element
        1. 4.12.4.1 Proxying canvases to workers
        2. 4.12.4.2 Colour spaces and colour correction
        3. 4.12.4.3 Serialising bitmaps to a file
        4. 4.12.4.4 Security with canvas elements
    13. 4.13 Common idioms without dedicated elements
      1. 4.13.1 Subheadings, subtitles, alternative titles and taglines
      2. 4.13.2 Bread crumb navigation
      3. 4.13.3 Tag clouds
      4. 4.13.4 Conversations
      5. 4.13.5 Footnotes
    14. 4.14 Disabled elements
    15. 4.15 Matching HTML elements using selectors
      1. 4.15.1 Case-sensitivity
      2. 4.15.2 Pseudo-classes
  5. 5 User interaction
    1. 5.1 The hidden attribute
    2. 5.2 Inert subtrees
    3. 5.3 Activation
    4. 5.4 Focus
      1. 5.4.1 Introduction
      2. 5.4.2 Data model
      3. 5.4.3 The tabindex attribute
      4. 5.4.4 Processing model
      5. 5.4.5 Sequential focus navigation
      6. 5.4.6 Focus management APIs
    5. 5.5 Assigning keyboard shortcuts
      1. 5.5.1 Introduction
      2. 5.5.2 The accesskey attribute
      3. 5.5.3 Processing model
    6. 5.6 Editing
      1. 5.6.1 Making document regions editable: The contenteditable content attribute
      2. 5.6.2 Making entire documents editable: The designMode IDL attribute
      3. 5.6.3 Best practices for in-page editors
      4. 5.6.4 Editing APIs
      5. 5.6.5 Spelling and grammar checking
    7. 5.7 Drag and drop
      1. 5.7.1 Introduction
      2. 5.7.2 The drag data store
      3. 5.7.3 The DataTransfer interface
        1. 5.7.3.1 The DataTransferItemList interface
        2. 5.7.3.2 The DataTransferItem interface
      4. 5.7.4 The DragEvent interface
      5. 5.7.5 Drag-and-drop processing model
      6. 5.7.6 Events summary
      7. 5.7.7 The draggable attribute
      8. 5.7.8 The dropzone attribute
      9. 5.7.9 Security risks in the drag-and-drop model
  6. 6 Loading Web pages
    1. 6.1 Browsing contexts
      1. 6.1.1 Nested browsing contexts
        1. 6.1.1.1 Navigating nested browsing contexts in the DOM
      2. 6.1.2 Auxiliary browsing contexts
        1. 6.1.2.1 Navigating auxiliary browsing contexts in the DOM
      3. 6.1.3 Secondary browsing contexts
      4. 6.1.4 Security
      5. 6.1.5 Groupings of browsing contexts
      6. 6.1.6 Browsing context names
    2. 6.2 The Window object
      1. 6.2.1 Security
      2. 6.2.2 APIs for creating and navigating browsing contexts by name
      3. 6.2.3 Accessing other browsing contexts
      4. 6.2.4 Named access on the Window object
      5. 6.2.5 Garbage collection and browsing contexts
      6. 6.2.6 Closing browsing contexts
      7. 6.2.7 Browser interface elements
      8. 6.2.8 The WindowProxy object
    3. 6.3 Origin
      1. 6.3.1 Relaxing the same-origin restriction
    4. 6.4 Sandboxing
    5. 6.5 Session history and navigation
      1. 6.5.1 The session history of browsing contexts
      2. 6.5.2 The History interface
      3. 6.5.3 The Location interface
        1. 6.5.3.1 Security
      4. 6.5.4 Implementation notes for session history
    6. 6.6 Browsing the Web
      1. 6.6.1 Navigating across documents
      2. 6.6.2 Page load processing model for HTML files
      3. 6.6.3 Page load processing model for XML files
      4. 6.6.4 Page load processing model for text files
      5. 6.6.5 Page load processing model for multipart/x-mixed-replace resources
      6. 6.6.6 Page load processing model for media
      7. 6.6.7 Page load processing model for content that uses plugins
      8. 6.6.8 Page load processing model for inline content that doesn't have a DOM
      9. 6.6.9 Navigating to a fragment identifier
      10. 6.6.10 History traversal
        1. 6.6.10.1 The PopStateEvent interface
        2. 6.6.10.2 The HashChangeEvent interface
        3. 6.6.10.3 The PageTransitionEvent interface
      11. 6.6.11 Unloading documents
        1. 6.6.11.1 The BeforeUnloadEvent interface
      12. 6.6.12 Aborting a document load
    7. 6.7 Offline Web applications
      1. 6.7.1 Introduction
        1. 6.7.1.1 Supporting offline caching for legacy applications
        2. 6.7.1.2 Event summary
      2. 6.7.2 Application caches
      3. 6.7.3 The cache manifest syntax
        1. 6.7.3.1 Some sample manifests
        2. 6.7.3.2 Writing cache manifests
        3. 6.7.3.3 Parsing cache manifests
      4. 6.7.4 Downloading or updating an application cache
      5. 6.7.5 The application cache selection algorithm
      6. 6.7.6 Changes to the networking model
      7. 6.7.7 Expiring application caches
      8. 6.7.8 Disk space
      9. 6.7.9 Security concerns with offline applications caches
      10. 6.7.10 Application cache API
      11. 6.7.11 Browser state
  7. 7 Web application APIs
    1. 7.1 Scripting
      1. 7.1.1 Introduction
      2. 7.1.2 Enabling and disabling scripting
      3. 7.1.3 Processing model
        1. 7.1.3.1 Definitions
        2. 7.1.3.2 Script settings for browsing contexts
        3. 7.1.3.3 Calling scripts
        4. 7.1.3.4 Creating scripts
        5. 7.1.3.5 Killing scripts
        6. 7.1.3.6 Runtime script errors
          1. 7.1.3.6.1 Runtime script errors in documents
          2. 7.1.3.6.2 The ErrorEvent interface
      4. 7.1.4 Event loops
        1. 7.1.4.1 Definitions
        2. 7.1.4.2 Processing model
        3. 7.1.4.3 Generic task sources
      5. 7.1.5 Events
        1. 7.1.5.1 Event handlers
        2. 7.1.5.2 Event handlers on elements, Document objects, and Window objects
          1. 7.1.5.2.1 IDL definitions
        3. 7.1.5.3 Event firing
        4. 7.1.5.4 Events and the Window object
    2. 7.2 Base64 utility methods
    3. 7.3 Dynamic markup insertion
      1. 7.3.1 Opening the input stream
      2. 7.3.2 Closing the input stream
      3. 7.3.3 document.write()
      4. 7.3.4 document.writeln()
    4. 7.4 Timers
    5. 7.5 User prompts
      1. 7.5.1 Simple dialogs
      2. 7.5.2 Printing
      3. 7.5.3 Dialogs implemented using separate documents with showModalDialog()
    6. 7.6 System state and capabilities
      1. 7.6.1 The Navigator object
        1. 7.6.1.1 Client identification
        2. 7.6.1.2 Language preferences
        3. 7.6.1.3 Custom scheme and content handlers: the registerProtocolHandler() and registerContentHandler() methods
          1. 7.6.1.3.1 Security and privacy
          2. 7.6.1.3.2 Sample user interface
        4. 7.6.1.4 Manually releasing the storage mutex
        5. 7.6.1.5 Plugins
      2. 7.6.2 The External interface
    7. 7.7 Images
    8. 7.8 Animation Frames
  8. 8 The HTML syntax
    1. 8.1 Writing HTML documents
      1. 8.1.1 The DOCTYPE
      2. 8.1.2 Elements
        1. 8.1.2.1 Start tags
        2. 8.1.2.2 End tags
        3. 8.1.2.3 Attributes
        4. 8.1.2.4 Optional tags
        5. 8.1.2.5 Restrictions on content models
        6. 8.1.2.6 Restrictions on the contents of raw text and escapable raw text elements
      3. 8.1.3 Text
        1. 8.1.3.1 Newlines
      4. 8.1.4 Character references
      5. 8.1.5 CDATA sections
      6. 8.1.6 Comments
    2. 8.2 Parsing HTML documents
      1. 8.2.1 Overview of the parsing model
      2. 8.2.2 The input byte stream
        1. 8.2.2.1 Parsing with a known character encoding
        2. 8.2.2.2 Determining the character encoding
        3. 8.2.2.3 Character encodings
        4. 8.2.2.4 Changing the encoding while parsing
        5. 8.2.2.5 Preprocessing the input stream
      3. 8.2.3 Parse state
        1. 8.2.3.1 The insertion mode
        2. 8.2.3.2 The stack of open elements
        3. 8.2.3.3 The list of active formatting elements
        4. 8.2.3.4 The element pointers
        5. 8.2.3.5 Other parsing state flags
      4. 8.2.4 Tokenization
        1. 8.2.4.1 Data state
        2. 8.2.4.2 Character reference in data state
        3. 8.2.4.3 RCDATA state
        4. 8.2.4.4 Character reference in RCDATA state
        5. 8.2.4.5 RAWTEXT state
        6. 8.2.4.6 Script data state
        7. 8.2.4.7 PLAINTEXT state
        8. 8.2.4.8 Tag open state
        9. 8.2.4.9 End tag open state
        10. 8.2.4.10 Tag name state
        11. 8.2.4.11 RCDATA less-than sign state
        12. 8.2.4.12 RCDATA end tag open state
        13. 8.2.4.13 RCDATA end tag name state
        14. 8.2.4.14 RAWTEXT less-than sign state
        15. 8.2.4.15 RAWTEXT end tag open state
        16. 8.2.4.16 RAWTEXT end tag name state
        17. 8.2.4.17 Script data less-than sign state
        18. 8.2.4.18 Script data end tag open state
        19. 8.2.4.19 Script data end tag name state
        20. 8.2.4.20 Script data escape start state
        21. 8.2.4.21 Script data escape start dash state
        22. 8.2.4.22 Script data escaped state
        23. 8.2.4.23 Script data escaped dash state
        24. 8.2.4.24 Script data escaped dash dash state
        25. 8.2.4.25 Script data escaped less-than sign state
        26. 8.2.4.26 Script data escaped end tag open state
        27. 8.2.4.27 Script data escaped end tag name state
        28. 8.2.4.28 Script data double escape start state
        29. 8.2.4.29 Script data double escaped state
        30. 8.2.4.30 Script data double escaped dash state
        31. 8.2.4.31 Script data double escaped dash dash state
        32. 8.2.4.32 Script data double escaped less-than sign state
        33. 8.2.4.33 Script data double escape end state
        34. 8.2.4.34 Before attribute name state
        35. 8.2.4.35 Attribute name state
        36. 8.2.4.36 After attribute name state
        37. 8.2.4.37 Before attribute value state
        38. 8.2.4.38 Attribute value (double-quoted) state
        39. 8.2.4.39 Attribute value (single-quoted) state
        40. 8.2.4.40 Attribute value (unquoted) state
        41. 8.2.4.41 Character reference in attribute value state
        42. 8.2.4.42 After attribute value (quoted) state
        43. 8.2.4.43 Self-closing start tag state
        44. 8.2.4.44 Bogus comment state
        45. 8.2.4.45 Markup declaration open state
        46. 8.2.4.46 Comment start state
        47. 8.2.4.47 Comment start dash state
        48. 8.2.4.48 Comment state
        49. 8.2.4.49 Comment end dash state
        50. 8.2.4.50 Comment end state
        51. 8.2.4.51 Comment end bang state
        52. 8.2.4.52 DOCTYPE state
        53. 8.2.4.53 Before DOCTYPE name state
        54. 8.2.4.54 DOCTYPE name state
        55. 8.2.4.55 After DOCTYPE name state
        56. 8.2.4.56 After DOCTYPE public keyword state
        57. 8.2.4.57 Before DOCTYPE public identifier state
        58. 8.2.4.58 DOCTYPE public identifier (double-quoted) state
        59. 8.2.4.59 DOCTYPE public identifier (single-quoted) state
        60. 8.2.4.60 After DOCTYPE public identifier state
        61. 8.2.4.61 Between DOCTYPE public and system identifiers state
        62. 8.2.4.62 After DOCTYPE system keyword state
        63. 8.2.4.63 Before DOCTYPE system identifier state
        64. 8.2.4.64 DOCTYPE system identifier (double-quoted) state
        65. 8.2.4.65 DOCTYPE system identifier (single-quoted) state
        66. 8.2.4.66 After DOCTYPE system identifier state
        67. 8.2.4.67 Bogus DOCTYPE state
        68. 8.2.4.68 CDATA section state
        69. 8.2.4.69 Tokenizing character references
      5. 8.2.5 Tree construction
        1. 8.2.5.1 Creating and inserting nodes
        2. 8.2.5.2 Parsing elements that contain only text
        3. 8.2.5.3 The rules for parsing tokens in HTML content
          1. 8.2.5.3.1 The "initial" insertion mode
          2. 8.2.5.3.2 The "before html" insertion mode
          3. 8.2.5.3.3 The "before head" insertion mode
          4. 8.2.5.3.4 The "in head" insertion mode
          5. 8.2.5.3.5 The "in head noscript" insertion mode
          6. 8.2.5.3.6 The "after head" insertion mode
          7. 8.2.5.3.7 The "in body" insertion mode
          8. 8.2.5.3.8 The "text" insertion mode
          9. 8.2.5.3.9 The "in table" insertion mode
          10. 8.2.5.3.10 The "in table text" insertion mode
          11. 8.2.5.3.11 The "in caption" insertion mode
          12. 8.2.5.3.12 The "in column group" insertion mode
          13. 8.2.5.3.13 The "in table body" insertion mode
          14. 8.2.5.3.14 The "in row" insertion mode
          15. 8.2.5.3.15 The "in cell" insertion mode
          16. 8.2.5.3.16 The "in select" insertion mode
          17. 8.2.5.3.17 The "in select in table" insertion mode
          18. 8.2.5.3.18 The "in template" insertion mode
          19. 8.2.5.3.19 The "after body" insertion mode
          20. 8.2.5.3.20 The "in frameset" insertion mode
          21. 8.2.5.3.21 The "after frameset" insertion mode
          22. 8.2.5.3.22 The "after after body" insertion mode
          23. 8.2.5.3.23 The "after after frameset" insertion mode
        4. 8.2.5.4 The rules for parsing tokens in foreign content
      6. 8.2.6 The end
      7. 8.2.7 Coercing an HTML DOM into an infoset
      8. 8.2.8 An introduction to error handling and strange cases in the parser
        1. 8.2.8.1 Misnested tags: <b><i></b></i>
        2. 8.2.8.2 Misnested tags: <b><p></b></p>
        3. 8.2.8.3 Unexpected markup in tables
        4. 8.2.8.4 Scripts that modify the page as it is being parsed
        5. 8.2.8.5 The execution of scripts that are moving across multiple documents
        6. 8.2.8.6 Unclosed formatting elements
    3. 8.3 Serialising HTML fragments
    4. 8.4 Parsing HTML fragments
    5. 8.5 Named character references
  9. 9 The XHTML syntax
    1. 9.1 Writing XHTML documents
    2. 9.2 Parsing XHTML documents
    3. 9.3 Serialising XHTML fragments
    4. 9.4 Parsing XHTML fragments
  10. 10 Rendering
    1. 10.1 Introduction
    2. 10.2 The CSS user agent style sheet and presentational hints
    3. 10.3 Non-replaced elements
      1. 10.3.1 Hidden elements
      2. 10.3.2 The page
      3. 10.3.3 Flow content
      4. 10.3.4 Phrasing content
      5. 10.3.5 Bidirectional text
      6. 10.3.6 Quotes
      7. 10.3.7 Sections and headings
      8. 10.3.8 Lists
      9. 10.3.9 Tables
      10. 10.3.10 Margin collapsing quirks
      11. 10.3.11 Form controls
      12. 10.3.12 The hr element
      13. 10.3.13 The fieldset and legend elements
    4. 10.4 Replaced elements
      1. 10.4.1 Embedded content
      2. 10.4.2 Images
      3. 10.4.3 Attributes for embedded content and images
      4. 10.4.4 Image maps
    5. 10.5 Bindings
      1. 10.5.1 Introduction
      2. 10.5.2 The button element
      3. 10.5.3 The details element
      4. 10.5.4 The input element as a text entry widget
      5. 10.5.5 The input element as domain-specific widgets
      6. 10.5.6 The input element as a range control
      7. 10.5.7 The input element as a colour well
      8. 10.5.8 The input element as a checkbox and radio button widgets
      9. 10.5.9 The input element as a file upload control
      10. 10.5.10 The input element as a button
      11. 10.5.11 The marquee element
      12. 10.5.12 The meter element
      13. 10.5.13 The progress element
      14. 10.5.14 The select element
      15. 10.5.15 The textarea element
      16. 10.5.16 The keygen element
    6. 10.6 Frames and framesets
    7. 10.7 Interactive media
      1. 10.7.1 Links, forms, and navigation
      2. 10.7.2 The title attribute
      3. 10.7.3 Editing hosts
      4. 10.7.4 Text rendered in native user interfaces
    8. 10.8 Print media
    9. 10.9 Unstyled XML documents
  11. 11 Obsolete features
    1. 11.1 Obsolete but conforming features
      1. 11.1.1 Warnings for obsolete but conforming features
    2. 11.2 Non-conforming features
    3. 11.3 Requirements for implementations
      1. 11.3.1 The applet element
      2. 11.3.2 The marquee element
      3. 11.3.3 Frames
      4. 11.3.4 Other elements, attributes and APIs
  12. 12 IANA considerations
    1. 12.1 text/html
    2. 12.2 multipart/x-mixed-replace
    3. 12.3 application/xhtml+xml
    4. 12.4 application/x-www-form-urlencoded
    5. 12.5 text/cache-manifest
    6. 12.6 application/microdata+json
    7. 12.7 web+ scheme prefix
  13. Index
    1. Elements
    2. Element content categories
    3. Attributes
    4. Element Interfaces
    5. All Interfaces
    6. Events
    7. MIME Types
  14. References
  15. Acknowledgements