Abstract
This document is a strict subset of the full HTML5 specification that omits user-agent (UA) implementation details. It is targeted toward Web authors and others who are not UA implementors and who want a view of the HTML specification that focuses more precisely on details relevant to using the HTML language to create Web documents and Web applications. Because this document does not provide implementation conformance criteria, UA implementors should not rely on it, but should instead refer to the full HTML5 specification.
This document is an automated redaction of the full HTML5 specification. As such, the two documents are supposed to agree on normative matters concerning Web authors. However, if the documents disagree, this is a bug in the redaction process and the unredacted full HTML specification takes precedence. Readers are encouraged to report such discrepancies as bugs in the bug tracking system of the HTML Working Group.
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/.
If you wish to make comments regarding this document in a manner that is tracked by the W3C, please submit them via using our public bug database. If you do not have an account then you can enter feedback using this form:
If you cannot do this then you can also e-mail feedback to public-html-comments@w3.org (subscribe, archives), and arrangements will be made to transpose the comments to our public bug database.  Alternatively, you can e-mail feedback to whatwg@whatwg.org (subscribe, archives). The editor guarantees that all substantive feedback sent to this list will receive a reply. However, such feedback is not considered formal feedback for the W3C process. 
 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. These bugs, issues, and e-mails apply to multiple HTML-related specifications, not just this one.
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 First Public 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.
A number of formal objections are open against this document:
The HTML Working Group chairs maintain a complete list of all current formal objections; that list may change as this document progresses.
There are also a number of open issues related to this document, for which working-group decisions still need to be made:
The HTML Working Group chairs maintain a complete list of all currently open HTML Working Group issues; that list may change as this document progresses.
Activities are being pursued by some members of the HTML Working Group to provide new information related to this document, with the intent of reopening the following issues:
The HTML Working Group chairs maintain a complete list of all HTML Working Group issues for which new information is known to be being pursued; that list may change as this document progresses.
A list of other potential accessibility related issues is also available.
W3C anticipates that there will be changes to this specification as a result of the resolution of Last Call issues. Per the usual W3C Process, any significant changes to the specification will trigger a subsequent Last Call.
The latest stable version of the editor's draft of the full HTML5 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) contains the latest draft text of this specification (amongst others). For more details, please see the WHATWG FAQ.
There are various ways to follow the change history for the HTML specifications:
- 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
- Browsable version-control record of all changes:
- CVSWeb interface with side-by-side diffs: http://dev.w3.org/cvsweb/html5/
- 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 07 July 2011 First Public Working Draft.
Work on this specification is also done at the WHATWG. The W3C HTML working group actively pursues convergence with the WHATWG, as required by the W3C HTML working group charter.
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 Introduction
- 1.1 Background
- 1.2 Audience
- 1.3 Scope
- 1.4 History
- 1.5 Design notes
- 1.5.1 Serializability of script execution
- 1.5.2 Compliance with other specifications
 
- 1.6 HTML vs XHTML
- 1.7 Structure of this specification
- 1.7.1 How to read this specification
- 1.7.2 Typographic conventions
 
- 1.8 A quick introduction to HTML
- 1.9 Conformance requirements for authors
- 1.9.1 Presentational markup
- 1.9.2 Syntax errors
- 1.9.3 Restrictions on content models and on attribute values
 
- 1.10 Recommended reading
 
- 2 Common infrastructure
- 2.1 Terminology
- 2.1.1 Resources
- 2.1.2 XML
- 2.1.3 DOM trees
- 2.1.4 Scripting
- 2.1.5 Plugins
- 2.1.6 Character encodings
 
- 2.2 Conformance requirements
- 2.2.1 Extensibility
 
- 2.3 Case-sensitivity and string comparison
- 2.4 Common microsyntaxes
- 2.4.1 Boolean attributes
- 2.4.2 Keywords and enumerated attributes
- 2.4.3 Numbers
- 2.4.3.1 Non-negative integers
- 2.4.3.2 Signed integers
- 2.4.3.3 Real numbers
- 2.4.3.4 Lists of integers
 
- 2.4.4 Dates and times
- 2.4.4.1 Months
- 2.4.4.2 Dates
- 2.4.4.3 Times
- 2.4.4.4 Local dates and times
- 2.4.4.5 Global dates and times
- 2.4.4.6 Weeks
- 2.4.4.7 Vaguer moments in time
 
