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 type strings with no parameters or audio/*,video/*, orimage/* | 
| accept-charset | form | Character encodings to use for form submission | ASCII case-insensitive match for " UTF-8" | 
| accesskey | HTML elements | Keyboard shortcut to activate or focus element | Ordered set of unique space-separated tokens, case-sensitive, consisting of one code point in length | 
| action | form | URL to use for form submission | Valid non-empty URL potentially surrounded by spaces | 
| allow | iframe | Feature policy to be applied to the iframe's contents | Serialized feature policy | 
| allowfullscreen | iframe | Whether to allow the iframe's contents to userequestFullscreen() | Boolean attribute | 
| allowpaymentrequest | iframe | Whether the iframe's contents are allowed to use thePaymentRequestinterface to make payment requests | Boolean attribute | 
| alt | area;img;input | Replacement text for use when images are not available | Text* | 
| as | link | Potential destination for a preload request (for rel="preload" andrel="modulepreload") | Potential destination, for rel="preload"; script-like destination, forrel="modulepreload" | 
| async | script | Execute script when available, without blocking while fetching | Boolean attribute | 
| autocapitalize | HTML elements | Recommended autocapitalization behavior (for supported input methods) | " on";
          "off";
          "none";
          "sentences";
          "words";
          "characters" | 
| 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 | HTML elements | Automatically focus the element 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 | 
| charset | meta | Character encoding declaration | " utf-8" | 
| checked | input | Whether the 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 | 
| color | link | Color to use when customizing a site's icon (for rel="mask-icon") | CSS <color> | 
| 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 | 
| content | meta | Value of the element | Text* | 
| contenteditable | HTML elements | Whether the element is editable | " true"; "false" | 
| 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 floating-point numbers* | 
| 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 | 
| decoding | img | Decoding hint to use when processing this image for presentation | " sync";
          "async";
          "auto" | 
| 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 control to use for sending the element's directionality in form submission | Text* | 
| disabled | button;input;optgroup;option;select;textarea | Whether the form control is disabled | Boolean attribute | 
| disabled | form-associated custom elements | Trigger " formDisabledCallback" reaction, and
          disable form submission for the element's data. | Boolean attribute | 
| disabled | fieldset | Whether the descendant form controls, except any inside legend, are 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" | 
| enctype | form | Entry list encoding type to use for form submission | " application/x-www-form-urlencoded"; "multipart/form-data"; "text/plain" | 
| enterkeyhint | HTML elements | Hint for selecting an enter key action | " enter";
          "done";
          "go";
          "next";
          "previous";
          "search";
          "send" | 
| 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;object;output;select;textarea;
          form-associated custom elements | Associates the element with a formelement | ID* | 
| formaction | button;input | URL to use for form submission | Valid non-empty URL potentially surrounded by spaces | 
| formenctype | button;input | Entry list encoding type to use for form submission | " application/x-www-form-urlencoded"; "multipart/form-data"; "text/plain" | 
| formmethod | button;input | Variant to use for form submission | " GET";
          "POST";
          "dialog" | 
| 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;link | Language of the linked resource | Valid BCP 47 language tag | 
| http-equiv | meta | Pragma directive | " content-type";
          "default-style";
          "refresh";
          "x-ua-compatible";
          "content-security-policy" | 
| id | HTML elements | The element's ID | Text* | 
| imagesizes | link | Image sizes for different page layouts | Valid source size list | 
| imagesrcset | link | Images to use in different situations (e.g., high-resolution displays, small monitors, etc.) | Comma-separated list of image candidate strings | 
| inputmode | HTML elements | Hint for selecting an input modality | " none";
          "text";
          "tel";
          "email";
          "url";
          "numeric";
          "decimal";
          "search" | 
| integrity | link;script | Integrity metadata used in Subresource Integrity checks [SRI] | Text | 
| is | HTML elements | Creates a customized built-in element | Valid custom element name of a defined customized built-in element | 
| 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* | 
| kind | track | The type of text track | " subtitles";
          "captions";
          "descriptions";
          "chapters";
          "metadata" | 
| label | 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;source;style | Applicable media | Valid media query list | 
| method | form | Variant 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;output;select;textarea;
          form-associated custom elements | Name of the element 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 | 
| name | slot | Name of shadow tree slot | Text | 
| nomodule | script | Prevents execution in user agents that support module scripts | Boolean attribute | 
| nonce | HTML elements | Cryptographic nonce used in Content Security Policy checks [CSP] | 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* | 
| playsinline | video | Encourage the user agent to display video content within the element's playback area | Boolean attribute | 
| 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" | 
| readonly | input;textarea | Whether to allow the value to be edited by the user | Boolean attribute | 
| readonly | form-associated custom elements | Affects willValidate | Boolean attribute | 
| referrerpolicy | a;area;iframe;img;link;script | Referrer policy for fetches initiated by the element | Referrer policy | 
| rel | a;area | Relationship between the location in the document containing the hyperlink and the destination resource | Unordered set of unique space-separated tokens* | 
| rel | link | Relationship between the document containing the hyperlink and the destination resource | Unordered set of unique 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-modals",
          "allow-orientation-lock",
          "allow-pointer-lock",
          "allow-popups",
          "allow-popups-to-escape-sandbox",
          "allow-presentation",
          "allow-same-origin",
          "allow-scripts" and
          "allow-top-navigation" | 
| scope | th | Specifies which cells the header cell applies to | " row";
          "col";
          "rowgroup";
          "colgroup" | 
| 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* | 
| sizes | img;source | Image sizes for different page layouts | Valid source size list | 
| slot | HTML elements | The element's desired slot | Text | 
| span | col;colgroup | Number of columns spanned by the element | Valid non-negative integer greater than zero | 
| spellcheck | HTML elements | Whether the element is to have its spelling and grammar checked | " true"; "false" | 
| 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;source | Images to use in different situations (e.g., high-resolution displays, small monitors, etc.) | Comma-separated list of image candidate strings | 
| start | ol | Starting value of the list | 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 sequentially 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 | link | Title of the link | Text | 
| title | link;style | CSS style sheet set name | Text | 
| translate | HTML elements | Whether the element is to be translated when the page is localized | " yes"; "no" | 
| type | a;link | Hint for the type of the referenced resource | Valid MIME type string | 
| type | button | Type of button | " submit";
          "reset";
          "button" | 
| type | embed;object;source | Type of embedded resource | Valid MIME type string | 
| type | input | Type of form control | inputtype keyword | 
| type | ol | Kind of list marker | " 1";
          "a";
          "A";
          "i";
          "I" | 
| type | script | Type of script | " module"; a valid MIME type string that is not a JavaScript MIME type essence match | 
| 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 | 
| DOMContentLoaded | Event | Document | Fired at the Documentonce the parser has finished | 
| afterprint | Event | Window | Fired at the Windowafter printing | 
| beforeprint | Event | Window | Fired at the Windowbefore printing | 
| 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 inputevent) | 
| click | MouseEvent | Elements | Normally a mouse event; also synthetically fired at an element before its activation behavior is run, when an element is activated from a non-pointer input device (e.g. a keyboard) | 
| close | EventorCloseEvent | 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 | MouseEvent | Elements | Fired at elements when the user requests their context menu | 
| copy | Event | Elements | Fired at elements when the user copies data to the clipboard | 
| cut | Event | Elements | Fired at elements when the user copies the selected data on the clipboard and removes the selection from the document | 
| error | EventorErrorEvent | 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 | 
| formdata | FormDataEvent | formelements | Fired at a formelement when it is constructing the entry list | 
| hashchange | HashChangeEvent | Window | Fired at the Windowwhen the fragment part of the document's URL changes | 
| inputSupport: input-eventChrome for Android 78+Chrome 15+iOS Safari 5.0+Firefox 3.6+Safari 5.1+Samsung Internet 4+UC Browser for Android 12.12+Edge 12+IE 10+Opera Mini NoneOpera 12.1+KaiOS Browser 2.5+ Source: caniuse.com | Event | Form controls | Fired at controls when the user changes the value (see also the changeevent) | 
| invalid | Event | Form controls, formelements | 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 | 
| message | MessageEvent | Window,EventSource,WebSocket,MessagePort,BroadcastChannel,DedicatedWorkerGlobalScope,Worker,ServiceWorkerContainer | Fired at an object when it receives a message | 
| messageerror | MessageEvent | Window,MessagePort,BroadcastChannel,DedicatedWorkerGlobalScope,Worker,ServiceWorkerContainer | Fired at an object when it receives a message that cannot be deserialized | 
| 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 | 
| pageshowSupport: page-transition-eventsChrome for Android 78+Chrome 4+iOS Safari 5.0+Firefox 2+Safari 5+Samsung Internet 4+UC Browser for Android 12.12+Edge 12+IE 11+Opera Mini NoneOpera 15+KaiOS Browser 2.5+ Source: caniuse.com | PageTransitionEvent | Window | Fired at the Windowwhen the page's entry in the session history becomes the current entry | 
| paste | Event | Elements | Fired at elements when the user will insert the clipboard data in the most suitable format (if any) supported for the given context | 
| popstate | PopStateEvent | Window | Fired at the Windowwhen the user navigates the session history | 
| readystatechange | Event | Document | Fired at the Documentwhen it finishes parsing and again when all its subresources have finished loading | 
| rejectionhandled | PromiseRejectionEvent | Global scope objects | Fired at global scope objects when a previously-unhandled promise rejection becomes handled | 
| reset | Event | formelements | Fired at a formelement when it is reset | 
| securitypolicyviolation | Event | Elements | Fired at elements when a Content Security Policy violation is generated [CSP] | 
| select | Event | Form controls | Fired at form controls when their text selection is adjusted (whether by an API or by the user) | 
| slotchange | Event | slotelements | Fired at slotelements when their assigned nodes change | 
| 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 | 
| unhandledrejection | PromiseRejectionEvent | Global scope objects | Fired at global scope objects when a promise rejection goes unhandled | 
| 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/jsontext/livescripttext/plaintext/htmltext/pingtext/uri-listtext/vcardtext/vtttext/x-ecmascripttext/x-javascripttext/xmlvideo/mp4video/mpeg