W3C

HTML5

A vocabulary and associated APIs for HTML and XHTML

Editor's Draft 24 November 2009

Latest Published Version:
http://www.w3.org/TR/html5/
Latest Editor's Draft:
http://www.w3.org/html/wg/html5/
Previous Versions:
http://www.w3.org/TR/2009/WD-html5-20090825/
http://www.w3.org/TR/2009/WD-html5-20090423/
http://www.w3.org/TR/2009/WD-html5-20090212/
http://www.w3.org/TR/2008/WD-html5-20080610/
http://www.w3.org/TR/2008/WD-html5-20080122/
Editors:
Ian Hickson, Google, Inc.
David Hyatt, Apple, Inc.

This specification is available in the following formats: single page HTML, multipage HTML. This is revision 1.3510.


Abstract

This specification defines the 5th major revision of the core language of the World Wide Web: the Hypertext Markup Language (HTML). In this version, new features are introduced to help Web application authors, new elements are introduced based on research into prevailing authoring practices, and special attention has been 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 most recently formally published revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

If you wish to make comments regarding this document, please send them to public-html-comments@w3.org (subscribe, archives) or whatwg@whatwg.org (subscribe, archives), or submit them using our public bug database. All feedback is welcome.

The working groups maintains a list of all bug reports that the editor has not yet tried to address and a list of issues for which the chairs have not yet declared a decision. The editor also maintains a list of all e-mails that he has not yet tried to address.

Implementors should be aware that this specification is not stable. Implementors who are not taking part in the discussions are likely to find the specification changing out from under them in incompatible ways. Vendors interested in implementing this specification before it eventually reaches the Candidate Recommendation stage should join the aforementioned mailing lists and take part in the discussions.

The publication of this document by the W3C as a W3C Working Draft does not imply that all of the participants in the W3C HTML working group endorse the contents of the specification. Indeed, for any section of the specification, one can usually find many members of the working group or of the W3C as a whole who object strongly to the current text, the existence of the section at all, or the idea that the working group should even spend time discussing the concept of that section.

The latest stable version of the editor's draft of this specification is always available on the W3C CVS server and in the WHATWG Subversion repository. The latest editor's working copy (which may contain unfinished text in the process of being prepared) is also available.

There are various ways to follow the change history for the specification:

E-mail notifications of changes
HTML-Diffs mailing list (diff-marked HTML versions for each change): http://lists.w3.org/Archives/Public/public-html-diffs/latest
Commit-Watchers mailing list (complete source diffs): http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org
Real-time notifications of changes:
Generated diff-marked HTML versions for each change: http://twitter.com/HTML5
All (non-editorial) changes to the spec source: http://twitter.com/WHATWG
Browsable version-control record of all changes:
CVSWeb interface with side-by-side diffs: http://dev.w3.org/cvsweb/html5/spec/Overview.html
Annotated summary with unified diffs: http://html5.org/tools/web-apps-tracker
Raw Subversion interface: svn checkout http://svn.whatwg.org/webapps/

The W3C HTML Working Group is the W3C working group responsible for this specification's progress along the W3C Recommendation track. This specification is the 24 November 2009 Editor's Draft.

This specification is also being produced by the WHATWG. The two specifications are identical from the table of contents onwards.