- 2.4.5 Colors
- 2.4.6 Space-separated tokens
- 2.4.7 Comma-separated tokens
- 2.4.8 References
- 2.4.9 Media queries
 
- 2.5 URLs
- 2.5.1 Terminology
- 2.5.2 Resolving URLs
- 2.5.3 Interfaces for URL manipulation
 
- 2.6 Common DOM interfaces
- 2.6.1 Reflecting content attributes in IDL attributes
- 2.6.2 Collections
- 2.6.2.1 HTMLCollection
- 2.6.2.2 HTMLAllCollection
- 2.6.2.3 HTMLFormControlsCollection
- 2.6.2.4 HTMLOptionsCollection
 
- 2.6.3 DOMTokenList
- 2.6.4 DOMSettableTokenList
- 2.6.5 DOMStringMap
- 2.6.6 DOM feature strings
- 2.6.7 Exceptions
 
- 2.7 Namespaces
 
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
- 3.1.1 Documents in the DOM
- 3.1.2 Security
- 3.1.3 Resource metadata management
- 3.1.4 DOM tree accessors
- 3.1.5 Creating documents
 
- 3.2 Elements
- 3.2.1 Semantics
- 3.2.2 Elements in the DOM
- 3.2.3 Global attributes
- 3.2.3.1 The idattribute
- 3.2.3.2 The titleattribute
- 3.2.3.3 The langandxml:langattributes
- 3.2.3.4 The xml:baseattribute (XML only)
- 3.2.3.5 The dirattribute
- 3.2.3.6 The classattribute
- 3.2.3.7 The styleattribute
- 3.2.3.8 Embedding custom non-visible data with the data-*attributes
 
- 3.2.4 Element definitions
- 3.2.4.1 Attributes
 
- 3.2.5 Content models
- 3.2.5.1 Kinds of content
- 3.2.5.1.1 Metadata content
- 3.2.5.1.2 Flow content
- 3.2.5.1.3 Sectioning content
- 3.2.5.1.4 Heading content
- 3.2.5.1.5 Phrasing content
- 3.2.5.1.6 Embedded content
- 3.2.5.1.7 Interactive content
 
- 3.2.5.2 Transparent content models
- 3.2.5.3 Paragraphs
 
- 3.2.6 Requirements relating to bidirectional-algorithm formatting characters
- 3.2.7 WAI-ARIA
 
- 3.3 APIs in HTML documents
- 3.4 Dynamic markup insertion
- 3.4.1 Opening the input stream
- 3.4.2 Closing the input stream
- 3.4.3 document.write()
- 3.4.4 document.writeln()
- 3.4.5 innerHTML
- 3.4.6 outerHTML
- 3.4.7 insertAdjacentHTML()
 
 
- 4 The elements of HTML
- 4.1 The root element
- 4.1.1 The htmlelement
 
- 4.2 Document metadata
- 4.2.1 The headelement
- 4.2.2 The titleelement
- 4.2.3 The baseelement
- 4.2.4 The linkelement
- 4.2.5 The metaelement
- 4.2.5.1 Standard metadata names
- 4.2.5.2 Other metadata names
- 4.2.5.3 Pragma directives
- 4.2.5.4 Other pragma directives
- 4.2.5.5 Specifying the document's character encoding
 
- 4.2.6 The styleelement
- 4.2.7 Styling
 
- 4.3 Scripting
- 4.3.1 The scriptelement
- 4.3.1.1 Scripting languages
- 4.3.1.2 Restrictions for contents of scriptelements
- 4.3.1.3 Inline documentation for external scripts
 
- 4.3.2 The noscriptelement
 
- 4.4 Sections
- 4.4.1 The bodyelement
- 4.4.2 The sectionelement
- 4.4.3 The navelement
- 4.4.4 The articleelement
- 4.4.5 The asideelement
- 4.4.6 The h1,h2,h3,h4,h5, andh6elements
- 4.4.7 The hgroupelement
- 4.4.10 The addresselement
- 4.4.11 Headings and sections
- 4.4.11.1 Creating an outline
 
 
- 4.5 Grouping content
- 4.5.1 The pelement
- 4.5.2 The hrelement
- 4.5.3 The preelement
- 4.5.4 The blockquoteelement
- 4.5.5 The olelement
- 4.5.6 The ulelement
- 4.5.7 The lielement
- 4.5.8 The dlelement
- 4.5.9 The dtelement
- 4.5.10 The ddelement
- 4.5.11 The figureelement
- 4.5.12 The figcaptionelement
- 4.5.13 The divelement
 
