The following sections only cover conforming elements and features.
This section is non-normative.
An asterisk (*) in a cell indicates that the actual rules are more complicated than indicated in the table above.
† Categories in the "Parents" column refer to parents that list
  the given categories in their content model, not to elements that themselves are in those
  categories. For example, the a element's "Parents" column says "phrasing", so any
  element whose content model contains the "phrasing" category could be a parent of an
  a element. Since the "flow" category includes all the "phrasing" elements, that means
  the th element could be a parent to an a element.
This section is non-normative.
* The tabindex attribute can also
  make any element into interactive content.
This section is non-normative.
| Attribute | Element(s) | Description | Value | 
|---|---|---|---|
| abbr | th | Alternative label to use for the header cell when referencing the cell in other contexts | Text* | 
| accept | input | Hint for expected file type in file upload controls | Set of comma-separated tokens* consisting of valid MIME types with no parameters or audio/*,video/*, orimage/* | 
| accept-charset | form | Character encodings to use for form submission | Ordered set of unique space-separated tokens, ASCII case-insensitive, consisting of labels of ASCII-compatible character encodings* | 
| accesskey | HTML elements | Keyboard shortcut to activate or focus element | Ordered set of unique space-separated tokens, case-sensitive, consisting of one Unicode code point in length | 
| action | form | URL to use for form submission | Valid non-empty URL potentially surrounded by spaces | 
| allowfullscreen | iframe | Whether to allow the iframe's contents to userequestFullscreen() | Boolean attribute | 
| alt | area;img;input | Replacement text for use when images are not available | Text* | 
| async | script | Execute script when available, without blocking | Boolean attribute | 
| autocomplete | form | Default setting for autofill feature for controls in the form | " on"; "off" | 
| autocomplete | input;select;textarea | Hint for form autofill feature | Autofill field name and related tokens* | 
| autofocus | button;input;keygen;select;textarea | Automatically focus the form control when the page is loaded | Boolean attribute | 
| autoplay | audio;video | Hint that the media resource can be started automatically when the page is loaded | Boolean attribute | 
| challenge | keygen | String to package with the generated and signed public key | Text | 
| charset | meta | Character encoding declaration | Encoding label* | 
| charset | script | Character encoding of the external script resource | Encoding label* | 
| checked | menuitem;input | Whether the command or control is checked | Boolean attribute | 
| cite | blockquote;del;ins;q | Link to the source of the quotation or more information about the edit | Valid URL potentially surrounded by spaces | 
| class | HTML elements | Classes to which the element belongs | Set of space-separated tokens | 
| cols | textarea | Maximum number of characters per line | Valid non-negative integer greater than zero | 
| colspan | td;th | Number of columns that the cell is to span | Valid non-negative integer greater than zero | 
| command | menuitem | Command definition | ID* | 
| content | meta | Value of the element | Text* | 
| contenteditable | HTML elements | Whether the element is editable | " true"; "false" | 
| contextmenu | HTML elements | The element's context menu | ID* | 
| controls | audio;video | Show user agent controls | Boolean attribute | 
| coords | area | Coordinates for the shape to be created in an image map | Valid list of integers* | 
| crossorigin | audio;img;link;script;video | How the element handles crossorigin requests | " anonymous"; "use-credentials" | 
| data | object | Address of the resource | Valid non-empty URL potentially surrounded by spaces | 
| datetime | del;ins | Date and (optionally) time of the change | Valid date string with optional time | 
| datetime | time | Machine-readable value | Valid month string, valid date string, valid yearless date string, valid time string, valid local date and time string, valid time-zone offset string, valid global date and time string, valid week string, valid non-negative integer, or valid duration string | 
| default | menuitem | Mark the command as being a default command | Boolean attribute | 
| default | track | Enable the track if no other text track is more suitable | Boolean attribute | 
| defer | script | Defer script execution | Boolean attribute | 
| dir | HTML elements | The text directionality of the element | " ltr"; "rtl"; "auto" | 
| dir | bdo | The text directionality of the element | " ltr"; "rtl" | 
| dirname | input;textarea | Name of form field to use for sending the element's directionality in form submission | Text* | 
| disabled | button;menuitem;fieldset;input;keygen;optgroup;option;select;textarea | Whether the form control is disabled | Boolean attribute | 
| download | a;area | Whether to download the resource instead of navigating to it, and its file name if so | Text | 
| draggable | HTML elements | Whether the element is draggable | " true"; "false" | 
| dropzone | HTML elements | Accepted item types for drag-and-drop | Unordered set of unique space-separated tokens, ASCII case-insensitive, consisting of accepted types and drag feedback* | 
| enctype | form | Form data set encoding type to use for form submission | " application/x-www-form-urlencoded"; "multipart/form-data"; "text/plain" | 
| for | label | Associate the label with form control | ID* | 
| for | output | Specifies controls from which the output was calculated | Unordered set of unique space-separated tokens, case-sensitive, consisting of IDs* | 
| form | button;fieldset;input;keygen;label;object;output;select;textarea | Associates the control with a formelement | ID* | 
| formaction | button;input | URL to use for form submission | Valid non-empty URL potentially surrounded by spaces | 
| formenctype | button;input | Form data set encoding type to use for form submission | " application/x-www-form-urlencoded"; "multipart/form-data"; "text/plain" | 
| formmethod | button;input | HTTP method to use for form submission | " GET"; "POST" | 
| formnovalidate | button;input | Bypass form control validation for form submission | Boolean attribute | 
| formtarget | button;input | Browsing context for form submission | Valid browsing context name or keyword | 
| headers | td;th | The header cells for this cell | Unordered set of unique space-separated tokens, case-sensitive, consisting of IDs* | 
| height | canvas;embed;iframe;img;input;object;video | Vertical dimension | Valid non-negative integer | 
| hidden | Whether the element is relevant | Boolean attribute | |
| high | meter | Low limit of high range | Valid floating-point number* | 
| href | a;area | Address of the hyperlink | Valid URL potentially surrounded by spaces | 
| href | link | Address of the hyperlink | Valid non-empty URL potentially surrounded by spaces | 
| href | base | Document base URL | Valid URL potentially surrounded by spaces | 
| hreflang | a;area;link | Language of the linked resource | Valid BCP 47 language tag | 
| http-equiv | meta | Pragma directive | Text* | 
| icon | menuitem | Icon for the command | Valid non-empty URL potentially surrounded by spaces | 
| id | HTML elements | The element's ID | Text* | 
| inputmode | input;textarea | Hint for selecting an input modality | " verbatim";
          "latin";
          "latin-name";
          "latin-prose";
          "full-width-latin";
          "kana";
          "kana-name";
          "katakana";
          
          "numeric";
          "tel";
          "email";
          "url" | 
| ismap | img | Whether the image is a server-side image map | Boolean attribute | 
| itemid | HTML elements | Global identifier for a microdata item | Valid URL potentially surrounded by spaces | 
| itemprop | HTML elements | Property names of a microdata item | Unordered set of unique space-separated tokens, case-sensitive, consisting of valid absolute URLs, defined property names, or text* | 
| itemref | HTML elements | Referenced elements | Unordered set of unique space-separated tokens, case-sensitive, consisting of IDs* | 
| itemscope | HTML elements | Introduces a microdata item | Boolean attribute | 
| itemtype | HTML elements | Item types of a microdata item | Unordered set of unique space-separated tokens, case-sensitive, consisting of valid absolute URL* | 
| keytype | keygen | The type of cryptographic key to generate | Text* | 
| kind | track | The type of text track | " subtitles";
          "captions";
          "descriptions";
          "chapters";
          "metadata" | 
| label | menuitem;menu;optgroup;option;track | User-visible label | Text | 
| lang | HTML elements | Language of the element | Valid BCP 47 language tag or the empty string | 
| list | input | List of autocomplete options | ID* | 
| loop | audio;video | Whether to loop the media resource | Boolean attribute | 
| low | meter | High limit of low range | Valid floating-point number* | 
| manifest | html | Application cache manifest | Valid non-empty URL potentially surrounded by spaces | 
| max | input | Maximum value | Varies* | 
| max | meter;progress | Upper bound of range | Valid floating-point number* | 
| maxlength | input;textarea | Maximum length of value | Valid non-negative integer | 
| media | link;style | Applicable media | Valid media query list | 
| mediagroup | audio;video | Groups media elements together with an implicit MediaController | Text | 
| menu | button | Specifies the element's designated pop-up menu | ID* | 
| method | form | HTTP method to use for form submission | " GET";
          "POST";
          "dialog" | 
| min | input | Minimum value | Varies* | 
| min | meter | Lower bound of range | Valid floating-point number* | 
| minlength | input;textarea | Minimum length of value | Valid non-negative integer | 
| multiple | input;select | Whether to allow multiple values | Boolean attribute | 
| muted | audio;video | Whether to mute the media resource by default | Boolean attribute | 
| name | button;fieldset;input;keygen;output;select;textarea | Name of form control to use for form submission and in the form.elementsAPI | Text* | 
| name | form | Name of form to use in the document.formsAPI | Text* | 
| name | iframe;object | Name of nested browsing context | Valid browsing context name or keyword | 
| name | map | Name of image map to reference from the usemapattribute | Text* | 
| name | meta | Metadata name | Text* | 
| name | param | Name of parameter | Text | 
| novalidate | form | Bypass form control validation for form submission | Boolean attribute | 
| open | details | Whether the details are visible | Boolean attribute | 
| open | dialog | Whether the dialog box is showing | Boolean attribute | 
| optimum | meter | Optimum value in gauge | Valid floating-point number* | 
| pattern | input | Pattern to be matched by the form control's value | Regular expression matching the JavaScript Pattern production | 
| ping | a;area | URLs to ping | Set of space-separated tokens consisting of valid non-empty URLs | 
| placeholder | input;textarea | User-visible label to be placed within the form control | Text* | 
| poster | video | Poster frame to show prior to video playback | Valid non-empty URL potentially surrounded by spaces | 
| preload | audio;video | Hints how much buffering the media resource will likely need | " none";
          "metadata";
          "auto" | 
| radiogroup | menuitem | Name of group of commands to treat as a radio button group | Text | 
| readonly | input;textarea | Whether to allow the value to be edited by the user | Boolean attribute | 
| rel | a;area;link | Relationship between the document containing the hyperlink and the destination resource | Set of space-separated tokens* | 
| required | input;select;textarea | Whether the control is required for form submission | Boolean attribute | 
| reversed | ol | Number the list backwards | Boolean attribute | 
| rows | textarea | Number of lines to show | Valid non-negative integer greater than zero | 
| rowspan | td;th | Number of rows that the cell is to span | Valid non-negative integer | 
| sandbox | iframe | Security rules for nested content | Unordered set of unique space-separated tokens, ASCII case-insensitive, consisting of
          " allow-forms",
          "allow-pointer-lock",
          "allow-popups",
          "allow-same-origin",
          "allow-scriptsand
          "allow-top-navigation" | 
| spellcheck | HTML elements | Whether the element is to have its spelling and grammar checked | " true"; "false" | 
| scope | th | Specifies which cells the header cell applies to | " row";
          "col";
          "rowgroup";
          "colgroup" | 
| scoped | style | Whether the styles apply to the entire document or just the parent subtree | Boolean attribute | 
| seamless | iframe | Whether to apply the document's styles to the nested content | Boolean attribute | 
| selected | option | Whether the option is selected by default | Boolean attribute | 
| shape | area | The kind of shape to be created in an image map | " circle";
          "default";
          "poly";
          "rect" | 
| size | input;select | Size of the control | Valid non-negative integer greater than zero | 
| sizes | link | Sizes of the icons (for rel="icon") | Unordered set of unique space-separated tokens, ASCII case-insensitive, consisting of sizes* | 
| sortable | table | Enables a sorting interface for the table | Boolean attribute | 
| sorted | th | Column sort direction and ordinality | Set of space-separated tokens, ASCII case-insensitive, consisting of neither, one, or both of " reversed" and a valid non-negative integer greater than zero | 
| span | col;colgroup | Number of columns spanned by the element | Valid non-negative integer greater than zero | 
| src | audio;embed;iframe;img;input;script;source;track;video | Address of the resource | Valid non-empty URL potentially surrounded by spaces | 
| srcdoc | iframe | A document to render in the iframe | The source of an iframesrcdocdocument* | 
| srclang | track | Language of the text track | Valid BCP 47 language tag | 
| srcset | img | Images to use in different situations (e.g. high-resolution displays, small monitors, etc) | Comma-separated list of image candidate strings | 
| start | ol | Ordinal value of the first item | Valid integer | 
| step | input | Granularity to be matched by the form control's value | Valid floating-point number greater than zero, or " any" | 
| style | HTML elements | Presentational and formatting instructions | CSS declarations* | 
| tabindex | HTML elements | Whether the element is focusable, and the relative order of the element for the purposes of sequential focus navigation | Valid integer | 
| target | a;area | Browsing context for hyperlink navigation | Valid browsing context name or keyword | 
| target | base | Default browsing context for hyperlink navigation and form submission | Valid browsing context name or keyword | 
| target | form | Browsing context for form submission | Valid browsing context name or keyword | 
| title | HTML elements | Advisory information for the element | Text | 
| title | abbr;dfn | Full term or expansion of abbreviation | Text | 
| title | input | Description of pattern (when used with patternattribute) | Text | 
| title | menuitem | Hint describing the command | Text | 
| title | link | Title of the link | Text | 
| title | link;style | Alternative style sheet set name | Text | 
| translate | HTML elements | Whether the element is to be translated when the page is localized | " yes"; "no" | 
| type | a;area;link | Hint for the type of the referenced resource | Valid MIME type | 
| type | button | Type of button | " submit";
          "reset";
          "button";
          "menu" | 
| type | embed;object;script;source;style | Type of embedded resource | Valid MIME type | 
| type | input | Type of form control | inputtype keyword | 
| type | menu | Type of menu | " popup"; "toolbar" | 
| type | menuitem | Type of command | " command";
          "checkbox";
          "radio" | 
| type | ol | Kind of list marker | " 1";
          "a";
          "A";
          "i";
          "I" | 
| typemustmatch | object | Whether the typeattribute and the Content-Type value need to match for the resource to be used | Boolean attribute | 
| usemap | img;object | Name of image map to use | Valid hash-name reference* | 
| value | button;option | Value to be used for form submission | Text | 
| value | data | Machine-readable value | Text* | 
| value | input | Value of the form control | Varies* | 
| value | li | Ordinal value of the list item | Valid integer | 
| value | meter;progress | Current value of the element | Valid floating-point number | 
| value | param | Value of parameter | Text | 
| width | canvas;embed;iframe;img;input;object;video | Horizontal dimension | Valid non-negative integer | 
| wrap | textarea | How the value of the form control is to be wrapped for form submission | " soft";
          "hard" | 
An asterisk (*) in a cell indicates that the actual rules are more complicated than indicated in the table above.
This section is non-normative.
This section is non-normative.
INSERT INTERFACES HEREThis section is non-normative.
| Event | Interface | Interesting targets | Description | 
|---|---|---|---|
| abort | Event | Window | Fired at the Windowwhen the download was aborted by the user | 
| autocomplete | Event | formelements | Fired at a formelement when it is autofilled | 
| autocompleteerror | Event | formelements | Fired at a formelement when a bulk autofill fails | 
| DOMContentLoaded | Event | Document | Fired at the Documentonce the parser has finished | 
| afterprint | Event | Window | Fired at the Windowafter printing | 
| afterscriptexecute | Event | scriptelements | Fired at scriptelements after the script runs (just before the correspondingloadevent) | 
| beforeprint | Event | Window | Fired at the Windowbefore printing | 
| beforescriptexecute | Event | scriptelements | Fired at scriptelements just before the script runs; canceling the event cancels the running of the script | 
| beforeunload | BeforeUnloadEvent | Window | Fired at the Windowwhen the page is about to be unloaded, in case the page would like to show a warning prompt | 
| blur | Event | Window, elements | Fired at nodes when they stop being focused | 
| cancel | Event | dialogelements | Fired at dialogelements when they are canceled by the user (e.g. by pressing the Escape key) | 
| change | Event | Form controls | Fired at controls when the user commits a value change (see also the changeevent ofinputelements) | 
| click | MouseEvent | Elements | Normally a mouse event; also synthetically fired at an element before its activation behaviour is run, when an element is activated from a non-pointer input device (e.g. a keyboard) | 
| close | Event | dialogelements,WebSocket | Fired at dialogelements when they are closed, and atWebSocketelements when the connection is terminated | 
| connect | MessageEvent | SharedWorkerGlobalScope | Fired at a shared worker's global scope when a new client connects | 
| contextmenu | Event | Elements | Fired at elements when the user requests their context menu | 
| error | Event | Global scope objects, Workerobjects, elements, networking-related objects | Fired when unexpected errors occur (e.g. networking errors, script errors, decoding errors) | 
| focus | Event | Window, elements | Fired at nodes gaining focus | 
| hashchange | HashChangeEvent | Window | Fired at the Windowwhen the fragment identifier part of the document's address changes | 
| input | Event | Form controls | Fired at controls when the user changes the value (see also the changeevent ofinputelements) | 
| invalid | Event | Form controls | Fired at controls during form validation if they do not satisfy their constraints | 
| languagechange | Event | Global scope objects | Fired at the global scope object when the user's preferred languages change | 
| load | Event | Window, elements | Fired at the Windowwhen the document has finished loading; fired at an element containing a resource (e.g.img,embed) when its resource has finished loading | 
| loadend | EventorProgressEvent | imgelements | Fired at imgelements after a successful load | 
| loadstart | ProgressEvent | imgelements | Fired at imgelements when a load begins (see also media element events) | 
| message | MessageEvent | Window,EventSource,WebSocket,MessagePort,BroadcastChannel,DedicatedWorkerGlobalScope,Worker | Fired at an object when it receives a message | 
| offline | Event | Global scope objects | Fired at the global scope object when the network connections fails | 
| online | Event | Global scope objects | Fired at the global scope object when the network connections returns | 
| open | Event | EventSource,WebSocket | Fired at networking-related objects when a connection is established | 
| pagehide | PageTransitionEvent | Window | Fired at the Windowwhen the page's entry in the session history stops being the current entry | 
| pageshow | PageTransitionEvent | Window | Fired at the Windowwhen the page's entry in the session history becomes the current entry | 
| popstate | PopStateEvent | Window | Fired at the Windowwhen the user navigates the session history | 
| progress | ProgressEvent | imgelements | Fired at imgelements during a CORS-same-origin image load (see also media element events) | 
| readystatechange | Event | Document | Fired at the Documentwhen it finishes parsing and again when all its subresources have finished loading | 
| reset | Event | formelements | Fired at a formelement when it is reset | 
| select | Event | Form controls | Fired at form controls when their text selection is adjusted (whether by an API or by the user) | 
| show | RelatedEvent | menuelements | Fired at a menuelement when it is shown as a context menu | 
| sort | Event | tableelements | Fired at tableelements before it is sorted; canceling the event cancels the sorting of the table | 
| storage | StorageEvent | Window | Fired at Windowevent when the correspondinglocalStorageorsessionStoragestorage areas change | 
| submit | Event | formelements | Fired at a formelement when it is submitted | 
| toggle | Event | detailselement | Fired at detailselements when they open or close | 
| unload | Event | Window | Fired at the Windowobject when the page is going away | 
See also media element events, application cache events, and drag-and-drop events.
This section is non-normative.
The following MIME types are mentioned in this specification:
application/atom+xmlapplication/ecmascriptapplication/javascriptapplication/jsonapplication/x-ecmascriptapplication/x-javascriptapplication/octet-streamapplication/microdata+jsonapplication/rss+xmlapplication/x-www-form-urlencodedapplication/xhtml+xmlapplication/xmlimage/gifimage/jpegimage/pngimage/svg+xmlmultipart/form-datamultipart/mixedmultipart/x-mixed-replacetext/cache-manifesttext/csstext/ecmascripttext/event-streamtext/javascripttext/javascript1.0text/javascript1.1text/javascript1.2text/javascript1.3text/javascript1.4text/javascript1.5text/jscripttext/livescripttext/plaintext/htmltext/pingtext/uri-listtext/vcardtext/x-ecmascripttext/x-javascripttext/xmlvideo/mp4video/mpeg