This specification is intended to replace (be a new version of) what was previously the HTML4, XHTML1, and DOM2 HTML specifications.

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.

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 Serializability of script execution
      2. 1.5.2 Compliance with other specifications
    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 A quick introduction to HTML
    9. 1.9 Recommended reading
  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
    3. 2.3 Case-sensitivity and string comparison
    4. 2.4 Common microsyntaxes
      1. 2.4.1 Boolean attributes
      2. 2.4.2 Keywords and enumerated attributes
      3. 2.4.3 Numbers
        1. 2.4.3.1 Non-negative integers
        2. 2.4.3.2 Signed integers
        3. 2.4.3.3 Real numbers
        4. 2.4.3.4 Ratios
        5. 2.4.3.5 Lists of integers
      4. 2.4.4 Dates and times
        1. 2.4.4.1 Months
        2. 2.4.4.2 Dates
        3. 2.4.4.3 Times
        4. 2.4.4.4 Local dates and times
        5. 2.4.4.5 Global dates and times
        6. 2.4.4.6 Weeks
        7. 2.4.4.7 Vaguer moments in time
      5. 2.4.5 Colors
      6. 2.4.6 Space-separated tokens
      7. 2.4.7 Comma-separated tokens
      8. 2.4.8 References
      9. 2.4.9 Media queries
    5. 2.5 URLs
      1. 2.5.1 Terminology
      2. 2.5.2 Interfaces for URL manipulation
    6. 2.6 Common DOM interfaces
      1. 2.6.1 Reflecting content attributes in IDL attributes
      2. 2.6.2 Collections
        1. 2.6.2.1 HTMLCollection
        2. 2.6.2.2 HTMLAllCollection
        3. 2.6.2.3 HTMLFormControlsCollection
        4. 2.6.2.4 HTMLOptionsCollection
        5. 2.6.2.5 HTMLPropertiesCollection
      3. 2.6.3 DOMTokenList
      4. 2.6.4 DOMSettableTokenList
      5. 2.6.5 DOMStringMap
      6. 2.6.6 DOM feature strings
      7. 2.6.7 Exceptions
  3. 3 Semantics, structure, and APIs of HTML documents
    1. 3.1 Documents
      1. 3.1.1 Documents in the DOM
      2. 3.1.2 Security
      3. 3.1.3 Resource metadata management
      4. 3.1.4 DOM tree accessors
      5. 3.1.5 Creating documents
    2. 3.2 Elements
      1. 3.2.1 Semantics
      2. 3.2.2 Elements in the DOM
      3. 3.2.3 Global attributes
        1. 3.2.3.1 The id attribute
        2. 3.2.3.2 The title attribute
        3. 3.2.3.3 The lang and xml:lang attributes
        4. 3.2.3.4 The xml:base attribute (XML only)
        5. 3.2.3.5 The dir attribute
        6. 3.2.3.6 The class attribute
        7. 3.2.3.7 The style attribute
        8. 3.2.3.8 Embedding custom non-visible data
      4. 3.2.4 Element definitions
      5. 3.2.5 Content models
        1. 3.2.5.1 Kinds of content
          1. 3.2.5.1.1 Metadata content
          2. 3.2.5.1.2 Flow content
          3. 3.2.5.1.3 Sectioning content
          4. 3.2.5.1.4 Heading content
          5. 3.2.5.1.5 Phrasing content
          6. 3.2.5.1.6 Embedded content
          7. 3.2.5.1.7 Interactive content
        2. 3.2.5.2 Transparent content models
        3. 3.2.5.3 Paragraphs
      6. 3.2.6 Annotations for assistive technology products (ARIA)
    3. 3.3 APIs in HTML documents
    4. 3.4 Dynamic markup insertion
      1. 3.4.1 Opening the input stream
      2. 3.4.2 Closing the input stream
      3. 3.4.3 document.write()
      4. 3.4.4 document.writeln()
      5. 3.4.5 innerHTML
      6. 3.4.6 outerHTML
      7. 3.4.7 insertAdjacentHTML()
  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 Styling
    3. 4.3 Scripting
      1. 4.3.1 The script element
        1. 4.3.1.1 Scripting languages
        2. 4.3.1.2 Restrictions for contents of script elements
        3. 4.3.1.3 Inline documentation for external scripts
      2. 4.3.2 The noscript element
    4. 4.4 Sections
      1. 4.4.1 The body element
      2. 4.4.2 The section element
      3. 4.4.3 The nav element
      4. 4.4.4 The article element
      5. 4.4.5 The aside element
      6. 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
      7. 4.4.7 The hgroup element
      8. 4.4.8 The header element
      9. 4.4.9 The footer element
      10. 4.4.10 The address element
      11. 4.4.11 Headings and sections
        1. 4.4.11.1 Creating an outline
    5. 4.5 Grouping content
      1. 4.5.1 The p element
      2. 4.5.2 The hr element
      3. 4.5.3 The br element
      4. 4.5.4 The pre element
      5. 4.5.5 The blockquote element
      6. 4.5.6 The ol element
      7. 4.5.7 The ul element
      8. 4.5.8 The li element
      9. 4.5.9 The dl element
      10. 4.5.10 The dt element
      11. 4.5.11 The dd element
      12. 4.5.12 The div element
    6. 4.6 Text-level semantics
      1. 4.6.1 The a element
      2. 4.6.2 The em element
      3. 4.6.3 The strong element
      4. 4.6.4 The small element
      5. 4.6.5 The cite element
      6. 4.6.6 The q element
      7. 4.6.7 The dfn element
      8. 4.6.8 The abbr element
      9. 4.6.9 The time element
      10. 4.6.10 The code element
      11. 4.6.11 The var element
      12. 4.6.12 The samp element
      13. 4.6.13 The kbd element
      14. 4.6.14 The sub and sup elements
      15. 4.6.15 The i element
      16. 4.6.16 The b element
      17. 4.6.17 The mark element
      18. 4.6.18 The progress element
      19. 4.6.19 The meter element
      20. 4.6.20 The ruby element
      21. 4.6.21 The rt element
      22. 4.6.22 The rp element
      23. 4.6.23 The bdo element
      24. 4.6.24 The span element
      25. 4.6.25 Usage summary
    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
    8. 4.8 Embedded content
      1. 4.8.1 The figure element
      2. 4.8.2 The img element
        1. 4.8.2.1 Requirements for providing text to act as an alternative for images
          1. 4.8.2.1.1 A link or button containing nothing but the image
          2. 4.8.2.1.2 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
          3. 4.8.2.1.3 A short phrase or label with an alternative graphical representation: icons, logos
          4. 4.8.2.1.4 Text that has been rendered to a graphic for typographical effect
          5. 4.8.2.1.5 A graphical representation of some of the surrounding text
          6. 4.8.2.1.6 A purely decorative image that doesn't add any information
          7. 4.8.2.1.7 A group of images that form a single larger picture with no links
          8. 4.8.2.1.8 A group of images that form a single larger picture with links
          9. 4.8.2.1.9 A key part of the content
          10. 4.8.2.1.10 An image not intended for the user
          11. 4.8.2.1.11 An image in an e-mail or private document intended for a specific person who is known to be able to view images
          12. 4.8.2.1.12 General guidelines
      3. 4.8.3 The iframe element
      4. 4.8.4 The embed element
      5. 4.8.5 The object element
      6. 4.8.6 The param element
      7. 4.8.7 The video element
      8. 4.8.8 The audio element
      9. 4.8.9 The source element
      10. 4.8.10 Media elements
        1. 4.8.10.1 Error codes
        2. 4.8.10.2 Location of the media resource
        3. 4.8.10.3 MIME types
        4. 4.8.10.4 Network states
        5. 4.8.10.5 Loading the media resource
        6. 4.8.10.6 Offsets into the media resource
        7. 4.8.10.7 The ready states
        8. 4.8.10.8 Playing the media resource
        9. 4.8.10.9 Seeking
        10. 4.8.10.10 User interface
        11. 4.8.10.11 Time ranges
        12. 4.8.10.12 Event summary
      11. 4.8.11 The canvas element
        1. 4.8.11.1 The 2D context
          1. 4.8.11.1.1 The canvas state
          2. 4.8.11.1.2 Transformations
          3. 4.8.11.1.3 Compositing
          4. 4.8.11.1.4 Colors and styles
          5. 4.8.11.1.5 Line styles
          6. 4.8.11.1.6 Shadows
          7. 4.8.11.1.7 Simple shapes (rectangles)
          8. 4.8.11.1.8 Complex shapes (paths)
          9. 4.8.11.1.9 Text
          10. 4.8.11.1.10 Images
          11. 4.8.11.1.11 Pixel manipulation
          12. 4.8.11.1.12 Examples
      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
      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 The form element
      2. 4.10.2 The fieldset element
      3. 4.10.3 The legend 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
          2. 4.10.5.1.2 Text state and Search state
          3. 4.10.5.1.3 Telephone state
          4. 4.10.5.1.4 URL state
          5. 4.10.5.1.5 E-mail state
          6. 4.10.5.1.6 Password state
          7. 4.10.5.1.7 Date and Time state
          8. 4.10.5.1.8 Date state
          9. 4.10.5.1.9 Month state
          10. 4.10.5.1.10 Week state
          11. 4.10.5.1.11 Time state
          12. 4.10.5.1.12 Local Date and Time state
          13. 4.10.5.1.13 Number state
          14. 4.10.5.1.14 Range state
          15. 4.10.5.1.15 Color state
          16. 4.10.5.1.16 Checkbox state
          17. 4.10.5.1.17 Radio Button state
          18. 4.10.5.1.18 File Upload state
          19. 4.10.5.1.19 Submit Button state
          20. 4.10.5.1.20 Image Button state
          21. 4.10.5.1.21 Reset Button state
          22. 4.10.5.1.22 Button state
        2. 4.10.5.2 Common input element attributes
          1. 4.10.5.2.1 The autocomplete attribute
          2. 4.10.5.2.2 The list attribute
          3. 4.10.5.2.3 The readonly attribute
          4. 4.10.5.2.4 The size attribute
          5. 4.10.5.2.5 The required attribute
          6. 4.10.5.2.6 The multiple attribute
          7. 4.10.5.2.7 The maxlength attribute
          8. 4.10.5.2.8 The pattern attribute
          9. 4.10.5.2.9 The min and max attributes
          10. 4.10.5.2.10 The step attribute
          11. 4.10.5.2.11 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 keygen element
      13. 4.10.13 The output element
      14. 4.10.14 Association of controls and forms
      15. 4.10.15 Attributes common to form controls
        1. 4.10.15.1 Naming form controls
        2. 4.10.15.2 Enabling and disabling form controls
        3. 4.10.15.3 Autofocusing a form control
        4. 4.10.15.4 Limiting user input length
        5. 4.10.15.5 Form submission
      16. 4.10.16 Constraints
        1. 4.10.16.1 Definitions
        2. 4.10.16.2 The constraint validation API
      17. 4.10.17 Form submission
    11. 4.11 Interactive elements
      1. 4.11.1 The details element
      2. 4.11.2 The command element
      3. 4.11.3 The menu element
        1. 4.11.3.1 Introduction
        2. 4.11.3.2 Context menus
      4. 4.11.4 Commands
    12. 4.12 Common idioms without dedicated elements
      1. 4.12.1 Tag clouds
      2. 4.12.2 Conversations
      3. 4.12.3 Footnotes
  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
      6. 5.1.6 Using the microdata DOM API
    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 Associating names with items
      6. 5.2.6 Examples
    3. 5.3 Microdata DOM API
  6. 6 Web browsers
    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 Browsing context names
    2. 6.2 The Window object
      1. 6.2.1 APIs for creating and navigating browsing contexts by name
      2. 6.2.2 Accessing other browsing contexts
      3. 6.2.3 Named access on the Window object
      4. 6.2.4 Browser interface elements
      5. 6.2.5 Relaxing the same-origin restriction
    3. 6.3 Scripting
      1. 6.3.1 Introduction
      2. 6.3.2 Events
    4. 6.4 Timers
    5. 6.5 User prompts
      1. 6.5.1 Simple dialogs
      2. 6.5.2 Printing
      3. 6.5.3 Dialogs implemented using separate documents
    6. 6.6 System state and capabilities
      1. 6.6.1 Client identification
      2. 6.6.2 Custom scheme and content handlers
      3. 6.6.3 Manually releasing the storage mutex
    7. 6.7 Offline Web applications
      1. 6.7.1 Introduction
        1. 6.7.1.1 Event summary
      2. 6.7.2 The cache manifest syntax
        1. 6.7.2.1 A sample manifest
        2. 6.7.2.2 Writing cache manifests
      3. 6.7.3 Expiring application caches
      4. 6.7.4 Application cache API
      5. 6.7.5 Browser state
    8. 6.8 Session history and navigation
      1. 6.8.1 The session history of browsing contexts
      2. 6.8.2 The History interface
      3. 6.8.3 Activating state object entries
      4. 6.8.4 The Location interface
    9. 6.9 Browsing the Web
      1. 6.9.1 Unloading documents
      2. 6.9.2 Aborting a document load
    10. 6.10 Links
      1. 6.10.1 Hyperlink elements
      2. 6.10.2 Link types
        1. 6.10.2.1 Link type "alternate"
        2. 6.10.2.2 Link type "archives"
        3. 6.10.2.3 Link type "author"
        4. 6.10.2.4 Link type "bookmark"
        5. 6.10.2.5 Link type "external"
        6. 6.10.2.6 Link type "help"
        7. 6.10.2.7 Link type "icon"
        8. 6.10.2.8 Link type "license"
        9. 6.10.2.9 Link type "nofollow"
        10. 6.10.2.10 Link type "noreferrer"
        11. 6.10.2.11 Link type "pingback"
        12. 6.10.2.12 Link type "prefetch"
        13. 6.10.2.13 Link type "search"
        14. 6.10.2.14 Link type "stylesheet"
        15. 6.10.2.15 Link type "sidebar"
        16. 6.10.2.16 Link type "tag"
        17. 6.10.2.17 Hierarchical link types
          1. 6.10.2.17.1 Link type "index"
          2. 6.10.2.17.2 Link type "up"
        18. 6.10.2.18 Sequential link types
          1. 6.10.2.18.1 Link type "first"
          2. 6.10.2.18.2 Link type "last"
          3. 6.10.2.18.3 Link type "next"
          4. 6.10.2.18.4 Link type "prev"
        19. 6.10.2.19 Other link types
  7. 7 User Interaction
    1. 7.1 The hidden attribute
    2. 7.2 Activation
    3. 7.3 Scrolling elements into view
    4. 7.4 Focus
      1. 7.4.1 Sequential focus navigation
      2. 7.4.2 Document-level focus APIs
      3. 7.4.3 Element-level focus APIs
    5. 7.5 The accesskey attribute
    6. 7.6 The text selection APIs
      1. 7.6.1 APIs for the browsing context selection
      2. 7.6.2 APIs for the text field selections
    7. 7.7 The contenteditable attribute
      1. 7.7.1 Making entire documents editable
    8. 7.8 Spelling and grammar checking
    9. 7.9 Drag and drop
      1. 7.9.1 Introduction
      2. 7.9.2 The DragEvent and DataTransfer interfaces
      3. 7.9.3 Events fired during a drag-and-drop action
      4. 7.9.4 The draggable attribute
      5. 7.9.5 Copy and paste
    10. 7.10 Undo history
      1. 7.10.1 The UndoManager interface
      2. 7.10.2 The UndoManagerEvent interface and the undo and redo events
    11. 7.11 Editing APIs
  8. 8 Communication
    1. 8.1 Event definitions
    2. 8.2 Cross-document messaging
      1. 8.2.1 Introduction
      2. 8.2.2 Security
      3. 8.2.3 Posting messages
    3. 8.3 Channel messaging
      1. 8.3.1 Message channels
      2. 8.3.2 Message ports
        1. 8.3.2.1 Ports and garbage collection
  9. 9 The HTML syntax
    1. 9.1 Writing HTML documents
      1. 9.1.1 The DOCTYPE
      2. 9.1.2 Elements
        1. 9.1.2.1 Start tags
        2. 9.1.2.2 End tags
        3. 9.1.2.3 Attributes
        4. 9.1.2.4 Optional tags
        5. 9.1.2.5 Restrictions on content models
        6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements
      3. 9.1.3 Text
        1. 9.1.3.1 Newlines
      4. 9.1.4 Character references
      5. 9.1.5 CDATA sections
      6. 9.1.6 Comments
    2. 9.2 Named character references
  10. 10 The XHTML syntax
  11. 11 Obsolete features
    1. 11.1 Obsolete but conforming features
    2. 11.2 Non-conforming features
  12. 12 IANA considerations
    1. 12.1 text/html
    2. 12.2 application/xhtml+xml
    3. 12.3 text/cache-manifest
    4. 12.4 text/ping
    5. 12.5 application/microdata+json
    6. 12.6 Ping-From
    7. 12.7 Ping-To
  13. Index
    1. Elements
    2. Attributes
    3. Interfaces
    4. Events
  14. References
  15. Acknowledgements