- 4.6 Text-level semantics
- 4.6.1 The aelement
- 4.6.2 The emelement
- 4.6.3 The strongelement
- 4.6.4 The smallelement
- 4.6.5 The selement
- 4.6.6 The citeelement
- 4.6.7 The qelement
- 4.6.8 The dfnelement
- 4.6.9 The abbrelement
- 4.6.10 The timeelement
- 4.6.11 The codeelement
- 4.6.12 The varelement
- 4.6.13 The sampelement
- 4.6.14 The kbdelement
- 4.6.15 The subandsupelements
- 4.6.16 The ielement
- 4.6.17 The belement
- 4.6.18 The uelement
- 4.6.19 The markelement
- 4.6.20 The rubyelement
- 4.6.21 The rtelement
- 4.6.22 The rpelement
- 4.6.23 The bdielement
- 4.6.24 The bdoelement
- 4.6.25 The spanelement
- 4.6.26 The brelement
- 4.6.27 The wbrelement
- 4.6.28 Usage summary
 
- 4.7 Edits
- 4.7.1 The inselement
- 4.7.2 The delelement
- 4.7.3 Attributes common to insanddelelements
- 4.7.4 Edits and paragraphs
- 4.7.5 Edits and lists
 
- 4.8 Embedded content
- 4.8.1 The imgelement
- 4.8.1.1 Requirements for providing text to act as an alternative for images
- 4.8.1.1.1 General guidelines
- 4.8.1.1.2 A link or button containing nothing but the image
- 4.8.1.1.3 A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
- 4.8.1.1.4 A short phrase or label with an alternative graphical representation: icons, logos
- 4.8.1.1.5 Text that has been rendered to a graphic for typographical effect
- 4.8.1.1.6 A graphical representation of some of the surrounding text
- 4.8.1.1.7 A purely decorative image that doesn't add any information
- 4.8.1.1.8 A group of images that form a single larger picture with no links
- 4.8.1.1.9 A group of images that form a single larger picture with links
- 4.8.1.1.10 A key part of the content
- 4.8.1.1.11 An image not intended for the user
 
 
- 4.8.2 The iframeelement
- 4.8.3 The embedelement
- 4.8.4 The objectelement
- 4.8.5 The paramelement
- 4.8.6 The videoelement
- 4.8.7 The audioelement
- 4.8.8 The sourceelement
- 4.8.9 The trackelement
- 4.8.10 Media elements
- 4.8.10.1 Error codes
- 4.8.10.2 Location of the media resource
- 4.8.10.3 MIME types
- 4.8.10.4 Network states
- 4.8.10.5 Loading the media resource
- 4.8.10.6 Offsets into the media resource
- 4.8.10.7 The ready states
- 4.8.10.8 Playing the media resource
- 4.8.10.9 Seeking
- 4.8.10.10 Media resources with multiple media tracks
- 4.8.10.10.1 TrackListobjects
- 4.8.10.10.2 Selecting specific audio and video tracks declaratively
 
- 4.8.10.11 Synchronising multiple media elements
- 4.8.10.11.1 Introduction
- 4.8.10.11.2 Media controllers
- 4.8.10.11.3 Assigning a media controller declaratively
 
- 4.8.10.12 Timed text tracks
- 4.8.10.12.1 Text track model
- 4.8.10.12.2 Sourcing in-band text tracks
- 4.8.10.12.3 Text track API
 
- 4.8.10.13 User interface
- 4.8.10.14 Time ranges
- 4.8.10.15 Event summary
- 4.8.10.16 Best practices for authors using media elements
 
- 4.8.11 The canvaselement
- 4.8.12 The mapelement
- 4.8.13 The areaelement
- 4.8.14 Image maps
- 4.8.15 MathML
- 4.8.16 SVG
- 4.8.17 Dimension attributes
 
- 4.9 Tabular data
- 4.9.1 The tableelement
- 4.9.1.1 Techniques for describing tables
- 4.9.1.2 Techniques for table layout
 
- 4.9.2 The captionelement
- 4.9.3 The colgroupelement
- 4.9.4 The colelement
- 4.9.5 The tbodyelement
- 4.9.6 The theadelement
- 4.9.8 The trelement
- 4.9.9 The tdelement
- 4.9.10 The thelement
- 4.9.11 Attributes common to tdandthelements
- 4.9.12 Examples
 
- 4.10 Forms
- 4.10.1 Introduction
- 4.10.1.1 Writing a form's user interface
- 4.10.1.2 Implementing the server-side processing for a form
- 4.10.1.3 Configuring a form to communicate with a server
- 4.10.1.4 Client-side form validation
 
- 4.10.2 Categories
- 4.10.3 The formelement
- 4.10.4 The fieldsetelement
- 4.10.5 The legendelement
- 4.10.6 The labelelement
- 4.10.7 The inputelement
- 4.10.7.1 States of the typeattribute
- 4.10.7.1.1 Hidden state
- 4.10.7.1.2 Text state and Search state
- 4.10.7.1.3 Telephone state
- 4.10.7.1.4 URL state
- 4.10.7.1.5 E-mail state
- 4.10.7.1.6 Password state
- 4.10.7.1.7 Date and Time state
- 4.10.7.1.8 Date state
- 4.10.7.1.9 Month state
- 4.10.7.1.10 Week state
- 4.10.7.1.11 Time state
- 4.10.7.1.12 Local Date and Time state
- 4.10.7.1.13 Number state
- 4.10.7.1.14 Range state
- 4.10.7.1.15 Color state
- 4.10.7.1.16 Checkbox state
- 4.10.7.1.17 Radio Button state
- 4.10.7.1.18 File Upload state
- 4.10.7.1.19 Submit Button state
- 4.10.7.1.20 Image Button state
- 4.10.7.1.21 Reset Button state
- 4.10.7.1.22 Button state
 
- 4.10.7.2 Common inputelement attributes
- 4.10.7.2.1 The autocompleteattribute
- 4.10.7.2.2 The dirnameattribute
- 4.10.7.2.3 The listattribute
- 4.10.7.2.4 The readonlyattribute
- 4.10.7.2.5 The sizeattribute
- 4.10.7.2.6 The requiredattribute
- 4.10.7.2.7 The multipleattribute
- 4.10.7.2.8 The maxlengthattribute
- 4.10.7.2.9 The patternattribute
- 4.10.7.2.10 The minandmaxattributes
- 4.10.7.2.11 The stepattribute
- 4.10.7.2.12 The placeholderattribute
 
- 4.10.7.3 Common inputelement APIs
 
- 4.10.8 The buttonelement
- 4.10.9 The selectelement
- 4.10.10 The datalistelement
- 4.10.11 The optgroupelement
- 4.10.12 The optionelement
- 4.10.13 The textareaelement
- 4.10.14 The keygenelement
- 4.10.15 The outputelement
- 4.10.16 The progresselement
- 4.10.17 The meterelement
- 4.10.18 Association of controls and forms
- 4.10.19 Attributes common to form controls
- 4.10.19.1 Naming form controls
- 4.10.19.2 Enabling and disabling form controls
- 4.10.19.3 Autofocusing a form control
- 4.10.19.4 Limiting user input length
- 4.10.19.5 Form submission
- 4.10.19.6 Submitting element directionality
 
- 4.10.20 APIs for the text field selections
- 4.10.21 Constraints
- 4.10.21.1 Definitions
- 4.10.21.2 The constraint validation API
- 4.10.21.3 Security
 
- 4.10.22 Form submission
 
- 4.11 Interactive elements
- 4.11.1 The detailselement
- 4.11.2 The summaryelement
- 4.11.3 The commandelement
- 
- 4.11.4.1 Introduction
 
- 4.11.5 Commands
 
- 4.12 Links
- 4.12.1 Introduction
- 4.12.2 Links created by aandareaelements
- 4.12.3 Link types
- 4.12.3.1 Link type "alternate"
- 4.12.3.2 Link type "author"
- 4.12.3.3 Link type "bookmark"
- 4.12.3.4 Link type "external"
- 4.12.3.5 Link type "help"
- 4.12.3.6 Link type "icon"
- 4.12.3.7 Link type "license"
- 4.12.3.8 Link type "nofollow"
- 4.12.3.9 Link type "noreferrer"
- 4.12.3.10 Link type "pingback"
- 4.12.3.11 Link type "prefetch"
- 4.12.3.12 Link type "search"
- 4.12.3.14 Link type "stylesheet"
- 4.12.3.15 Link type "tag"
- 4.12.3.16 Sequential link types
- 4.12.3.16.1 Link type "next"
- 4.12.3.16.2 Link type "prev"
 
- 4.12.3.17 Other link types
 
 
- 4.13 Common idioms without dedicated elements
- 4.13.1 The main part of the content
- 4.13.2 Bread crumb navigation
- 4.13.3 Tag clouds
- 4.13.4 Conversations
- 4.13.5 Footnotes
 
 
- 5 Loading Web pages
- 5.1 Browsing contexts
- 5.1.1 Nested browsing contexts
- 5.1.1.1 Navigating nested browsing contexts in the DOM
 
- 5.1.2 Auxiliary browsing contexts
- 5.1.2.1 Navigating auxiliary browsing contexts in the DOM
 
- 5.1.3 Secondary browsing contexts
- 5.1.4 Browsing context names
 
- 5.2 The Windowobject
- 5.2.1 APIs for creating and navigating browsing contexts by name
- 5.2.2 Accessing other browsing contexts
- 5.2.3 Named access on the Windowobject
- 5.2.4 Browser interface elements
 
- 5.3 Origin
- 5.3.1 Relaxing the same-origin restriction
 
- 5.4 Session history and navigation
- 5.4.1 The session history of browsing contexts
- 5.4.2 The Historyinterface
- 5.4.3 The Locationinterface
 
- 5.5 Browsing the Web
- 5.5.1 History traversal
- 5.5.2 Unloading documents
 
- 5.6 Offline Web applications
- 5.6.1 Introduction
- 5.6.1.1 Event summary
 
- 5.6.2 The cache manifest syntax
- 5.6.2.1 Some sample manifests
- 5.6.2.2 Writing cache manifests
 
- 5.6.3 Application cache API
- 5.6.4 Browser state
 
 
- 6 Web application APIs
- 6.1 Scripting
- 6.1.1 Introduction
- 6.1.2 Events
 
- 6.2 Base64 utility methods
- 6.3 Timers
- 6.4 User prompts
- 6.4.1 Simple dialogs
- 6.4.2 Printing
- 6.4.3 Dialogs implemented using separate documents
 
- 6.5 System state and capabilities: the Navigatorobject
- 6.5.1 Client identification
- 6.5.2 Custom scheme and content handlers
- 6.5.3 Manually releasing the storage mutex
 
 
- 7 User interaction
- 7.1 The hiddenattribute
- 7.2 Activation
- 7.3 Focus
- 7.3.1 Sequential focus navigation and the tabindexattribute
- 7.3.2 Document-level focus APIs
- 7.3.3 Element-level focus APIs
 
- 7.4 Assigning keyboard shortcuts
- 7.4.1 Introduction
- 7.4.2 The accesskeyattribute
 
- 7.5 The contenteditableattribute
- 7.5.1 Making entire documents editable
 
- 7.6 Spelling and grammar checking
- 7.7 Drag and drop
- 7.7.1 Introduction
- 7.7.2 The drag data store
- 7.7.3 The DataTransferinterface
- 7.7.3.1 The DataTransferItemsinterface
- 7.7.3.2 The DataTransferIteminterface
 
- 7.7.4 The DragEventinterface
- 7.7.5 Events summary
- 7.7.6 The draggableattribute
- 7.7.7 The dropzoneattribute
 
- 7.8 Editing APIs
 
- 8 The HTML syntax
- 8.1 Writing HTML documents
- 8.1.1 The DOCTYPE
- 8.1.2 Elements
- 8.1.2.1 Start tags
- 8.1.2.2 End tags
- 8.1.2.3 Attributes
- 8.1.2.4 Optional tags
- 8.1.2.5 Restrictions on content models
- 8.1.2.6 Restrictions on the contents of raw text and RCDATA elements
 
- 8.1.3 Text
- 8.1.3.1 Newlines
 
- 8.1.4 Character references
- 8.1.5 CDATA sections
- 8.1.6 Comments
 
- 8.2 Named character references
 
- 9 The XHTML syntax
- 10 Obsolete features
- 10.1 Obsolete but conforming features
- 10.2 Non-conforming features
 
- 11 IANA considerations
- 11.1 text/html
- 11.2 text/html-sandboxed
- 11.3 application/xhtml+xml
- 11.4 text/cache-manifest
 
- Index
- Elements
- Element content categories
- Attributes
- Interfaces
- Events
 
- Index of terms
- References
- Acknowledgements