HTML Standard
Table of contents
Introduction
Common infrastructure
Semantics, structure, and APIs of HTML documents
The elements of HTML
Microdata
User interaction
Loading web pages
Web application APIs
Communication
10
Web workers
11
Worklets
12
Web storage
13
The HTML syntax
14
The XML syntax
15
Rendering
16
Obsolete features
17
IANA considerations
Index
References
Acknowledgments
Intellectual property rights
Full table of contents
Introduction
1.1
Where does this specification fit?
1.2
Is this HTML5?
1.3
Background
1.4
Audience
1.5
Scope
1.6
History
1.7
Design notes
1.7.1
Serializability of script execution
1.7.2
Extensibility
1.8
HTML vs XML syntax
1.9
Structure of this specification
1.9.1
How to read this specification
1.9.2
Typographic conventions
1.10
A quick introduction to HTML
1.10.1
Writing secure applications with HTML
1.10.2
Common pitfalls to avoid when using the scripting APIs
1.10.3
How to catch mistakes when writing HTML: validators and conformance checkers
1.11
Conformance requirements for authors
1.11.1
Presentational markup
1.11.2
Syntax errors
1.11.3
Restrictions on content models and on attribute values
1.12
Suggested reading
Common infrastructure
2.1
Terminology
2.1.1
Parallelism
2.1.2
Resources
2.1.3
XML compatibility
2.1.4
DOM trees
2.1.5
Scripting
2.1.6
Plugins
2.1.7
Character encodings
2.1.8
Conformance classes
2.1.9
Dependencies
2.1.10
Extensibility
2.1.11
Interactions with XPath and XSLT
2.2
Policy-controlled features
2.3
Common microsyntaxes
2.3.1
Common parser idioms
2.3.2
Boolean attributes
2.3.3
Keywords and enumerated attributes
2.3.4
Numbers
2.3.4.1
Signed integers
2.3.4.2
Non-negative integers
2.3.4.3
Floating-point numbers
2.3.4.4
Percentages and lengths
2.3.4.5
Nonzero percentages and lengths
2.3.4.6
Lists of floating-point numbers
2.3.4.7
Lists of dimensions
2.3.5
Dates and times
2.3.5.1
Months
2.3.5.2
Dates
2.3.5.3
Yearless dates
2.3.5.4
Times
2.3.5.5
Local dates and times
2.3.5.6
Time zones
2.3.5.7
Global dates and times
2.3.5.8
Weeks
2.3.5.9
Durations
2.3.5.10
Vaguer moments in time
2.3.6
Legacy colors
2.3.7
Space-separated tokens
2.3.8
Comma-separated tokens
2.3.9
References
2.3.10
Media queries
2.3.11
Unique internal values
2.4
URLs
2.4.1
Terminology
2.4.2
Parsing URLs
2.4.3
Document base URLs
2.5
Fetching resources
2.5.1
Terminology
2.5.2
Determining the type of a resource
2.5.3
Extracting character encodings from
meta
elements
2.5.4
CORS settings attributes
2.5.5
Referrer policy attributes
2.5.6
Nonce attributes
2.5.7
Lazy loading attributes
2.5.8
Blocking attributes
2.5.9
Fetch priority attributes
2.6
Common DOM interfaces
2.6.1
Reflecting content attributes in IDL attributes
2.6.2
Using reflect via IDL extended attributes
2.6.3
Using reflect in specifications
2.6.4
Collections
2.6.4.1
The
HTMLAllCollection
interface
2.6.4.1.1
[[Call]] (
thisArgument
argumentsList
2.6.4.2
The
HTMLFormControlsCollection
interface
2.6.4.3
The
HTMLOptionsCollection
interface
2.6.5
The
DOMStringList
interface
2.7
Safe passing of structured data
2.7.1
Serializable objects
2.7.2
Transferable objects
2.7.3
StructuredSerializeInternal (
value
forStorage
[ ,
memory
] )
2.7.4
StructuredSerialize (
value
2.7.5
StructuredSerializeForStorage (
value
2.7.6
StructuredDeserialize (
serialized
targetRealm
[ ,
memory
] )
2.7.7
StructuredSerializeWithTransfer (
value
transferList
2.7.8
StructuredDeserializeWithTransfer (
serializeWithTransferResult
targetRealm
2.7.9
Performing serialization and
transferring from other specifications
2.7.10
Structured cloning API
Semantics, structure, and APIs of HTML documents
3.1
Documents
3.1.1
The
Document
object
3.1.2
The
DocumentOrShadowRoot
interface
3.1.3
Ancestor origins
3.1.4
Resource metadata management
3.1.5
Reporting document loading status
3.1.6
Render-blocking mechanism
3.1.7
DOM tree accessors
3.2
Elements
3.2.1
Semantics
3.2.2
Elements in the DOM
3.2.3
HTML element constructors
3.2.4
Element definitions
3.2.4.1
Attributes
3.2.5
Content models
3.2.5.1
The "nothing" content model
3.2.5.2
Kinds of content
3.2.5.2.1
Metadata content
3.2.5.2.2
Flow content
3.2.5.2.3
Sectioning content
3.2.5.2.4
Heading content
3.2.5.2.5
Phrasing content
3.2.5.2.6
Embedded content
3.2.5.2.7
Interactive content
3.2.5.2.8
Palpable content
3.2.5.2.9
Script-supporting elements
3.2.5.2.10
select
element inner content elements
3.2.5.2.11
optgroup
element inner content elements
3.2.5.2.12
option
element inner content elements
3.2.5.3
Transparent content models
3.2.5.4
Paragraphs
3.2.6
Global attributes
3.2.6.1
The
title
attribute
3.2.6.2
The
lang
and
xml:lang
attributes
3.2.6.3
The
translate
attribute
3.2.6.4
The
dir
attribute
3.2.6.5
The
style
attribute
3.2.6.6
Embedding custom non-visible data with the
data-*
attributes
3.2.7
The
innerText
and
outerText
properties
3.2.8
Requirements relating to the bidirectional algorithm
3.2.8.1
Authoring conformance criteria for bidirectional-algorithm formatting characters
3.2.8.2
User agent conformance criteria
3.2.9
Requirements related to ARIA and to platform accessibility APIs
The elements of HTML
4.1
The document element
4.1.1
The
html
element
4.2
Document metadata
4.2.1
The
head
element
4.2.2
The
title
element
4.2.3
The
base
element
4.2.4
The
link
element
4.2.4.1
Processing the
media
attribute
4.2.4.2
Processing the
type
attribute
4.2.4.3
Fetching and processing a resource
from a
link
element
4.2.4.4
Processing `
Link
` headers
4.2.4.5
Early hints
4.2.4.6
Providing users with a means to follow hyperlinks created using the
link
element
4.2.5
The
meta
element
4.2.5.1
Standard metadata names
4.2.5.2
Other metadata names
4.2.5.3
Pragma directives
4.2.5.4
Specifying the document's character encoding
4.2.6
The
style
element
4.2.7
Interactions of styling and scripting
4.3
Sections
4.3.1
The
body
element
4.3.2
The
article
element
4.3.3
The
section
element
4.3.4
The
nav
element
4.3.5
The
aside
element
4.3.6
The
h1
h2
h3
h4
h5
, and
h6
elements
4.3.7
The
hgroup
element
4.3.8
The
header
element
4.3.9
The
footer
element
4.3.10
The
address
element
4.3.11
Headings and outlines
4.3.11.1
Heading levels & offsets
4.3.11.2
Sample outlines
4.3.11.3
Exposing outlines to users
4.3.12
Usage summary
4.3.12.1
Article or section?
4.4
Grouping content
4.4.1
The
element
4.4.2
The
hr
element
4.4.3
The
pre
element
4.4.4
The
blockquote
element
4.4.5
The
ol
element
4.4.6
The
ul
element
4.4.7
The
element
4.4.8
The
li
element
4.4.9
The
dl
element
4.4.10
The
dt
element
4.4.11
The
dd
element
4.4.12
The
figure
element
4.4.13
The
figcaption
element
4.4.14
The
main
element
4.4.15
The
element
4.4.16
The
div
element
4.5
Text-level semantics
4.5.1
The
element
4.5.2
The
em
element
4.5.3
The
strong
element
4.5.4
The
small
element
4.5.5
The
element
4.5.6
The
cite
element
4.5.7
The
element
4.5.8
The
dfn
element
4.5.9
The
abbr
element
4.5.10
The
ruby
element
4.5.11
The
rt
element
4.5.12
The
rp
element
4.5.13
The
data
element
4.5.14
The
time
element
4.5.15
The
code
element
4.5.16
The
var
element
4.5.17
The
samp
element
4.5.18
The
kbd
element
4.5.19
The
sub
and
sup
elements
4.5.20
The
element
4.5.21
The
element
4.5.22
The
element
4.5.23
The
mark
element
4.5.24
The
bdi
element
4.5.25
The
bdo
element
4.5.26
The
span
element
4.5.27
The
br
element
4.5.28
The
wbr
element
4.5.29
Usage summary
4.6
Links
4.6.1
Introduction
4.6.2
Links created by
and
area
elements
4.6.3
API for hyperlink elements
4.6.4
API for
and
area
elements
4.6.5
Following hyperlinks
4.6.6
Downloading resources
4.6.7
Hyperlink auditing
4.6.7.1
The `
Ping-From
` and `
Ping-To
` headers
4.6.8
Link types
4.6.8.1
Link type "
alternate
4.6.8.2
Link type "
author
4.6.8.3
Link type "
4.6.8.4
Link type "
canonical
4.6.8.5
Link type "
dns-prefetch
4.6.8.6
Link type "
expect
4.6.8.7
Link type "
external
4.6.8.8
Link type "
help
4.6.8.9
Link type "
icon
4.6.8.10
Link type "
license
4.6.8.11
Link type "
manifest
4.6.8.12
Link type "
modulepreload
4.6.8.13
Link type "
nofollow
4.6.8.14
Link type "
noopener
4.6.8.15
Link type "
noreferrer
4.6.8.16
Link type "
opener
4.6.8.17
Link type "
pingback
4.6.8.18
Link type "
preconnect
4.6.8.19
Link type "
prefetch
4.6.8.20
Link type "
preload
4.6.8.21
Link type "
privacy-policy
4.6.8.22
Link type "
4.6.8.23
Link type "
stylesheet
4.6.8.24
Link type "
tag
4.6.8.25
Link Type "
terms-of-service
4.6.8.26
Sequential link types
4.6.8.26.1
Link type "
next
4.6.8.26.2
Link type "
prev
4.6.8.27
Other link types
4.7
Edits
4.7.1
The
ins
element
4.7.2
The
del
element
4.7.3
Attributes common to
ins
and
del
elements
4.7.4
Edits and paragraphs
4.7.5
Edits and lists
4.7.6
Edits and tables
4.8
Embedded content
4.8.1
The
picture
element
4.8.2
The
source
element
4.8.3
The
img
element
4.8.4
Images
4.8.4.1
Introduction
4.8.4.1.1
Adaptive images
4.8.4.2
Attributes common to
source
img
, and
link
elements
4.8.4.2.1
Srcset attributes
4.8.4.2.2
Sizes attributes
4.8.4.3
Processing model
4.8.4.3.1
When to obtain images
4.8.4.3.2
Reacting to DOM mutations
4.8.4.3.3
The list of available images
4.8.4.3.4
Decoding images
4.8.4.3.5
Updating the image data
4.8.4.3.6
Preparing an image for presentation
4.8.4.3.7
Selecting an image source
4.8.4.3.8
Creating a source set from attributes
4.8.4.3.9
Updating the source set
4.8.4.3.10
Parsing a srcset attribute
4.8.4.3.11
Parsing a sizes attribute
4.8.4.3.12
Normalizing the source densities
4.8.4.3.13
Reacting to environment changes
4.8.4.4
Requirements for providing text to act as an alternative for images
4.8.4.4.1
General guidelines
4.8.4.4.2
A link or button containing nothing but the image
4.8.4.4.3
A phrase or paragraph with an alternative graphical representation: charts, diagrams, graphs, maps, illustrations
4.8.4.4.4
A short phrase or label with an alternative graphical representation: icons, logos
4.8.4.4.5
Text that has been rendered to a graphic for typographical effect
4.8.4.4.6
A graphical representation of some of the surrounding text
4.8.4.4.7
Ancillary images
4.8.4.4.8
A purely decorative image that doesn't add any information
4.8.4.4.9
A group of images that form a single larger picture with no links
4.8.4.4.10
A group of images that form a single larger picture with links
4.8.4.4.11
A key part of the content
4.8.4.4.12
An image not intended for the user
4.8.4.4.13
An image in an email or private document intended for a specific person who is known to be able to view images
4.8.4.4.14
Guidance for markup generators
4.8.4.4.15
Guidance for conformance checkers
4.8.5
The
iframe
element
4.8.6
The
embed
element
4.8.7
The
object
element
4.8.8
The
video
element
4.8.9
The
audio
element
4.8.10
The
track
element
4.8.11
Media elements
4.8.11.1
Error codes
4.8.11.2
Location of the media resource
4.8.11.3
MIME types
4.8.11.4
Network states
4.8.11.5
Loading the media resource
4.8.11.6
Offsets into the media resource
4.8.11.7
Ready states
4.8.11.8
Playing the media resource
4.8.11.9
Seeking
4.8.11.10
Media resources with multiple media tracks
4.8.11.10.1
AudioTrackList
and
VideoTrackList
objects
4.8.11.10.2
Selecting specific audio and video tracks declaratively
4.8.11.11
Timed text tracks
4.8.11.11.1
Text track model
4.8.11.11.2
Sourcing in-band text tracks
4.8.11.11.3
Sourcing out-of-band text tracks
4.8.11.11.4
Guidelines for exposing cues in various formats as text track cues
4.8.11.11.5
Text track API
4.8.11.11.6
Event handlers for objects of the text track APIs
4.8.11.11.7
Best practices for metadata text tracks
4.8.11.12
Identifying a track kind through a URL
4.8.11.13
User interface
4.8.11.14
Time ranges
4.8.11.15
The
TrackEvent
interface
4.8.11.16
Events summary
4.8.11.17
Security and privacy considerations
4.8.11.18
Best practices for authors using media elements
4.8.11.19
Best practices for implementers of media elements
4.8.12
The
map
element
4.8.13
The
area
element
4.8.14
Image maps
4.8.14.1
Authoring
4.8.14.2
Processing model
4.8.15
MathML
4.8.16
SVG
4.8.17
Dimension attributes
4.9
Tabular data
4.9.1
The
table
element
4.9.1.1
Techniques for describing tables
4.9.1.2
Techniques for table design
4.9.2
The
caption
element
4.9.3
The
colgroup
element
4.9.4
The
col
element
4.9.5
The
tbody
element
4.9.6
The
thead
element
4.9.7
The
tfoot
element
4.9.8
The
tr
element
4.9.9
The
td
element
4.9.10
The
th
element
4.9.11
Attributes common to
td
and
th
elements
4.9.12
Processing model
4.9.12.1
Forming a table
4.9.12.2
Forming relationships between data cells and header cells
4.9.13
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.1.5
Enabling client-side automatic filling of form controls
4.10.1.6
Improving the user experience on mobile devices
4.10.1.7
The difference between the field type, the autofill field name, and the input modality
4.10.1.8
Date, time, and number formats
4.10.2
Categories
4.10.3
The
form
element
4.10.4
The
label
element
4.10.5
The
input
element
4.10.5.1
States of the
type
attribute
4.10.5.1.1
Hidden state (
type=hidden
4.10.5.1.2
Text (
type=text
) state and Search state (
type=search
4.10.5.1.3
Telephone state (
type=tel
4.10.5.1.4
URL state (
type=url
4.10.5.1.5
Email state (
type=email
4.10.5.1.6
Password state (
type=password
4.10.5.1.7
Date state (
type=date
4.10.5.1.8
Month state (
type=month
4.10.5.1.9
Week state (
type=week
4.10.5.1.10
Time state (
type=time
4.10.5.1.11
Local Date and Time state (
type=datetime-local
4.10.5.1.12
Number state (
type=number
4.10.5.1.13
Range state (
type=range
4.10.5.1.14
Color state (
type=color
4.10.5.1.15
Checkbox state (
type=checkbox
4.10.5.1.16
Radio Button state (
type=radio
4.10.5.1.17
File Upload state (
type=file
4.10.5.1.18
Submit Button state (
type=submit
4.10.5.1.19
Image Button state (
type=image
4.10.5.1.20
Reset Button state (
type=reset
4.10.5.1.21
Button state (
type=button
4.10.5.2
Implementation notes regarding localization of form controls
4.10.5.3
Common
input
element attributes
4.10.5.3.1
The
maxlength
and
minlength
attributes
4.10.5.3.2
The
size
attribute
4.10.5.3.3
The
readonly
attribute
4.10.5.3.4
The
required
attribute
4.10.5.3.5
The
multiple
attribute
4.10.5.3.6
The
pattern
attribute
4.10.5.3.7
The
min
and
max
attributes
4.10.5.3.8
The
step
attribute
4.10.5.3.9
The
list
attribute
4.10.5.3.10
The
placeholder
attribute
4.10.5.4
Common
input
element APIs
4.10.5.5
Common event behaviors
4.10.6
The
button
element
4.10.7
The
select
element
4.10.8
The
datalist
element
4.10.9
The
optgroup
element
4.10.10
The
option
element
4.10.11
The
textarea
element
4.10.12
The
output
element
4.10.13
The
progress
element
4.10.14
The
meter
element
4.10.15
The
fieldset
element
4.10.16
The
legend
element
4.10.17
The
selectedcontent
element
4.10.18
Form control infrastructure
4.10.18.1
A form control's value
4.10.18.2
Mutability
4.10.18.3
Association of controls and forms
4.10.19
Attributes common to form controls
4.10.19.1
Naming form controls: the
name
attribute
4.10.19.2
Submitting element directionality: the
dirname
attribute
4.10.19.3
Limiting user input length: the
maxlength
attribute
4.10.19.4
Setting minimum input length requirements: the
minlength
attribute
4.10.19.5
Enabling and disabling form controls: the
disabled
attribute
4.10.19.6
Form submission attributes
4.10.19.7
Autofill
4.10.19.7.1
Autofilling form controls: the
autocomplete
attribute
4.10.19.7.2
Processing model
4.10.20
APIs for the text control selections
4.10.21
Constraints
4.10.21.1
Definitions
4.10.21.2
Constraint validation
4.10.21.3
The constraint validation API
4.10.21.4
Security
4.10.22
Form submission
4.10.22.1
Introduction
4.10.22.2
Implicit submission
4.10.22.3
Form submission algorithm
4.10.22.4
Constructing the entry list
4.10.22.5
Selecting a form submission encoding
4.10.22.6
Converting an entry list to a list of name-value pairs
4.10.22.7
URL-encoded form data
4.10.22.8
Multipart form data
4.10.22.9
Plain text form data
4.10.22.10
The
SubmitEvent
interface
4.10.22.11
The
FormDataEvent
interface
4.10.23
Resetting a form
4.11
Interactive elements
4.11.1
The
details
element
4.11.2
The
summary
element
4.11.3
Commands
4.11.3.1
Facets
4.11.3.2
Using the
element to define a command
4.11.3.3
Using the
button
element to define a command
4.11.3.4
Using the
input
element to define a command
4.11.3.5
Using the
option
element to define a command
4.11.3.6
Using the
accesskey
attribute
on a
legend
element to define a command
4.11.3.7
Using the
accesskey
attribute to define a command on other elements
4.11.4
The
dialog
element
4.11.5
Dialog light dismiss
4.12
Scripting
4.12.1
The
script
element
4.12.1.1
Processing model
4.12.1.2
Scripting languages
4.12.1.3
Restrictions for contents of
script
elements
4.12.1.4
Inline documentation for external scripts
4.12.1.5
Interaction of
script
elements and XSLT
4.12.2
The
noscript
element
4.12.3
The
template
element
4.12.3.1
Interaction of
template
elements with XSLT and XPath
4.12.4
The
slot
element
4.12.5
The
canvas
element
4.12.5.1
The 2D rendering context
4.12.5.1.1
Implementation notes
4.12.5.1.2
The canvas settings
4.12.5.1.3
The canvas state
4.12.5.1.4
Line styles
4.12.5.1.5
Text styles
4.12.5.1.6
Building paths
4.12.5.1.7
Path2D
objects
4.12.5.1.8
Transformations
4.12.5.1.9
Image sources for 2D rendering contexts
4.12.5.1.10
Fill and stroke styles
4.12.5.1.11
Drawing rectangles to the bitmap
4.12.5.1.12
Drawing text to the bitmap
4.12.5.1.13
Drawing paths to the canvas
4.12.5.1.14
Drawing focus rings
4.12.5.1.15
Drawing images
4.12.5.1.16
Pixel manipulation
4.12.5.1.17
Compositing
4.12.5.1.18
Image smoothing
4.12.5.1.19
Shadows
4.12.5.1.20
Filters
4.12.5.1.21
Working with externally-defined SVG filters
4.12.5.1.22
Drawing model
4.12.5.1.23
Best practices
4.12.5.1.24
Examples
4.12.5.2
The
ImageBitmap
rendering context
4.12.5.2.1
Introduction
4.12.5.2.2
The
ImageBitmapRenderingContext
interface
4.12.5.3
The
OffscreenCanvas
interface
4.12.5.3.1
The offscreen 2D rendering context
4.12.5.4
Color spaces and color space
conversion
4.12.5.5
Serializing bitmaps to a file
4.12.5.6
Security with
canvas
elements
4.12.5.7
Premultiplied alpha and the 2D rendering context
4.13
Custom elements
4.13.1
Introduction
4.13.1.1
Creating an autonomous custom element
4.13.1.2
Creating a form-associated custom element
4.13.1.3
Creating a custom element with default accessible roles, states, and properties
4.13.1.4
Creating a customized built-in element
4.13.1.5
Drawbacks of autonomous custom elements
4.13.1.6
Upgrading elements after their creation
4.13.1.7
Scoped custom element registries
4.13.1.8
Exposing custom element states
4.13.2
Requirements for custom element constructors and
reactions
4.13.2.1
Preserving custom element state when moved
4.13.3
Core concepts
4.13.4
The
CustomElementRegistry
interface
4.13.5
Upgrades
4.13.6
Custom element reactions
4.13.7
Element internals
4.13.7.1
The
ElementInternals
interface
4.13.7.2
Shadow root access
4.13.7.3
Form-associated custom elements
4.13.7.4
Accessibility semantics
4.13.7.5
Custom state pseudo-class
4.14
Common idioms without dedicated elements
4.14.1
Breadcrumb navigation
4.14.2
Tag clouds
4.14.3
Conversations
4.14.4
Footnotes
4.15
Disabled elements
4.16
Matching HTML elements using selectors and CSS
4.16.1
Case-sensitivity of the CSS 'attr()' function
4.16.2
Case-sensitivity of selectors
4.16.3
Pseudo-classes
Microdata
5.1
Introduction
5.1.1
Overview
5.1.2
The basic syntax
5.1.3
Typed items
5.1.4
Global identifiers for items
5.1.5
Selecting names when defining vocabularies
5.2
Encoding microdata
5.2.1
The microdata model
5.2.2
Items
5.2.3
Names: the
itemprop
attribute
5.2.4
Values
5.2.5
Associating names with items
5.2.6
Microdata and other namespaces
5.3
Sample microdata vocabularies
5.3.1
vCard
5.3.1.1
Conversion to vCard
5.3.1.2
Examples
5.3.2
vEvent
5.3.2.1
Conversion to iCalendar
5.3.2.2
Examples
5.3.3
Licensing works
5.3.3.1
Examples
5.4
Converting HTML to other formats
5.4.1
JSON
User interaction
6.1
The
hidden
attribute
6.2
Page visibility
6.2.1
The
VisibilityStateEntry
interface
6.3
Inert subtrees
6.3.1
Modal dialogs and inert subtrees
6.3.2
The
inert
attribute
6.4
Tracking user activation
6.4.1
Data model
6.4.2
Processing model
6.4.3
APIs gated by user activation
6.4.4
The
UserActivation
interface
6.4.5
User agent automation
6.5
Activation behavior of elements
6.5.1
The
ToggleEvent
interface
6.5.2
The
CommandEvent
interface
6.6
Focus
6.6.1
Introduction
6.6.2
Data model
6.6.3
The
tabindex
attribute
6.6.4
Processing model
6.6.5
Sequential focus navigation
6.6.6
Focus management APIs
6.6.7
The
autofocus
attribute
6.7
Assigning keyboard shortcuts
6.7.1
Introduction
6.7.2
The
accesskey
attribute
6.7.3
Processing
model
6.8
Editing
6.8.1
Making document regions editable: The
contenteditable
content attribute
6.8.2
Making entire documents
editable: the
designMode
getter and setter
6.8.3
Best practices for in-page editors
6.8.4
Editing APIs
6.8.5
Spelling and grammar checking
6.8.6
Writing suggestions
6.8.7
Autocapitalization
6.8.8
Autocorrection
6.8.9
Input modalities: the
inputmode
attribute
6.8.10
Input modalities: the
enterkeyhint
attribute
6.9
Find-in-page
6.9.1
Introduction
6.9.2
Interaction with
details
and
hidden=until-found
6.9.3
Interaction with selection
6.10
Close requests and close watchers
6.10.1
Close requests
6.10.2
Close watcher infrastructure
6.10.3
The
CloseWatcher
interface
6.11
Drag and drop
6.11.1
Introduction
6.11.2
The drag data store
6.11.3
The
DataTransfer
interface
6.11.3.1
The
DataTransferItemList
interface
6.11.3.2
The
DataTransferItem
interface
6.11.4
The
DragEvent
interface
6.11.5
Processing model
6.11.6
Events summary
6.11.7
The
draggable
attribute
6.11.8
Security risks in the drag-and-drop model
6.12
The
popover
attribute
6.12.1
The popover target attributes
6.12.2
Popover light dismiss
Loading web pages
7.1
Supporting concepts
7.1.1
Origins
7.1.1.1
Sites
7.1.1.2
Relaxing the same-origin restriction
7.1.1.3
The
Origin
interface
7.1.2
Origin-keyed agent clusters
7.1.3
Cross-origin opener policies
7.1.3.1
The headers
7.1.3.2
Browsing context group
switches due to opener policy
7.1.3.3
Reporting
7.1.4
Cross-origin embedder policies
7.1.4.1
The headers
7.1.4.2
Embedder policy checks
7.1.5
Sandboxing
7.1.6
iframe
element referrer policy
7.1.7
Policy containers
7.2
APIs related to navigation and
session history
7.2.1
Security infrastructure for
Window
WindowProxy
, and
Location
objects
7.2.1.1
Integration with IDL
7.2.1.2
Shared internal slot: [[CrossOriginPropertyDescriptorMap]]
7.2.1.3
Shared abstract operations
7.2.1.3.1
CrossOriginProperties (
7.2.1.3.2
CrossOriginPropertyFallback (
7.2.1.3.3
IsPlatformObjectSameOrigin (
7.2.1.3.4
CrossOriginGetOwnPropertyHelper (
7.2.1.3.5
CrossOriginGet (
Receiver
7.2.1.3.6
CrossOriginSet (
Receiver
7.2.1.3.7
CrossOriginOwnPropertyKeys (
7.2.2
The
Window
object
7.2.2.1
Opening and closing windows
7.2.2.2
Indexed access on the
Window
object
7.2.2.3
Named access on the
Window
object
7.2.2.4
Accessing related windows
7.2.2.5
Historical browser interface element APIs
7.2.2.6
Script settings for
Window
objects
7.2.3
The
WindowProxy
exotic object
7.2.3.1
[[GetPrototypeOf]] ( )
7.2.3.2
[[SetPrototypeOf]] (
7.2.3.3
[[IsExtensible]] ( )
7.2.3.4
[[PreventExtensions]] ( )
7.2.3.5
[[GetOwnProperty]] (
7.2.3.6
[[DefineOwnProperty]] (
Desc
7.2.3.7
[[Get]] (
Receiver
7.2.3.8
[[Set]] (
Receiver
7.2.3.9
[[Delete]] (
7.2.3.10
[[OwnPropertyKeys]] ( )
7.2.4
The
Location
interface
7.2.4.1
[[GetPrototypeOf]] ( )
7.2.4.2
[[SetPrototypeOf]] (
7.2.4.3
[[IsExtensible]] ( )
7.2.4.4
[[PreventExtensions]] ( )
7.2.4.5
[[GetOwnProperty]] (
7.2.4.6
[[DefineOwnProperty]] (
Desc
7.2.4.7
[[Get]] (
Receiver
7.2.4.8
[[Set]] (
Receiver
7.2.4.9
[[Delete]] (
7.2.4.10
[[OwnPropertyKeys]] ( )
7.2.5
The
History
interface
7.2.6
The navigation API
7.2.6.1
Introduction
7.2.6.2
The
interface
7.2.6.3
Core infrastructure
7.2.6.4
Initializing and updating the entry list
7.2.6.5
The
NavigationHistoryEntry
interface
7.2.6.6
The history entry list
7.2.6.7
Initiating navigations
7.2.6.8
Ongoing navigation tracking
7.2.6.9
The
NavigationActivation
interface
7.2.6.10
The
navigate
event
7.2.6.10.1
The
NavigateEvent
interface
7.2.6.10.2
The
NavigationPrecommitController
interface
7.2.6.10.3
The
NavigationDestination
interface
7.2.6.10.4
Firing the event
7.2.6.10.5
Scroll and focus behavior
7.2.7
Event interfaces
7.2.7.1
The
NavigationCurrentEntryChangeEvent
interface
7.2.7.2
The
PopStateEvent
interface
7.2.7.3
The
HashChangeEvent
interface
7.2.7.4
The
PageSwapEvent
interface
7.2.7.5
The
PageRevealEvent
interface
7.2.7.6
The
PageTransitionEvent
interface
7.2.7.7
The
BeforeUnloadEvent
interface
7.2.8
The
NotRestoredReasons
interface
7.3
Infrastructure for sequences of documents
7.3.1
Navigables
7.3.1.1
Traversable navigables
7.3.1.2
Top-level traversables
7.3.1.3
Child navigables
7.3.1.4
Jake diagrams
7.3.1.5
Related navigable collections
7.3.1.6
Navigable destruction
7.3.1.7
Navigable target names
7.3.2
Browsing contexts
7.3.2.1
Creating browsing contexts
7.3.2.2
Related browsing contexts
7.3.2.3
Groupings of browsing contexts
7.3.3
Fully active documents
7.4
Navigation and session
history
7.4.1
Session history
7.4.1.1
Session history entries
7.4.1.2
Document state
7.4.1.3
Centralized modifications of session history
7.4.1.4
Low-level operations on session history
7.4.2
7.4.2.1
Supporting concepts
7.4.2.2
Beginning navigation
7.4.2.3
Ending navigation
7.4.2.3.1
The usual cross-document navigation case
7.4.2.3.2
The
javascript:
URL special case
7.4.2.3.3
Fragment navigations
7.4.2.3.4
Non-fetch schemes and external software
7.4.2.4
Preventing navigation
7.4.2.5
Aborting navigation
7.4.3
Reloading and traversing
7.4.4
Non-fragment synchronous "navigations"
7.4.5
Populating a session history entry
7.4.6
Applying the history step
7.4.6.1
Updating the traversable
7.4.6.2
Updating the document
7.4.6.3
Revealing the document
7.4.6.4
Scrolling to a fragment
7.4.6.5
Persisted history entry state
7.5
Document lifecycle
7.5.1
Shared document creation infrastructure
7.5.2
Loading HTML documents
7.5.3
Loading XML documents
7.5.4
Loading text documents
7.5.5
Loading
multipart/x-mixed-replace
documents
7.5.6
Loading media documents
7.5.7
Loading
a document for inline content that doesn't have a DOM
7.5.8
Finishing the loading process
7.5.9
Unloading documents
7.5.10
Destroying documents
7.5.11
Aborting a document load
7.6
Speculative loading
7.6.1
Speculation rules
7.6.1.1
Data model
7.6.1.2
Parsing
7.6.1.3
Processing model
7.6.2
Navigational prefetching
7.6.3
The `
Speculation-Rules
` header
7.6.4
The `
Sec-Speculation-Tags
` header
7.6.5
Security considerations
7.6.5.1
Cross-site requests
7.6.5.2
Injected content
7.6.5.3
IP anonymization
7.6.6
Privacy considerations
7.6.6.1
Heuristics and optionality
7.6.6.2
State partitioning
7.6.6.3
Identity joining
7.7
The `
X-Frame-Options
` header
7.8
The `
Refresh
` header
7.9
Browser user interface
considerations
Web application APIs
8.1
Scripting
8.1.1
Introduction
8.1.2
Agents and agent clusters
8.1.2.1
Integration with the JavaScript agent formalism
8.1.2.2
Integration with the JavaScript agent cluster formalism
8.1.3
Realms and their counterparts
8.1.3.1
Environments
8.1.3.2
Environment settings objects
8.1.3.3
Realms, settings objects, and global objects
8.1.3.3.1
Entry
8.1.3.3.2
Incumbent
8.1.3.3.3
Current
8.1.3.3.4
Relevant
8.1.3.4
Enabling and disabling scripting
8.1.3.5
Secure contexts
8.1.4
Script processing
model
8.1.4.1
Scripts
8.1.4.2
Fetching scripts
8.1.4.3
Creating scripts
8.1.4.4
Calling scripts
8.1.4.5
Killing scripts
8.1.4.6
Runtime script errors
8.1.4.7
Unhandled promise rejections
8.1.4.8
Import map parse results
8.1.4.9
Speculation rules parse results
8.1.5
Module specifier resolution
8.1.5.1
The resolution algorithm
8.1.5.2
Import maps
8.1.5.3
Import map processing model
8.1.6
JavaScript specification host hooks
8.1.6.1
HostEnsureCanAddPrivateElement(
8.1.6.2
HostEnsureCanCompileStrings(
realm
parameterStrings
bodyString
codeString
compilationType
parameterArgs
bodyArg
8.1.6.3
HostGetCodeForEval(
argument
8.1.6.4
HostPromiseRejectionTracker(
promise
operation
8.1.6.5
HostSystemUTCEpochNanoseconds(
global
8.1.6.6
Job-related host hooks
8.1.6.6.1
HostCallJobCallback(
callback
argumentsList
8.1.6.6.2
HostEnqueueFinalizationRegistryCleanupJob(
finalizationRegistry
8.1.6.6.3
HostEnqueueGenericJob(
job
realm
8.1.6.6.4
HostEnqueuePromiseJob(
job
realm
8.1.6.6.5
HostEnqueueTimeoutJob(
job
realm
milliseconds
8.1.6.6.6
HostMakeJobCallback(
callable
8.1.6.7
Module-related host hooks
8.1.6.7.1
HostGetImportMetaProperties(
moduleRecord
8.1.6.7.2
HostGetSupportedImportAttributes()
8.1.6.7.3
HostLoadImportedModule(
referrer
moduleRequest
loadState
payload
8.1.7
Event loops
8.1.7.1
Definitions
8.1.7.2
Queuing tasks
8.1.7.3
Processing model
8.1.7.4
Generic task sources
8.1.7.5
Dealing with the event loop from other specifications
8.1.8
Events
8.1.8.1
Event handlers
8.1.8.2
Event handlers on elements,
Document
objects, and
Window
objects
8.1.8.2.1
IDL definitions
8.1.8.3
Event firing
8.2
The
WindowOrWorkerGlobalScope
mixin
8.3
Base64 utility methods
8.4
Dynamic markup insertion
8.4.1
Opening the input stream
8.4.2
Closing the input stream
8.4.3
document.write()
8.4.4
document.writeln()
8.5
DOM parsing and serialization APIs
8.5.1
The
DOMParser
interface
8.5.2
Unsafe HTML parsing methods
8.5.3
HTML serialization methods
8.5.4
The
innerHTML
property
8.5.5
The
outerHTML
property
8.5.6
The
insertAdjacentHTML()
method
8.5.7
The
createContextualFragment()
method
8.5.8
The
XMLSerializer
interface
8.6
Timers
8.7
Microtask queuing
8.8
User prompts
8.8.1
Simple dialogs
8.8.2
Printing
8.9
System state and capabilities
8.9.1
The
Navigator
object
8.9.1.1
Client identification
8.9.1.2
Language preferences
8.9.1.3
Browser state
8.9.1.4
Custom scheme handlers: the
registerProtocolHandler()
method
8.9.1.4.1
Security and privacy
8.9.1.4.2
User agent automation
8.9.1.5
8.9.1.6
PDF viewing support
8.10
Images
8.10.1
The
ImageData
interface
8.10.2
The
ImageBitmap
interface
8.11
Animation frames
Communication
9.1
The
MessageEvent
interface
9.2
Server-sent events
9.2.1
Introduction
9.2.2
The
EventSource
interface
9.2.3
Processing model
9.2.4
The `
Last-Event-ID
` header
9.2.5
Parsing an event stream
9.2.6
Interpreting an event stream
9.2.7
Authoring notes
9.2.8
Connectionless push and other features
9.2.9
Garbage collection
9.2.10
Implementation advice
9.3
Cross-document messaging
9.3.1
Introduction
9.3.2
Security
9.3.2.1
Authors
9.3.2.2
User agents
9.3.3
Posting messages
9.4
Channel messaging
9.4.1
Introduction
9.4.1.1
Examples
9.4.1.2
Ports as the basis of an object-capability model on the web
9.4.1.3
Ports as the basis of abstracting out service implementations
9.4.2
Message channels
9.4.3
The
MessageEventTarget
mixin
9.4.4
Message ports
9.4.5
Ports and garbage collection
9.5
Broadcasting to other browsing contexts
10
Web workers
10.1
Introduction
10.1.1
Scope
10.1.2
Examples
10.1.2.1
A background number-crunching worker
10.1.2.2
Using a JavaScript module as a worker
10.1.2.3
Shared workers introduction
10.1.2.4
Shared state using a shared worker
10.1.2.5
Delegation
10.1.2.6
Providing libraries
10.1.3
Tutorials
10.1.3.1
Creating a dedicated worker
10.1.3.2
Communicating with a dedicated worker
10.1.3.3
Shared workers
10.2
Infrastructure
10.2.1
The global scope
10.2.1.1
The
WorkerGlobalScope
common interface
10.2.1.2
Dedicated workers and the
DedicatedWorkerGlobalScope
interface
10.2.1.3
Shared workers and the
SharedWorkerGlobalScope
interface
10.2.2
The event loop
10.2.3
The worker's lifetime
10.2.4
Processing model
10.2.5
Runtime script errors
10.2.6
Creating workers
10.2.6.1
The
AbstractWorker
mixin
10.2.6.2
Script settings for workers
10.2.6.3
Dedicated workers and the
Worker
interface
10.2.6.4
Shared workers and the
SharedWorker
interface
10.2.7
Concurrent hardware capabilities
10.3
APIs available to workers
10.3.1
Importing scripts and libraries
10.3.2
The
WorkerNavigator
interface
10.3.3
The
WorkerLocation
interface
11
Worklets
11.1
Introduction
11.1.1
Motivations
11.1.2
Code idempotence
11.1.3
Speculative evaluation
11.2
Examples
11.2.1
Loading scripts
11.2.2
Registering a class and invoking its methods
11.3
Infrastructure
11.3.1
The global scope
11.3.1.1
Agents and event loops
11.3.1.2
Creation and termination
11.3.1.3
Script settings for worklets
11.3.2
The
Worklet
class
11.3.3
The worklet's lifetime
12
Web storage
12.1
Introduction
12.2
The API
12.2.1
The
Storage
interface
12.2.2
The
sessionStorage
getter
12.2.3
The
localStorage
getter
12.2.4
The
StorageEvent
interface
12.3
12.3.1
User tracking
12.3.2
Sensitivity of data
12.4
Security
12.4.1
DNS spoofing attacks
12.4.2
Cross-directory attacks
12.4.3
Implementation risks
13
The HTML syntax
13.1
Writing HTML documents
13.1.1
The DOCTYPE
13.1.2
Elements
13.1.2.1
Start tags
13.1.2.2
End tags
13.1.2.3
Attributes
13.1.2.4
Optional tags
13.1.2.5
Restrictions on content models
13.1.2.6
Restrictions on the contents of raw text and escapable raw text elements
13.1.3
Text
13.1.3.1
Newlines
13.1.4
Character references
13.1.5
CDATA sections
13.1.6
Comments
13.2
Parsing HTML documents
13.2.1
Overview of the parsing model
13.2.2
Parse errors
13.2.3
The input byte stream
13.2.3.1
Parsing with a known character encoding
13.2.3.2
Determining the character encoding
13.2.3.3
Character encodings
13.2.3.4
Changing the encoding while parsing
13.2.3.5
Preprocessing the input stream
13.2.4
Parse state
13.2.4.1
The insertion mode
13.2.4.2
The stack of open elements
13.2.4.3
The list of active formatting elements
13.2.4.4
The element pointers
13.2.4.5
Other parsing state flags
13.2.5
Tokenization
13.2.5.1
Data state
13.2.5.2
RCDATA state
13.2.5.3
RAWTEXT state
13.2.5.4
Script data state
13.2.5.5
PLAINTEXT state
13.2.5.6
Tag open state
13.2.5.7
End tag open state
13.2.5.8
Tag name state
13.2.5.9
RCDATA less-than sign state
13.2.5.10
RCDATA end tag open state
13.2.5.11
RCDATA end tag name state
13.2.5.12
RAWTEXT less-than sign state
13.2.5.13
RAWTEXT end tag open state
13.2.5.14
RAWTEXT end tag name state
13.2.5.15
Script data less-than sign state
13.2.5.16
Script data end tag open state
13.2.5.17
Script data end tag name state
13.2.5.18
Script data escape start state
13.2.5.19
Script data escape start dash state
13.2.5.20
Script data escaped state
13.2.5.21
Script data escaped dash state
13.2.5.22
Script data escaped dash dash state
13.2.5.23
Script data escaped less-than sign state
13.2.5.24
Script data escaped end tag open state
13.2.5.25
Script data escaped end tag name state
13.2.5.26
Script data double escape start state
13.2.5.27
Script data double escaped state
13.2.5.28
Script data double escaped dash state
13.2.5.29
Script data double escaped dash dash state
13.2.5.30
Script data double escaped less-than sign state
13.2.5.31
Script data double escape end state
13.2.5.32
Before attribute name state
13.2.5.33
Attribute name state
13.2.5.34
After attribute name state
13.2.5.35
Before attribute value state
13.2.5.36
Attribute value (double-quoted) state
13.2.5.37
Attribute value (single-quoted) state
13.2.5.38
Attribute value (unquoted) state
13.2.5.39
After attribute value (quoted) state
13.2.5.40
Self-closing start tag state
13.2.5.41
Bogus comment state
13.2.5.42
Markup declaration open state
13.2.5.43
Comment start state
13.2.5.44
Comment start dash state
13.2.5.45
Comment state
13.2.5.46
Comment less-than sign state
13.2.5.47
Comment less-than sign bang state
13.2.5.48
Comment less-than sign bang dash state
13.2.5.49
Comment less-than sign bang dash dash state
13.2.5.50
Comment end dash state
13.2.5.51
Comment end state
13.2.5.52
Comment end bang state
13.2.5.53
DOCTYPE state
13.2.5.54
Before DOCTYPE name state
13.2.5.55
DOCTYPE name state
13.2.5.56
After DOCTYPE name state
13.2.5.57
After DOCTYPE public keyword state
13.2.5.58
Before DOCTYPE public identifier state
13.2.5.59
DOCTYPE public identifier (double-quoted) state
13.2.5.60
DOCTYPE public identifier (single-quoted) state
13.2.5.61
After DOCTYPE public identifier state
13.2.5.62
Between DOCTYPE public and system identifiers state
13.2.5.63
After DOCTYPE system keyword state
13.2.5.64
Before DOCTYPE system identifier state
13.2.5.65
DOCTYPE system identifier (double-quoted) state
13.2.5.66
DOCTYPE system identifier (single-quoted) state
13.2.5.67
After DOCTYPE system identifier state
13.2.5.68
Bogus DOCTYPE state
13.2.5.69
CDATA section state
13.2.5.70
CDATA section bracket state
13.2.5.71
CDATA section end state
13.2.5.72
Character reference state
13.2.5.73
Named character reference state
13.2.5.74
Ambiguous ampersand state
13.2.5.75
Numeric character reference state
13.2.5.76
Hexadecimal character reference start state
13.2.5.77
Decimal character reference start state
13.2.5.78
Hexadecimal character reference state
13.2.5.79
Decimal character reference state
13.2.5.80
Numeric character reference end state
13.2.6
Tree construction
13.2.6.1
Creating and inserting nodes
13.2.6.2
Parsing elements that contain only text
13.2.6.3
Closing elements that have implied end tags
13.2.6.4
The rules for parsing tokens in HTML content
13.2.6.4.1
The "initial" insertion mode
13.2.6.4.2
The "before html" insertion mode
13.2.6.4.3
The "before head" insertion mode
13.2.6.4.4
The "in head" insertion mode
13.2.6.4.5
The "in head noscript" insertion mode
13.2.6.4.6
The "after head" insertion mode
13.2.6.4.7
The "in body" insertion mode
13.2.6.4.8
The "text" insertion mode
13.2.6.4.9
The "in table" insertion mode
13.2.6.4.10
The "in table text" insertion mode
13.2.6.4.11
The "in caption" insertion mode
13.2.6.4.12
The "in column group" insertion mode
13.2.6.4.13
The "in table body" insertion mode
13.2.6.4.14
The "in row" insertion mode
13.2.6.4.15
The "in cell" insertion mode
13.2.6.4.16
The "in template" insertion mode
13.2.6.4.17
The "after body" insertion mode
13.2.6.4.18
The "in frameset" insertion mode
13.2.6.4.19
The "after frameset" insertion mode
13.2.6.4.20
The "after after body" insertion mode
13.2.6.4.21
The "after after frameset" insertion mode
13.2.6.5
The rules for parsing tokens in foreign content
13.2.7
The end
13.2.8
Speculative HTML parsing
13.2.9
Coercing an HTML DOM into an infoset
13.2.10
An introduction to error handling and strange cases in the parser
13.2.10.1
Misnested tags:
13.2.10.2
Misnested tags:


13.2.10.3
Unexpected markup in tables
13.2.10.4
Scripts that modify the page as it is being parsed
13.2.10.5
The execution of scripts that are moving across multiple documents
13.2.10.6
Unclosed formatting elements
13.3
Serializing HTML fragments
13.4
Parsing HTML fragments
13.5
Named character references
14
The XML syntax
14.1
Writing documents in the XML syntax
14.2
Parsing XML documents
14.3
Serializing XML fragments
14.4
Parsing XML fragments
15
Rendering
15.1
Introduction
15.2
The CSS user agent style sheet and presentational hints
15.3
Non-replaced elements
15.3.1
Hidden elements
15.3.2
The page
15.3.3
Flow content
15.3.4
Phrasing content
15.3.5
Bidirectional text
15.3.6
Sections and headings
15.3.7
Lists
15.3.8
Tables
15.3.9
Margin collapsing quirks
15.3.10
Form controls
15.3.11
The
hr
element
15.3.12
The
fieldset
and
legend
elements
15.4
Replaced elements
15.4.1
Embedded content
15.4.2
Images
15.4.3
Attributes for embedded content and images
15.4.4
Image maps
15.5
Widgets
15.5.1
Native appearance
15.5.2
Writing mode
15.5.3
Button layout
15.5.4
The
button
element
15.5.5
The
details
and
summary
elements
15.5.6
The
input
element as a text entry widget
15.5.7
The
input
element as domain-specific widgets
15.5.8
The
input
element as a range control
15.5.9
The
input
element as a color
well
15.5.10
The
input
element as a checkbox and radio button widgets
15.5.11
The
input
element as a file upload control
15.5.12
The
input
element as a button
15.5.13
The
marquee
element
15.5.14
The
meter
element
15.5.15
The
progress
element
15.5.16
The
select
element
15.5.17
The
textarea
element
15.6
Frames and framesets
15.7
Interactive media
15.7.1
Links, forms, and navigation
15.7.2
The
title
attribute
15.7.3
Editing hosts
15.7.4
Text rendered in native user interfaces
15.8
Print media
15.9
Unstyled XML documents
16
Obsolete features
16.1
Obsolete but conforming features
16.1.1
Warnings for obsolete but conforming features
16.2
Non-conforming features
16.3
Requirements for implementations
16.3.1
The
marquee
element
16.3.2
Frames
16.3.3
Other elements, attributes and APIs
17
IANA considerations
17.1
text/html
17.2
multipart/x-mixed-replace
17.3
application/xhtml+xml
17.4
text/ping
17.5
application/microdata+json
17.6
application/speculationrules+json
17.7
text/event-stream
17.8
web+
scheme prefix
Index
Elements
Element content categories
Attributes
Element interfaces
All interfaces
Events
HTTP headers
MIME types
References
Acknowledgments
Intellectual property rights
Introduction
1.1
Where does this specification fit?
This specification defines a big part of the web platform, in lots of detail. Its place in the
web platform specification stack relative to other specifications can be best summed up as
follows:
1.2
Is this HTML5?
This section is non-normative.
In short: Yes.
In more length: the term "HTML5" is widely used as a buzzword to refer to modern web
technologies, many of which (though by no means all) are developed at the WHATWG. This document is
one such; others are available from
the WHATWG Standards
overview
1.3
Background
This section is non-normative.
HTML is the World Wide Web's core markup language. Originally, HTML was primarily designed as a
language for semantically describing scientific documents. Its general design, however, has
enabled it to be adapted, over the subsequent years, to describe a number of other types of
documents and even applications.
1.4
Audience
This section is non-normative.
This specification is intended for authors of documents and scripts that use the features
defined in this specification, implementers of tools that operate on pages that
use the features defined in this specification, and individuals wishing to establish the
correctness of documents or implementations with respect to the requirements of this
specification.
This document is probably not suited to readers who do not already have at least a passing
familiarity with web technologies, as in places it sacrifices clarity for precision, and brevity
for completeness. More approachable tutorials and authoring guides can provide a gentler
introduction to the topic.
In particular, familiarity with the basics of DOM is necessary for a complete understanding of
some of the more technical parts of this specification. An understanding of Web IDL, HTTP, XML,
Unicode, character encodings, JavaScript, and CSS will also be helpful in places but is not
essential.
1.5
Scope
This section is non-normative.
This specification is limited to providing a semantic-level markup language and associated
semantic-level scripting APIs for authoring accessible pages on the web ranging from static
documents to dynamic applications.
The scope of this specification does not include providing mechanisms for media-specific
customization of presentation (although default rendering rules for web browsers are included at
the end of this specification, and several mechanisms for hooking into CSS are provided as part of
the language).
The scope of this specification is not to describe an entire operating system. In particular,
hardware configuration software, image manipulation tools, and applications that users would be
expected to use with high-end workstations on a daily basis are out of scope. In terms of
applications, this specification is targeted specifically at applications that would be expected
to be used by users on an occasional basis, or regularly but from disparate locations, with low
CPU requirements. Examples of such applications include online purchasing systems, searching
systems, games (especially multiplayer online games), public telephone books or address books,
communications software (email clients, instant messaging clients, discussion software), document
editing software, etc.
1.6
History
This section is non-normative.
For its first five years (1990-1995), HTML went through a number of revisions and experienced a
number of extensions, primarily hosted first at CERN, and then at the IETF.
With the creation of the W3C, HTML's development changed venue again. A first abortive attempt
at extending HTML in 1995 known as HTML 3.0 then made way to a more pragmatic approach known as
HTML 3.2, which was completed in 1997. HTML4 quickly followed later that same year.
The following year, the W3C membership decided to stop evolving HTML and instead begin work on
an XML-based equivalent, called XHTML. This
effort started with a reformulation of HTML4 in XML, known as XHTML 1.0, which added no new
features except the new serialization, and which was completed in 2000. After XHTML 1.0, the W3C's
focus turned to making it easier for other working groups to extend XHTML, under the banner of
XHTML Modularization. In parallel with this, the W3C also worked on a new language that was not
compatible with the earlier HTML and XHTML languages, calling it XHTML2.
Around the time that HTML's evolution was stopped in 1998, parts of the API for HTML developed
by browser vendors were specified and published under the name DOM Level 1 (in 1998) and DOM Level
2 Core and DOM Level 2 HTML (starting in 2000 and culminating in 2003). These efforts then petered
out, with some DOM Level 3 specifications published in 2004 but the working group being closed
before all the Level 3 drafts were completed.
In 2003, the publication of XForms, a technology which was positioned as the next generation of
web forms, sparked a renewed interest in evolving HTML itself, rather than finding replacements
for it. This interest was borne from the realization that XML's deployment as a web technology was
limited to entirely new technologies (like RSS and later Atom), rather than as a replacement for
existing deployed technologies (like HTML).
A proof of concept to show that it was possible to extend HTML4's forms to provide many of the
features that XForms 1.0 introduced, without requiring browsers to implement rendering engines
that were incompatible with existing HTML web pages, was the first result of this renewed
interest. At this early stage, while the draft was already publicly available, and input was
already being solicited from all sources, the specification was only under Opera Software's
copyright.
The idea that HTML's evolution should be reopened was tested at a W3C workshop in 2004, where
some of the principles that underlie the HTML5 work (described below), as well as the
aforementioned early draft proposal covering just forms-related features, were presented to the
W3C jointly by Mozilla and Opera. The proposal was rejected on the grounds that the proposal
conflicted with the previously chosen direction for the web's evolution; the W3C staff and
membership voted to continue developing XML-based replacements instead.
Shortly thereafter, Apple, Mozilla, and Opera jointly announced their intent to continue
working on the effort under the umbrella of a new venue called the WHATWG. A public mailing list
was created, and the draft was moved to the WHATWG site. The copyright was subsequently amended to
be jointly owned by all three vendors, and to allow reuse of the specification.
The WHATWG was based on several core principles, in particular that technologies need to be
backwards compatible, that specifications and implementations need to match even if this means
changing the specification rather than the implementations, and that specifications need to be
detailed enough that implementations can achieve complete interoperability without
reverse-engineering each other.
The latter requirement in particular required that the scope of the HTML5 specification include
what had previously been specified in three separate documents: HTML4, XHTML1, and DOM2 HTML. It
also meant including significantly more detail than had previously been considered the norm.
In 2006, the W3C indicated an interest to participate in the development of HTML5 after all,
and in 2007 formed a working group chartered to work with the WHATWG on the development of the
HTML5 specification. Apple, Mozilla, and Opera allowed the W3C to publish the specification under
the W3C copyright, while keeping a version with the less restrictive license on the WHATWG
site.
For a number of years, both groups then worked together. In 2011, however, the groups came to
the conclusion that they had different goals: the W3C wanted to publish a "finished" version of
"HTML5", while the WHATWG wanted to continue working on a Living Standard for HTML, continuously
maintaining the specification rather than freezing it in a state with known problems, and adding
new features as needed to evolve the platform.
In 2019, the WHATWG and W3C
signed an
agreement
to collaborate on a single version of HTML going forward: this document.
1.7
Design notes
This section is non-normative.
It must be admitted that many aspects of HTML appear at first glance to be nonsensical and
inconsistent.
HTML, its supporting DOM APIs, as well as many of its supporting technologies, have been
developed over a period of several decades by a wide array of people with different priorities
who, in many cases, did not know of each other's existence.
Features have thus arisen from many sources, and have not always been designed in especially
consistent ways. Furthermore, because of the unique characteristics of the web, implementation
bugs have often become de-facto, and now de-jure, standards, as content is often unintentionally
written in ways that rely on them before they can be fixed.
Despite all this, efforts have been made to adhere to certain design goals. These are described
in the next few subsections.
1.7.1
Serializability of script execution
This section is non-normative.
To avoid exposing web authors to the complexities of multithreading, the HTML and DOM APIs are
designed such that no script can ever detect the simultaneous execution of other scripts. Even
with
workers
, the intent is that the behavior of implementations can
be thought of as completely serializing the execution of all scripts in all globals.
The exception to this general design principle is the JavaScript
SharedArrayBuffer
class. Using
SharedArrayBuffer
objects, it can in fact be observed that scripts in
other
agents
are executing simultaneously. Furthermore, due to the
JavaScript memory model, there are situations which not only are un-representable via serialized
script
execution, but also un-representable via serialized
statement
execution
among those scripts.
1.7.2
Extensibility
This section is non-normative.
HTML has a wide array of extensibility mechanisms that can be used for adding semantics in a
safe manner:
Authors can use the
class
attribute to extend elements,
effectively creating their own elements, while using the most applicable existing "real" HTML
element, so that browsers and other tools that don't know of the extension can still support it
somewhat well. This is the tack used by microformats, for example.
Authors can include data for inline client-side scripts or server-side site-wide scripts
to process using the
data-*=""
attributes. These are guaranteed
to never be touched by browsers, and allow scripts to include data on HTML elements that scripts
can then look for and process.
Authors can use the

mechanism to
include page-wide metadata.
Authors can use the
rel=""
mechanism to annotate
links with specific meanings by registering
extensions to
the predefined set of link types
. This is also used by microformats.
Authors can embed raw data using the

tag could be used to break out of the
script
element
context and inject attacker-controlled markup.
The

", or having a
element that contains a
ul
element (as the
ul
element's
start
tag
would imply the end tag for the
).
This can enable cross-site scripting attacks. An example of this would be a page that lets the
user enter some font family names that are then inserted into a CSS
style
block via
the DOM and which then uses the
innerHTML
IDL
attribute to get the HTML serialization of that
style
element: if the user enters

" as a font family name,
innerHTML
will return markup that, if parsed in a different
context, would contain a
script
node, even though no
script
node
existed in the original DOM.
For example, consider the following markup:
form
id
"outer"
><
div
>form
><
form
id
"inner"
><
input
This will be parsed into:
html
head
body
form
id
="
outer
div
form
id
="
inner
input
The
input
element will be associated with the inner
form
element.
Now, if this tree structure is serialized and reparsed, the
id="inner">
start tag will be ignored, and so the
input
element will be
associated with the outer
form
element instead.
html
><
head
>head
><
body
><
form
id
"outer"
><
div
form
id
"inner"
input
>form
>div
>form
>body
>html
html
head
body
form
id
="
outer
div
input
As another example, consider the following markup:
><
table
><
This will be parsed into:
html
head
body
table
That is, the
elements are nested, because the second
element is
foster parented
. After a serialize-reparse roundtrip, the
elements and the
table
element would all be siblings, because the
second

start tag implicitly closes the first
element.
html
><
head
>head
><
body
><
><
table
>table
>>body
>html
html
head
body
table
For historical reasons, this algorithm does not round-trip an initial U+000A (LF) character in
pre
textarea
, or
listing
elements, even though (in the
first two cases) the markup being round-tripped can be conforming. The
HTML parser
will drop such a character during parsing, but this algorithm does
not
serialize an extra
U+000A (LF) character.
For example, consider the following markup:
pre
Hello.
pre
When this document is first parsed, the
pre
element's
child text
content
starts with a single newline character. After a serialize-reparse roundtrip, the
pre
element's
child text content
is simply "
Hello.
".
Because of the special role of the
is
attribute in signaling the creation of
customized built-in elements
, in that it provides a mechanism for parsed
HTML to set the element's
is
value
, we special-case its handling during serialization. This ensures that an element's
is
value
is preserved
through serialize-parse roundtrips.
When creating a
customized built-in element
via the parser, a developer uses the
is
attribute directly; in such cases serialize-parse roundtrips
work fine.
script
window
SuperP
class
extends
HTMLParagraphElement
{};
customElements
define
"super-p"
SuperP
extends
"p"
});
script
div
id
"container"
><
is
"super-p"
Superb!
>div
script
console
log
container
innerHTML
);
//


container
innerHTML
container
innerHTML
console
log
container
innerHTML
);
//


console
assert
container
firstChild
instanceof
SuperP
);
script
But when creating a customized built-in element via its
constructor
or via
createElement()
, the
is
attribute is not added. Instead, the
is
value
(which is what the custom elements machinery uses) is set
without intermediating through an attribute.
script
container
innerHTML
""
const
document
createElement
"p"
is
"super-p"
});
container
appendChild
);
// The is attribute is not present in the DOM:
console
assert
hasAttribute
"is"
));
// But the element is still a super-p:
console
assert
instanceof
SuperP
);
script
To ensure that serialize-parse roundtrips still work, the serialization process explicitly
writes out the element's
is
value
as an
is
attribute:
script
console
log
container
innerHTML
);
//


container
innerHTML
container
innerHTML
console
log
container
innerHTML
);
//


console
assert
container
firstChild
instanceof
SuperP
);
script
Escaping a string
(for the purposes of the algorithm above)
consists of running the following steps:
Replace any occurrence of "
" character by "
&
".
Replace any occurrences of the U+00A0 NO-BREAK SPACE character by "
 
".
Replace any occurrences of the "
" character by
<
".
Replace any occurrences of the "
" character by
>
".
If the algorithm was invoked in the
attribute mode
, then replace any occurrences of
the "
" character by "
"
".
13.4
Parsing HTML fragments
The
HTML fragment parsing algorithm
, given an
Element
node
context
, string
input
, an
optional boolean
allowDeclarativeShadowRoots
(default false), and an optional
parser scripting mode
scriptingMode
(default
Inert
) is the following steps. They return a list of zero or
more nodes.
Parts marked
fragment case
in algorithms in the
HTML
parser
section are parts that only occur if the parser was created for the purposes of this
algorithm. The algorithms have been annotated with such markings for informational purposes only;
such markings have no normative weight. If it is possible for a condition described as a
fragment case
to occur even when the parser wasn't created for the purposes of
handling this algorithm, then that is an error in the specification.
Assert
scriptingMode
is either
Inert
or
Fragment
Let
document
be a
Document
node whose
type
is "
html
".
Let
contextDocument
be
context
's
node document
If
contextDocument
is in
quirks mode
, then set
document
's
mode
to "
quirks
".
Otherwise, if
context
's
node
document
is in
limited-quirks mode
, then set
document
's
mode
to "
limited-quirks
".
If
allowDeclarativeShadowRoots
is true, then set
document
's
allow declarative shadow roots
to
true.
Create a new
HTML parser
, and associate it with
document
If
contextDocument
's
scripting is
disabled
, then set
scriptingMode
to
Disabled
Set the parser's
scripting mode
to
scriptingMode
Set the state of the
HTML parser
's
tokenization
stage as
follows, switching on the
context
element:
title
textarea
Switch the tokenizer to the
RCDATA state
style
xmp
iframe
noembed
noframes
Switch the tokenizer to the
RAWTEXT state
script
Switch the tokenizer to the
script data state
noscript
If
scripting mode
is not
Disabled
, switch the tokenizer to the
RAWTEXT
state
. Otherwise, leave the tokenizer in the
data state
plaintext
Switch the tokenizer to the
PLAINTEXT state
Any other element
Leave the tokenizer in the
data state
For performance reasons, an implementation that does not report errors and
that uses the actual state machine described in this specification directly could use the
PLAINTEXT state instead of the RAWTEXT and script data states where those are mentioned in the
list above. Except for rules regarding parse errors, they are equivalent, since there is no
appropriate end tag token
in the fragment case, yet they involve far fewer state
transitions.
Let
root
be the result of
creating an
element
given
document
, "
html
", the
HTML
namespace
, null, null, false, and
context
's
custom element registry
Append
root
to
document
Set up the
HTML parser
's
stack of open elements
so that it
contains just the single element
root
If
context
is a
template
element, then push "
in template
" onto the
stack of template insertion modes
so that it is the new
current template
insertion mode
Create a start tag token whose name is the local name of
context
and whose attributes are the attributes of
context
Let this start tag token be the start tag token of
context
; e.g. for the purposes of determining if it is
an
HTML integration point
Reset the parser's insertion mode
appropriately
The parser will reference the
context
element as part of that algorithm.
Set the
HTML parser
's
form
element pointer
to the
nearest node to
context
that is a
form
element (going straight up the ancestor chain, and including the element
itself, if it is a
form
element), if any. (If there is no such
form
element, the
form
element pointer
keeps its initial value,
null.)
Place the
input
into the
input stream
for the
HTML
parser
just created. The encoding
confidence
is
irrelevant
Start the
HTML parser
and let it run until it has consumed all the characters
just inserted into the input stream.
Return
root
's
children
, in
tree
order
13.5
Named character references
This table lists the
character reference
names that are
supported by HTML, and the code points to which they refer. It is referenced by the previous
sections.
It is intentional, for legacy compatibility, that many code points have multiple
character reference names. For example, some appear both with and without the trailing semicolon,
or with different capitalizations.
Name
Character(s)
Glyph
Aacute;
U+000C1
Aacute
U+000C1
aacute;
U+000E1
aacute
U+000E1
Abreve;
U+00102
abreve;
U+00103
ac;
U+0223E
acd;
U+0223F
acE;
U+0223E U+00333
∾̳
Acirc;
U+000C2
Acirc
U+000C2
acirc;
U+000E2
acirc
U+000E2
acute;
U+000B4
acute
U+000B4
Acy;
U+00410
acy;
U+00430
AElig;
U+000C6
AElig
U+000C6
aelig;
U+000E6
aelig
U+000E6
af;
U+02061
Afr;
U+1D504
afr;
U+1D51E
Agrave;
U+000C0
Agrave
U+000C0
agrave;
U+000E0
agrave
U+000E0
alefsym;
U+02135
aleph;
U+02135
Alpha;
U+00391
alpha;
U+003B1
Amacr;
U+00100
amacr;
U+00101
amalg;
U+02A3F
AMP;
U+00026
AMP
U+00026
amp;
U+00026
amp
U+00026
And;
U+02A53
and;
U+02227
andand;
U+02A55
andd;
U+02A5C
andslope;
U+02A58
andv;
U+02A5A
ang;
U+02220
ange;
U+029A4
angle;
U+02220
angmsd;
U+02221
angmsdaa;
U+029A8
angmsdab;
U+029A9
angmsdac;
U+029AA
angmsdad;
U+029AB
angmsdae;
U+029AC
angmsdaf;
U+029AD
angmsdag;
U+029AE
angmsdah;
U+029AF
angrt;
U+0221F
angrtvb;
U+022BE
angrtvbd;
U+0299D
angsph;
U+02222
angst;
U+000C5
angzarr;
U+0237C
Aogon;
U+00104
aogon;
U+00105
Aopf;
U+1D538
aopf;
U+1D552
ap;
U+02248
apacir;
U+02A6F
apE;
U+02A70
ape;
U+0224A
apid;
U+0224B
apos;
U+00027
ApplyFunction;
U+02061
approx;
U+02248
approxeq;
U+0224A
Aring;
U+000C5
Aring
U+000C5
aring;
U+000E5
aring
U+000E5
Ascr;
U+1D49C
ascr;
U+1D4B6
Assign;
U+02254
ast;
U+0002A
asymp;
U+02248
asympeq;
U+0224D
Atilde;
U+000C3
Atilde
U+000C3
atilde;
U+000E3
atilde
U+000E3
Auml;
U+000C4
Auml
U+000C4
auml;
U+000E4
auml
U+000E4
awconint;
U+02233
awint;
U+02A11
backcong;
U+0224C
backepsilon;
U+003F6
backprime;
U+02035
backsim;
U+0223D
backsimeq;
U+022CD
Backslash;
U+02216
Barv;
U+02AE7
barvee;
U+022BD
Barwed;
U+02306
barwed;
U+02305
barwedge;
U+02305
bbrk;
U+023B5
bbrktbrk;
U+023B6
bcong;
U+0224C
Bcy;
U+00411
bcy;
U+00431
bdquo;
U+0201E
becaus;
U+02235
Because;
U+02235
because;
U+02235
bemptyv;
U+029B0
bepsi;
U+003F6
bernou;
U+0212C
Bernoullis;
U+0212C
Beta;
U+00392
beta;
U+003B2
beth;
U+02136
between;
U+0226C
Bfr;
U+1D505
bfr;
U+1D51F
bigcap;
U+022C2
bigcirc;
U+025EF
bigcup;
U+022C3
bigodot;
U+02A00
bigoplus;
U+02A01
bigotimes;
U+02A02
bigsqcup;
U+02A06
bigstar;
U+02605
bigtriangledown;
U+025BD
bigtriangleup;
U+025B3
biguplus;
U+02A04
bigvee;
U+022C1
bigwedge;
U+022C0
bkarow;
U+0290D
blacklozenge;
U+029EB
blacksquare;
U+025AA
blacktriangle;
U+025B4
blacktriangledown;
U+025BE
blacktriangleleft;
U+025C2
blacktriangleright;
U+025B8
blank;
U+02423
blk12;
U+02592
blk14;
U+02591
blk34;
U+02593
block;
U+02588
bne;
U+0003D U+020E5
=⃥
bnequiv;
U+02261 U+020E5
≡⃥
bNot;
U+02AED
bnot;
U+02310
Bopf;
U+1D539
bopf;
U+1D553
bot;
U+022A5
bottom;
U+022A5
bowtie;
U+022C8
boxbox;
U+029C9
boxDL;
U+02557
boxDl;
U+02556
boxdL;
U+02555
boxdl;
U+02510
boxDR;
U+02554
boxDr;
U+02553
boxdR;
U+02552
boxdr;
U+0250C
boxH;
U+02550
boxh;
U+02500
boxHD;
U+02566
boxHd;
U+02564
boxhD;
U+02565
boxhd;
U+0252C
boxHU;
U+02569
boxHu;
U+02567
boxhU;
U+02568
boxhu;
U+02534
boxminus;
U+0229F
boxplus;
U+0229E
boxtimes;
U+022A0
boxUL;
U+0255D
boxUl;
U+0255C
boxuL;
U+0255B
boxul;
U+02518
boxUR;
U+0255A
boxUr;
U+02559
boxuR;
U+02558
boxur;
U+02514
boxV;
U+02551
boxv;
U+02502
boxVH;
U+0256C
boxVh;
U+0256B
boxvH;
U+0256A
boxvh;
U+0253C
boxVL;
U+02563
boxVl;
U+02562
boxvL;
U+02561
boxvl;
U+02524
boxVR;
U+02560
boxVr;
U+0255F
boxvR;
U+0255E
boxvr;
U+0251C
bprime;
U+02035
Breve;
U+002D8
breve;
U+002D8
brvbar;
U+000A6
brvbar
U+000A6
Bscr;
U+0212C
bscr;
U+1D4B7
bsemi;
U+0204F
bsim;
U+0223D
bsime;
U+022CD
bsol;
U+0005C
bsolb;
U+029C5
bsolhsub;
U+027C8
bull;
U+02022
bullet;
U+02022
bump;
U+0224E
bumpE;
U+02AAE
bumpe;
U+0224F
Bumpeq;
U+0224E
bumpeq;
U+0224F
Cacute;
U+00106
cacute;
U+00107
Cap;
U+022D2
cap;
U+02229
capand;
U+02A44
capbrcup;
U+02A49
capcap;
U+02A4B
capcup;
U+02A47
capdot;
U+02A40
CapitalDifferentialD;
U+02145
caps;
U+02229 U+0FE00
∩︀
caret;
U+02041
caron;
U+002C7
Cayleys;
U+0212D
ccaps;
U+02A4D
Ccaron;
U+0010C
ccaron;
U+0010D
Ccedil;
U+000C7
Ccedil
U+000C7
ccedil;
U+000E7
ccedil
U+000E7
Ccirc;
U+00108
ccirc;
U+00109
Cconint;
U+02230
ccups;
U+02A4C
ccupssm;
U+02A50
Cdot;
U+0010A
cdot;
U+0010B
cedil;
U+000B8
cedil
U+000B8
Cedilla;
U+000B8
cemptyv;
U+029B2
cent;
U+000A2
cent
U+000A2
CenterDot;
U+000B7
centerdot;
U+000B7
Cfr;
U+0212D
cfr;
U+1D520
CHcy;
U+00427
chcy;
U+00447
check;
U+02713
checkmark;
U+02713
Chi;
U+003A7
chi;
U+003C7
cir;
U+025CB
circ;
U+002C6
circeq;
U+02257
circlearrowleft;
U+021BA
circlearrowright;
U+021BB
circledast;
U+0229B
circledcirc;
U+0229A
circleddash;
U+0229D
CircleDot;
U+02299
circledR;
U+000AE
circledS;
U+024C8
CircleMinus;
U+02296
CirclePlus;
U+02295
CircleTimes;
U+02297
cirE;
U+029C3
cire;
U+02257
cirfnint;
U+02A10
cirmid;
U+02AEF
cirscir;
U+029C2
ClockwiseContourIntegral;
U+02232
CloseCurlyDoubleQuote;
U+0201D
CloseCurlyQuote;
U+02019
clubs;
U+02663
clubsuit;
U+02663
Colon;
U+02237
colon;
U+0003A
Colone;
U+02A74
colone;
U+02254
coloneq;
U+02254
comma;
U+0002C
commat;
U+00040
comp;
U+02201
compfn;
U+02218
complement;
U+02201
complexes;
U+02102
cong;
U+02245
congdot;
U+02A6D
Congruent;
U+02261
Conint;
U+0222F
conint;
U+0222E
ContourIntegral;
U+0222E
Copf;
U+02102
copf;
U+1D554
coprod;
U+02210
Coproduct;
U+02210
COPY;
U+000A9
COPY
U+000A9
copy;
U+000A9
copy
U+000A9
copysr;
U+02117
CounterClockwiseContourIntegral;
U+02233
crarr;
U+021B5
Cross;
U+02A2F
cross;
U+02717
Cscr;
U+1D49E
cscr;
U+1D4B8
csub;
U+02ACF
csube;
U+02AD1
csup;
U+02AD0
csupe;
U+02AD2
ctdot;
U+022EF
cudarrl;
U+02938
cudarrr;
U+02935
cuepr;
U+022DE
cuesc;
U+022DF
cularr;
U+021B6
cularrp;
U+0293D
Cup;
U+022D3
cup;
U+0222A
cupbrcap;
U+02A48
CupCap;
U+0224D
cupcap;
U+02A46
cupcup;
U+02A4A
cupdot;
U+0228D
cupor;
U+02A45
cups;
U+0222A U+0FE00
∪︀
curarr;
U+021B7
curarrm;
U+0293C
curlyeqprec;
U+022DE
curlyeqsucc;
U+022DF
curlyvee;
U+022CE
curlywedge;
U+022CF
curren;
U+000A4
curren
U+000A4
curvearrowleft;
U+021B6
curvearrowright;
U+021B7
cuvee;
U+022CE
cuwed;
U+022CF
cwconint;
U+02232
cwint;
U+02231
cylcty;
U+0232D
Dagger;
U+02021
dagger;
U+02020
daleth;
U+02138
Darr;
U+021A1
dArr;
U+021D3
darr;
U+02193
dash;
U+02010
Dashv;
U+02AE4
dashv;
U+022A3
dbkarow;
U+0290F
dblac;
U+002DD
Dcaron;
U+0010E
dcaron;
U+0010F
Dcy;
U+00414
dcy;
U+00434
DD;
U+02145
dd;
U+02146
ddagger;
U+02021
ddarr;
U+021CA
DDotrahd;
U+02911
ddotseq;
U+02A77
deg;
U+000B0
deg
U+000B0
Del;
U+02207
Delta;
U+00394
delta;
U+003B4
demptyv;
U+029B1
dfisht;
U+0297F
Dfr;
U+1D507
dfr;
U+1D521
dHar;
U+02965
dharl;
U+021C3
dharr;
U+021C2
DiacriticalAcute;
U+000B4
DiacriticalDot;
U+002D9
DiacriticalDoubleAcute;
U+002DD
DiacriticalGrave;
U+00060
DiacriticalTilde;
U+002DC
diam;
U+022C4
Diamond;
U+022C4
diamond;
U+022C4
diamondsuit;
U+02666
diams;
U+02666
die;
U+000A8
DifferentialD;
U+02146
digamma;
U+003DD
disin;
U+022F2
div;
U+000F7
divide;
U+000F7
divide
U+000F7
divideontimes;
U+022C7
divonx;
U+022C7
DJcy;
U+00402
djcy;
U+00452
dlcorn;
U+0231E
dlcrop;
U+0230D
dollar;
U+00024
Dopf;
U+1D53B
dopf;
U+1D555
Dot;
U+000A8
dot;
U+002D9
DotDot;
U+020DC
◌⃜
doteq;
U+02250
doteqdot;
U+02251
DotEqual;
U+02250
dotminus;
U+02238
dotplus;
U+02214
dotsquare;
U+022A1
doublebarwedge;
U+02306
DoubleContourIntegral;
U+0222F
DoubleDot;
U+000A8
DoubleDownArrow;
U+021D3
DoubleLeftArrow;
U+021D0
DoubleLeftRightArrow;
U+021D4
DoubleLeftTee;
U+02AE4
DoubleLongLeftArrow;
U+027F8
DoubleLongLeftRightArrow;
U+027FA
DoubleLongRightArrow;
U+027F9
DoubleRightArrow;
U+021D2
DoubleRightTee;
U+022A8
DoubleUpArrow;
U+021D1
DoubleUpDownArrow;
U+021D5
DoubleVerticalBar;
U+02225
DownArrow;
U+02193
Downarrow;
U+021D3
downarrow;
U+02193
DownArrowBar;
U+02913
DownArrowUpArrow;
U+021F5
DownBreve;
U+00311
◌̑
downdownarrows;
U+021CA
downharpoonleft;
U+021C3
downharpoonright;
U+021C2
DownLeftRightVector;
U+02950
DownLeftTeeVector;
U+0295E
DownLeftVector;
U+021BD
DownLeftVectorBar;
U+02956
DownRightTeeVector;
U+0295F
DownRightVector;
U+021C1
DownRightVectorBar;
U+02957
DownTee;
U+022A4
DownTeeArrow;
U+021A7
drbkarow;
U+02910
drcorn;
U+0231F
drcrop;
U+0230C
Dscr;
U+1D49F
dscr;
U+1D4B9
DScy;
U+00405
dscy;
U+00455
dsol;
U+029F6
Dstrok;
U+00110
dstrok;
U+00111
dtdot;
U+022F1
dtri;
U+025BF
dtrif;
U+025BE
duarr;
U+021F5
duhar;
U+0296F
dwangle;
U+029A6
DZcy;
U+0040F
dzcy;
U+0045F
dzigrarr;
U+027FF
Eacute;
U+000C9
Eacute
U+000C9
eacute;
U+000E9
eacute
U+000E9
easter;
U+02A6E
Ecaron;
U+0011A
ecaron;
U+0011B
ecir;
U+02256
Ecirc;
U+000CA
Ecirc
U+000CA
ecirc;
U+000EA
ecirc
U+000EA
ecolon;
U+02255
Ecy;
U+0042D
ecy;
U+0044D
eDDot;
U+02A77
Edot;
U+00116
eDot;
U+02251
edot;
U+00117
ee;
U+02147
efDot;
U+02252
Efr;
U+1D508
efr;
U+1D522
eg;
U+02A9A
Egrave;
U+000C8
Egrave
U+000C8
egrave;
U+000E8
egrave
U+000E8
egs;
U+02A96
egsdot;
U+02A98
el;
U+02A99
Element;
U+02208
elinters;
U+023E7
ell;
U+02113
els;
U+02A95
elsdot;
U+02A97
Emacr;
U+00112
emacr;
U+00113
empty;
U+02205
emptyset;
U+02205
EmptySmallSquare;
U+025FB
emptyv;
U+02205
EmptyVerySmallSquare;
U+025AB
emsp;
U+02003
emsp13;
U+02004
emsp14;
U+02005
ENG;
U+0014A
eng;
U+0014B
ensp;
U+02002
Eogon;
U+00118
eogon;
U+00119
Eopf;
U+1D53C
eopf;
U+1D556
epar;
U+022D5
eparsl;
U+029E3
eplus;
U+02A71
epsi;
U+003B5
Epsilon;
U+00395
epsilon;
U+003B5
epsiv;
U+003F5
eqcirc;
U+02256
eqcolon;
U+02255
eqsim;
U+02242
eqslantgtr;
U+02A96
eqslantless;
U+02A95
Equal;
U+02A75
equals;
U+0003D
EqualTilde;
U+02242
equest;
U+0225F
Equilibrium;
U+021CC
equiv;
U+02261
equivDD;
U+02A78
eqvparsl;
U+029E5
erarr;
U+02971
erDot;
U+02253
Escr;
U+02130
escr;
U+0212F
esdot;
U+02250
Esim;
U+02A73
esim;
U+02242
Eta;
U+00397
eta;
U+003B7
ETH;
U+000D0
ETH
U+000D0
eth;
U+000F0
eth
U+000F0
Euml;
U+000CB
Euml
U+000CB
euml;
U+000EB
euml
U+000EB
euro;
U+020AC
excl;
U+00021
exist;
U+02203
Exists;
U+02203
expectation;
U+02130
ExponentialE;
U+02147
exponentiale;
U+02147
fallingdotseq;
U+02252
Fcy;
U+00424
fcy;
U+00444
female;
U+02640
ffilig;
U+0FB03
fflig;
U+0FB00
ffllig;
U+0FB04
Ffr;
U+1D509
ffr;
U+1D523
filig;
U+0FB01
FilledSmallSquare;
U+025FC
FilledVerySmallSquare;
U+025AA
fjlig;
U+00066 U+0006A
fj
flat;
U+0266D
fllig;
U+0FB02
fltns;
U+025B1
fnof;
U+00192
Fopf;
U+1D53D
fopf;
U+1D557
ForAll;
U+02200
forall;
U+02200
fork;
U+022D4
forkv;
U+02AD9
Fouriertrf;
U+02131
fpartint;
U+02A0D
frac12;
U+000BD
frac12
U+000BD
frac13;
U+02153
frac14;
U+000BC
frac14
U+000BC
frac15;
U+02155
frac16;
U+02159
frac18;
U+0215B
frac23;
U+02154
frac25;
U+02156
frac34;
U+000BE
frac34
U+000BE
frac35;
U+02157
frac38;
U+0215C
frac45;
U+02158
frac56;
U+0215A
frac58;
U+0215D
frac78;
U+0215E
frasl;
U+02044
frown;
U+02322
Fscr;
U+02131
fscr;
U+1D4BB
gacute;
U+001F5
Gamma;
U+00393
gamma;
U+003B3
Gammad;
U+003DC
gammad;
U+003DD
gap;
U+02A86
Gbreve;
U+0011E
gbreve;
U+0011F
Gcedil;
U+00122
Gcirc;
U+0011C
gcirc;
U+0011D
Gcy;
U+00413
gcy;
U+00433
Gdot;
U+00120
gdot;
U+00121
gE;
U+02267
ge;
U+02265
gEl;
U+02A8C
gel;
U+022DB
geq;
U+02265
geqq;
U+02267
geqslant;
U+02A7E
ges;
U+02A7E
gescc;
U+02AA9
gesdot;
U+02A80
gesdoto;
U+02A82
gesdotol;
U+02A84
gesl;
U+022DB U+0FE00
⋛︀
gesles;
U+02A94
Gfr;
U+1D50A
gfr;
U+1D524
Gg;
U+022D9
gg;
U+0226B
ggg;
U+022D9
gimel;
U+02137
GJcy;
U+00403
gjcy;
U+00453
gl;
U+02277
gla;
U+02AA5
glE;
U+02A92
glj;
U+02AA4
gnap;
U+02A8A
gnapprox;
U+02A8A
gnE;
U+02269
gne;
U+02A88
gneq;
U+02A88
gneqq;
U+02269
gnsim;
U+022E7
Gopf;
U+1D53E
gopf;
U+1D558
grave;
U+00060
GreaterEqual;
U+02265
GreaterEqualLess;
U+022DB
GreaterFullEqual;
U+02267
GreaterGreater;
U+02AA2
GreaterLess;
U+02277
GreaterSlantEqual;
U+02A7E
GreaterTilde;
U+02273
Gscr;
U+1D4A2
gscr;
U+0210A
gsim;
U+02273
gsime;
U+02A8E
gsiml;
U+02A90
GT;
U+0003E
GT
U+0003E
Gt;
U+0226B
gt;
U+0003E
gt
U+0003E
gtcc;
U+02AA7
gtcir;
U+02A7A
gtdot;
U+022D7
gtlPar;
U+02995
gtquest;
U+02A7C
gtrapprox;
U+02A86
gtrarr;
U+02978
gtrdot;
U+022D7
gtreqless;
U+022DB
gtreqqless;
U+02A8C
gtrless;
U+02277
gtrsim;
U+02273
gvertneqq;
U+02269 U+0FE00
≩︀
gvnE;
U+02269 U+0FE00
≩︀
Hacek;
U+002C7
hairsp;
U+0200A
half;
U+000BD
hamilt;
U+0210B
HARDcy;
U+0042A
hardcy;
U+0044A
hArr;
U+021D4
harr;
U+02194
harrcir;
U+02948
harrw;
U+021AD
Hat;
U+0005E
hbar;
U+0210F
Hcirc;
U+00124
hcirc;
U+00125
hearts;
U+02665
heartsuit;
U+02665
hellip;
U+02026
hercon;
U+022B9
Hfr;
U+0210C
hfr;
U+1D525
HilbertSpace;
U+0210B
hksearow;
U+02925
hkswarow;
U+02926
hoarr;
U+021FF
homtht;
U+0223B
hookleftarrow;
U+021A9
hookrightarrow;
U+021AA
Hopf;
U+0210D
hopf;
U+1D559
horbar;
U+02015
HorizontalLine;
U+02500
Hscr;
U+0210B
hscr;
U+1D4BD
hslash;
U+0210F
Hstrok;
U+00126
hstrok;
U+00127
HumpDownHump;
U+0224E
HumpEqual;
U+0224F
hybull;
U+02043
hyphen;
U+02010
Iacute;
U+000CD
Iacute
U+000CD
iacute;
U+000ED
iacute
U+000ED
ic;
U+02063
Icirc;
U+000CE
Icirc
U+000CE
icirc;
U+000EE
icirc
U+000EE
Icy;
U+00418
icy;
U+00438
Idot;
U+00130
IEcy;
U+00415
iecy;
U+00435
iexcl;
U+000A1
iexcl
U+000A1
iff;
U+021D4
Ifr;
U+02111
ifr;
U+1D526
Igrave;
U+000CC
Igrave
U+000CC
igrave;
U+000EC
igrave
U+000EC
ii;
U+02148
iiiint;
U+02A0C
iiint;
U+0222D
iinfin;
U+029DC
iiota;
U+02129
IJlig;
U+00132
ijlig;
U+00133
Im;
U+02111
Imacr;
U+0012A
imacr;
U+0012B
image;
U+02111
ImaginaryI;
U+02148
imagline;
U+02110
imagpart;
U+02111
imath;
U+00131
imof;
U+022B7
imped;
U+001B5
Implies;
U+021D2
in;
U+02208
incare;
U+02105
infin;
U+0221E
infintie;
U+029DD
inodot;
U+00131
Int;
U+0222C
int;
U+0222B
intcal;
U+022BA
integers;
U+02124
Integral;
U+0222B
intercal;
U+022BA
Intersection;
U+022C2
intlarhk;
U+02A17
intprod;
U+02A3C
InvisibleComma;
U+02063
InvisibleTimes;
U+02062
IOcy;
U+00401
iocy;
U+00451
Iogon;
U+0012E
iogon;
U+0012F
Iopf;
U+1D540
iopf;
U+1D55A
Iota;
U+00399
iota;
U+003B9
iprod;
U+02A3C
iquest;
U+000BF
iquest
U+000BF
Iscr;
U+02110
iscr;
U+1D4BE
isin;
U+02208
isindot;
U+022F5
isinE;
U+022F9
isins;
U+022F4
isinsv;
U+022F3
isinv;
U+02208
it;
U+02062
Itilde;
U+00128
itilde;
U+00129
Iukcy;
U+00406
iukcy;
U+00456
Iuml;
U+000CF
Iuml
U+000CF
iuml;
U+000EF
iuml
U+000EF
Jcirc;
U+00134
jcirc;
U+00135
Jcy;
U+00419
jcy;
U+00439
Jfr;
U+1D50D
jfr;
U+1D527
jmath;
U+00237
Jopf;
U+1D541
jopf;
U+1D55B
Jscr;
U+1D4A5
jscr;
U+1D4BF
Jsercy;
U+00408
jsercy;
U+00458
Jukcy;
U+00404
jukcy;
U+00454
Kappa;
U+0039A
kappa;
U+003BA
kappav;
U+003F0
Kcedil;
U+00136
kcedil;
U+00137
Kcy;
U+0041A
kcy;
U+0043A
Kfr;
U+1D50E
kfr;
U+1D528
kgreen;
U+00138
KHcy;
U+00425
khcy;
U+00445
KJcy;
U+0040C
kjcy;
U+0045C
Kopf;
U+1D542
kopf;
U+1D55C
Kscr;
U+1D4A6
kscr;
U+1D4C0
lAarr;
U+021DA
Lacute;
U+00139
lacute;
U+0013A
laemptyv;
U+029B4
lagran;
U+02112
Lambda;
U+0039B
lambda;
U+003BB
Lang;
U+027EA
lang;
U+027E8
langd;
U+02991
langle;
U+027E8
lap;
U+02A85
Laplacetrf;
U+02112
laquo;
U+000AB
laquo
U+000AB
Larr;
U+0219E
lArr;
U+021D0
larr;
U+02190
larrb;
U+021E4
larrbfs;
U+0291F
larrfs;
U+0291D
larrhk;
U+021A9
larrlp;
U+021AB
larrpl;
U+02939
larrsim;
U+02973
larrtl;
U+021A2
lat;
U+02AAB
lAtail;
U+0291B
latail;
U+02919
late;
U+02AAD
lates;
U+02AAD U+0FE00
⪭︀
lBarr;
U+0290E
lbarr;
U+0290C
lbbrk;
U+02772
lbrace;
U+0007B
lbrack;
U+0005B
lbrke;
U+0298B
lbrksld;
U+0298F
lbrkslu;
U+0298D
Lcaron;
U+0013D
lcaron;
U+0013E
Lcedil;
U+0013B
lcedil;
U+0013C
lceil;
U+02308
lcub;
U+0007B
Lcy;
U+0041B
lcy;
U+0043B
ldca;
U+02936
ldquo;
U+0201C
ldquor;
U+0201E
ldrdhar;
U+02967
ldrushar;
U+0294B
ldsh;
U+021B2
lE;
U+02266
le;
U+02264
LeftAngleBracket;
U+027E8
LeftArrow;
U+02190
Leftarrow;
U+021D0
leftarrow;
U+02190
LeftArrowBar;
U+021E4
LeftArrowRightArrow;
U+021C6
leftarrowtail;
U+021A2
LeftCeiling;
U+02308
LeftDoubleBracket;
U+027E6
LeftDownTeeVector;
U+02961
LeftDownVector;
U+021C3
LeftDownVectorBar;
U+02959
LeftFloor;
U+0230A
leftharpoondown;
U+021BD
leftharpoonup;
U+021BC
leftleftarrows;
U+021C7
LeftRightArrow;
U+02194
Leftrightarrow;
U+021D4
leftrightarrow;
U+02194
leftrightarrows;
U+021C6
leftrightharpoons;
U+021CB
leftrightsquigarrow;
U+021AD
LeftRightVector;
U+0294E
LeftTee;
U+022A3
LeftTeeArrow;
U+021A4
LeftTeeVector;
U+0295A
leftthreetimes;
U+022CB
LeftTriangle;
U+022B2
LeftTriangleBar;
U+029CF
LeftTriangleEqual;
U+022B4
LeftUpDownVector;
U+02951
LeftUpTeeVector;
U+02960
LeftUpVector;
U+021BF
LeftUpVectorBar;
U+02958
LeftVector;
U+021BC
LeftVectorBar;
U+02952
lEg;
U+02A8B
leg;
U+022DA
leq;
U+02264
leqq;
U+02266
leqslant;
U+02A7D
les;
U+02A7D
lescc;
U+02AA8
lesdot;
U+02A7F
lesdoto;
U+02A81
lesdotor;
U+02A83
lesg;
U+022DA U+0FE00
⋚︀
lesges;
U+02A93
lessapprox;
U+02A85
lessdot;
U+022D6
lesseqgtr;
U+022DA
lesseqqgtr;
U+02A8B
LessEqualGreater;
U+022DA
LessFullEqual;
U+02266
LessGreater;
U+02276
lessgtr;
U+02276
LessLess;
U+02AA1
lesssim;
U+02272
LessSlantEqual;
U+02A7D
LessTilde;
U+02272
lfisht;
U+0297C
lfloor;
U+0230A
Lfr;
U+1D50F
lfr;
U+1D529
lg;
U+02276
lgE;
U+02A91
lHar;
U+02962
lhard;
U+021BD
lharu;
U+021BC
lharul;
U+0296A
lhblk;
U+02584
LJcy;
U+00409
ljcy;
U+00459
Ll;
U+022D8
ll;
U+0226A
llarr;
U+021C7
llcorner;
U+0231E
Lleftarrow;
U+021DA
llhard;
U+0296B
lltri;
U+025FA
Lmidot;
U+0013F
lmidot;
U+00140
lmoust;
U+023B0
lmoustache;
U+023B0
lnap;
U+02A89
lnapprox;
U+02A89
lnE;
U+02268
lne;
U+02A87
lneq;
U+02A87
lneqq;
U+02268
lnsim;
U+022E6
loang;
U+027EC
loarr;
U+021FD
lobrk;
U+027E6
LongLeftArrow;
U+027F5
Longleftarrow;
U+027F8
longleftarrow;
U+027F5
LongLeftRightArrow;
U+027F7
Longleftrightarrow;
U+027FA
longleftrightarrow;
U+027F7
longmapsto;
U+027FC
LongRightArrow;
U+027F6
Longrightarrow;
U+027F9
longrightarrow;
U+027F6
looparrowleft;
U+021AB
looparrowright;
U+021AC
lopar;
U+02985
Lopf;
U+1D543
lopf;
U+1D55D
loplus;
U+02A2D
lotimes;
U+02A34
lowast;
U+02217
lowbar;
U+0005F
LowerLeftArrow;
U+02199
LowerRightArrow;
U+02198
loz;
U+025CA
lozenge;
U+025CA
lozf;
U+029EB
lpar;
U+00028
lparlt;
U+02993
lrarr;
U+021C6
lrcorner;
U+0231F
lrhar;
U+021CB
lrhard;
U+0296D
lrm;
U+0200E
lrtri;
U+022BF
lsaquo;
U+02039
Lscr;
U+02112
lscr;
U+1D4C1
Lsh;
U+021B0
lsh;
U+021B0
lsim;
U+02272
lsime;
U+02A8D
lsimg;
U+02A8F
lsqb;
U+0005B
lsquo;
U+02018
lsquor;
U+0201A
Lstrok;
U+00141
lstrok;
U+00142
LT;
U+0003C
LT
U+0003C
Lt;
U+0226A
lt;
U+0003C
lt
U+0003C
ltcc;
U+02AA6
ltcir;
U+02A79
ltdot;
U+022D6
lthree;
U+022CB
ltimes;
U+022C9
ltlarr;
U+02976
ltquest;
U+02A7B
ltri;
U+025C3
ltrie;
U+022B4
ltrif;
U+025C2
ltrPar;
U+02996
lurdshar;
U+0294A
luruhar;
U+02966
lvertneqq;
U+02268 U+0FE00
≨︀
lvnE;
U+02268 U+0FE00
≨︀
macr;
U+000AF
macr
U+000AF
male;
U+02642
malt;
U+02720
maltese;
U+02720
Map;
U+02905
map;
U+021A6
mapsto;
U+021A6
mapstodown;
U+021A7
mapstoleft;
U+021A4
mapstoup;
U+021A5
marker;
U+025AE
mcomma;
U+02A29
Mcy;
U+0041C
mcy;
U+0043C
mdash;
U+02014
mDDot;
U+0223A
measuredangle;
U+02221
MediumSpace;
U+0205F
Mellintrf;
U+02133
Mfr;
U+1D510
mfr;
U+1D52A
mho;
U+02127
micro;
U+000B5
micro
U+000B5
mid;
U+02223
midast;
U+0002A
midcir;
U+02AF0
middot;
U+000B7
middot
U+000B7
minus;
U+02212
minusb;
U+0229F
minusd;
U+02238
minusdu;
U+02A2A
MinusPlus;
U+02213
mlcp;
U+02ADB
mldr;
U+02026
mnplus;
U+02213
models;
U+022A7
Mopf;
U+1D544
mopf;
U+1D55E
mp;
U+02213
Mscr;
U+02133
mscr;
U+1D4C2
mstpos;
U+0223E
Mu;
U+0039C
mu;
U+003BC
multimap;
U+022B8
mumap;
U+022B8
nabla;
U+02207
Nacute;
U+00143
nacute;
U+00144
nang;
U+02220 U+020D2
∠⃒
nap;
U+02249
napE;
U+02A70 U+00338
⩰̸
napid;
U+0224B U+00338
≋̸
napos;
U+00149
napprox;
U+02249
natur;
U+0266E
natural;
U+0266E
naturals;
U+02115
nbsp;
U+000A0
nbsp
U+000A0
nbump;
U+0224E U+00338
≎̸
nbumpe;
U+0224F U+00338
≏̸
ncap;
U+02A43
Ncaron;
U+00147
ncaron;
U+00148
Ncedil;
U+00145
ncedil;
U+00146
ncong;
U+02247
ncongdot;
U+02A6D U+00338
⩭̸
ncup;
U+02A42
Ncy;
U+0041D
ncy;
U+0043D
ndash;
U+02013
ne;
U+02260
nearhk;
U+02924
neArr;
U+021D7
nearr;
U+02197
nearrow;
U+02197
nedot;
U+02250 U+00338
≐̸
NegativeMediumSpace;
U+0200B
NegativeThickSpace;
U+0200B
NegativeThinSpace;
U+0200B
NegativeVeryThinSpace;
U+0200B
nequiv;
U+02262
nesear;
U+02928
nesim;
U+02242 U+00338
≂̸
NestedGreaterGreater;
U+0226B
NestedLessLess;
U+0226A
NewLine;
U+0000A
nexist;
U+02204
nexists;
U+02204
Nfr;
U+1D511
nfr;
U+1D52B
ngE;
U+02267 U+00338
≧̸
nge;
U+02271
ngeq;
U+02271
ngeqq;
U+02267 U+00338
≧̸
ngeqslant;
U+02A7E U+00338
⩾̸
nges;
U+02A7E U+00338
⩾̸
nGg;
U+022D9 U+00338
⋙̸
ngsim;
U+02275
nGt;
U+0226B U+020D2
≫⃒
ngt;
U+0226F
ngtr;
U+0226F
nGtv;
U+0226B U+00338
≫̸
nhArr;
U+021CE
nharr;
U+021AE
nhpar;
U+02AF2
ni;
U+0220B
nis;
U+022FC
nisd;
U+022FA
niv;
U+0220B
NJcy;
U+0040A
njcy;
U+0045A
nlArr;
U+021CD
nlarr;
U+0219A
nldr;
U+02025
nlE;
U+02266 U+00338
≦̸
nle;
U+02270
nLeftarrow;
U+021CD
nleftarrow;
U+0219A
nLeftrightarrow;
U+021CE
nleftrightarrow;
U+021AE
nleq;
U+02270
nleqq;
U+02266 U+00338
≦̸
nleqslant;
U+02A7D U+00338
⩽̸
nles;
U+02A7D U+00338
⩽̸
nless;
U+0226E
nLl;
U+022D8 U+00338
⋘̸
nlsim;
U+02274
nLt;
U+0226A U+020D2
≪⃒
nlt;
U+0226E
nltri;
U+022EA
nltrie;
U+022EC
nLtv;
U+0226A U+00338
≪̸
nmid;
U+02224
NoBreak;
U+02060
NonBreakingSpace;
U+000A0
Nopf;
U+02115
nopf;
U+1D55F
Not;
U+02AEC
not;
U+000AC
not
U+000AC
NotCongruent;
U+02262
NotCupCap;
U+0226D
NotDoubleVerticalBar;
U+02226
NotElement;
U+02209
NotEqual;
U+02260
NotEqualTilde;
U+02242 U+00338
≂̸
NotExists;
U+02204
NotGreater;
U+0226F
NotGreaterEqual;
U+02271
NotGreaterFullEqual;
U+02267 U+00338
≧̸
NotGreaterGreater;
U+0226B U+00338
≫̸
NotGreaterLess;
U+02279
NotGreaterSlantEqual;
U+02A7E U+00338
⩾̸
NotGreaterTilde;
U+02275
NotHumpDownHump;
U+0224E U+00338
≎̸
NotHumpEqual;
U+0224F U+00338
≏̸
notin;
U+02209
notindot;
U+022F5 U+00338
⋵̸
notinE;
U+022F9 U+00338
⋹̸
notinva;
U+02209
notinvb;
U+022F7
notinvc;
U+022F6
NotLeftTriangle;
U+022EA
NotLeftTriangleBar;
U+029CF U+00338
⧏̸
NotLeftTriangleEqual;
U+022EC
NotLess;
U+0226E
NotLessEqual;
U+02270
NotLessGreater;
U+02278
NotLessLess;
U+0226A U+00338
≪̸
NotLessSlantEqual;
U+02A7D U+00338
⩽̸
NotLessTilde;
U+02274
NotNestedGreaterGreater;
U+02AA2 U+00338
⪢̸
NotNestedLessLess;
U+02AA1 U+00338
⪡̸
notni;
U+0220C
notniva;
U+0220C
notnivb;
U+022FE
notnivc;
U+022FD
NotPrecedes;
U+02280
NotPrecedesEqual;
U+02AAF U+00338
⪯̸
NotPrecedesSlantEqual;
U+022E0
NotReverseElement;
U+0220C
NotRightTriangle;
U+022EB
NotRightTriangleBar;
U+029D0 U+00338
⧐̸
NotRightTriangleEqual;
U+022ED
NotSquareSubset;
U+0228F U+00338
⊏̸
NotSquareSubsetEqual;
U+022E2
NotSquareSuperset;
U+02290 U+00338
⊐̸
NotSquareSupersetEqual;
U+022E3
NotSubset;
U+02282 U+020D2
⊂⃒
NotSubsetEqual;
U+02288
NotSucceeds;
U+02281
NotSucceedsEqual;
U+02AB0 U+00338
⪰̸
NotSucceedsSlantEqual;
U+022E1
NotSucceedsTilde;
U+0227F U+00338
≿̸
NotSuperset;
U+02283 U+020D2
⊃⃒
NotSupersetEqual;
U+02289
NotTilde;
U+02241
NotTildeEqual;
U+02244
NotTildeFullEqual;
U+02247
NotTildeTilde;
U+02249
NotVerticalBar;
U+02224
npar;
U+02226
nparallel;
U+02226
nparsl;
U+02AFD U+020E5
⫽⃥
npart;
U+02202 U+00338
∂̸
npolint;
U+02A14
npr;
U+02280
nprcue;
U+022E0
npre;
U+02AAF U+00338
⪯̸
nprec;
U+02280
npreceq;
U+02AAF U+00338
⪯̸
nrArr;
U+021CF
nrarr;
U+0219B
nrarrc;
U+02933 U+00338
⤳̸
nrarrw;
U+0219D U+00338
↝̸
nRightarrow;
U+021CF
nrightarrow;
U+0219B
nrtri;
U+022EB
nrtrie;
U+022ED
nsc;
U+02281
nsccue;
U+022E1
nsce;
U+02AB0 U+00338
⪰̸
Nscr;
U+1D4A9
nscr;
U+1D4C3
nshortmid;
U+02224
nshortparallel;
U+02226
nsim;
U+02241
nsime;
U+02244
nsimeq;
U+02244
nsmid;
U+02224
nspar;
U+02226
nsqsube;
U+022E2
nsqsupe;
U+022E3
nsub;
U+02284
nsubE;
U+02AC5 U+00338
⫅̸
nsube;
U+02288
nsubset;
U+02282 U+020D2
⊂⃒
nsubseteq;
U+02288
nsubseteqq;
U+02AC5 U+00338
⫅̸
nsucc;
U+02281
nsucceq;
U+02AB0 U+00338
⪰̸
nsup;
U+02285
nsupE;
U+02AC6 U+00338
⫆̸
nsupe;
U+02289
nsupset;
U+02283 U+020D2
⊃⃒
nsupseteq;
U+02289
nsupseteqq;
U+02AC6 U+00338
⫆̸
ntgl;
U+02279
Ntilde;
U+000D1
Ntilde
U+000D1
ntilde;
U+000F1
ntilde
U+000F1
ntlg;
U+02278
ntriangleleft;
U+022EA
ntrianglelefteq;
U+022EC
ntriangleright;
U+022EB
ntrianglerighteq;
U+022ED
Nu;
U+0039D
nu;
U+003BD
num;
U+00023
numero;
U+02116
numsp;
U+02007
nvap;
U+0224D U+020D2
≍⃒
nVDash;
U+022AF
nVdash;
U+022AE
nvDash;
U+022AD
nvdash;
U+022AC
nvge;
U+02265 U+020D2
≥⃒
nvgt;
U+0003E U+020D2
>⃒
nvHarr;
U+02904
nvinfin;
U+029DE
nvlArr;
U+02902
nvle;
U+02264 U+020D2
≤⃒
nvlt;
U+0003C U+020D2
<⃒
nvltrie;
U+022B4 U+020D2
⊴⃒
nvrArr;
U+02903
nvrtrie;
U+022B5 U+020D2
⊵⃒
nvsim;
U+0223C U+020D2
∼⃒
nwarhk;
U+02923
nwArr;
U+021D6
nwarr;
U+02196
nwarrow;
U+02196
nwnear;
U+02927
Oacute;
U+000D3
Oacute
U+000D3
oacute;
U+000F3
oacute
U+000F3
oast;
U+0229B
ocir;
U+0229A
Ocirc;
U+000D4
Ocirc
U+000D4
ocirc;
U+000F4
ocirc
U+000F4
Ocy;
U+0041E
ocy;
U+0043E
odash;
U+0229D
Odblac;
U+00150
odblac;
U+00151
odiv;
U+02A38
odot;
U+02299
odsold;
U+029BC
OElig;
U+00152
oelig;
U+00153
ofcir;
U+029BF
Ofr;
U+1D512
ofr;
U+1D52C
ogon;
U+002DB
Ograve;
U+000D2
Ograve
U+000D2
ograve;
U+000F2
ograve
U+000F2
ogt;
U+029C1
ohbar;
U+029B5
ohm;
U+003A9
oint;
U+0222E
olarr;
U+021BA
olcir;
U+029BE
olcross;
U+029BB
oline;
U+0203E
olt;
U+029C0
Omacr;
U+0014C
omacr;
U+0014D
Omega;
U+003A9
omega;
U+003C9
Omicron;
U+0039F
omicron;
U+003BF
omid;
U+029B6
ominus;
U+02296
Oopf;
U+1D546
oopf;
U+1D560
opar;
U+029B7
OpenCurlyDoubleQuote;
U+0201C
OpenCurlyQuote;
U+02018
operp;
U+029B9
oplus;
U+02295
Or;
U+02A54
or;
U+02228
orarr;
U+021BB
ord;
U+02A5D
order;
U+02134
orderof;
U+02134
ordf;
U+000AA
ordf
U+000AA
ordm;
U+000BA
ordm
U+000BA
origof;
U+022B6
oror;
U+02A56
orslope;
U+02A57
orv;
U+02A5B
oS;
U+024C8
Oscr;
U+1D4AA
oscr;
U+02134
Oslash;
U+000D8
Oslash
U+000D8
oslash;
U+000F8
oslash
U+000F8
osol;
U+02298
Otilde;
U+000D5
Otilde
U+000D5
otilde;
U+000F5
otilde
U+000F5
Otimes;
U+02A37
otimes;
U+02297
otimesas;
U+02A36
Ouml;
U+000D6
Ouml
U+000D6
ouml;
U+000F6
ouml
U+000F6
ovbar;
U+0233D
OverBar;
U+0203E
OverBrace;
U+023DE
OverBracket;
U+023B4
OverParenthesis;
U+023DC
par;
U+02225
para;
U+000B6
para
U+000B6
parallel;
U+02225
parsim;
U+02AF3
parsl;
U+02AFD
part;
U+02202
PartialD;
U+02202
Pcy;
U+0041F
pcy;
U+0043F
percnt;
U+00025
period;
U+0002E
permil;
U+02030
perp;
U+022A5
pertenk;
U+02031
Pfr;
U+1D513
pfr;
U+1D52D
Phi;
U+003A6
phi;
U+003C6
phiv;
U+003D5
phmmat;
U+02133
phone;
U+0260E
Pi;
U+003A0
pi;
U+003C0
pitchfork;
U+022D4
piv;
U+003D6
planck;
U+0210F
planckh;
U+0210E
plankv;
U+0210F
plus;
U+0002B
plusacir;
U+02A23
plusb;
U+0229E
pluscir;
U+02A22
plusdo;
U+02214
plusdu;
U+02A25
pluse;
U+02A72
PlusMinus;
U+000B1
plusmn;
U+000B1
plusmn
U+000B1
plussim;
U+02A26
plustwo;
U+02A27
pm;
U+000B1
Poincareplane;
U+0210C
pointint;
U+02A15
Popf;
U+02119
popf;
U+1D561
pound;
U+000A3
pound
U+000A3
Pr;
U+02ABB
pr;
U+0227A
prap;
U+02AB7
prcue;
U+0227C
prE;
U+02AB3
pre;
U+02AAF
prec;
U+0227A
precapprox;
U+02AB7
preccurlyeq;
U+0227C
Precedes;
U+0227A
PrecedesEqual;
U+02AAF
PrecedesSlantEqual;
U+0227C
PrecedesTilde;
U+0227E
preceq;
U+02AAF
precnapprox;
U+02AB9
precneqq;
U+02AB5
precnsim;
U+022E8
precsim;
U+0227E
Prime;
U+02033
prime;
U+02032
primes;
U+02119
prnap;
U+02AB9
prnE;
U+02AB5
prnsim;
U+022E8
prod;
U+0220F
Product;
U+0220F
profalar;
U+0232E
profline;
U+02312
profsurf;
U+02313
prop;
U+0221D
Proportion;
U+02237
Proportional;
U+0221D
propto;
U+0221D
prsim;
U+0227E
prurel;
U+022B0
Pscr;
U+1D4AB
pscr;
U+1D4C5
Psi;
U+003A8
psi;
U+003C8
puncsp;
U+02008
Qfr;
U+1D514
qfr;
U+1D52E
qint;
U+02A0C
Qopf;
U+0211A
qopf;
U+1D562
qprime;
U+02057
Qscr;
U+1D4AC
qscr;
U+1D4C6
quaternions;
U+0210D
quatint;
U+02A16
quest;
U+0003F
questeq;
U+0225F
QUOT;
U+00022
QUOT
U+00022
quot;
U+00022
quot
U+00022
rAarr;
U+021DB
race;
U+0223D U+00331
∽̱
Racute;
U+00154
racute;
U+00155
radic;
U+0221A
raemptyv;
U+029B3
Rang;
U+027EB
rang;
U+027E9
rangd;
U+02992
range;
U+029A5
rangle;
U+027E9
raquo;
U+000BB
raquo
U+000BB
Rarr;
U+021A0
rArr;
U+021D2
rarr;
U+02192
rarrap;
U+02975
rarrb;
U+021E5
rarrbfs;
U+02920
rarrc;
U+02933
rarrfs;
U+0291E
rarrhk;
U+021AA
rarrlp;
U+021AC
rarrpl;
U+02945
rarrsim;
U+02974
Rarrtl;
U+02916
rarrtl;
U+021A3
rarrw;
U+0219D
rAtail;
U+0291C
ratail;
U+0291A
ratio;
U+02236
rationals;
U+0211A
RBarr;
U+02910
rBarr;
U+0290F
rbarr;
U+0290D
rbbrk;
U+02773
rbrace;
U+0007D
rbrack;
U+0005D
rbrke;
U+0298C
rbrksld;
U+0298E
rbrkslu;
U+02990
Rcaron;
U+00158
rcaron;
U+00159
Rcedil;
U+00156
rcedil;
U+00157
rceil;
U+02309
rcub;
U+0007D
Rcy;
U+00420
rcy;
U+00440
rdca;
U+02937
rdldhar;
U+02969
rdquo;
U+0201D
rdquor;
U+0201D
rdsh;
U+021B3
Re;
U+0211C
real;
U+0211C
realine;
U+0211B
realpart;
U+0211C
reals;
U+0211D
rect;
U+025AD
REG;
U+000AE
REG
U+000AE
reg;
U+000AE
reg
U+000AE
ReverseElement;
U+0220B
ReverseEquilibrium;
U+021CB
ReverseUpEquilibrium;
U+0296F
rfisht;
U+0297D
rfloor;
U+0230B
Rfr;
U+0211C
rfr;
U+1D52F
rHar;
U+02964
rhard;
U+021C1
rharu;
U+021C0
rharul;
U+0296C
Rho;
U+003A1
rho;
U+003C1
rhov;
U+003F1
RightAngleBracket;
U+027E9
RightArrow;
U+02192
Rightarrow;
U+021D2
rightarrow;
U+02192
RightArrowBar;
U+021E5
RightArrowLeftArrow;
U+021C4
rightarrowtail;
U+021A3
RightCeiling;
U+02309
RightDoubleBracket;
U+027E7
RightDownTeeVector;
U+0295D
RightDownVector;
U+021C2
RightDownVectorBar;
U+02955
RightFloor;
U+0230B
rightharpoondown;
U+021C1
rightharpoonup;
U+021C0
rightleftarrows;
U+021C4
rightleftharpoons;
U+021CC
rightrightarrows;
U+021C9
rightsquigarrow;
U+0219D
RightTee;
U+022A2
RightTeeArrow;
U+021A6
RightTeeVector;
U+0295B
rightthreetimes;
U+022CC
RightTriangle;
U+022B3
RightTriangleBar;
U+029D0
RightTriangleEqual;
U+022B5
RightUpDownVector;
U+0294F
RightUpTeeVector;
U+0295C
RightUpVector;
U+021BE
RightUpVectorBar;
U+02954
RightVector;
U+021C0
RightVectorBar;
U+02953
ring;
U+002DA
risingdotseq;
U+02253
rlarr;
U+021C4
rlhar;
U+021CC
rlm;
U+0200F
rmoust;
U+023B1
rmoustache;
U+023B1
rnmid;
U+02AEE
roang;
U+027ED
roarr;
U+021FE
robrk;
U+027E7
ropar;
U+02986
Ropf;
U+0211D
ropf;
U+1D563
roplus;
U+02A2E
rotimes;
U+02A35
RoundImplies;
U+02970
rpar;
U+00029
rpargt;
U+02994
rppolint;
U+02A12
rrarr;
U+021C9
Rrightarrow;
U+021DB
rsaquo;
U+0203A
Rscr;
U+0211B
rscr;
U+1D4C7
Rsh;
U+021B1
rsh;
U+021B1
rsqb;
U+0005D
rsquo;
U+02019
rsquor;
U+02019
rthree;
U+022CC
rtimes;
U+022CA
rtri;
U+025B9
rtrie;
U+022B5
rtrif;
U+025B8
rtriltri;
U+029CE
RuleDelayed;
U+029F4
ruluhar;
U+02968
rx;
U+0211E
Sacute;
U+0015A
sacute;
U+0015B
sbquo;
U+0201A
Sc;
U+02ABC
sc;
U+0227B
scap;
U+02AB8
Scaron;
U+00160
scaron;
U+00161
sccue;
U+0227D
scE;
U+02AB4
sce;
U+02AB0
Scedil;
U+0015E
scedil;
U+0015F
Scirc;
U+0015C
scirc;
U+0015D
scnap;
U+02ABA
scnE;
U+02AB6
scnsim;
U+022E9
scpolint;
U+02A13
scsim;
U+0227F
Scy;
U+00421
scy;
U+00441
sdot;
U+022C5
sdotb;
U+022A1
sdote;
U+02A66
searhk;
U+02925
seArr;
U+021D8
searr;
U+02198
searrow;
U+02198
sect;
U+000A7
sect
U+000A7
semi;
U+0003B
seswar;
U+02929
setminus;
U+02216
setmn;
U+02216
sext;
U+02736
Sfr;
U+1D516
sfr;
U+1D530
sfrown;
U+02322
sharp;
U+0266F
SHCHcy;
U+00429
shchcy;
U+00449
SHcy;
U+00428
shcy;
U+00448
ShortDownArrow;
U+02193
ShortLeftArrow;
U+02190
shortmid;
U+02223
shortparallel;
U+02225
ShortRightArrow;
U+02192
ShortUpArrow;
U+02191
shy;
U+000AD
shy
U+000AD
Sigma;
U+003A3
sigma;
U+003C3
sigmaf;
U+003C2
sigmav;
U+003C2
sim;
U+0223C
simdot;
U+02A6A
sime;
U+02243
simeq;
U+02243
simg;
U+02A9E
simgE;
U+02AA0
siml;
U+02A9D
simlE;
U+02A9F
simne;
U+02246
simplus;
U+02A24
simrarr;
U+02972
slarr;
U+02190
SmallCircle;
U+02218
smallsetminus;
U+02216
smashp;
U+02A33
smeparsl;
U+029E4
smid;
U+02223
smile;
U+02323
smt;
U+02AAA
smte;
U+02AAC
smtes;
U+02AAC U+0FE00
⪬︀
SOFTcy;
U+0042C
softcy;
U+0044C
sol;
U+0002F
solb;
U+029C4
solbar;
U+0233F
Sopf;
U+1D54A
sopf;
U+1D564
spades;
U+02660
spadesuit;
U+02660
spar;
U+02225
sqcap;
U+02293
sqcaps;
U+02293 U+0FE00
⊓︀
sqcup;
U+02294
sqcups;
U+02294 U+0FE00
⊔︀
Sqrt;
U+0221A
sqsub;
U+0228F
sqsube;
U+02291
sqsubset;
U+0228F
sqsubseteq;
U+02291
sqsup;
U+02290
sqsupe;
U+02292
sqsupset;
U+02290
sqsupseteq;
U+02292
squ;
U+025A1
Square;
U+025A1
square;
U+025A1
SquareIntersection;
U+02293
SquareSubset;
U+0228F
SquareSubsetEqual;
U+02291
SquareSuperset;
U+02290
SquareSupersetEqual;
U+02292
SquareUnion;
U+02294
squarf;
U+025AA
squf;
U+025AA
srarr;
U+02192
Sscr;
U+1D4AE
sscr;
U+1D4C8
ssetmn;
U+02216
ssmile;
U+02323
sstarf;
U+022C6
Star;
U+022C6
star;
U+02606
starf;
U+02605
straightepsilon;
U+003F5
straightphi;
U+003D5
strns;
U+000AF
Sub;
U+022D0
sub;
U+02282
subdot;
U+02ABD
subE;
U+02AC5
sube;
U+02286
subedot;
U+02AC3
submult;
U+02AC1
subnE;
U+02ACB
subne;
U+0228A
subplus;
U+02ABF
subrarr;
U+02979
Subset;
U+022D0
subset;
U+02282
subseteq;
U+02286
subseteqq;
U+02AC5
SubsetEqual;
U+02286
subsetneq;
U+0228A
subsetneqq;
U+02ACB
subsim;
U+02AC7
subsub;
U+02AD5
subsup;
U+02AD3
succ;
U+0227B
succapprox;
U+02AB8
succcurlyeq;
U+0227D
Succeeds;
U+0227B
SucceedsEqual;
U+02AB0
SucceedsSlantEqual;
U+0227D
SucceedsTilde;
U+0227F
succeq;
U+02AB0
succnapprox;
U+02ABA
succneqq;
U+02AB6
succnsim;
U+022E9
succsim;
U+0227F
SuchThat;
U+0220B
Sum;
U+02211
sum;
U+02211
sung;
U+0266A
Sup;
U+022D1
sup;
U+02283
sup1;
U+000B9
sup1
U+000B9
sup2;
U+000B2
sup2
U+000B2
sup3;
U+000B3
sup3
U+000B3
supdot;
U+02ABE
supdsub;
U+02AD8
supE;
U+02AC6
supe;
U+02287
supedot;
U+02AC4
Superset;
U+02283
SupersetEqual;
U+02287
suphsol;
U+027C9
suphsub;
U+02AD7
suplarr;
U+0297B
supmult;
U+02AC2
supnE;
U+02ACC
supne;
U+0228B
supplus;
U+02AC0
Supset;
U+022D1
supset;
U+02283
supseteq;
U+02287
supseteqq;
U+02AC6
supsetneq;
U+0228B
supsetneqq;
U+02ACC
supsim;
U+02AC8
supsub;
U+02AD4
supsup;
U+02AD6
swarhk;
U+02926
swArr;
U+021D9
swarr;
U+02199
swarrow;
U+02199
swnwar;
U+0292A
szlig;
U+000DF
szlig
U+000DF
Tab;
U+00009
target;
U+02316
Tau;
U+003A4
tau;
U+003C4
tbrk;
U+023B4
Tcaron;
U+00164
tcaron;
U+00165
Tcedil;
U+00162
tcedil;
U+00163
Tcy;
U+00422
tcy;
U+00442
tdot;
U+020DB
◌⃛
telrec;
U+02315
Tfr;
U+1D517
tfr;
U+1D531
there4;
U+02234
Therefore;
U+02234
therefore;
U+02234
Theta;
U+00398
theta;
U+003B8
thetasym;
U+003D1
thetav;
U+003D1
thickapprox;
U+02248
thicksim;
U+0223C
ThickSpace;
U+0205F U+0200A
thinsp;
U+02009
ThinSpace;
U+02009
thkap;
U+02248
thksim;
U+0223C
THORN;
U+000DE
THORN
U+000DE
thorn;
U+000FE
thorn
U+000FE
Tilde;
U+0223C
tilde;
U+002DC
TildeEqual;
U+02243
TildeFullEqual;
U+02245
TildeTilde;
U+02248
times;
U+000D7
times
U+000D7
timesb;
U+022A0
timesbar;
U+02A31
timesd;
U+02A30
tint;
U+0222D
toea;
U+02928
top;
U+022A4
topbot;
U+02336
topcir;
U+02AF1
Topf;
U+1D54B
topf;
U+1D565
topfork;
U+02ADA
tosa;
U+02929
tprime;
U+02034
TRADE;
U+02122
trade;
U+02122
triangle;
U+025B5
triangledown;
U+025BF
triangleleft;
U+025C3
trianglelefteq;
U+022B4
triangleq;
U+0225C
triangleright;
U+025B9
trianglerighteq;
U+022B5
tridot;
U+025EC
trie;
U+0225C
triminus;
U+02A3A
TripleDot;
U+020DB
◌⃛
triplus;
U+02A39
trisb;
U+029CD
tritime;
U+02A3B
trpezium;
U+023E2
Tscr;
U+1D4AF
tscr;
U+1D4C9
TScy;
U+00426
tscy;
U+00446
TSHcy;
U+0040B
tshcy;
U+0045B
Tstrok;
U+00166
tstrok;
U+00167
twixt;
U+0226C
twoheadleftarrow;
U+0219E
twoheadrightarrow;
U+021A0
Uacute;
U+000DA
Uacute
U+000DA
uacute;
U+000FA
uacute
U+000FA
Uarr;
U+0219F
uArr;
U+021D1
uarr;
U+02191
Uarrocir;
U+02949
Ubrcy;
U+0040E
ubrcy;
U+0045E
Ubreve;
U+0016C
ubreve;
U+0016D
Ucirc;
U+000DB
Ucirc
U+000DB
ucirc;
U+000FB
ucirc
U+000FB
Ucy;
U+00423
ucy;
U+00443
udarr;
U+021C5
Udblac;
U+00170
udblac;
U+00171
udhar;
U+0296E
ufisht;
U+0297E
Ufr;
U+1D518
ufr;
U+1D532
Ugrave;
U+000D9
Ugrave
U+000D9
ugrave;
U+000F9
ugrave
U+000F9
uHar;
U+02963
uharl;
U+021BF
uharr;
U+021BE
uhblk;
U+02580
ulcorn;
U+0231C
ulcorner;
U+0231C
ulcrop;
U+0230F
ultri;
U+025F8
Umacr;
U+0016A
umacr;
U+0016B
uml;
U+000A8
uml
U+000A8
UnderBar;
U+0005F
UnderBrace;
U+023DF
UnderBracket;
U+023B5
UnderParenthesis;
U+023DD
Union;
U+022C3
UnionPlus;
U+0228E
Uogon;
U+00172
uogon;
U+00173
Uopf;
U+1D54C
uopf;
U+1D566
UpArrow;
U+02191
Uparrow;
U+021D1
uparrow;
U+02191
UpArrowBar;
U+02912
UpArrowDownArrow;
U+021C5
UpDownArrow;
U+02195
Updownarrow;
U+021D5
updownarrow;
U+02195
UpEquilibrium;
U+0296E
upharpoonleft;
U+021BF
upharpoonright;
U+021BE
uplus;
U+0228E
UpperLeftArrow;
U+02196
UpperRightArrow;
U+02197
Upsi;
U+003D2
upsi;
U+003C5
upsih;
U+003D2
Upsilon;
U+003A5
upsilon;
U+003C5
UpTee;
U+022A5
UpTeeArrow;
U+021A5
upuparrows;
U+021C8
urcorn;
U+0231D
urcorner;
U+0231D
urcrop;
U+0230E
Uring;
U+0016E
uring;
U+0016F
urtri;
U+025F9
Uscr;
U+1D4B0
uscr;
U+1D4CA
utdot;
U+022F0
Utilde;
U+00168
utilde;
U+00169
utri;
U+025B5
utrif;
U+025B4
uuarr;
U+021C8
Uuml;
U+000DC
Uuml
U+000DC
uuml;
U+000FC
uuml
U+000FC
uwangle;
U+029A7
vangrt;
U+0299C
varepsilon;
U+003F5
varkappa;
U+003F0
varnothing;
U+02205
varphi;
U+003D5
varpi;
U+003D6
varpropto;
U+0221D
vArr;
U+021D5
varr;
U+02195
varrho;
U+003F1
varsigma;
U+003C2
varsubsetneq;
U+0228A U+0FE00
⊊︀
varsubsetneqq;
U+02ACB U+0FE00
⫋︀
varsupsetneq;
U+0228B U+0FE00
⊋︀
varsupsetneqq;
U+02ACC U+0FE00
⫌︀
vartheta;
U+003D1
vartriangleleft;
U+022B2
vartriangleright;
U+022B3
Vbar;
U+02AEB
vBar;
U+02AE8
vBarv;
U+02AE9
Vcy;
U+00412
vcy;
U+00432
VDash;
U+022AB
Vdash;
U+022A9
vDash;
U+022A8
vdash;
U+022A2
Vdashl;
U+02AE6
Vee;
U+022C1
vee;
U+02228
veebar;
U+022BB
veeeq;
U+0225A
vellip;
U+022EE
Verbar;
U+02016
verbar;
U+0007C
Vert;
U+02016
vert;
U+0007C
VerticalBar;
U+02223
VerticalLine;
U+0007C
VerticalSeparator;
U+02758
VerticalTilde;
U+02240
VeryThinSpace;
U+0200A
Vfr;
U+1D519
vfr;
U+1D533
vltri;
U+022B2
vnsub;
U+02282 U+020D2
⊂⃒
vnsup;
U+02283 U+020D2
⊃⃒
Vopf;
U+1D54D
vopf;
U+1D567
vprop;
U+0221D
vrtri;
U+022B3
Vscr;
U+1D4B1
vscr;
U+1D4CB
vsubnE;
U+02ACB U+0FE00
⫋︀
vsubne;
U+0228A U+0FE00
⊊︀
vsupnE;
U+02ACC U+0FE00
⫌︀
vsupne;
U+0228B U+0FE00
⊋︀
Vvdash;
U+022AA
vzigzag;
U+0299A
Wcirc;
U+00174
wcirc;
U+00175
wedbar;
U+02A5F
Wedge;
U+022C0
wedge;
U+02227
wedgeq;
U+02259
weierp;
U+02118
Wfr;
U+1D51A
wfr;
U+1D534
Wopf;
U+1D54E
wopf;
U+1D568
wp;
U+02118
wr;
U+02240
wreath;
U+02240
Wscr;
U+1D4B2
wscr;
U+1D4CC
xcap;
U+022C2
xcirc;
U+025EF
xcup;
U+022C3
xdtri;
U+025BD
Xfr;
U+1D51B
xfr;
U+1D535
xhArr;
U+027FA
xharr;
U+027F7
Xi;
U+0039E
xi;
U+003BE
xlArr;
U+027F8
xlarr;
U+027F5
xmap;
U+027FC
xnis;
U+022FB
xodot;
U+02A00
Xopf;
U+1D54F
xopf;
U+1D569
xoplus;
U+02A01
xotime;
U+02A02
xrArr;
U+027F9
xrarr;
U+027F6
Xscr;
U+1D4B3
xscr;
U+1D4CD
xsqcup;
U+02A06
xuplus;
U+02A04
xutri;
U+025B3
xvee;
U+022C1
xwedge;
U+022C0
Yacute;
U+000DD
Yacute
U+000DD
yacute;
U+000FD
yacute
U+000FD
YAcy;
U+0042F
yacy;
U+0044F
Ycirc;
U+00176
ycirc;
U+00177
Ycy;
U+0042B
ycy;
U+0044B
yen;
U+000A5
yen
U+000A5
Yfr;
U+1D51C
yfr;
U+1D536
YIcy;
U+00407
yicy;
U+00457
Yopf;
U+1D550
yopf;
U+1D56A
Yscr;
U+1D4B4
yscr;
U+1D4CE
YUcy;
U+0042E
yucy;
U+0044E
Yuml;
U+00178
yuml;
U+000FF
yuml
U+000FF
Zacute;
U+00179
zacute;
U+0017A
Zcaron;
U+0017D
zcaron;
U+0017E
Zcy;
U+00417
zcy;
U+00437
Zdot;
U+0017B
zdot;
U+0017C
zeetrf;
U+02128
ZeroWidthSpace;
U+0200B
Zeta;
U+00396
zeta;
U+003B6
Zfr;
U+02128
zfr;
U+1D537
ZHcy;
U+00416
zhcy;
U+00436
zigrarr;
U+021DD
Zopf;
U+02124
zopf;
U+1D56B
Zscr;
U+1D4B5
zscr;
U+1D4CF
zwj;
U+0200D
zwnj;
U+0200C
This data is also available
as a JSON file
The glyphs displayed above are non-normative. Refer to Unicode for formal definitions of the
characters listed above.
The character reference names originate from
XML Entity Definitions for
Characters
, though only the above is considered normative.
[XMLENTITY]
This list is static and
will
not be expanded or changed in the future
14
The XML syntax
HTML/XHTML
Support in all current engines.
Firefox
2+
Safari
3.1+
Chrome
4+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
4+
Safari iOS
2+
Chrome Android
18+
WebView Android
2+
Samsung Internet
1.0+
Opera Android
10.1+
This section only describes the rules for XML resources. Rules for
text/html
resources are discussed in the section above entitled "
The HTML
syntax
".
Using the XML syntax is not recommended, for
reasons which include the fact that there is no specification which defines the rules for how an
XML parser must map a string of bytes or characters into a
Document
object, as well
as the fact that the XML syntax is essentially unmaintained — in that, it’s not expected that any
further features will ever be added to the XML syntax (even when such features have been added to
the
HTML syntax
).
14.1
Writing documents in the XML syntax
The XML syntax for HTML was formerly referred to as "XHTML", but this
specification does not use that term (among other reasons, because no such term is used for the
HTML syntaxes of MathML and SVG).
The syntax for XML is defined in
XML
and
Namespaces in XML
[XML]
[XMLNS]
This specification does not define any syntax-level requirements beyond those defined for XML
proper.
XML documents may contain a
DOCTYPE
if desired, but this is not required
to conform to this specification. This specification does not define a public or system
identifier, nor provide a formal DTD.
According to
XML
, XML processors are not guaranteed to process
the external DTD subset referenced in the DOCTYPE. This means, for example, that using
entity references
for characters in XML documents
is unsafe if they are defined in an external file (except for
<
>
&
"
, and
'
).
14.2
Parsing XML documents
This section describes the relationship between XML and the DOM, with a particular emphasis on
how this interacts with HTML.
An
XML parser
, for the purposes of this specification, is a construct that
follows the rules given in
XML
to map a string of bytes or characters into a
Document
object.
At the time of writing, no such rules actually exist.
An
XML parser
is either associated with a
Document
object when it is
created, or creates one implicitly.
This
Document
must then be populated with DOM nodes that represent the tree
structure of the input passed to the parser, as defined by
XML
Namespaces
in XML
, and
DOM
. When creating DOM nodes representing elements,
the
create an element for a token
algorithm
or some equivalent that operates on appropriate XML data structures must be used, to ensure the
proper
element interfaces
are created and that
custom elements
are set up correctly.
For the operations that the
XML parser
performs on the
Document
's
tree, the user agent must act as if elements and attributes were individually appended and set
respectively so as to trigger rules in this specification regarding what happens when an element
is inserted into a document or has its attributes set, and
DOM
's requirements
regarding
mutation observers
mean that mutation observers
are
fired.
[XML]
[XMLNS]
[DOM]
[UIEVENTS]
Between the time an element's start tag is parsed and the time either the element's end tag is
parsed or the parser detects a well-formedness error, the user agent must act as if the element
was in a
stack of open elements
This is used by various elements to only start certain processes once they are
popped off of the
stack of open elements
This specification provides the following additional information that user agents should use
when retrieving an external entity: the public identifiers given in the following list all
correspond to
the URL given by this link
. (This
URL is a DTD containing the
entity
declarations
for the names listed in the
named character references
section.)
[XML]
-//W3C//DTD XHTML 1.0 Transitional//EN
-//W3C//DTD XHTML 1.1//EN
-//W3C//DTD XHTML 1.0 Strict//EN
-//W3C//DTD XHTML 1.0 Frameset//EN
-//W3C//DTD XHTML Basic 1.0//EN
-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN
-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN
-//W3C//DTD MathML 2.0//EN
-//WAPFORUM//DTD XHTML Mobile 1.0//EN
-//WAPFORUM//DTD XHTML Mobile 1.1//EN
-//WAPFORUM//DTD XHTML Mobile 1.2//EN
Furthermore, user agents should attempt to retrieve the above external entity's content when
one of the above public identifiers is used, and should not attempt to retrieve any other external
entity's content.
This is not strictly a
violation
of
XML
, but it does contradict the spirit of
XML
's requirements. This is
motivated by a desire for user agents to all handle entities in an interoperable fashion without
requiring any network access for handling external subsets.
[XML]
XML parsers can be invoked with
XML scripting support enabled
or
XML scripting support disabled
. Except where otherwise specified, XML parsers are
invoked with
XML scripting support enabled
When an
XML parser
with
XML scripting support
enabled
creates a
script
element, it must have its
parser
document
set and its
force async
set to false. If
the parser was created as part of the
XML fragment parsing algorithm
, then the
element's
already started
must be set to true. When the element's end tag is
subsequently parsed, the user agent must
perform a microtask checkpoint
, and then
prepare
the
script
element. If this
causes there to be a
pending parsing-blocking script
, then the user agent must run
the following steps:
Block this instance of the
XML parser
, such that the
event loop
will not run
tasks
that invoke it.
Spin the event loop
until the parser's
Document
has no
style sheet that is blocking scripts
and the
pending parsing-blocking
script
's
ready to be parser-executed
is true.
Unblock this instance of the
XML parser
, such that
tasks
that invoke it can again be run.
Execute the script element
given by the
pending parsing-blocking
script
Set the
pending parsing-blocking script
to null.
Since the
document.write()
API is not
available for
XML documents
, much of the complexity in the
HTML parser
is not needed in the
XML parser
When the
XML parser
has
XML scripting support disabled
none of this happens.
When an
XML parser
would append a node to a
template
element, it must instead append it to the
template
element's
template contents
(a
DocumentFragment
node).
This is a
willful violation
of
XML
; unfortunately,
XML is not formally extensible in the manner that is needed for
template
processing.
[XML]
When an
XML parser
creates a
Node
object, its
node document
must be set to the
node document
of
the node into which the newly created node is to be inserted.
Certain algorithms in this specification
spoon-feed the
parser
characters one at a time. In such cases, the
XML parser
must act
as it would have if faced with a single string consisting of the concatenation of all those
characters.
When an
XML parser
reaches the end of its input, it must
stop
parsing
, following the same rules as the
HTML parser
. An
XML
parser
can also be
aborted
, which must again be done in
the same way as for an
HTML parser
For the purposes of conformance checkers, if a resource is determined to be in
the XML
syntax
, then it is an
XML document
14.3
Serializing XML fragments
The
XML fragment serialization
algorithm
for a
Document
or
Element
node either returns a fragment
of XML that represents that node or throws an exception.
For
Document
s, the algorithm must return a string in the form of a
document entity
, if none of the error cases
below apply.
For
Element
s, the algorithm must return a string in the form of an
internal general parsed entity
, if none of the
error cases below apply.
In both cases, the string returned must be XML namespace-well-formed and must be an isomorphic
serialization of all of that node's
relevant child nodes
, in
tree order
User agents may adjust prefixes and namespace declarations in the serialization (and indeed might
be forced to do so in some cases to obtain namespace-well-formed XML). User agents may use a
combination of regular text and character references to represent
Text
nodes in the
DOM.
A node's
relevant child nodes
are those that apply given the following rules:
For
template
elements
The
relevant child nodes
are the child nodes of the
template
element's
template contents
, if any.
For all other nodes
The
relevant child nodes
are the child nodes of node itself, if any.
For
Element
s, if any of the elements in the serialization are in no namespace, the
default namespace in scope for those elements must be explicitly declared as the empty string. (This doesn't apply in the
Document
case.)
[XML]
[XMLNS]
For the purposes of this section, an internal general parsed entity is considered XML
namespace-well-formed if a document consisting of an element with no namespace declarations whose
contents are the internal general parsed entity would itself be XML namespace-well-formed.
If any of the following error cases are found in the DOM subtree being serialized, then the
algorithm must throw an
InvalidStateError
DOMException
instead of returning a string:
Document
node with no child element nodes.
DocumentType
node that has an external subset public identifier that contains
characters that are not matched by the XML
PubidChar
production.
[XML]
DocumentType
node that has an external subset system identifier that contains
both a U+0022 QUOTATION MARK (") and a U+0027 APOSTROPHE (') or that contains characters that are
not matched by the XML
Char
production.
[XML]
A node with a local name containing a U+003A COLON (:).
A node with a local name that does not match the XML
Name
production.
[XML]
An
Attr
node with no namespace whose local name is the lowercase string "
xmlns
".
[XMLNS]
An
Element
node with two or more attributes with the same local name and
namespace.
An
Attr
node,
Text
node,
Comment
node, or
ProcessingInstruction
node whose data contains characters that are not matched by
the XML
Char
production.
[XML]
Comment
node whose data contains two adjacent U+002D HYPHEN-MINUS characters
(-) or ends with such a character.
ProcessingInstruction
node whose target name is an
ASCII
case-insensitive
match for the string "
xml
".
ProcessingInstruction
node whose target name contains a U+003A COLON (:).
ProcessingInstruction
node whose data contains the string "
?>
".
These are the only ways to make a DOM unserialisable. The DOM enforces all the
other XML constraints; for example, trying to append two elements to a
Document
node
will throw a
HierarchyRequestError
DOMException
14.4
Parsing XML fragments
The
XML fragment parsing algorithm
given an
Element
node
context
and a string
input
, runs the
following steps. They return a list of nodes.
Create a new
XML parser
Feed the parser
just created the string corresponding to the start tag of
context
, declaring all the namespace prefixes that are
in scope on that element in the DOM, as well as declaring the default namespace (if any) that is
in scope on that element in the DOM.
A namespace prefix is in scope if the DOM
lookupNamespaceURI()
method
on the element would return a non-null value for that prefix.
The default namespace is the namespace for which the DOM
isDefaultNamespace()
method on the element would return true.
No
DOCTYPE
is passed to the parser, and therefore no
external subset is referenced, and therefore no entities will be recognized.
Feed the parser
just created the string
input
Feed the parser
just created the string corresponding to the end tag of
context
If there is an XML well-formedness or XML namespace well-formedness error, then throw a
SyntaxError
DOMException
If the
document element
of the resulting
Document
has any
sibling nodes, then throw a
SyntaxError
DOMException
Return the resulting
Document
node's
document element
's
children
, in
tree order
15
Rendering
User agents are not required to present HTML documents in any particular way. However, this
section provides a set of suggestions for rendering HTML documents that, if followed, are likely
to lead to a user experience that closely resembles the experience intended by the documents'
authors. So as to avoid confusion regarding the normativity of this section, "must" has not been
used. Instead, the term "expected" is used to indicate behavior that will lead to this experience.
For the purposes of conformance for user agents designated as
supporting
the suggested default rendering
, the term "
expected
" in this section has the same
conformance implications as "must".
15.1
Introduction
The suggestions in this section are generally expressed in CSS terms. User agents are
expected
to either support CSS, or translate from the CSS rules given in this
section to approximations for other presentation mechanisms.
In the absence of style-layer rules to the contrary (e.g. author style sheets), user agents are
expected
to render an element so that it conveys to the user the meaning that the
element
represents
, as described by this specification.
The suggestions in this section generally assume a visual output medium with a resolution of
96dpi or greater, but HTML is intended to apply to multiple media (it is a
media-independent
language). User agent implementers are encouraged to adapt the
suggestions in this section to their target media.
An element is
being rendered
if it has any associated CSS layout boxes, SVG
layout boxes, or some equivalent in other styling languages.
Just being off-screen does not mean the element is not
being
rendered
. The presence of the
hidden
attribute normally
means the element is not
being rendered
, though this might be overridden by the style
sheets.
The
fully active
state does not affect whether an element is
being rendered
or not. Even if a document is not
fully active
and not
shown at all to the user, elements within it can still qualify as "being rendered".
An element is said to
intersect the viewport
when it is
being rendered
and its associated CSS layout box intersects the
viewport
Similar to the
being rendered
state, elements in non-
fully
active
documents can still
intersect the viewport
. The
viewport
is not shared between documents and might not always be shown to the user, so an element in a
non-
fully active
document can still intersect the
viewport
associated
with its document.
This specification does not define the precise timing for when the intersection is
tested, but it is suggested that the timing match that of the Intersection Observer API.
[INTERSECTIONOBSERVER]
An element is
delegating its rendering to its children
if it is not
being
rendered
but its children (if any) could
be rendered
as a result of CSS 'display: contents', or some equivalent in other styling languages.
[CSSDISPLAY]
User agents that do not honor author-level CSS style sheets are nonetheless
expected
to act as if they applied the CSS rules given in these sections in a manner
consistent with this specification and the relevant CSS and Unicode specifications.
[CSS]
[UNICODE]
[BIDI]
This is especially important for issues relating to the
'display'
'unicode-bidi'
, and
'direction'
properties.
15.2
The CSS user agent style sheet and presentational hints
The CSS rules given in these subsections are, except where otherwise specified,
expected
to be used as part of the user-agent level style sheet defaults for all
documents that contain
HTML elements
Some rules are intended for the author-level zero-specificity presentational hints part of the
CSS cascade; these are explicitly called out as
presentational hints
When the text below says that an attribute
attribute
on an element
element
maps to the pixel length property
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing non-negative
integers
doesn't generate an error, then the user agent is
expected
to use
the parsed value as a pixel length for a
presentational
hint
for
properties
When the text below says that an attribute
attribute
on an element
element
maps to the dimension property
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing dimension values
doesn't generate an error, then the user agent is
expected
to use the parsed
dimension as the value for a
presentational hint
for
properties
, with the value given as a pixel length if the dimension was a length, and
with the value given as a percentage if the dimension was a percentage.
When the text below says that an attribute
attribute
on an element
element
maps to the dimension property (ignoring zero)
(or properties)
properties
, it means that if
element
has an attribute
attribute
set, and parsing that attribute's value using the
rules for parsing nonzero dimension
values
doesn't generate an error, then the user agent is
expected
to use the
parsed dimension as the value for a
presentational
hint
for
properties
, with the value given as a pixel length if the dimension
was a length, and with the value given as a percentage if the dimension was a percentage.
When the text below says that a pair of attributes
and
on an
element
element
map to the aspect-ratio property
, it means that if
element
has both attributes
and
, and parsing those
attributes' values using the
rules for parsing non-negative integers
doesn't
generate an error for either, then the user agent is
expected
to use the parsed
integers as a
presentational hint
for the
'aspect-ratio'
property of the form
auto
When the text below says that a pair of attributes
and
on an
element
element
map to the aspect-ratio property (using dimension rules)
, it
means that if
element
has both attributes
and
, and parsing
those attributes' values using the
rules for parsing dimension values
doesn't
generate an error or return a percentage for either, then the user agent is
expected
to use the parsed dimensions as a
presentational hint
for the
'aspect-ratio'
property of the form
auto
When a user agent is to
align descendants
of a node, the user agent is
expected
to align only those descendants that have both their
'margin-inline-start'
and
'margin-inline-end'
properties computing to a
value other than 'auto', that are over-constrained and that have one of those two margins with a
used value
forced to a greater value, and that do not themselves have an applicable
align
attribute. When multiple elements are to
align
a particular descendant, the most deeply nested such element is
expected
to override the others. Aligned elements are
expected
to be
aligned by having the
used values
of their margins on the
line-left
and
line-right
sides be set accordingly.
[CSSLOGICAL]
[CSSWM]
15.3
Non-replaced elements
15.3.1
Hidden elements
@namespace
"http://www.w3.org/1999/xhtml"
area, base, basefont, datalist, head, link, meta, noembed,
noframes, param, rp, script, style, template, title
display
none
[hidden]:not([hidden=until-found i]):not(embed)
display
none
[hidden=until-found i]:not(embed)
content-visibility
hidden
embed[hidden]
display
inline
height
width
input[type=hidden i]
display
none !important; }

@media (scripting) {
noscript { display: none !important; }
15.3.2
The page
@namespace
"http://www.w3.org/1999/xhtml"
html, body
display
block
For each property in the table below, given a
body
element, the first attribute
that exists
maps to the pixel length property
on the
body
element. If
none of the attributes for a property are found, or if the value of the attribute that was found
cannot be parsed successfully, then a default value of 8px is
expected
to be used
for that property instead.
Property
Source
'margin-top'
'margin-bottom'
The
body
element's
marginheight
attribute
The
body
element's
topmargin
attribute
The
body
element's
container frame element
's
marginheight
attribute
'margin-left'
'margin-right'
The
body
element's
marginwidth
attribute
The
body
element's
leftmargin
attribute
The
body
element's
container frame element
's
marginwidth
attribute
If the
body
element's
node document
's
node navigable
is
child navigable
, and the
container
of that
navigable
is a
frame
or
iframe
element, then the
container frame element
of the
body
element is that
frame
or
iframe
element. Otherwise, there is no
container frame element
The above requirements imply that a page can change the margins of another page
(including one from another
origin
) using, for example, an
iframe
. This
is potentially a security risk, as it might in some cases allow an attack to contrive a situation
in which a page is rendered not as the author intended, possibly for the purposes of phishing or
otherwise misleading the user.
If a
Document
's
node navigable
is a
child navigable
then it is
expected
to be positioned and sized to fit inside the
content
box
of the
container
of that
navigable
If the
container
is not
being rendered
, the
navigable
is
expected
to have a
viewport
with zero width
and zero height.
If a
Document
's
node navigable
is a
child navigable
the
container
of that
navigable
is a
frame
or
iframe
element, that element has a
scrolling
attribute, and that attribute's value is an
ASCII
case-insensitive
match for the string "
off
", "
noscroll
", or "
no
", then the user agent is
expected
to prevent any scrollbars from being shown for the
viewport
of
the
Document
's
node navigable
, regardless of the
'overflow'
property that applies to that
viewport
When a
body
element has a
background
attribute set to a non-empty value, the new value is
expected
to be
encoding-parsed-and-serialized
relative to
the element's
node document
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'background-image'
property
to the return value.
When a
body
element has a
bgcolor
attribute set, the new value is
expected
to be parsed using the
rules for
parsing a legacy color value
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'background-color'
property
to the resulting color.
When a
body
element has a
text
attribute, its
value is
expected
to be parsed using the
rules for parsing a legacy color
value
, and if that does not return failure, the user agent is
expected
to
treat the attribute as a
presentational hint
setting
the element's
'color'
property to the resulting color.
When a
body
element has a
link
attribute, its
value is
expected
to be parsed using the
rules for parsing a legacy color
value
, and if that does not return failure, the user agent is
expected
to
treat the attribute as a
presentational hint
setting
the
'color'
property of any element in the
Document
matching the
:link
pseudo-class
to the resulting color.
When a
body
element has a
vlink
attribute,
its value is
expected
to be parsed using the
rules for parsing a legacy color
value
, and if that does not return failure, the user agent is
expected
to
treat the attribute as a
presentational hint
setting
the
'color'
property of any element in the
Document
matching the
:visited
pseudo-class
to the resulting color.
When a
body
element has an
alink
attribute,
its value is
expected
to be parsed using the
rules for parsing a legacy color
value
, and if that does not return failure, the user agent is
expected
to
treat the attribute as a
presentational hint
setting
the
'color'
property of any element in the
Document
matching the
:active
pseudo-class
and either the
:link
pseudo-class
or the
:visited
pseudo-class
to the resulting color.
15.3.3
Flow content
@namespace
"http://www.w3.org/1999/xhtml"
address, blockquote, center, dialog, div, figure, figcaption, footer, form,
header, hr, legend, listing, main, p, plaintext, pre, search, xmp
display
block
blockquote, figure, listing, p, plaintext, pre, xmp
margin-block
em
blockquote, figure
margin-inline
40
px
address
font-style
italic
listing, plaintext, pre, xmp
font-family
monospace
white-space
pre
dialog:not([open])
display
none
dialog
position
absolute
inset-inline-start
inset-inline-end
width
fit-content
height
fit-content
margin
auto
border
solid
padding
em
background-color
Canvas
color
CanvasText
dialog:modal
position
fixed
overflow
auto
inset-block
max-width
calc
100
px
em
);
max-height
calc
100
px
em
);
dialog::backdrop
background
rgba
0.1
);
[popover]:not(:popover-open):not(dialog[open])
display
none
dialog:popover-open
display
block
[popover]
position
fixed
inset
width
fit-content
height
fit-content
margin
auto
border
solid
padding
0.25
em
overflow
auto
color
CanvasText
background-color
Canvas
:popover-open::backdrop
position
fixed
inset
pointer-events
none !important;
background-color: transparent;

slot {
display: contents;
The following rules are also
expected
to apply, as
presentational
hints
@namespace
"http://www.w3.org/1999/xhtml"
pre[wrap]
white-space
pre-wrap
In
quirks mode
, the following rules are also
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
form
margin-block-end
em
The
center
element, and the
div
element when it has an
align
attribute whose value is an
ASCII
case-insensitive
match for either the string "
center
" or the string
middle
", are
expected
to center text within themselves, as
if they had their
'text-align'
property set to 'center' in a
presentational hint
, and to
align descendants
to the center.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
left
", is
expected
to left-align text within itself, as if it had
its
'text-align'
property set to 'left' in a
presentational hint
, and to
align descendants
to the left.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
right
", is
expected
to right-align text within itself, as if it had
its
'text-align'
property set to 'right' in a
presentational hint
, and to
align descendants
to the right.
The
div
element, when it has an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
justify
", is
expected
to full-justify text within itself, as if it
had its
'text-align'
property set to 'justify' in a
presentational hint
, and to
align descendants
to the left.
15.3.4
Phrasing content
@namespace
"http://www.w3.org/1999/xhtml"
cite, dfn, em, i, var
font-style
italic
b, strong
font-weight
bolder
code, kbd, samp, tt
font-family
monospace
big
font-size
larger
small
font-size
smaller
sub
vertical-align
sub
sup
vertical-align
super
sub, sup
line-height
normal
font-size
smaller
ruby
display
ruby
rt
display
ruby-text
:link
color
#0000EE
:visited
color
#551A8B
:link:active, :visited:active
color
#FF0000
:link, :visited
text-decoration
underline
cursor
pointer
:focus-visible
outline
auto
mark
background
yellow
color
black
/* this color is just a suggestion and can be changed based on implementation feedback */
abbr[title], acronym[title]
text-decoration
dotted underline
ins, u
text-decoration
underline
del, s, strike
text-decoration
line-through
q::before
content
open-quote
q::after
content
close-quote
br
display-outside
newline
/*
this also has bidi implications
*/
nobr
white-space
nowrap
wbr
display-outside
break-opportunity
/*
this also has bidi implications
*/
nobr wbr
white-space
normal
The following rules are also
expected
to apply, as
presentational hints
@namespace
"http://www.w3.org/1999/xhtml"
br[clear=left i]
clear
left
br[clear=right i]
clear
right
br[clear=all i], br[clear=both i]
clear
both
For the purposes of the CSS ruby model, runs of children of
ruby
elements that are
not
rt
or
rp
elements are
expected
to be wrapped in
anonymous boxes whose
'display'
property has the value
'ruby-base'
[CSSRUBY]
When a particular part of a ruby has more than one annotation, the annotations should be
distributed on both sides of the base text so as to minimize the stacking of ruby annotations on
one side.
When it becomes possible to do so, the preceding requirement will be updated to be
expressed in terms of CSS ruby. (Currently, CSS ruby does not handle nested
ruby
elements or multiple sequential
rt
elements, which is how this semantic is
expressed.)
User agents that do not support correct ruby rendering are
expected
to render
parentheses around the text of
rt
elements in the absence of
rp
elements.
User agents are
expected
to support the
'clear'
property on inline
elements (in order to render
br
elements with
clear
attributes) in the manner described in the non-normative note
to this effect in
CSS
The initial value for the
'color'
property is
expected
to be black.
The initial value for the
'background-color'
property is
expected
to be
'transparent'. The canvas's background is
expected
to be white.
When a
font
element has a
color
attribute, its value is
expected
to be parsed using the
rules for parsing a
legacy color value
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'color'
property to the
resulting color.
When a
font
element has a
face
attribute, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'font-family'
property to the attribute's value.
When a
font
element has a
size
attribute, the user agent is
expected
to use the following steps, known as the
rules for parsing a legacy font size
, to treat the attribute as a
presentational hint
setting the element's
'font-size'
property:
Let
input
be the attribute's value.
Let
position
be a pointer into
input
, initially pointing at the
start of the string.
Skip ASCII whitespace
within
input
given
position
If
position
is past the end of
input
, there is no
presentational hint
. Return.
If the character at
position
is a U+002B PLUS SIGN character (+), then let
mode
be
relative-plus
, and advance
position
to the next character.
Otherwise, if the character at
position
is a U+002D HYPHEN-MINUS character (-), then
let
mode
be
relative-minus
, and advance
position
to the next
character. Otherwise, let
mode
be
absolute
Collect a sequence of code points
that are
ASCII digits
from
input
given
position
, and let
digits
be the resulting
sequence.
If
digits
is the empty string, there is no
presentational hint
. Return.
Interpret
digits
as a base-ten integer. Let
value
be the resulting
number.
If
mode
is
relative-plus
, then increment
value
by 3. If
mode
is
relative-minus
, then let
value
be the result of subtracting
value
from 3.
If
value
is greater than 7, let it be 7.
If
value
is less than 1, let it be 1.
Set the
'font-size'
property to the keyword corresponding to the value of
value
according to the following table:
value
'font-size'
keyword
'x-small'
'small'
'medium'
'large'
'x-large'
'xx-large'
'xxx-large'
15.3.5
Bidirectional text
@namespace
"http://www.w3.org/1999/xhtml"
[dir]:dir(ltr), bdi:dir(ltr), input[type=tel i]:dir(ltr)
direction
ltr
[dir]:dir(rtl), bdi:dir(rtl)
direction
rtl
address, blockquote, center, div, figure, figcaption, footer, form, header, hr,
legend, listing, main, p, plaintext, pre, summary, xmp, article, aside,
:heading, hgroup, nav, section, search, table, caption, colgroup, col, thead,
tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, bdi, output,
[dir=ltr i], [dir=rtl i], [dir=auto i]
unicode-bidi
isolate
bdo, bdo[dir]
unicode-bidi
isolate-override
input[dir=auto i]:is([type=search i], [type=tel i], [type=url i],
[type=email i]), textarea[dir=auto i], pre[dir=auto i]
unicode-bidi
plaintext
/* see prose for input elements whose type attribute is in the Text state */
/* the
rules setting the 'content' property
on
br
and
wbr
elements also has bidi implications */
When an
input
element's
dir
attribute is in the
auto
state and its
type
attribute is in the
Text
state, then the user agent is
expected
to act as if it had a user-agent-level style sheet rule setting the
'unicode-bidi'
property to 'plaintext'.
Input fields (i.e.
textarea
elements, and
input
elements when their
type
attribute is in the
Text
Telephone
URL
or
Email
state) are
expected
to present
an editing user interface with a directionality that matches the element's
'direction'
property.
When the document's character encoding is
ISO-8859-8
, the following rules are
additionally
expected
to apply, following those above:
[ENCODING]
@namespace
"http://www.w3.org/1999/xhtml"
address, blockquote, center, div, figure, figcaption, footer, form, header, hr,
legend, listing, main, p, plaintext, pre, summary, xmp, article, aside,
:heading, hgroup, nav, section, search, table, caption, colgroup, col, thead,
tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, [dir=ltr i],
[dir=rtl i], [dir=auto i], *|*
unicode-bidi
bidi-override
input:not([type=submit i]):not([type=reset i]):not([type=button i]),
textarea
unicode-bidi
normal
15.3.6
Sections and headings
@namespace
"http://www.w3.org/1999/xhtml"
article, aside, :heading, hgroup, nav, section
display
block
:heading
font-weight
bold
:heading(1)
margin-block
0.67
em
font-size
2.00
em
:heading(2)
margin-block
0.83
em
font-size
1.50
em
:heading(3)
margin-block
1.00
em
font-size
1.17
em
:heading(4)
margin-block
1.33
em
font-size
1.00
em
:heading(5)
margin-block
1.67
em
font-size
0.83
em
:heading(6, 7, 8, 9)
font-size
0.67
em
margin-block
2.33
em
15.3.7
Lists
@namespace
"http://www.w3.org/1999/xhtml"
dir, dd, dl, dt, menu, ol, ul
display
block
li
display
list-item
text-align
match-parent
dir, dl, menu, ol, ul
margin-block
em
:is(dir, dl, menu, ol, ul) :is(dir, dl, menu, ol, ul)
margin-block
dd
margin-inline-start
40
px
dir, menu, ol, ul
padding-inline-start
40
px
ol, ul, menu
counter-reset
list-item
ol
list-style-type
decimal
dir, menu, ul
list-style-type
disc
:is(dir, menu, ol, ul) :is(dir, menu, ul)
list-style-type
circle
:is(dir, menu, ol, ul) :is(dir, menu, ol, ul) :is(dir, menu, ul)
list-style-type
square
The following rules are also
expected
to apply, as
presentational hints
@namespace
"http://www.w3.org/1999/xhtml"
ol[type="1"], li[type="1"]
list-style-type
decimal
ol[type=a
s], li[type=a
s]
list-style-type
lower-alpha
ol[type=A
s], li[type=A
s]
list-style-type
upper-alpha
ol[type=i s], li[type=i s]
list-style-type
lower-roman
ol[type=I s], li[type=I s]
list-style-type
upper-roman
ul[type=none i], li[type=none i]
list-style-type
none
ul[type=disc i], li[type=disc i]
list-style-type
disc
ul[type=circle i], li[type=circle i]
list-style-type
circle
ul[type=square i], li[type=square i]
list-style-type
square
In
quirks mode
, the following rules are also
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
li
list-style-position
inside
li :is(dir, menu, ol, ul)
list-style-position
outside
:is(dir, menu, ol, ul) :is(dir, menu, ol, ul, li)
list-style-position
unset
When rendering
li
elements, non-CSS user agents are
expected
to use
the
ordinal value
of the
li
element to render the counter in the list
item marker.
For CSS user agents, some aspects of rendering
list items
are defined by the
CSS Lists
specification.
Additionally, the following attribute mappings are
expected
to apply:
[CSSLISTS]
When an
li
element has a
value
attribute, and parsing that attribute's value using the
rules for parsing integers
doesn't generate an error, the user agent is
expected
to use the parsed value
value
as a
presentational hint
for the
'counter-set'
property of the form
list-item
value
When an
ol
element has a
start
attribute or a
reversed
attribute, or both, the user agent
is
expected
to use the following steps to treat the attributes as a
presentational hint
for the
'counter-reset'
property:
Let
value
be null.
If the element has a
start
attribute, then set
value
to the result of parsing the attribute's value using the
rules for
parsing integers
If the element has a
reversed
attribute, then:
If
value
is an integer, then increment
value
by 1 and return
reversed(list-item)
value
Otherwise, return
reversed(list-item)
Either the
start
attribute was absent, or
parsing its value resulted in an error.
Otherwise:
If
value
is an integer, then decrement
value
by 1 and return
list-item
value
Otherwise, there is no
presentational
hint
15.3.8
Tables
@namespace
"http://www.w3.org/1999/xhtml"
table
display
table
caption
display
table-caption
colgroup, colgroup[hidden]
display
table-column-group
col, col[hidden]
display
table-column
thead, thead[hidden]
display
table-header-group
tbody, tbody[hidden]
display
table-row-group
tfoot, tfoot[hidden]
display
table-footer-group
tr, tr[hidden]
display
table-row
td, th
display
table-cell
colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
tfoot[hidden], tr[hidden]
visibility
collapse
table
box-sizing
border-box
border-spacing
px
border-collapse
separate
text-indent
initial
td, th
padding
px
th
font-weight
bold
caption
text-align
center
thead, tbody, tfoot, table > tr
vertical-align
middle
tr, td, th
vertical-align
inherit
thead, tbody, tfoot, tr
border-color
inherit
table[rules=none i], table[rules=groups i], table[rules=rows i],
table[rules=cols i], table[rules=all i], table[frame=void i],
table[frame=above i], table[frame=below i], table[frame=hsides i],
table[frame=lhs i], table[frame=rhs i], table[frame=vsides i],
table[frame=box i], table[frame=border i],
table[rules=none i] > tr > td, table[rules=none i] > tr > th,
table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
table[rules=all i] > tr > td, table[rules=all i] > tr > th,
table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th,
table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th,
table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th
border-color
black
The following rules are also
expected
to apply, as
presentational
hints
@namespace
"http://www.w3.org/1999/xhtml"
table[align=left i]
float
left
table[align=right i]
float
right
table[align=center i]
margin-inline
auto
thead[align=absmiddle i], tbody[align=absmiddle i], tfoot[align=absmiddle i],
tr[align=absmiddle i], td[align=absmiddle i], th[align=absmiddle i]
text-align
center
caption[align=bottom i]
caption-side
bottom
p[align=left i], h1[align=left i], h2[align=left i], h3[align=left i],
h4[align=left i], h5[align=left i], h6[align=left i]
text-align
left
p[align=right i], h1[align=right i], h2[align=right i], h3[align=right i],
h4[align=right i], h5[align=right i], h6[align=right i]
text-align
right
p[align=center i], h1[align=center i], h2[align=center i], h3[align=center i],
h4[align=center i], h5[align=center i], h6[align=center i]
text-align
center
p[align=justify i], h1[align=justify i], h2[align=justify i], h3[align=justify i],
h4[align=justify i], h5[align=justify i], h6[align=justify i]
text-align
justify
thead[valign=top i], tbody[valign=top i], tfoot[valign=top i],
tr[valign=top i], td[valign=top i], th[valign=top i]
vertical-align
top
thead[valign=middle i], tbody[valign=middle i], tfoot[valign=middle i],
tr[valign=middle i], td[valign=middle i], th[valign=middle i]
vertical-align
middle
thead[valign=bottom i], tbody[valign=bottom i], tfoot[valign=bottom i],
tr[valign=bottom i], td[valign=bottom i], th[valign=bottom i]
vertical-align
bottom
thead[valign=baseline i], tbody[valign=baseline i], tfoot[valign=baseline i],
tr[valign=baseline i], td[valign=baseline i], th[valign=baseline i]
vertical-align
baseline
td[nowrap], th[nowrap]
white-space
nowrap
table[rules=none i], table[rules=groups i], table[rules=rows i],
table[rules=cols i], table[rules=all i]
border-style
hidden
border-collapse
collapse
table[border]
border-style
outset
/*
only if border is not equivalent to zero
*/
table[frame=void i]
border-style
hidden
table[frame=above i]
border-style
outset hidden hidden hidden
table[frame=below i]
border-style
hidden hidden outset hidden
table[frame=hsides i]
border-style
outset hidden outset hidden
table[frame=lhs i]
border-style
hidden hidden hidden outset
table[frame=rhs i]
border-style
hidden outset hidden hidden
table[frame=vsides i]
border-style
hidden outset
table[frame=box i], table[frame=border i]
border-style
outset
table[border] > tr > td, table[border] > tr > th,
table[border] > thead > tr > td, table[border] > thead > tr > th,
table[border] > tbody > tr > td, table[border] > tbody > tr > th,
table[border] > tfoot > tr > td, table[border] > tfoot > tr > th
/*
only if border is not equivalent to zero
*/
border-width
px
border-style
inset
table[rules=none i] > tr > td, table[rules=none i] > tr > th,
table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th
border-width
px
border-style
none
table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th
border-width
px
border-block-style
none
border-inline-style
solid
table[rules=all i] > tr > td, table[rules=all i] > tr > th,
table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th
border-width
px
border-style
solid
table[rules=groups i] > colgroup
border-inline-width
px
border-inline-style
solid
table[rules=groups i] > thead,
table[rules=groups i] > tbody,
table[rules=groups i] > tfoot
border-block-width
px
border-block-style
solid
table[rules=rows i] > tr, table[rules=rows i] > thead > tr,
table[rules=rows i] > tbody > tr, table[rules=rows i] > tfoot > tr
border-block-width
px
border-block-style
solid
In
quirks mode
, the following rules are also
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
table
font-weight
initial
font-style
initial
font-variant
initial
font-size
initial
line-height
initial
white-space
initial
text-align
initial
For the purposes of the CSS table model, the
col
element is
expected
to be treated as if it was present as many times as its
span
attribute
specifies
For the purposes of the CSS table model, the
colgroup
element, if it contains no
col
element, is
expected
to be treated as if it had as many such
children as its
span
attribute
specifies
For the purposes of the CSS table model, the
colspan
and
rowspan
attributes on
td
and
th
elements are
expected
to
provide
the
special knowledge
regarding cells spanning rows and columns.
In
HTML documents
, the following rules are also
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
:is(table, thead, tbody, tfoot, tr) > form
display
none !important; }
The
table
element's
cellspacing
attribute
maps to the pixel length property
'border-spacing'
on the
element.
The
table
element's
cellpadding
attribute
maps to the pixel length
properties
'padding-top'
'padding-right'
'padding-bottom'
, and
'padding-left'
of any
td
and
th
elements that have corresponding
cells
in the
table
corresponding to the
table
element.
The
table
element's
height
attribute
maps to the dimension property
'height'
on the
table
element.
The
table
element's
width
attribute
maps to the dimension property (ignoring zero)
'width'
on the
table
element.
The
col
element's
width
attribute
maps
to the dimension property
'width'
on the
col
element.
The
thead
tbody
, and
tfoot
elements'
height
attribute
maps to the dimension property
'height'
on the element.
The
tr
element's
height
attribute
maps
to the dimension property
'height'
on the
tr
element.
The
td
and
th
elements'
height
attributes
map to the dimension
property (ignoring zero)
'height'
on the element.
The
td
and
th
elements'
width
attributes
map to the dimension
property (ignoring zero)
'width'
on the element.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for either the string "
center
" or the string "
middle
", are
expected
to center text within themselves, as if they had their
'text-align'
property set to
'center' in a
presentational hint
, and to
align
descendants
to the center.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
left
", are
expected
to left-align text within themselves, as if
they had their
'text-align'
property set to 'left' in a
presentational hint
, and to
align descendants
to the left.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
right
", are
expected
to right-align text within themselves, as if
they had their
'text-align'
property set to 'right' in a
presentational hint
, and to
align descendants
to the right.
The
thead
tbody
tfoot
tr
td
, and
th
elements, when they have an
align
attribute whose value is an
ASCII case-insensitive
match for the string "
justify
", are
expected
to full-justify text within themselves, as
if they had their
'text-align'
property set to 'justify' in a
presentational hint
, and to
align descendants
to the left.
User agents are
expected
to have a rule in their user agent style sheet that
matches
th
elements that have a parent node whose
computed value
for
the
'text-align'
property is its initial value, whose declaration block consists of
just a single declaration that sets the
'text-align'
property to the value
'center'.
When a
table
thead
tbody
tfoot
tr
td
, or
th
element has a
background
attribute set to a non-empty value, the new value is
expected
to be
encoding-parsed-and-serialized
relative to the element's
node document
and if that does not return failure, the user agent is
expected
to treat the
attribute as a
presentational hint
setting the
element's
'background-image'
property to the return value.
When a
table
thead
tbody
tfoot
tr
td
, or
th
element has a
bgcolor
attribute set, the new value is
expected
to be parsed using the
rules for
parsing a legacy color value
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'background-color'
property
to the resulting color.
When a
table
element has a
bordercolor
attribute, its value is
expected
to be parsed using the
rules for parsing a
legacy color value
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'border-top-color'
'border-right-color'
'border-bottom-color'
, and
'border-left-color'
properties to the resulting color.
The
table
element's
border
attribute
maps to the pixel length properties
'border-top-width'
'border-right-width'
'border-bottom-width'
'border-left-width'
on the element. If the
attribute is present but parsing the attribute's value using the
rules for parsing
non-negative integers
generates an error, a default value of 1px is
expected
to be used for that property instead.
Rules marked "
only if border is not equivalent to zero
in the CSS block above is
expected
to only be applied if the
border
attribute mentioned in the selectors for the rule is not
only present but, when parsed using the
rules for parsing non-negative integers
, is
also found to have a value other than zero or to generate an error.
In
quirks mode
, a
td
element or a
th
element that has a
nowrap
attribute but also has a
width
attribute whose value, when parsed using the
rules for
parsing nonzero dimension values
, is found to be a length (not an error or a number
classified as a percentage), is
expected
to have a
presentational hint
setting the element's
'white-space'
property to
'normal', overriding the rule in the CSS block above that sets it to 'nowrap'.
15.3.9
Margin collapsing quirks
A node is
substantial
if it is a text node
that is not
inter-element whitespace
, or if it is an element node.
A node is
blank
if it is an element that contains no
substantial
nodes.
The
elements with default margins
are the following elements:
blockquote
dir
dl
h1
h2
h3
h4
h5
h6
listing
ol
plaintext
pre
ul
xmp
In
quirks mode
, any
element
with default margins
that is the
child
of a
body
td
, or
th
element and has no
substantial
previous siblings is
expected
to have a user-agent level style sheet rule that sets its
'margin-block-start'
property to zero.
In
quirks mode
, any
element
with default margins
that is the
child
of a
body
td
, or
th
element, has no
substantial
previous siblings, and is
blank
, is
expected
to have a user-agent
level style sheet rule that sets its
'margin-block-end'
property to zero also.
In
quirks mode
, any
element
with default margins
that is the
child
of a
td
or
th
element, has no
substantial
following siblings, and is
blank
, is
expected
to have a user-agent
level style sheet rule that sets its
'margin-block-start'
property to zero.
In
quirks mode
, any
element that is the
child
of a
td
or
th
element and has
no
substantial
following siblings, is
expected
to have a user-agent level style sheet rule that sets its
'margin-block-end'
property to zero.
15.3.10
Form controls
@namespace
"http://www.w3.org/1999/xhtml"
input, button, textarea
letter-spacing
initial
word-spacing
initial
line-height
initial
input, select, button, textarea
text-transform
initial
text-indent
initial
text-shadow
initial
appearance
auto
input:not([type=image i], [type=range i], [type=checkbox i], [type=radio i])
overflow
clip !important;
overflow-clip-margin: 0 !important;

input, select, textarea {
text-align: initial;

:autofill {
field-sizing: fixed !important;

input:is([type=reset i], [type=button i], [type=submit i]), button {
text-align: center;

input, button {
display: inline-block;

input[type=hidden i], input[type=file i], input[type=image i] {
appearance: none;

input:is([type=radio i], [type=checkbox i], [type=reset i], [type=button i],
[type=submit i], [type=color i], [type=search i]), select, button {
box-sizing: border-box;

textarea { white-space: pre-wrap; }
In
quirks mode
, the following rules are also
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
input:not([type=image i]), textarea
box-sizing
border-box
Each kind of form control is also described in the
Widgets
section,
which describes the look and feel of the control.
For
input
elements where the
type
attribute
is not in the
Hidden
state or the
Image Button
state, and that are
being
rendered
, are
expected
to act as follows:
The
inner display type
is always 'flow-root'.
15.3.11
The
hr
element
@namespace
"http://www.w3.org/1999/xhtml"
hr
color
gray
border-style
inset
border-width
px
margin-block
0.5
em
margin-inline
auto
overflow
hidden
The following rules are also
expected
to apply, as
presentational
hints
@namespace
"http://www.w3.org/1999/xhtml"
hr[align=left i]
margin-left
margin-right
auto
hr[align=right i]
margin-left
auto
margin-right
hr[align=center i]
margin-left
auto
margin-right
auto
hr[color], hr[noshade]
border-style
solid
If an
hr
element has either a
color
attribute
or a
noshade
attribute, and furthermore also has a
size
attribute, and parsing that attribute's value using the
rules for parsing non-negative integers
doesn't generate an error, then the user
agent is
expected
to use the parsed value divided by two as a pixel length for
presentational hints
for the properties
'border-top-width'
'border-right-width'
'border-bottom-width'
, and
'border-left-width'
on the element.
Otherwise, if an
hr
element has neither a
color
attribute nor a
noshade
attribute, but does have a
size
attribute, and parsing that attribute's value using the
rules for parsing non-negative integers
doesn't generate an error, then: if the
parsed value is one, then the user agent is
expected
to use the attribute as a
presentational hint
setting the element's
'border-bottom-width'
to 0; otherwise, if the parsed value is greater than one, then
the user agent is
expected
to use the parsed value minus two as a pixel length for
presentational hints
for the
'height'
property on the element.
The
width
attribute on an
hr
element
maps
to the dimension property
'width'
on the element.
When an
hr
element has a
color
attribute, its
value is
expected
to be parsed using the
rules for parsing a legacy color
value
, and if that does not return failure, the user agent is
expected
to
treat the attribute as a
presentational hint
setting
the element's
'color'
property to the resulting color.
15.3.12
The
fieldset
and
legend
elements
@namespace
"http://www.w3.org/1999/xhtml"
fieldset
display
block
margin-inline
px
border
groove
px
ThreeDFace
padding-block
0.35
em
0.625
em
padding-inline
0.75
em
min-inline-size
min-content
legend
padding-inline
px
legend[align=left i]
justify-self
left
legend[align=center i]
justify-self
center
legend[align=right i]
justify-self
right
The
fieldset
element, when it generates a
CSS box
, is
expected
to act as follows:
The element is
expected
to establish a new
block formatting
context
The
'display'
property is
expected
to act as follows:
If the computed value of
'display'
is a value such that the
outer
display type
is 'inline', then behave as 'inline-block'.
Otherwise, behave as 'flow-root'.
This does not change the computed value.
If the element's box has a child box that matches the conditions in the list below, then the
first such child box is the 'fieldset' element's
rendered legend
The child is a
legend
element.
The child's used value of
'float'
is 'none'.
The child's used value of
'position'
is not 'absolute' or 'fixed'.
If the element has a
rendered legend
, then the border is
expected
to not be painted behind the rectangle defined as follows, using the writing mode of the
fieldset:
The block-start edge of the rectangle is the smaller of the block-start edge of the
rendered legend
's margin rectangle at its static position (ignoring transforms),
and the block-start outer edge of the
fieldset
's border.
The block-end edge of the rectangle is the larger of the block-end edge of the
rendered legend
's margin rectangle at its static position (ignoring transforms),
and the block-end outer edge of the
fieldset
's border.
The inline-start edge of the rectangle is the smaller of the inline-start edge of the
rendered legend
's border rectangle at its static position (ignoring transforms),
and the inline-start outer edge of the
fieldset
's border.
The inline-end edge of the rectangle is the larger of the inline-end edge of the
rendered legend
's border rectangle at its static position (ignoring transforms),
and the inline-end outer edge of the
fieldset
's border.
The space allocated for the element's border on the block-start side is
expected
to be the element's
'border-block-start-width'
or the
rendered legend
's margin box size in the
fieldset
's block-flow
direction, whichever is greater.
For the purpose of calculating the used
'block-size'
, if the computed
'block-size'
is not 'auto', the space allocated for the
rendered
legend
's margin box that spills out past the border, if any, is
expected
to
be subtracted from the
'block-size'
. If the content box's block-size would be
negative, then let the content box's block-size be 0 instead.
If the element has a
rendered legend
, then that element is
expected
to be the first child box.
The
anonymous fieldset content box
is
expected
to appear after
the
rendered legend
and is
expected
to contain the content (including
the '::before' and '::after' pseudo-elements) of the
fieldset
element except for
the
rendered legend
, if there is one.
The used value of the
'padding-top'
'padding-right'
'padding-bottom'
, and
'padding-left'
properties are
expected
to be zero.
For the purpose of calculating the min-content inline size, use the greater of the
min-content inline size of the
rendered legend
and the min-content inline size of
the
anonymous fieldset content box
For the purpose of calculating the max-content inline size, use the greater of the
max-content inline size of the
rendered legend
and the max-content inline size of
the
anonymous fieldset content box
fieldset
element's
rendered legend
, if any, is
expected
to act as follows:
The element is
expected
to establish a new
formatting context
for its contents. The type of this
formatting context
is determined by its
'display'
value, as usual.
The
'display'
property is
expected
to behave as if its computed
value was blockified.
This does not change the computed value.
If the
computed value
of
'inline-size'
is 'auto', then the
used value
is the
fit-content inline size
The element is
expected
to be positioned in the inline direction as is
normal for blocks (e.g., taking into account margins and the
'justify-self'
property).
The element's box is
expected
to be constrained in the inline direction by the
inline content size of the
fieldset
as if it had used its computed inline
padding.
For example, if the
fieldset
has a specified padding of 50px, then the
rendered legend
will be positioned 50px in from the
fieldset
's
border. The padding will further apply to the
anonymous fieldset content box
instead of the
fieldset
element itself.
The element is
expected
to be positioned in the block-flow direction such
that its border box is centered over the border on the block-start side of the
fieldset
element.
fieldset
element's
anonymous fieldset content box
is
expected
to act as follows:
The
'display'
property is
expected
to act as follows:
If the computed value of
'display'
on the
fieldset
element
is 'grid' or 'inline-grid', then set the used value to 'grid'.
If the computed value of
'display'
on the
fieldset
element
is 'flex' or 'inline-flex', then set the used value to 'flex'.
Otherwise, set the used value to 'flow-root'.
The following properties are
expected
to inherit from the
fieldset
element:
'align-content'
'align-items'
'border-radius'
'column-count'
'column-fill'
'column-gap'
'column-rule'
'column-width'
'flex-direction'
'flex-wrap'
'grid-auto-columns'
'grid-auto-flow'
'grid-auto-rows'
'grid-column-gap'
'grid-row-gap'
'grid-template-areas'
'grid-template-columns'
'grid-template-rows'
'justify-content'
'justify-items'
'overflow'
'padding-bottom'
'padding-left'
'padding-right'
'padding-top'
'text-overflow'
'unicode-bidi'
The
'block-size'
property is
expected
to be set to
'100%'.
For the purpose of calculating percentage padding, act as if the padding was calculated
for the
fieldset
element.
The legend is rendered over the top border, and the top border area reserves
vertical space for the legend. The fieldset's top margin starts at the top margin edge of the
legend. The legend's horizontal margins, or the
'justify-self'
property, gives
its horizontal position. The
anonymous fieldset content box
appears below the
legend.
15.4
Replaced elements
The following elements can be
replaced
elements
audio
canvas
embed
iframe
img
input
object
, and
video
15.4.1
Embedded content
The
embed
iframe
, and
video
elements are
expected
to be treated as
replaced
elements
canvas
element that
represents
embedded content
is
expected
to be treated as a
replaced element
; the contents of such
elements are the element's bitmap, if any, or else a
transparent black
bitmap with
the same
natural dimensions
as the element. Other
canvas
elements are
expected
to be treated as ordinary elements in the rendering model.
An
object
element that
represents
an image, plugin, or its
content navigable
is
expected
to be treated as a
replaced
element
. Other
object
elements are
expected
to be treated as
ordinary elements in the rendering model.
The
audio
element, when it is
exposing a user interface
, is
expected
to be treated as a
replaced element
about one line high, as wide as is necessary to expose the user
agent's user interface features. When an
audio
element is not
exposing a user interface
, the user agent is
expected
to force its
'display'
property to compute to 'none',
irrespective of CSS rules.
Whether a
video
element is
exposing a user interface
is not
expected
to affect the size of the
rendering; controls are
expected
to be overlaid above the page content without
causing any layout changes, and are
expected
to disappear when the user does not
need them.
When a
video
element represents a poster frame or frame of video, the poster frame
or frame of video is
expected
to be rendered at the largest size that maintains the
aspect ratio of that poster frame or frame of video without being taller or wider than the
video
element itself, and is
expected
to be centered in the
video
element.
Any subtitles or captions are
expected
to be overlaid directly on top of their
video
element, as defined by the relevant rendering rules; for WebVTT, those are the
rules for updating the display of WebVTT text tracks
[WEBVTT]
When the user agent starts
exposing a user
interface
for a
video
element, the user agent should run the
rules for
updating the text track rendering
of each of the
text
tracks
in the
video
element's
list of text tracks
that are
showing
and whose
text track kind
is one of
subtitles
or
captions
(e.g., for
text
tracks
based on WebVTT, the
rules for updating the display of WebVTT text
tracks
).
[WEBVTT]
Resizing
video
and
canvas
elements does not interrupt
video playback or clear the canvas.
The following CSS rules are
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
iframe
border
px
inset
video
object-fit
contain
15.4.2
Images
User agents are
expected
to render
img
elements and
input
elements whose
type
attributes are in
the
Image Button
state, according to the first
applicable rules from the following list:
If the element
represents
an image
The user agent is
expected
to treat the element as a
replaced
element
and render the image according to the rules for doing so defined in CSS.
If the element does not
represent
an image and either:
the user agent has reason to believe that the image will become
available
and be rendered in due
course, or
the element has no
alt
attribute, or
the
Document
is in
quirks mode
, and the element already has
natural dimensions
(e.g., from the
dimension attributes
or CSS
rules)
The user agent is
expected
to treat the element as a
replaced
element
whose content is the text that the element represents, if any, optionally
alongside an icon indicating that the image is being obtained (if applicable). For
input
elements, the element is
expected
to appear button-like to
indicate that the element is a
button
If the element is an
img
element that
represents
some text and the
user agent does not expect this to change
The user agent is
expected
to treat the element as a non-replaced phrasing
element whose content is the text, optionally with an icon indicating that an image is missing,
so that the user can request the image be displayed or investigate why it is not rendering. In
non-graphical contexts, such an icon should be omitted.
If the element is an
img
element that
represents
nothing and the
user agent does not expect this to change
The user agent is
expected
to treat the element as a
replaced
element
whose
natural dimensions
are 0. (In the absence of further styles,
this will cause the element to essentially not be rendered.)
If the element is an
input
element that does not
represent
an image and the user agent does not expect this to change
The user agent is
expected
to treat the element as a
replaced
element
consisting of a button whose content is the element's alternative text. The
natural dimensions
of the button are
expected
to be about one line in
height and whatever width is necessary to render the text on one line.
The icons mentioned above are
expected
to be relatively small so as not to
disrupt most text but be easily clickable. In a visual environment, for instance, icons could be
16 pixels by 16 pixels square, or 1em by 1em if the images are scalable. In an audio environment,
the icon could be a short bleep. The icons are intended to indicate to the user that they can be
used to get to whatever options the UA provides for images, and, where appropriate, are
expected
to provide access to the context menu that would have come up if the user
interacted with the actual image.
All animated images with the same
absolute URL
and the same image data are
expected
to be rendered synchronized to the same timeline as a group, with the
timeline starting at the time of the least recent addition to the group.
In other words, when a second image with the same
absolute URL
and
animated image data is inserted into a document, it jumps to the point in the animation cycle that
is currently being displayed by the first image.
When a user agent is to
restart the animation
for an
img
element
showing an animated image, all animated images with the same
absolute URL
and the
same image data in that
img
element's
node document
are
expected
to restart their animation from the beginning.
The following CSS rules are
expected
to apply:
@namespace
"http://www.w3.org/1999/xhtml"
img:is([sizes="auto" i], [sizes^="auto," i])
contain
size !important;
contain-intrinsic-size: 300px 150px;
The following CSS rules are
expected
to apply when the
Document
is
in
quirks mode
@namespace
"http://www.w3.org/1999/xhtml"
img[align=left i]
margin-right
px
img[align=right i]
margin-left
px
15.4.3
Attributes for embedded content and images
The following CSS rules are
expected
to apply as
presentational
hints
@namespace
"http://www.w3.org/1999/xhtml"
embed[align=left i], iframe[align=left i], img[align=left i],
input[type=image i][align=left i], object[align=left i]
float
left
embed[align=right i], iframe[align=right i], img[align=right i],
input[type=image i][align=right i], object[align=right i]
float
right
embed[align=top i], iframe[align=top i], img[align=top i],
input[type=image i][align=top i], object[align=top i]
vertical-align
top
embed[align=baseline i], iframe[align=baseline i], img[align=baseline i],
input[type=image i][align=baseline i], object[align=baseline i]
vertical-align
baseline
embed[align=texttop i], iframe[align=texttop i], img[align=texttop i],
input[type=image i][align=texttop i], object[align=texttop i]
vertical-align
text-top
embed[align=absmiddle i], iframe[align=absmiddle i], img[align=absmiddle i],
input[type=image i][align=absmiddle i], object[align=absmiddle i],
embed[align=abscenter i], iframe[align=abscenter i], img[align=abscenter i],
input[type=image i][align=abscenter i], object[align=abscenter i]
vertical-align
middle
embed[align=bottom i], iframe[align=bottom i], img[align=bottom i],
input[type=image i][align=bottom i], object[align=bottom i]
vertical-align
bottom
When an
embed
iframe
img
, or
object
element, or an
input
element whose
type
attribute is in the
Image Button
state, has an
align
attribute whose value is an
ASCII case-insensitive
match for
the string "
center
" or the string "
middle
", the user
agent is
expected
to act as if the element's
'vertical-align'
property
was set to a value that aligns the vertical middle of the element with the parent element's
baseline.
The
hspace
attribute of
embed
img
, or
object
elements, and
input
elements with a
type
attribute in the
Image
Button
state,
maps to the dimension
properties
'margin-left'
and
'margin-right'
on the element.
The
vspace
attribute of
embed
img
, or
object
elements, and
input
elements with a
type
attribute in the
Image
Button
state,
maps to the dimension
properties
'margin-top'
and
'margin-bottom'
on the element.
When an
iframe
element has a
frameborder
attribute whose value, when parsed using the
rules for parsing integers
, is zero or an error, the user agent is
expected
to have
presentational hints
setting the element's
'border-top-width'
'border-right-width'
'border-bottom-width'
, and
'border-left-width'
properties to zero.
When an
img
element,
object
element, or
input
element
with a
type
attribute in the
Image Button
state has a
border
attribute whose value, when parsed using the
rules for
parsing non-negative integers
, is found to be a number greater than zero, the user agent is
expected
to use the parsed value for eight
presentational hints
: four
setting the parsed value as a pixel length for the element's
'border-top-width'
'border-right-width'
'border-bottom-width'
, and
'border-left-width'
properties, and four setting the element's
'border-top-style'
'border-right-style'
'border-bottom-style'
, and
'border-left-style'
properties to the value
'solid'.
The
width
and
height
attributes on an
img
element's
dimension attribute source
map to the dimension properties
'width'
and
'height'
on the
img
element respectively. They
similarly
map to the aspect-ratio property (using dimension rules)
of the
img
element.
The
width
and
height
attributes on
embed
iframe
object
, and
video
elements, and
input
elements with a
type
attribute in the
Image Button
state and that either
represents an image or that the user expects will eventually represent an image,
map to the dimension properties
'width'
and
'height'
on the element respectively.
The
width
and
height
attributes
map to the aspect-ratio property (using dimension rules)
on
img
and
video
elements, and
input
elements with a
type
attribute in the
Image
Button
state.
The
width
and
height
attributes
map to the aspect-ratio property
on
canvas
elements.
15.4.4
Image maps
Shapes on an
image map
are
expected
to act, for the purpose of the
CSS cascade, as elements independent of the original
area
element that happen to
match the same style rules but inherit from the
img
or
object
element.
For the purposes of the rendering, only the
'cursor'
property is
expected
to have any effect on the shape.
Thus, for example, if an
area
element has a
style
attribute that sets the
'cursor'
property to 'help',
then when the user designates that shape, the cursor would change to a Help cursor.
Similarly, if an
area
element had a CSS rule that set its
'cursor'
property to 'inherit' (or if no rule setting the
'cursor'
property matched the element at all), the shape's cursor would be inherited from the
img
or
object
element of the
image map
, not from the parent
of the
area
element.
15.5
Widgets
15.5.1
Native appearance
The
CSS Basic User Interface
specification calls elements that can have a
native appearance
widgets
, and defines whether to use that
native
appearance
depending on the
'appearance'
property. That logic, in
turn, depends on whether each the element is classified as a
devolvable
widget
or
non-devolvable widget
. This section defines which elements match
these concepts for HTML, what their
native appearance
is, and any particularity of
their
devolved
state or
primitive appearance
[CSSUI]
The following elements can have a
native appearance
for the purpose of the CSS
'appearance'
property.
button
input
meter
progress
select
textarea
15.5.2
Writing mode
Several widgets have their rendering controlled by the
'writing-mode'
CSS
property. For the purposes of those widgets, we have the following definitions.
horizontal writing mode
is when resolving the
'writing-mode'
property of the control results in a computed value of 'horizontal-tb'.
vertical writing mode
is when resolving the
'writing-mode'
property
of the control results in a computed value of either 'vertical-rl', 'vertical-lr', 'sideways-rl'
or 'sideways-lr'.
15.5.3
Button layout
When an element uses
button layout
, it is a
devolvable widget
, and
its
native appearance
is that of a button.
Button layout
is as follows:
If the element is a
button
element, then the
'display'
property is
expected
to act as follows:
If the computed value of
'display'
is 'inline-grid', 'grid',
'inline-flex', 'flex', 'none', or 'contents', then behave as the computed value.
Otherwise, if the computed value of
'display'
is a value such that the
outer display type
is 'inline', then behave as 'inline-block'.
Otherwise, behave as 'flow-root'.
The element is
expected
to establish a new
formatting context
for its contents. The type of this formatting context is determined by its
'display'
value, as usual.
If the element is
absolutely-positioned
, then for the purpose of the
CSS visual formatting model
, act as if
the element is a
replaced element
[CSS]
If the
computed value
of
'inline-size'
is 'auto', then the
used value
is the
fit-content inline size
For the purpose of the 'normal' keyword of the
'align-self'
property, act
as if the element is a replaced element.
If the element is an
input
element, or if it is a
button
element
and its computed value for
'display'
is not 'inline-grid', 'grid', 'inline-flex',
or 'flex', then the element's box has a child
anonymous button content box
with the
following behaviors:
The box is a
block-level
block container
that establishes a
new
block formatting context
(i.e.,
'display'
is
'flow-root').
If the box does not overflow in the horizontal axis, then it is centered
horizontally.
If the box does not overflow in the vertical axis, then it is centered
vertically.
Otherwise, there is no
anonymous button content box
Need to define the
primitive appearance
15.5.4
The
button
element
The
button
element, when it generates a
CSS box
, is
expected
to depict a button and to use
button layout
whose
anonymous button content box
's contents (if there is an
anonymous button
content box
) are the child boxes the element's box would otherwise have.
15.5.5
The
details
and
summary
elements
@namespace
"http://www.w3.org/1999/xhtml"
details, summary
display
block
details > summary:first-of-type
display
list-item
counter-increment
list-item
list-style
disclosure-closed inside
details[open] > summary:first-of-type
list-style-type
disclosure-open
The
details
element is
expected
to have an internal
shadow
tree
with three child elements:
The first child element is a
slot
that is
expected
to take the
details
element's first
summary
element child, if any. This element
has a single child
summary
element called the
default summary
which has
text content that is
implementation-defined
(and probably locale-specific).
The
summary
element that this slot
represents
is
expected
to allow the user to request the details be shown or hidden.
The second child element is a
slot
that is
expected
to take the
details
element's remaining descendants, if any. This element has no contents.
This element is
expected
to match the
'::details-content'
pseudo-element.
This element is
expected
to have its
style
attribute set to "
display: block; content-visibility: hidden;
" when the
details
element does not have an
open
attribute. When it does have the
open
attribute, the
style
attribute is
expected
to be set to
display: block;
".
Because the slots are hidden inside a shadow tree, this
style
attribute is not directly visible to author code. Its impacts,
however, are visible. Notably, the choice of
content-visibility: hidden
instead of, e.g.,
display: none
, impacts the results of various APIs that
query layout information.
The third child element is either a
link
or
style
element with the following styles for the
default summary
:host summary
display
list-item
counter-increment
list-item
list-style
disclosure-closed inside
:host([open]) summary
list-style-type
disclosure-open
The position of this child element relative to the other two is not observable.
This means that implementations might have it in a different order relative to its siblings.
Implementations might even associate the style with the shadow tree using a mechanism that is
not an element.
The structure of this shadow tree is observable through the ways that the children
of the
details
element and the
'::details-content'
pseudo-element
respond to CSS styles.
15.5.6
The
input
element as a text entry widget
An
input
element whose
type
attribute is in
the
Text
Telephone
URL
, or
Email
state, is a
devolvable widget
. Its
native appearance
is
expected
to render as an
'inline-block'
box depicting a one-line text control.
An
input
element whose
type
attribute is in
the
state is a
devolvable widget
Its
native appearance
is
expected
to render as an
'inline-block'
box depicting a one-line text control. If the
computed
value
of the element's
'appearance'
property is not
'textfield'
it may have a distinct style indicating that it is a search field.
An
input
element whose
type
attribute is in
the
Password
state is a
devolvable
widget
. Its
native appearance
is
expected
to render as an
'inline-block'
box depicting a one-line text control that obscures data entry.
For
input
elements whose
type
attribute is
in one of the above states, the
used value
of the
'line-height'
property
must be a length value that is no smaller than what the
used value
would be for
'line-height: normal'.
The
used value
will not be the actual keyword 'normal'. Also, this
rule does not affect the
computed value
If these text controls provide a text selection, then, when the user changes the current
selection, the user agent is
expected
to
queue an element task
on the
user interaction task source
given the
input
element to
fire an event
named
select
at the element, with the
bubbles
attribute initialized to
true.
An
input
element whose
type
attribute is
in one of the above states is an
element with default preferred size
, and user
agents are
expected
to apply the
'field-sizing'
CSS property to the
element. User agents are
expected
to determine the
inline size
of its
intrinsic size
by the following steps:
If the
'field-sizing'
property on the element has a
computed value
of
'content'
, the
inline size
is
determined by the text which the element shows. The text is either a
value
or a short hint specified by the
placeholder
attribute. User agents may take the
text caret size into account in the
inline size
If the element has a
size
attribute, and parsing that
attribute's value using the
rules for parsing non-negative integers
doesn't
generate an error, return the value obtained from applying the
converting a character
width to pixels
algorithm to the value of the attribute.
Otherwise, return the value obtained from applying the
converting a character width to
pixels
algorithm to the number 20.
The
converting a character width to pixels
algorithm returns
size
-1)×
avg
max
where
size
is the character width to convert,
avg
is the
average character width of the primary font for the element for which the algorithm is being run,
in pixels, and
max
is the maximum character width of that same font, also in
pixels. (The element's
'letter-spacing'
property does not affect the result.)
These text controls are
expected
to be
scroll
containers
and support scrolling in the
inline axis
, but not the
block
axis
Need to detail the
native appearance
and
primitive
appearance
15.5.7
The
input
element as domain-specific widgets
An
input
element whose
type
attribute is in
the
Date
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a date control.
An
input
element whose
type
attribute is in
the
Month
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a month control.
An
input
element whose
type
attribute is in
the
Week
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a week control.
An
input
element whose
type
attribute is in
the
Time
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a time control.
An
input
element whose
type
attribute is in
the
Local Date and Time
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a local date and time control.
An
input
element whose
type
attribute is in
the
Number
state is a
devolvable widget
expected
to render as an
'inline-block'
box depicting a number
control.
An
input
element whose
type
attribute is in
the
Number
state is an
element with default preferred size
, and user agents are
expected
to
apply the
'field-sizing'
CSS property to the element. The
block size
of
the
intrinsic size
is about one line high. If the
'field-sizing'
property on the element has a
computed value
of
'content'
, the
inline size
of the
intrinsic size
is
expected
to be about as wide as necessary to show the
current
value
. Otherwise, the
inline size
of
the
intrinsic size
is
expected
to be about as wide as necessary to show
the widest possible value.
An
input
element whose
type
attribute is in
the
Date
Month
Week
Time
or
Local Date and Time
state, is
expected
to be about one line high, and about as wide as necessary to show the
widest possible value.
Need to detail the
native appearance
and
primitive
appearance
15.5.8
The
input
element as a range control
An
input
element whose
type
attribute is in
the
Range
state is a
non-devolvable
widget
. Its
native appearance
is
expected
to render as an
'inline-block'
box depicting a slider control.
When this control has a
horizontal writing mode
, the control is
expected
to be a horizontal slider. Its lowest value is on the right if the
'direction'
property has a
computed value
of 'rtl', and on the left
otherwise. When this control has a
vertical writing mode
, it is
expected
to be a vertical slider. Its lowest value is on the bottom if the
'direction'
property has a
computed value
of 'rtl', and on the top
otherwise.
Predefined suggested values (provided by the
list
attribute) are
expected
to be shown as tick marks on the slider, which the slider
can snap to.
Need to detail the
primitive appearance
15.5.9
The
input
element as a color
well
An
input
element whose
type
attribute is in
the
Color
state is
expected
to depict a
color well, which, when activated, provides the user with a color picker (e.g. a color wheel or
color palette) from which the color can be changed. The element, when it generates a
CSS
box
, is
expected
to use
button layout
, that has no child boxes
of the
anonymous button content box
. The
anonymous button content box
is
expected
to have a
presentational hint
setting the
'background-color'
property to the element's
value
Predefined suggested values (provided by the
list
attribute) are
expected
to be shown in the color picker interface, not on the color
well itself.
Need to detail the
native appearance
and
primitive
appearance
15.5.10
The
input
element as a checkbox and radio button widgets
An
input
element whose
type
attribute is in
the
Checkbox
state is a
non-devolvable
widget
expected
to render as an
'inline-block'
box containing a
single checkbox control, with no label.
Need to detail the
native appearance
and
primitive
appearance
An
input
element whose
type
attribute is in
the
Radio Button
state is a
non-devolvable
widget
expected
to render as an
'inline-block'
box containing a
single radio button control, with no label.
Need to detail the
native appearance
and
primitive
appearance
15.5.11
The
input
element as a file upload control
An
input
element whose
type
attribute is in
the
File Upload
state, when it generates a
CSS
box
, is
expected
to render as an
'inline-block'
box containing a
span of text giving the filename(s) of the
selected files
, if any, followed by a button
that, when activated, provides the user with a file picker from which the selection can be
changed. The button is
expected
to use
button layout
and match the
'::file-selector-button'
pseudo-element. The contents of its
anonymous button
content box
are
expected
to be
implementation-defined
(and
possibly locale-specific) text, for example "Choose file".
User agents may handle an
input
element whose
type
attribute is in the
File Upload
state as an
element with default preferred size
, and user agents may apply the
'field-sizing'
CSS property to the element. If the
'field-sizing'
property on the element has a
computed value
of
'content'
, the
intrinsic size
of the
element is
expected
to depend on its content such as the
'::file-selector-button'
pseudo-element and chosen file names.
15.5.12
The
input
element as a button
An
input
element whose
type
attribute is in
the
Submit Button
Reset Button
, or
Button
state, when it generates a
CSS box
, is
expected
to depict a button and use
button layout
and the contents of
the
anonymous button content box
are
expected
to be the text of the
element's
value
attribute, if any, or text derived from
the element's
type
attribute in an
implementation-defined
(and probably locale-specific) fashion, if not.
15.5.13
The
marquee
element
@namespace
"http://www.w3.org/1999/xhtml"
marquee
display
inline-block
text-align
initial
overflow
hidden !important;
The
marquee
element, while
turned on
, is
expected
to render in an animated fashion according to its attributes as
follows:
If the element's
behavior
attribute is in the
scroll
state
Slide the contents of the element in the direction described by the
direction
attribute as defined below, such that it begins
off the start side of the
marquee
, and ends flush with the inner end side.
For example, if the
direction
attribute is
left
(the default), then the
contents would start such that their left edge are off the side of the right edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the left edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is
expected
to
increment the
marquee current loop index
. If the element is still
turned on
after this, then the user agent is
expected
to restart the animation.
If the element's
behavior
attribute is in the
slide
state
Slide the contents of the element in the direction described by the
direction
attribute as defined below, such that it begins
off the start side of the
marquee
, and ends off the end side of the
marquee
For example, if the
direction
attribute is
left
(the default), then the
contents would start such that their left edge are off the side of the right edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the
right
edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is
expected
to
increment the
marquee current loop index
. If the element is still
turned on
after this, then the user agent is
expected
to restart the animation.
If the element's
behavior
attribute is in the
alternate
state
When the
marquee current loop index
is even (or zero), slide the contents of the
element in the direction described by the
direction
attribute as defined below, such that it begins flush with the start side of the
marquee
, and ends flush with the end side of the
marquee
When the
marquee current loop index
is odd, slide the contents of the element in
the opposite direction than that described by the
direction
attribute as defined below, such that it begins
flush with the end side of the
marquee
, and ends flush with the start side of the
marquee
For example, if the
direction
attribute is
left
(the default), then the
contents would with their right edge flush with the right inner edge of the
marquee
's
content area
, and the contents would then slide up to the
point where the
left
edge of the contents are flush with the left inner edge of the
marquee
's
content area
Once the animation has ended, the user agent is
expected
to
increment the
marquee current loop index
. If the element is still
turned on
after this, then the user agent is
expected
to continue the animation.
The
direction
attribute has the meanings described
in the following table:
direction
attribute state
Direction of animation
Start edge
End edge
Opposite direction
left
← Right to left
Right
Left
→ Left to Right
right
→ Left to Right
Left
Right
← Right to left
up
↑ Up (Bottom to Top)
Bottom
Top
↓ Down (Top to Bottom)
down
↓ Down (Top to Bottom)
Top
Bottom
↑ Up (Bottom to Top)
In any case, the animation should proceed such that there is a delay given by the
marquee
scroll interval
between each frame, and such that the content moves at most the distance
given by the
marquee scroll distance
with each frame.
When a
marquee
element has a
bgcolor
attribute set, the value is
expected
to be parsed using the
rules for parsing
a legacy color value
, and if that does not return failure, the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'background-color'
property
to the resulting color.
The
width
and
height
attributes on a
marquee
element
map to the dimension properties
'width'
and
'height'
on the element respectively.
The
natural height
of a
marquee
element with its
direction
attribute in the
up
or
down
states is 200
CSS
pixels
The
vspace
attribute of a
marquee
element
maps to the dimension
properties
'margin-top'
and
'margin-bottom'
on the element. The
hspace
attribute of a
marquee
element
maps to the dimension properties
'margin-left'
and
'margin-right'
on the element.
15.5.14
The
meter
element
@namespace
"http://www.w3.org/1999/xhtml"
meter
appearance
auto
The
meter
element is a
devolvable widget
. Its
native
appearance
is
expected
to render as an
'inline-block'
box with a
'block-size'
of '1em' and an
'inline-size'
of '5em', a
'vertical-align'
of '-0.2em', and with its contents depicting a gauge.
When this element has a
horizontal writing mode
, the depiction is
expected
to be of a horizontal gauge. Its minimum value is on the right if the
'direction'
property has a
computed value
of 'rtl', and on the left
otherwise. When this element has a
vertical writing mode
, it is
expected
to depict a vertical gauge. Its minimum value is on the bottom if the
'direction'
property has a
computed value
of 'rtl', and on the top
otherwise.
User agents are
expected
to use a presentation consistent with platform
conventions for gauges, if any.
Requirements for what must be depicted in the gauge are
included in the definition of the
meter
element.
Need to detail the
primitive appearance
15.5.15
The
progress
element
@namespace
"http://www.w3.org/1999/xhtml"
progress
appearance
auto
The
progress
element is a
devolvable widget
. Its
native appearance
is
expected
to render as an
'inline-block'
box with a
'block-size'
of '1em' and an
'inline-size'
of '10em', and a
'vertical-align'
of '-0.2em'.
When this
element has a
horizontal writing mode
, the element is
expected
to be
depicted as a horizontal progress bar. The start is on the right and the end is on the left if
the
'direction'
property on this element has a
computed value
of 'rtl',
and with the start on the left and the end on the right otherwise. When this element has a
vertical writing mode
, it is
expected
to be depicted as a vertical
progress bar. The start is on the bottom and the end is on the top if the
'direction'
property on this element has a
computed value
of 'rtl', and
with the start on the top and the end on the bottom otherwise.
User agents are
expected
to use a presentation consistent with platform
conventions for progress bars. In particular, user agents are
expected
to use
different presentations for determinate and indeterminate progress bars. User agents are also
expected
to vary the presentation based on the dimensions of the element.
Requirements for how to determine if the progress bar is determinate or
indeterminate, and what progress a determinate progress bar is to show, are included in the
definition of the
progress
element.
Need to detail the
primitive appearance
15.5.16
The
select
element
The
select
element is an
element with default preferred size
, and
user agents are
expected
to apply the
'field-sizing'
CSS property to
select
elements.
select
element is either a
list box
or a
drop-down box
, depending on its attributes.
select
element whose
multiple
attribute is present is
expected
to render as a multi-select
list
box
if its
display size
is greater than 1. If the
select
element has the
multiple
attribute
and a
display size
of 1, then it may render as a
multi-select
drop-down box
if the platform supports it; otherwise as a multi-select
list box
select
element whose
multiple
attribute is absent is
expected
to render as a single-select
drop-down
box
if its
display size
is 1, or as a
single-select
list box
if its
display size
is greater than 1.
When the element renders as a
list box
, it is a
devolvable widget
expected
to render as an
'inline-block'
box. The
inline
size
of its
intrinsic size
is the
width of the
select
's
labels
plus the width of a scrollbar. The
block size
of its
intrinsic
size
is determined by the following steps:
If the
'field-sizing'
property on the element has a
computed value
of
'content'
, return the height necessary to contain
all rows for items.
If the
size
attribute is absent or it has no valid
value, return the height necessary to contain four rows.
Otherwise, return the height necessary to contain as many rows for items as given by the
element's
display size
select
element which is being rendered as a
drop-down box
is
expected
to render as an
'inline-block'
box. The
inline
size
of its
intrinsic size
is the
width of the
select
's
labels
. If the
'field-sizing'
property on the element has a
computed
value
of
'content'
, the
inline size
of the
intrinsic size
depends on the shown text. The shown text is typically the
label of an
option
of which
selectedness
is set to true.
When the element renders as a
drop-down box
, it is a
devolvable
widget
. Its appearance in the devolved state, as well as its appearance when the
computed value
of the element's
'appearance'
property is
'menulist-button'
, is that of a drop-down box, including a "drop-down button",
but not necessarily rendered using a native control of the host operating system. In such a state,
CSS properties such as
'color'
'background-color'
, and 'border' should
not be disregarded (as is generally permissible when rendering an element according to its
native appearance
).
In either case (
list box
or
drop-down box
), the element's items are
expected
to be the element's
list of
options
, with the element's
optgroup
element
children
providing headers for groups of options where
applicable.
select
elements which render as a
drop-down box
support a
base
appearance
in addition to
native appearance
and
primitive
appearance
select
elements which render as a
drop-down box
without the
multiple
attribute or as a
list box
support a
base appearance
in addition to
native appearance
and
primitive
appearance
The
select
element's
select popover
supports a
base
appearance
and a
native appearance
. The
select popover
can only
be rendered with
base appearance
if its associated
select
is being
rendered with
base appearance
When a
select
is being rendered as a
drop-down box
with
base
appearance
, it is
expected
to render with a
shadow tree
that
contains the following elements:
select button slot
, which is a
slot
element. It is appended to
the
select
's
shadow root
as the first child. It is
expected
to take the first child element of the
select
if the first
child element is a
button
select fallback button text
, which is a
div
element. It is
appended to the
select button slot
select popover
, which is a
div
element. It is appended to the
select
's
shadow root
as the second child, after the
select button
slot
. The
select
element's
'::picker'
pseudo-element is the
select popover
if the
provided
argument
is
select
select popover slot
, which is a
slot
element. It is appended to
the
select popover
. It is
expected
to take all child nodes of the
select
except for the first child
button
, which is taken by the
select button slot
Since
base appearance
is determined by computing style, it isn't
possible to swap this DOM structure when switching appearance. Implementations can always include
the DOM structure for
base appearance
when the
select
is rendered as a
drop-down box
and then choose to include or exclude it from the layout tree in order
to control whether it gets rendered or not.
The
select popover
is only rendered when it is opted in to
base
appearance
separately from the
select
element. Otherwise, a native picker is
used.
When a
select
is being rendered as a
list box
with
base
appearance
, it is expected to render with a
shadow tree
that contains a
select list box slot
, which is a
slot
element. The
select list box
slot
is appended to the
select
's
shadow root
as the first child.
The
select list box slot
is expected to take all children of the
select
element.
The
select popover
's
implicit anchor element
is its associated
select
element.
When a
select
element is being rendered with
native appearance
or
primitive appearance
, or the
select
element is being rendered as a
list box
, the
'::picker'
pseudo-element and the
'::picker-icon'
pseudo-element do not apply.
The
'::picker'
pseudo-element is not rendered when it has
native
appearance
or
primitive appearance
The
'::checkmark'
pseudo-element only applies to
option
elements
which are
being rendered with base appearance
An
optgroup
element is
expected
to be rendered by displaying the
element's
label
attribute.
To determine if a
select
's
option
s are being rendered with base
appearance
, given a
select
element
select
If
select
is being rendered as a
list box
with
base
appearance
, then return true.
If
select
is being rendered as a
drop-down box
with
base
appearance
, and its
select popover
is being rendered with
base
appearance
, and
select
does not have the
multiple
attribute set, then return true.
Return false.
An
option
element is
rendered with base
appearance
if it has a
nearest
ancestor
select
and the
select
's
option
s are
being rendered with base appearance
An
option
element is
expected
to be rendered by displaying the result
of
collect option text
given the
option
and true, indented under its
optgroup
element if it has one. If the
option
is being rendered with base appearance
and the
option
's
label
attribute is not set, then the
option
is
expected
to render all of its children rather than by
displaying its
label
Each sequence of one or more child
hr
element siblings may be rendered as a single
separator.
The
width of the
select
's labels
is the wider of the width necessary to
render the widest
optgroup
, and the width necessary to render the widest
option
element in the element's
list of
options
(including its indent, if any). If the
select
has the
multiple
attribute and is being rendered as a
drop-down box
, then the width should also be wide enough to accomodate the text
rendered in the
select
with any combination of
option
s selected.
The
width of the
select
's labels
has an accomodation for
multiple
because some implementations use special text
to represent multiple options being selected, such as "2 selected." In this case, the select needs
to be wide enough to render "2 selected" in addition to the individual
option
s.
If a
select
element contains a
placeholder label option
, the user
agent is
expected
to render that
option
in a manner that conveys that
it is a label, rather than a valid option of the control. This can include preventing the
placeholder label option
from being explicitly selected by the user. When the
placeholder label option
's
selectedness
is true, the control is
expected
to be displayed in a fashion that indicates that no valid option is
currently selected.
User agents are
expected
to render the labels in a
select
in such a
manner that any alignment remains consistent whether the label is being displayed as part of the
page or in a menu control.
Need to detail the
native appearance
and
primitive
appearance
The following styles are
expected
to apply to
select
elements when
they are being rendered with
native appearance
or
primitive
appearance
@namespace
"http://www.w3.org/1999/xhtml"
select
letter-spacing
initial
word-spacing
initial
line-height
initial
The following styles are
expected
to apply to
select
elements when
they are being rendered as a
drop-down box
with
native appearance
or
primitive appearance
@namespace
"http://www.w3.org/1999/xhtml"
select
display
inline-block
The following styles are
expected
to apply to
select
elements when
they are being rendered with
base appearance
@namespace
"http://www.w3.org/1999/xhtml"
select
background-color
transparent
border
px
solid currentColor
user-select
none
box-sizing
border-box
select option:enabled:hover
background-color
color-mix
currentColor
10
transparent
);
select option:enabled:active
background-color
color-mix
currentColor
20
transparent
);
select option:disabled
color
color-mix
currentColor
50
transparent
);
select option
min-inline-size
24
px
min-block-size
max
24
px
lh
);
padding-inline
0.5
em
padding-block-end
display
flex
align-items
center
gap
0.5
em
white-space
nowrap
select option::checkmark
content
'\2713'
''
select option:not(:checked)::checkmark
visibility
hidden
select optgroup
display
block
font-weight
bolder
select optgroup option
font-weight
normal
select optgroup legend
padding-inline
0.5
em
min-block-size
lh
The following styles are
expected
to apply to
select
elements when
they are being rendered as a
drop-down box
with
base appearance
@namespace
"http://www.w3.org/1999/xhtml"
select
border-radius
0.5
em
padding-block
0.25
em
padding-inline
0.5
em
min-block-size
calc-size
auto
max
size
24
px
lh
));
min-inline-size
calc-size
auto
max
size
24
px
));
display
inline-flex
gap
0.5
em
border-radius
0.5
em
field-sizing
content !important;

select > button:first-child {
all: unset;
display: contents;

select:enabled:hover {
background-color: color-mix(currentColor 10%, transparent);
select:enabled:active {
background-color: color-mix(currentColor 20%, transparent);
select:disabled {
color: color-mix(currentColor 50%, transparent);

::picker(select) {
box-sizing: border-box;
border: 1px solid;
padding: 0;
color: CanvasText;
background-color: Canvas;
margin: 0;
inset: auto;
min-inline-size: anchor-size(self-inline);
max-block-size: stretch;
overflow: auto;
position-area: self-block-end span-self-inline-end;
position-try-order: most-block-size;
position-try-fallbacks:
self-block-start span-self-inline-end,
self-block-end span-self-inline-start,
self-block-start span-self-inline-start;

select::picker-icon {
content: counter(fake-counter-name, disclosure-open);
display: block;
margin-inline-start: auto;
The following styles are
expected
to apply to
select
elements when
they are being rendered as a
list box
with
base appearance
@namespace
"http://www.w3.org/1999/xhtml"
select
overflow
auto
display
inline-block
block-size
calc
max
24
px
lh
* attr(size type(), 4));
15.5.17
The
textarea
element
The
textarea
element is a
devolvable widget
expected
to
render as an
'inline-block'
box depicting a multiline text control. If this
multiline text control provides a selection, then, when the user changes the current selection,
the user agent is
expected
to
queue an element task
on the
user
interaction task source
given the
textarea
element to
fire an event
named
select
at the element, with the
bubbles
attribute initialized to
true.
The
textarea
element is an
element with default preferred size
, and
user agents are
expected
to apply the
'field-sizing'
CSS property to
textarea
elements.
If the
'field-sizing'
property on the element has a
computed value
of
'content'
, the
intrinsic size
is
determined from the text which the element shows. The text is either a
raw value
or a short hint specified by the
placeholder
attribute. User agents may take the
text caret size into account in the
intrinsic size
. Otherwise, its
intrinsic size
is computed from
textarea effective width
and
textarea effective height
(as defined below).
The
textarea effective width
of a
textarea
element is
size
avg
sbw
, where
size
is the element's
character width
avg
is the average character width of the primary font of the element, in
CSS pixels
, and
sbw
is the width of a scrollbar, in
CSS pixels
. (The element's
'letter-spacing'
property does not
affect the result.)
The
textarea effective height
of a
textarea
element is the height in
CSS pixels
of the number of lines given by the element's
character height
, plus the height of a scrollbar in
CSS pixels
User agents are
expected
to apply the
'white-space'
CSS property to
textarea
elements. For historical reasons, if the element has a
wrap
attribute whose value is an
ASCII
case-insensitive
match for the string "
off
", then the user agent is
expected
to treat the attribute as a
presentational hint
setting the element's
'white-space'
property to 'pre'.
Need to detail the
native appearance
and
primitive
appearance
15.6
Frames and framesets
User agents are
expected
to render
frameset
elements as a box with
the height and width of the
viewport
, with a surface rendered according to the
following layout algorithm:
The
cols
and
rows
variables are lists of zero or more pairs consisting
of a number and a unit, the unit being one of
percentage
relative
, and
absolute
Use the
rules for parsing a list of dimensions
to parse the value of the
element's
cols
attribute, if there is one.
Let
cols
be the result, or an empty list if there is no such attribute.
Use the
rules for parsing a list of dimensions
to parse the value of the
element's
rows
attribute, if there is one.
Let
rows
be the result, or an empty list if there is no such attribute.
For any of the entries in
cols
or
rows
that have the number zero and
the unit
relative
, change the entry's number to one.
If
cols
has no entries, then add a single entry consisting of the value 1 and the
unit
relative
to
cols
If
rows
has no entries, then add a single entry consisting of the value 1 and the
unit
relative
to
rows
Invoke the algorithm defined below to
convert a list of dimensions to a list of pixel
values
using
cols
as the input list, and the width of the surface that the
frameset
is being rendered into, in
CSS pixels
, as the
input dimension. Let
sized cols
be the resulting list.
Invoke the algorithm defined below to
convert a list of dimensions to a list of pixel
values
using
rows
as the input list, and the height of the surface that the
frameset
is being rendered into, in
CSS pixels
, as the
input dimension. Let
sized rows
be the resulting list.
Split the surface into a grid of
rectangles, where
is the number of entries in
sized cols
and
is the number of entries in
sized rows
Size the columns so that each column in the grid is as many
CSS
pixels
wide as the corresponding entry in the
sized cols
list.
Size the rows so that each row in the grid is as many
CSS pixels
high as the corresponding entry in the
sized rows
list.
Let
children
be the list of
frame
and
frameset
elements
that are
children
of the
frameset
element
for which the algorithm was invoked.
For each row of the grid of rectangles created in the previous step, from top to bottom, run
these substeps:
For each rectangle in the row, from left to right, run these substeps:
If there are any elements left in
children
, take the first element in the
list, and assign it to the rectangle.
If this is a
frameset
element, then recurse the entire
frameset
layout algorithm for that
frameset
element, with the rectangle as the
surface.
Otherwise, it is a
frame
element; render its
content
navigable
, positioned and sized to fit the rectangle.
If there are any elements left in
children
, remove the first element from
children
If the
frameset
element
has a border
, draw an outer set of borders
around the rectangles, using the element's
frame border color
For each rectangle, if there is an element assigned to that rectangle, and that element
has a border
, draw an inner set of borders around that rectangle, using the
element's
frame border color
For each (visible) border that does not abut a rectangle that is assigned a
frame
element with a
noresize
attribute (including rectangles in further nested
frameset
elements), the user
agent is
expected
to allow the user to move the border, resizing the rectangles
within, keeping the proportions of any nested
frameset
grids.
frameset
or
frame
element
has a border
if the
following algorithm returns true:
If the element has a
frameborder
attribute whose value is not the
empty string and whose first character is either a U+0031 DIGIT ONE (1) character, a U+0079
LATIN SMALL LETTER Y character (y), or a U+0059 LATIN CAPITAL LETTER Y character (Y), then
return true.
Otherwise, if the element has a
frameborder
attribute, return
false.
Otherwise, if the element has a parent element that is a
frameset
element,
then return true if
that
element
has a border
, and false if it does
not.
Otherwise, return true.
The
frame border color
of a
frameset
or
frame
element is the color obtained from the following
algorithm:
If the element has a
bordercolor
attribute, and applying the
rules for parsing a legacy color value
to that attribute's value does not return
failure, then return the color so obtained.
Otherwise, if the element has a parent element that is a
frameset
element,
then return the
frame border color
of that element.
Otherwise, return gray.
The algorithm to
convert a list of dimensions to a list of pixel values
consists of
the following steps:
Let
input list
be the list of numbers and units passed to the algorithm.
Let
output list
be a list of numbers the same length as
input list
, all
zero.
Entries in
output list
correspond to the entries in
input list
that
have the same position.
Let
input dimension
be the size passed to the algorithm.
Let
total percentage
be the sum of all the numbers in
input list
whose
unit is
percentage
Let
total relative
be the sum of all the numbers in
input list
whose
unit is
relative
Let
total absolute
be the sum of all the numbers in
input list
whose
unit is
absolute
Let
remaining space
be the value of
input dimension
If
total absolute
is greater than
remaining space
, then for each entry
in
input list
whose unit is
absolute
, set the corresponding value in
output list
to the number of the entry in
input list
multiplied by
remaining space
and divided by
total absolute
. Then, set
remaining
space
to zero.
Otherwise, for each entry in
input list
whose unit is
absolute
, set the
corresponding value in
output list
to the number of the entry in
input
list
. Then, decrement
remaining space
by
total absolute
If
total percentage
multiplied by the
input dimension
and divided by
100 is greater than
remaining space
, then for each entry in
input list
whose unit is
percentage
, set the corresponding value in
output list
to the
number of the entry in
input list
multiplied by
remaining space
and
divided by
total percentage
. Then, set
remaining space
to zero.
Otherwise, for each entry in
input list
whose unit is
percentage
, set the
corresponding value in
output list
to the number of the entry in
input
list
multiplied by the
input dimension
and divided by 100. Then, decrement
remaining space
by
total percentage
multiplied by the
input
dimension
and divided by 100.
For each entry in
input list
whose unit is
relative
, set the corresponding
value in
output list
to the number of the entry in
input list
multiplied
by
remaining space
and divided by
total relative
Return
output list
User agents working with integer values for frame widths (as opposed to user agents that can
lay frames out with subpixel accuracy) are
expected
to distribute the remainder
first to the last entry whose unit is
relative
, then equally (not proportionally) to each
entry whose unit is
percentage
, then equally (not proportionally) to each entry whose unit
is
absolute
, and finally, failing all else, to the last entry.
The contents of a
frame
element that does not have a
frameset
parent
are
expected
to be rendered as
transparent black
; the user agent is
expected
to not render its
content navigable
in this case, and its
content navigable
is
expected
to have a
viewport
with zero
width and zero height.
15.7
Interactive media
15.7.1
Links, forms, and navigation
User agents are
expected
to allow the user to control aspects of
hyperlink
activation and
form submission
, such as which
navigable
is to be used for the subsequent
User agents are
expected
to allow users to discover the destination of
hyperlinks
and of
forms
before triggering their
User agents are
expected
to inform the user of whether a
hyperlink
includes
hyperlink auditing
, and to let them know at a minimum which domains will be
contacted as part of such auditing.
User agents may allow users to
navigate
navigables
to the URLs
indicated
by the
cite
attributes on
blockquote
ins
, and
del
elements.
User agents may surface
hyperlinks
created by
link
elements in their user interface, as discussed
previously
15.7.2
The
title
attribute
User agents are
expected
to expose the
advisory information
of
elements upon user request, and to make the user aware of the presence of such information.
On interactive graphical systems where the user can use a pointing device, this could take the
form of a tooltip. When the user is unable to use a pointing device, then the user agent is
expected
to make the content available in some other fashion, e.g. by making the
element a
focusable area
and always displaying the
advisory information
of the currently
focused
element, or by showing the
advisory
information
of the elements under the user's finger on a touch device as the user pans
around the screen.
U+000A LINE FEED (LF) characters are
expected
to cause line breaks in the
tooltip; U+0009 CHARACTER TABULATION (tab) characters are
expected
to render as a
nonzero horizontal shift that lines up the next glyph with the next tab stop, with tab stops
occurring at points that are multiples of 8 times the width of a U+0020 SPACE character.
For example, a visual user agent could make elements with a
title
attribute
focusable
, and could make
any
focused
element with a
title
attribute
show its tooltip under the element while the element has focus. This would allow a user to tab
around the document to find all the advisory text.
As another example, a screen reader could provide an audio cue when reading an element with a
tooltip, with an associated key to read the last tooltip for which a cue was played.
15.7.3
Editing hosts
The current text editing caret (i.e. the
active range
, if it is empty and in an
editing host
), if any, is
expected
to act like an inline
replaced element
with the vertical dimensions of the caret and with zero width for
the purposes of the CSS rendering model.
This means that even an empty block can have the caret inside it, and that when
the caret is in such an element, it prevents
margins from
collapsing
through the element.
15.7.4
Text rendered in native user interfaces
User agents are
expected
to honor the Unicode semantics of text that is exposed
in user interfaces, for example supporting the bidirectional algorithm in text shown in dialogs,
title bars, popup menus, and tooltips. Text from the contents of elements is
expected
to be rendered in a manner that honors
the directionality
of
the element from which the text was obtained. Text from attributes is
expected
to be
rendered in a manner that honours the
directionality of the attribute
Consider the following markup, which has Hebrew text asking for a programming language, the
languages being text for which a left-to-right direction is important given the punctuation in
some of their names:
dir
"rtl"
lang
"he"
label
בחר שפת תכנות:
select
option
dir
"ltr"
C++
option
option
dir
"ltr"
C#
option
option
dir
"ltr"
FreePascal
option
option
dir
"ltr"
F#
option
select
label
If the
select
element was rendered as a drop down box, a correct rendering would
ensure that the punctuation was the same both in the drop down, and in the box showing the
current selection.
The directionality of attributes depends on the attribute and on the element's
dir
attribute, as the following example demonstrates. Consider this
markup:
table
tr
th
abbr
"(א"
dir
ltr
th
abbr
"(א"
dir
rtl
th
abbr
"(א"
dir
auto
table
If the
abbr
attributes are rendered, e.g. in a tooltip or
other user interface, the first will have a left parenthesis (because the direction is 'ltr'),
the second will have a right parenthesis (because the direction is 'rtl'), and the third will
have a right parenthesis (because the direction is determined
from the attribute value
to be 'rtl').
However, if instead the attribute was not a
directionality-capable attribute
, the
results would be different:
table
tr
th
data-abbr
"(א"
dir
ltr
th
data-abbr
"(א"
dir
rtl
th
data-abbr
"(א"
dir
auto
table
In this case, if the user agent were to expose the
data-abbr
attribute
in the user interface (e.g. in a debugging environment), the last case would be rendered with a
left
parenthesis, because the direction would be determined from the element's
contents.
A string provided by a script (e.g. the argument to
window.alert()
) is
expected
to be treated as an
independent set of one or more bidirectional algorithm paragraphs when displayed, as defined by
the bidirectional algorithm, including, for instance, supporting the paragraph-breaking behavior
of U+000A LINE FEED (LF) characters. For the purposes of determining the paragraph level of such
text in the bidirectional algorithm, this specification does
not
provide a higher-level
override of rules P2 and P3.
[BIDI]
When necessary, authors can enforce a particular direction for a given paragraph by starting it
with the Unicode U+200E LEFT-TO-RIGHT MARK or U+200F RIGHT-TO-LEFT MARK characters.
Thus, the following script:
alert
'\u05DC\u05DE\u05D3 HTML \u05D4\u05D9\u05D5\u05DD!'
...would always result in a message reading
למד LMTH היום!
(not "
דמל HTML םויה!
"),
regardless of the language of the user agent interface or the
direction of the page or any of its elements.
For a more complex example, consider the following script:
/* Warning: this script does not handle right-to-left scripts correctly */
var
if
prompt
'What is your name?'
))
alert
'! Ok, Fred, '
', and Wilma will get the car.'
);
When the user enters "
Kitty
", the user agent would alert "
Kitty! Ok, Fred,
Kitty, and Wilma will get the car.
". However, if the user enters "
لا أفهم
", then the bidirectional
algorithm will determine that the direction of the paragraph is right-to-left, and so the output
will be the following unintended mess: "
لا أفهم! derF ,kO, لا أفهم, rac eht teg lliw amliW dna.
To force an alert that starts with user-provided text (or other text of unknown
directionality) to render left-to-right, the string can be prefixed with a U+200E LEFT-TO-RIGHT
MARK character:
var
if
prompt
'What is your name?'
))
alert
\u200E
'! Ok, Fred, '
', and Wilma will get the car.'
);
15.8
Print media
User agents are
expected
to allow the user to request the opportunity to
obtain a physical form
(or a representation of a physical form) of a
Document
. For example, selecting the option to print a page or convert it to PDF
format.
[PDF]
When the user actually
obtains a physical form
(or
a representation of a physical form) of a
Document
, the user agent is
expected
to create a new rendering of the
Document
for the print media.
15.9
Unstyled XML documents
HTML user agents may, in certain circumstances, find themselves rendering non-HTML documents
that use vocabularies for which they lack any built-in knowledge. This section provides for a way
for user agents to handle such documents in a somewhat useful manner.
While a
Document
is an
unstyled document
, the user agent is
expected
to render
an unstyled document view
Document
is an
unstyled document
while it matches the following
conditions:
The
Document
has no author style sheets (whether referenced by HTTP headers, processing instructions, elements like
link
, inline elements like
style
, or any other mechanism).
None of the elements in the
Document
have any
presentational hints
None of the elements in the
Document
have any
style attributes
None of the elements in the
Document
are in any of the following namespaces:
HTML namespace
SVG namespace
MathML namespace
The
Document
has no
focusable area
(e.g. from XLink) other than the
viewport
The
Document
has no
hyperlinks
(e.g. from XLink).
There exists no
script
whose
settings object
's
global object
is a
Window
object with
this
Document
as its
associated
Document
None of the elements in the
Document
have any registered event listeners.
An unstyled document view
is one where the DOM is not rendered according to CSS
(which would, since there are no applicable styles in this context, just result in a wall of
text), but is instead rendered in a manner that is useful for a developer. This could consist of
just showing the
Document
object's source, maybe with syntax highlighting, or it
could consist of displaying just the DOM tree, or simply a message saying that the page is not a
styled document.
If a
Document
stops being an
unstyled document
, then the
conditions above stop applying, and thus a user agent following these requirements will switch to
using the regular CSS rendering.
16
Obsolete features
16.1
Obsolete but conforming features
Features listed in this section will trigger warnings in conformance checkers.
Authors should not specify a
border
attribute on an
img
element. If the attribute is present, its value must be the string "
". CSS should be used instead.
Authors should not specify a
charset
attribute on a
script
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for "
utf-8
". (This has no effect in a
document that conforms to the requirements elsewhere in this standard of being encoded as
UTF-8
.)
Authors should not specify a
language
attribute on a
script
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for the string "
JavaScript
" and either the
type
attribute must be omitted or its value must be an
ASCII case-insensitive
match for the string "
text/javascript
".
The attribute should be entirely omitted instead (with the value "
JavaScript
", it has no effect), or replaced with use of the
type
attribute.
Authors should not specify a value for the
type
attribute on
script
elements that is the empty string or a
JavaScript MIME type
essence match
. Instead, they should omit the attribute, which has the same effect.
Authors should not specify a
type
attribute on a
style
element. If the attribute is present, its value must be an
ASCII
case-insensitive
match for "
text/css
".
Authors should not specify the
name
attribute on
elements. If the attribute is present, its value must not be the empty string and
must neither be equal to the value of any of the
IDs
in the
element's
tree
other than the element's own
ID
, if
any, nor be equal to the value of any of the other
name
attributes on
elements in the element's
tree
. If this attribute is
present and the element has an
ID
, then the attribute's value
must be equal to the element's
ID
. In earlier versions of the
language, this attribute was intended as a way to specify possible targets for
fragments
in
URLs
. The
id
attribute should be used instead.
Authors should not, but may despite requirements to the contrary elsewhere in this
specification, specify the
maxlength
and
size
attributes on
input
elements whose
type
attributes are in the
Number
state. One valid reason for using these attributes
regardless is to help legacy user agents that do not support
input
elements with
type="number"
to still render the text control with a useful width.
16.1.1
Warnings for obsolete but conforming features
To ease the transition from HTML4 Transitional documents to the language defined in
this
specification, and to discourage certain features that are only allowed in very few
circumstances, conformance checkers must warn the user when the following features are used in a
document. These are generally old obsolete features that have no effect, and are allowed only to
distinguish between likely mistakes (regular conformance errors) and mere vestigial markup or
unusual and discouraged practices (these warnings).
The following features must be categorized as described
above:
The presence of a
border
attribute on an
img
element if its value is the string "
".
The presence of a
charset
attribute on a
script
element if its value is an
ASCII case-insensitive
match for
utf-8
".
The presence of a
language
attribute on a
script
element if its value is an
ASCII case-insensitive
match for the
string "
JavaScript
" and if there is no
type
attribute or there is and its value is an
ASCII
case-insensitive
match for the string "
text/javascript
".
The presence of a
type
attribute on a
script
element if its value is a
JavaScript MIME type essence
match
The presence of a
type
attribute on a
style
element if its value is an
ASCII case-insensitive
match for
text/css
".
The presence of a
name
attribute on an
element, if its value is not the empty string.
The presence of a
maxlength
attribute on an
input
element whose
type
attribute is in the
Number
state.
The presence of a
size
attribute on an
input
element whose
type
attribute is in the
Number
state.
Conformance checkers must distinguish between pages that have no conformance errors and have
none of these obsolete features, and pages that have no conformance errors but do have some of
these obsolete features.
For example, a validator could report some pages as "Valid HTML" and others as
"Valid HTML with warnings".
16.2
Non-conforming features
Elements in the following list are entirely obsolete, and must not be used by authors:
applet
Use
embed
or
object
instead.
acronym
Use
abbr
instead.
bgsound
Use
audio
instead.
dir
Use
ul
instead.
frame
frameset
noframes
Either use
iframe
and CSS instead, or use server-side includes to generate complete pages with the various invariant parts merged in.
isindex
Use an explicit
form
and
text control
combination instead.
keygen
For enterprise device management use cases, use native on-device management capabilities.
For certificate enrollment use cases, use the Web Cryptography API to generate a keypair for
the certificate, and then export the certificate and key to allow the user to install them
manually.
[WEBCRYPTO]
listing
Use
pre
and
code
instead.
menuitem
To implement a custom context menu, use script to handle the
contextmenu
event.
nextid
Use GUIDs instead.
noembed
Use
object
instead of
embed
when fallback is necessary.
param
Use the
data
attribute of the
object
element to set the
URL of the external resource.
plaintext
Use the "
text/plain
MIME type
instead.
rb
rtc
Providing the ruby base directly inside the
ruby
element or using nested
ruby
elements is sufficient.
strike
Use
del
instead if the element is marking an edit, otherwise use
instead.
xmp
Use
pre
and
code
instead, and escape "
" and "
" characters as "
<
" and "
&
" respectively.
basefont
big
blink
center
font
marquee
multicol
nobr
spacer
tt
Use appropriate elements or CSS instead.
Where the
tt
element would have been used for marking up keyboard input,
consider the
kbd
element; for variables, consider the
var
element; for
computer code, consider the
code
element; and for computer output, consider the
samp
element.
Similarly, if the
big
element is being used to denote a heading, consider using
the
h1
element; if it is being used for marking up important passages, consider the
strong
element; and if it is being used for highlighting text for reference
purposes, consider the
mark
element.
See also the
text-level semantics usage summary
for more
suggestions with examples.
The following attributes are obsolete (though the elements are still part of the language), and
must not be used by authors:
charset
on
elements
charset
on
link
elements
Use an HTTP `
Content-Type
` header on the linked resource instead.
charset
on
script
elements (except as noted in the previous section)
Omit the attribute. Both documents and scripts are required to use
UTF-8
, so
it is redundant to specify it on the
script
element since it inherits from the
document.
coords
on
elements
shape
on
elements
Use
area
instead of
for image maps.
methods
on
elements
methods
on
link
elements
Use the HTTP OPTIONS feature instead.
name
on
elements (except as noted in the previous section)
name
on
embed
elements
name
on
img
elements
name
on
option
elements
Use the
id
attribute instead.
rev
on
elements
rev
on
link
elements
Use the
rel
attribute instead, with an opposite term. (For example, instead of
rev="made"
, use
rel="author"
.)
urn
on
elements
urn
on
link
elements
Specify the preferred persistent identifier using the
href
attribute instead.
accept
on
form
elements
Use the
accept
attribute directly on the
input
elements instead.
hreflang
on
area
elements
type
on
area
elements
These attributes do not do anything useful, and for historical reasons there are no
corresponding IDL attributes on
area
elements. Omit them altogether.
nohref
on
area
elements
Omitting the
href
attribute is sufficient; the
nohref
attribute is
unnecessary. Omit it altogether.
profile
on
head
elements
Unnecessary. Omit it altogether.
manifest
on
html
elements
Use service workers instead.
[SW]
version
on
html
elements
Unnecessary. Omit it altogether.
ismap
on
input
elements
Unnecessary. Omit it altogether. All
input
elements with a
type
attribute in the
Image
Button
state are processed as server-side image maps.
usemap
on
input
elements
usemap
on
object
elements
Use the
img
element for image maps.
longdesc
on
iframe
elements
longdesc
on
img
elements
Use a regular
element to link to the
description, or (in the case of images) use an
image
map
to provide a link from the image to the image's
description.
lowsrc
on
img
elements
Use a progressive JPEG image (given in the
src
attribute),
instead of using two separate images.
target
on
link
elements
Unnecessary. Omit it altogether.
type
on
elements
To implement a custom context menu, use script to handle the
contextmenu
event. For toolbar menus, omit the
attribute.
label
on
elements
contextmenu
on all elements
onshow
on all elements
To implement a custom context menu, use script to handle the
contextmenu
event.
scheme
on
meta
elements
Use only one scheme per field, or make the scheme declaration part of the value.
archive
on
object
elements
classid
on
object
elements
code
on
object
elements
codebase
on
object
elements
codetype
on
object
elements
Use the
data
and
type
attributes to invoke
plugins
declare
on
object
elements
Repeat the
object
element completely each time the resource is to be reused.
standby
on
object
elements
Optimize the linked resource so that it loads quickly or, at least, incrementally.
typemustmatch
on
object
elements
Avoid using
object
elements with untrusted resources.
language
on
script
elements (except as noted in the previous section)
Omit the attribute for JavaScript; for
data blocks
, use
the
type
attribute instead.
event
on
script
elements
for
on
script
elements
Use DOM events mechanisms to register event listeners.
[DOM]
type
on
style
elements (except as noted in the previous section)
Omit the attribute for CSS; for
data blocks
, use
script
as the container instead of
style
datapagesize
on
table
elements
Unnecessary. Omit it altogether.
summary
on
table
elements
Use one of the
techniques for describing
tables
given in the
table
section instead.
abbr
on
td
elements
Use text that begins in an unambiguous and terse manner, and include any more elaborate text after that. The
title
attribute can also be useful in including more detailed text, so that the cell's contents can be made terse. If it's a heading, use
th
(which has an
abbr
attribute).
axis
on
td
and
th
elements
Use the
scope
attribute on the relevant
th
scope
on
td
elements
Use
th
elements for heading cells.
datasrc
on
button
div
frame
iframe
img
input
label
legend
marquee
object
option
select
span
table
, and
textarea
elements
datafld
on
button
div
fieldset
frame
iframe
img
input
label
legend
marquee
object
select
span
, and
textarea
elements
dataformatas
on
button
div
input
label
legend
marquee
object
option
select
span
, and
table
elements
Use script and a mechanism such as
XMLHttpRequest
to populate the page dynamically.
[XHR]
dropzone
on all elements
Use script to handle the
dragenter
and
dragover
events instead.
alink
on
body
elements
bgcolor
on
body
elements
bottommargin
on
body
elements
leftmargin
on
body
elements
link
on
body
elements
marginheight
on
body
elements
marginwidth
on
body
elements
rightmargin
on
body
elements
text
on
body
elements
topmargin
on
body
elements
vlink
on
body
elements
clear
on
br
elements
align
on
caption
elements
align
on
col
elements
char
on
col
elements
charoff
on
col
elements
valign
on
col
elements
width
on
col
elements
align
on
div
elements
compact
on
dl
elements
align
on
embed
elements
hspace
on
embed
elements
vspace
on
embed
elements
align
on
hr
elements
color
on
hr
elements
noshade
on
hr
elements
size
on
hr
elements
width
on
hr
elements
align
on
h1
h6
elements
align
on
iframe
elements
allowtransparency
on
iframe
elements
frameborder
on
iframe
elements
framespacing
on
iframe
elements
hspace
on
iframe
elements
marginheight
on
iframe
elements
marginwidth
on
iframe
elements
scrolling
on
iframe
elements
vspace
on
iframe
elements
align
on
input
elements
border
on
input
elements
hspace
on
input
elements
vspace
on
input
elements
align
on
img
elements
border
on
img
elements (except as noted in the previous section)
hspace
on
img
elements
vspace
on
img
elements
align
on
legend
elements
type
on
li
elements
compact
on
elements
align
on
object
elements
border
on
object
elements
hspace
on
object
elements
vspace
on
object
elements
compact
on
ol
elements
align
on
elements
width
on
pre
elements
align
on
table
elements
bgcolor
on
table
elements
border
on
table
elements
bordercolor
on
table
elements
cellpadding
on
table
elements
cellspacing
on
table
elements
frame
on
table
elements
height
on
table
elements
rules
on
table
elements
width
on
table
elements
align
on
tbody
thead
, and
tfoot
elements
char
on
tbody
thead
, and
tfoot
elements
charoff
on
tbody
thead
, and
tfoot
elements
height
on
thead
tbody
, and
tfoot
elements
valign
on
tbody
thead
, and
tfoot
elements
align
on
td
and
th
elements
bgcolor
on
td
and
th
elements
char
on
td
and
th
elements
charoff
on
td
and
th
elements
height
on
td
and
th
elements
nowrap
on
td
and
th
elements
valign
on
td
and
th
elements
width
on
td
and
th
elements
align
on
tr
elements
bgcolor
on
tr
elements
char
on
tr
elements
charoff
on
tr
elements
height
on
tr
elements
valign
on
tr
elements
compact
on
ul
elements
type
on
ul
elements
background
on
body
table
thead
tbody
tfoot
tr
td
, and
th
elements
Use CSS instead.
16.3
Requirements for implementations
16.3.1
The
marquee
element
The
marquee
element is a presentational element that animates content. CSS
transitions and animations are a more appropriate mechanism.
[CSSANIMATIONS]
[CSSTRANSITIONS]
The
marquee
element must implement the
HTMLMarqueeElement
interface.
Exposed
Window
interface
HTMLMarqueeElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
DOMString
behavior
CEReactions
Reflect
attribute
DOMString
bgColor
CEReactions
Reflect
attribute
DOMString
direction
CEReactions
Reflect
attribute
DOMString
height
CEReactions
Reflect
attribute
unsigned
long
hspace
CEReactions
attribute
long
loop
CEReactions
Reflect
ReflectDefault=6
attribute
unsigned
long
scrollAmount
CEReactions
Reflect
ReflectDefault=85
attribute
unsigned
long
scrollDelay
CEReactions
Reflect
attribute
boolean
trueSpeed
CEReactions
Reflect
attribute
unsigned
long
vspace
CEReactions
Reflect
attribute
DOMString
width
undefined
start
();
undefined
stop
();
};
marquee
element can be
turned on
or
turned off
. When it is created, it is
turned on
When the
start()
method is called, the
marquee
element
must be
turned on
When the
stop()
method is called, the
marquee
element
must be
turned off
The
behavior
content attribute on
marquee
elements is an
enumerated attribute
with
the following keywords and states (all non-conforming):
Keyword
State
scroll
scroll
slide
slide
alternate
alternate
The attribute's
missing value default
and
invalid value default
are both the
scroll
state.
The
direction
content attribute on
marquee
elements is an
enumerated attribute
with the following keywords and states (all
non-conforming):
Keyword
State
left
left
right
right
up
up
down
down
The attribute's
missing value default
and
invalid value default
are both the
left
state.
The
truespeed
content attribute on
marquee
elements is a
boolean attribute
marquee
element has a
marquee scroll interval
, which is obtained as
follows:
If the element has a
scrolldelay
attribute,
and parsing its value using the
rules for parsing non-negative integers
does not
return an error, then let
delay
be the parsed value. Otherwise, let
delay
be 85.
If the element does not have a
truespeed
attribute, and the
delay
value is less than 60, then let
delay
be 60
instead.
The
marquee scroll interval
is
delay
, interpreted in
milliseconds.
marquee
element has a
marquee scroll distance
, which, if the element
has a
scrollamount
attribute, and
parsing its value using the
rules for parsing non-negative integers
does not return
an error, is the parsed value interpreted in
CSS pixels
, and otherwise
is 6
CSS pixels
marquee
element has a
marquee loop count
, which, if the element has a
loop
attribute, and
parsing its value using the
rules for parsing integers
does not return an error or a
number less than 1, is the parsed value, and otherwise is −1.
The
loop
IDL attribute, on getting, must return the element's
marquee loop count
; and on
setting, if the new value is different than the element's
marquee loop count
and
either greater than zero or equal to −1, must set the element's
loop
content attribute (adding it if necessary) to the
valid integer
that represents the new value. (Other values are ignored.)
marquee
element also has a
marquee current loop index
, which is zero
when the element is created.
The rendering layer will occasionally
increment the marquee current loop index
which must cause the following steps to be run:
If the
marquee loop count
is −1, then return.
Increment the
marquee current loop index
by one.
If the
marquee current loop index
is now greater than or equal to the
element's
marquee loop count
turn off
the
marquee
element.
16.3.2
Frames
The
frameset
element acts as
the body element
in
documents that use frames.
The
frameset
element must implement the
HTMLFrameSetElement
interface.
Exposed
Window
interface
HTMLFrameSetElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
DOMString
cols
CEReactions
Reflect
attribute
DOMString
rows
};
HTMLFrameSetElement
includes
WindowEventHandlers
The
frameset
element exposes as
event handler content attributes
number of the
event handlers
of the
Window
object. It also mirrors their
event handler IDL attributes
The
event handlers
of the
Window
object named by the
Window
-reflecting body element event handler set
, exposed on the
frameset
element, replace the generic
event handlers
with the same names
normally supported by
HTML elements
The
frame
element has a
content navigable
similar
to the
iframe
element, but rendered within a
frameset
element.
The
frame
HTML element insertion steps
, given
insertedNode
, are:
If
insertedNode
is not
in a document tree
, then return.
If
insertedNode
's
root
's
browsing context
is null, then return.
Create a new child navigable
for
insertedNode
Process the
frame
attributes
for
insertedNode
, with
initialInsertion
set to true.
The
frame
HTML element removing steps
, given
removedNode
are to
destroy a child navigable
given
removedNode
Whenever a
frame
element with a non-null
content navigable
has its
src
attribute set, changed, or removed, the user
agent must
process the
frame
attributes
To
process the
frame
attributes
for an element
element
, with
an optional boolean
initialInsertion
Let
url
be the result of running the
shared attribute processing steps
for
iframe
and
frame
elements
given
element
and
initialInsertion
If
url
is null, then return.
If
url
matches
about:blank
and
initialInsertion
is true, then:
Fire an event
named
load
at
element
Return.
Navigate an
iframe
or
frame
given
element
url
, the empty string, and
initialInsertion
The
frame
element
potentially delays the load event
The
frame
element must implement the
HTMLFrameElement
interface.
Exposed
Window
interface
HTMLFrameElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
DOMString
name
CEReactions
Reflect
attribute
DOMString
scrolling
CEReactions
ReflectURL
attribute
USVString
src
CEReactions
Reflect
attribute
DOMString
frameBorder
CEReactions
ReflectURL
attribute
USVString
longDesc
CEReactions
Reflect
attribute
boolean
noResize
readonly
attribute
Document
contentDocument
readonly
attribute
WindowProxy
contentWindow

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
marginHeight
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
marginWidth
};
The
contentDocument
getter steps are to return
this
's
content document
The
contentWindow
getter steps are to return
this
's
content window
16.3.3
Other elements, attributes and APIs
User agents must treat
acronym
elements in a manner
equivalent to
abbr
elements in terms of semantics and
for purposes of rendering.
partial
interface
HTMLAnchorElement
CEReactions
Reflect
attribute
DOMString
coords
CEReactions
Reflect
attribute
DOMString
charset
CEReactions
Reflect
attribute
DOMString
name
CEReactions
Reflect
attribute
DOMString
rev
CEReactions
Reflect
attribute
DOMString
shape
};
partial
interface
HTMLAreaElement
CEReactions
Reflect
attribute
boolean
noHref
};
partial
interface
HTMLBodyElement
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
text
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
link
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
vLink
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
aLink
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
bgColor
CEReactions
Reflect
attribute
DOMString
background
};
The
background
IDL attribute does not
use
ReflectURL
or
USVString
for historical reasons.
partial
interface
HTMLBRElement
CEReactions
Reflect
attribute
DOMString
clear
};
partial
interface
HTMLTableCaptionElement
CEReactions
Reflect
attribute
DOMString
align
};
partial
interface
HTMLTableColElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
="
char
"]
attribute
DOMString
ch
CEReactions
Reflect
="
charoff
"]
attribute
DOMString
chOff
CEReactions
Reflect
attribute
DOMString
vAlign
CEReactions
Reflect
attribute
DOMString
width
};
User agents must treat
dir
elements in a manner equivalent to
ul
elements in terms of semantics and for purposes of rendering.
The
dir
element must implement the
HTMLDirectoryElement
interface.
Exposed
Window
interface
HTMLDirectoryElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
boolean
compact
};
partial
interface
HTMLDivElement
CEReactions
Reflect
attribute
DOMString
align
};
partial
interface
HTMLDListElement
CEReactions
Reflect
attribute
boolean
compact
};
partial
interface
HTMLEmbedElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
name
};
The
font
element must implement the
HTMLFontElement
interface.
Exposed
Window
interface
HTMLFontElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
color
CEReactions
Reflect
attribute
DOMString
face
CEReactions
Reflect
attribute
DOMString
size
};
partial
interface
HTMLHeadingElement
CEReactions
Reflect
attribute
DOMString
align
};
The
profile
IDL attribute on
head
elements (with
the
HTMLHeadElement
interface) is intentionally omitted. Unless so required by
another applicable specification
, implementations
would therefore not support this attribute. (It is mentioned here as it was defined in a previous
version of
DOM
.)
partial
interface
HTMLHRElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
color
CEReactions
Reflect
attribute
boolean
noShade
CEReactions
Reflect
attribute
DOMString
size
CEReactions
Reflect
attribute
DOMString
width
};
partial
interface
HTMLHtmlElement
CEReactions
Reflect
attribute
DOMString
version
};
partial
interface
HTMLIFrameElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
scrolling
CEReactions
Reflect
attribute
DOMString
frameBorder
CEReactions
ReflectURL
attribute
USVString
longDesc

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
marginHeight
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
marginWidth
};
partial
interface
HTMLImageElement
CEReactions
Reflect
attribute
DOMString
name
CEReactions
ReflectURL
attribute
USVString
lowsrc
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
unsigned
long
hspace
CEReactions
Reflect
attribute
unsigned
long
vspace
CEReactions
ReflectURL
attribute
USVString
longDesc

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
border
};
partial
interface
HTMLInputElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
useMap
};
partial
interface
HTMLLegendElement
CEReactions
Reflect
attribute
DOMString
align
};
partial
interface
HTMLLIElement
CEReactions
Reflect
attribute
DOMString
type
};
partial
interface
HTMLLinkElement
CEReactions
Reflect
attribute
DOMString
charset
CEReactions
Reflect
attribute
DOMString
rev
CEReactions
Reflect
attribute
DOMString
target
};
User agents must treat
listing
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering.
partial
interface
HTMLMenuElement
CEReactions
Reflect
attribute
boolean
compact
};
partial
interface
HTMLMetaElement
CEReactions
Reflect
attribute
DOMString
scheme
};
User agents may treat the
scheme
content attribute on the
meta
element as an extension of the element's
name
content attribute when processing a
meta
element
with a
name
attribute whose value is one that the user agent
recognizes as supporting the
scheme
attribute.
User agents are encouraged to ignore the
scheme
attribute
and instead process the value given to the metadata name as if it had been specified for each
expected value of the
scheme
attribute.
For example, if the user agent acts on
meta
elements with
name
attributes having the value "eGMS.subject.keyword", and knows
that the
scheme
attribute is used with this metadata name,
then it could take the
scheme
attribute into account,
acting as if it was an extension of the
name
attribute. Thus
the following two
meta
elements could be treated as two elements giving values for
two different metadata names, one consisting of a combination of "eGMS.subject.keyword" and
"LGCL", and the other consisting of a combination of "eGMS.subject.keyword" and "ORLY":

meta
name
"eGMS.subject.keyword"
scheme
"LGCL"
content
"Abandoned vehicles"
meta
name
"eGMS.subject.keyword"
scheme
"ORLY"
content
"Mah car: kthxbye"
The suggested processing of this markup, however, would be equivalent to the following:
meta
name
"eGMS.subject.keyword"
content
"Abandoned vehicles"
meta
name
"eGMS.subject.keyword"
content
"Mah car: kthxbye"
HTMLObjectElement/useMap
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
6+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
Samsung Internet
Opera Android
12.1+
partial
interface
HTMLObjectElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
archive
CEReactions
Reflect
attribute
DOMString
code
CEReactions
Reflect
attribute
boolean
declare
CEReactions
Reflect
attribute
unsigned
long
hspace
CEReactions
Reflect
attribute
DOMString
standby
CEReactions
Reflect
attribute
unsigned
long
vspace
CEReactions
ReflectURL
attribute
DOMString
codeBase
CEReactions
Reflect
attribute
DOMString
codeType
CEReactions
Reflect
attribute
DOMString
useMap

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
border
};
partial
interface
HTMLOListElement
CEReactions
Reflect
attribute
boolean
compact
};
partial
interface
HTMLParagraphElement
CEReactions
Reflect
attribute
DOMString
align
};
The
param
element must implement the
HTMLParamElement
interface.
Exposed
Window
interface
HTMLParamElement
HTMLElement
HTMLConstructor
constructor
();

CEReactions
Reflect
attribute
DOMString
name
CEReactions
Reflect
attribute
DOMString
value
CEReactions
Reflect
attribute
DOMString
type
CEReactions
Reflect
attribute
DOMString
valueType
};
User agents must treat
plaintext
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering. (The parser has
special behavior for this element, though.)
partial
interface
HTMLPreElement
CEReactions
Reflect
attribute
long
width
};
partial
interface
HTMLStyleElement
CEReactions
Reflect
attribute
DOMString
type
};
partial
interface
HTMLScriptElement
CEReactions
Reflect
attribute
DOMString
charset
CEReactions
Reflect
attribute
DOMString
event
CEReactions
Reflect
="
for
"]
attribute
DOMString
htmlFor
};
partial
interface
HTMLTableElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
border
CEReactions
Reflect
attribute
DOMString
frame
CEReactions
Reflect
attribute
DOMString
rules
CEReactions
Reflect
attribute
DOMString
summary
CEReactions
Reflect
attribute
DOMString
width

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
bgColor
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
cellPadding
CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
cellSpacing
};
partial
interface
HTMLTableSectionElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
="
char
"]
attribute
DOMString
ch
CEReactions
Reflect
="
charoff
"]
attribute
DOMString
chOff
CEReactions
Reflect
attribute
DOMString
vAlign
};
partial
interface
HTMLTableCellElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
attribute
DOMString
axis
CEReactions
Reflect
attribute
DOMString
height
CEReactions
Reflect
attribute
DOMString
width

CEReactions
Reflect
="
char
"]
attribute
DOMString
ch
CEReactions
Reflect
="
charoff
"]
attribute
DOMString
chOff
CEReactions
Reflect
attribute
boolean
noWrap
CEReactions
Reflect
attribute
DOMString
vAlign

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
bgColor
};
partial
interface
HTMLTableRowElement
CEReactions
Reflect
attribute
DOMString
align
CEReactions
Reflect
="
char
"]
attribute
DOMString
ch
CEReactions
Reflect
="
charoff
"]
attribute
DOMString
chOff
CEReactions
Reflect
attribute
DOMString
vAlign

CEReactions
Reflect
attribute
LegacyNullToEmptyString
DOMString
bgColor
};
partial
interface
HTMLUListElement
CEReactions
Reflect
attribute
boolean
compact
CEReactions
Reflect
attribute
DOMString
type
};
User agents must treat
xmp
elements in a manner equivalent to
pre
elements in terms of semantics and for purposes of rendering. (The parser has special behavior for
this element though.)
partial
interface
Document
CEReactions
attribute
LegacyNullToEmptyString
DOMString
fgColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
linkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
vlinkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
alinkColor
CEReactions
attribute
LegacyNullToEmptyString
DOMString
bgColor

SameObject
readonly
attribute
HTMLCollection
anchors
SameObject
readonly
attribute
HTMLCollection
applets
undefined
clear
();
undefined
captureEvents
();
undefined
releaseEvents
();

SameObject
readonly
attribute
HTMLAllCollection
all
};
The attributes of the
Document
object listed in the first column of the following
table must
reflect
the content attribute on
the body element
with the
name given in the corresponding cell in the second column on the same row, if
the body
element
is a
body
element (as opposed to a
frameset
element).
When there is no
body element
or if it is a
frameset
element, the attributes must instead return the empty string on getting and
do nothing on setting.
IDL attribute
Content attribute
fgColor
text
linkColor
link
vlinkColor
vlink
alinkColor
alink
bgColor
bgcolor
The
anchors
attribute must return an
HTMLCollection
rooted at the
Document
node,
whose filter matches only
elements with
name
attributes.
The
applets
attribute must return an
HTMLCollection
rooted at the
Document
node,
whose filter matches nothing. (It exists for historical reasons.)
The
clear()
captureEvents()
and
releaseEvents()
methods must do nothing.
The
all
attribute
must return an
HTMLAllCollection
rooted at the
Document
node, whose
filter matches all elements.
partial
interface
Window
undefined
captureEvents
();
undefined
releaseEvents
();

Replaceable
SameObject
readonly
attribute
External
external
};
The
captureEvents()
and
releaseEvents()
methods must do nothing.
The
external
attribute of
the
Window
interface must return an instance of the
External
interface:
Exposed
Window
interface
External
undefined
AddSearchProvider
();
undefined
IsSearchProviderInstalled
();
};
The
AddSearchProvider()
and
IsSearchProviderInstalled()
methods
must do nothing.
17
IANA considerations
17.1
text/html
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
html
Required parameters:
No required parameters
Optional parameters:
charset
The
charset
parameter may be provided to specify the
document's character encoding
, overriding any
character encoding declarations
in the document other than a Byte Order
Mark (BOM). The parameter's value must be an
ASCII case-insensitive
match for the
string "
utf-8
".
[ENCODING]
Encoding considerations:
8bit (see the section on
character encoding
declarations
Security considerations:
Entire novels have been written about the security considerations that apply to HTML
documents. Many are listed in this document, to which the reader is referred for more details.
Some general concerns bear mentioning here, however:
HTML is scripted language, and has a large number of APIs (some of which are described in
this document). Script can expose the user to potential risks of information leakage, credential
leakage, cross-site scripting attacks, cross-site request forgeries, and a host of other
problems. While the designs in this specification are intended to be safe if implemented
correctly, a full implementation is a massive undertaking and, as with any software, user agents
are likely to have security bugs.
Even without scripting, there are specific features in HTML which, for historical reasons,
are required for broad compatibility with legacy content but that expose the user to unfortunate
security problems. In particular, the
img
element can be used in conjunction with
some other features as a way to effect a port scan from the user's location on the Internet.
This can expose local network topologies that the attacker would otherwise not be able to
determine.
HTML relies on a compartmentalization scheme sometimes known as the
same-origin
policy
. An
origin
in most cases consists of all the pages served from the same
host, on the same port, using the same protocol.
It is critical, therefore, to ensure that any untrusted content that forms part of a site be
hosted on a different
origin
than any sensitive content on that site. Untrusted
content can easily spoof any other page on the same origin, read data from that origin, cause
scripts in that origin to execute, submit forms to and from that origin even if they are
protected from cross-site request forgery attacks by unique tokens, and make use of any
third-party resources exposed to or rights granted to that origin.
Interoperability considerations:
Rules for processing both conforming and non-conforming content
are defined in this specification.
Published specification:
This document is the relevant specification. Labeling a resource
with the
text/html
type asserts that the resource is
an
HTML document
using
the HTML syntax
Applications that use this media type:
Web browsers, tools for processing web content, HTML authoring
tools, search engines, validators.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify an HTML
document. More information on detecting HTML documents is
available in
MIME Sniffing
[MIMESNIFF]
File extension(s):
html
" and "
htm
are commonly, but certainly not exclusively, used as the
extension for HTML documents.
Macintosh file type code(s):
TEXT
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
text/html
resources
either refer to the
indicated part
of the corresponding
Document
, or
provide state information for in-page scripts.
17.2
multipart/x-mixed-replace
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
multipart
Subtype name:
x-mixed-replace
Required parameters:
boundary
(defined in RFC2046)
[RFC2046]
Optional parameters:
No optional parameters.
Encoding considerations:
binary
Security considerations:
Subresources of a
multipart/x-mixed-replace
resource can be of any type, including types with non-trivial
security implications such as
text/html
Interoperability considerations:
None.
Published specification:
This specification describes processing rules for web browsers.
Conformance requirements for generating resources with this type are the same as for
multipart/mixed
[RFC2046]
Applications that use this media type:
This type is intended to be used in resources generated by web servers, for consumption by web browsers.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify a
multipart/x-mixed-replace
resource.
File extension(s):
No specific file extensions are recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
multipart/x-mixed-replace
resources apply to each body part as defined by the type
used by that body part.
17.3
application/xhtml+xml
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
application
Subtype name:
xhtml+xml
Required parameters:
Same as for
application/xml
[RFC7303]
Optional parameters:
Same as for
application/xml
[RFC7303]
Encoding considerations:
Same as for
application/xml
[RFC7303]
Security considerations:
Same as for
application/xml
[RFC7303]
Interoperability considerations:
Same as for
application/xml
[RFC7303]
Published specification:
Labeling a resource with the
application/xhtml+xml
type asserts that the
resource is an XML document that likely has a
document element
from the
HTML
namespace
. Thus, the relevant specifications are
XML
Namespaces in
XML
, and this specification.
[XML]
[XMLNS]
Applications that use this media type:
Same as for
application/xml
[RFC7303]
Additional information:
Magic number(s):
Same as for
application/xml
[RFC7303]
File extension(s):
xhtml
" and "
xht
" are sometimes used as
extensions for XML resources that have a
document element
from the
HTML
namespace
Macintosh file type code(s):
TEXT
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
application/xhtml+xml
resources have the same semantics as with any
XML MIME type
[RFC7303]
17.4
text/ping
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
ping
Required parameters:
No parameters
Optional parameters:
charset
The
charset
parameter may be provided. The parameter's value must be
utf-8
". This parameter serves no purpose; it is only allowed for
compatibility with legacy servers.
Encoding considerations:
Not applicable.
Security considerations:
If used exclusively in the fashion described in the context of
hyperlink auditing
, this type introduces no new
security concerns.
Interoperability considerations:
Rules applicable to this type are defined in this specification.
Published specification:
This document is the relevant specification.
Applications that use this media type:
Web browsers.
Additional information:
Magic number(s):
text/ping
resources always consist of the four
bytes 0x50 0x49 0x4E 0x47 (`
PING
`).
File extension(s):
No specific file extension is recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
Only intended for use with HTTP POST requests generated as part
of a web browser's processing of the
ping
attribute.
Author:
Ian Hickson
Change controller:
W3C
Fragments
have no meaning with
text/ping
resources.
17.5
application/microdata+json
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
application
Subtype name:
microdata+json
Required parameters:
Same as for
application/json
[JSON]
Optional parameters:
Same as for
application/json
[JSON]
Encoding considerations:
8bit (always UTF-8)
Security considerations:
Same as for
application/json
[JSON]
Interoperability considerations:
Same as for
application/json
[JSON]
Published specification:
Labeling a resource with the
application/microdata+json
type asserts that the
resource is a JSON text that consists of an object with a single entry called "
items
" consisting of an array of entries, each of which consists of an object
with an entry called "
id
" whose value is a string, an entry called "
type
" whose value is another string, and an entry called "
properties
" whose value is an object whose entries each have a value consisting
of an array of either objects or strings, the objects being of the same form as the objects in
the aforementioned "
items
" entry. Thus, the relevant specifications are
JSON
and this specification.
[JSON]
Applications that use this media type:
Applications that transfer data intended for use with HTML's microdata feature, especially in
the context of drag-and-drop, are the primary application class for this type.
Additional information:
Magic number(s):
Same as for
application/json
[JSON]
File extension(s):
Same as for
application/json
[JSON]
Macintosh file type code(s):
Same as for
application/json
[JSON]
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Ian Hickson
Change controller:
W3C
Fragments
used with
application/microdata+json
resources have the same semantics as when used with
application/json
(namely, at the time of writing, no semantics at all).
[JSON]
17.6
application/speculationrules+json
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
application
Subtype name:
microdata+json
Required parameters:
Same as for
application/json
[JSON]
Optional parameters:
Same as for
application/json
[JSON]
Encoding considerations:
8bit (always UTF-8)
Security considerations:
Same as for
application/json
[JSON]
Interoperability considerations:
Same as for
application/json
[JSON]
Published specification:
Labeling a resource with the
application/microdata+json
type asserts that the
resource is a JSON text that follows the
speculation rule set authoring requirements
. Thus, the relevant specifications are
JSON
and this specification.
[JSON]
Applications that use this media type:
Web browsers.
Additional information:
Magic number(s):
Same as for
application/json
[JSON]
File extension(s):
Same as for
application/json
[JSON]
Macintosh file type code(s):
Same as for
application/json
[JSON]
Person & email address to contact for further information:
Domenic Denicola
Intended usage:
Common
Restrictions on usage:
No restrictions apply.
Author:
Domenic Denicola
Change controller:
WHATWG
Fragments
used with
application/speculationrules+json
resources have the same semantics as when used with
application/json
(namely, at the time of writing, no semantics at all).
[JSON]
17.7
text/event-stream
This registration is for community review and will be submitted to the IESG for review,
approval, and registration with IANA.
Type name:
text
Subtype name:
event-stream
Required parameters:
No parameters
Optional parameters:
charset
The
charset
parameter may be provided. The parameter's value must be
utf-8
". This parameter serves no purpose; it is only allowed for
compatibility with legacy servers.
Encoding considerations:
8bit (always UTF-8)
Security considerations:
An event stream from an origin distinct from the origin of the content consuming the event
stream can result in information leakage. To avoid this, user agents are required to apply CORS
semantics.
[FETCH]
Event streams can overwhelm a user agent; a user agent is expected to apply suitable
restrictions to avoid depleting local resources because of an overabundance of information from
an event stream.
Servers can be overwhelmed if a situation develops in which the server is causing clients to
reconnect rapidly. Servers should use a 5xx status code to indicate capacity problems, as this
will prevent conforming clients from reconnecting automatically.
Interoperability considerations:
Rules for processing both conforming and non-conforming content are defined in this
specification.
Published specification:
This document is the relevant specification.
Applications that use this media type:
Web browsers and tools using web services.
Additional information:
Magic number(s):
No sequence of bytes can uniquely identify an event stream.
File extension(s):
No specific file extensions are recommended for this type.
Macintosh file type code(s):
No specific Macintosh file type codes are recommended for this type.
Person & email address to contact for further information:
Ian Hickson
Intended usage:
Common
Restrictions on usage:
This format is only expected to be used by dynamic open-ended streams served using HTTP or a
similar protocol. Finite resources are not expected to be labeled with this type.
Author:
Ian Hickson
Change controller:
W3C
Fragments
have no meaning with
text/event-stream
resources.
17.8
web+
scheme prefix
This section describes a convention for use with the IANA URI scheme registry. It does not
itself register a specific scheme.
[RFC7595]
Scheme name:
Schemes starting with the four characters "
web+
" followed by one or more letters in the range
Status:
Permanent
Scheme syntax:
Scheme-specific.
Scheme semantics:
Scheme-specific.
Encoding considerations:
All "
web+
" schemes should use UTF-8 encodings where relevant.
Applications/protocols that use this scheme name:
Scheme-specific.
Interoperability considerations:
The scheme is expected to be used in the context of web applications.
Security considerations:
Any web page is able to register a handler for all "
web+
" schemes. As
such, these schemes must not be used for features intended to be core platform features (e.g.,
HTTP). Similarly, such schemes must not store confidential information in their URLs, such as
usernames, passwords, personal information, or confidential project names.
Contact:
Ian Hickson
Change controller:
Ian Hickson
References:
Custom scheme handlers
, HTML Living Standard:
Index
The following sections only cover conforming elements and features.
Elements
This section is non-normative.
List of elements
Element
Description
Categories
Parents†
Children
Attributes
Interface
Hyperlink
flow
phrasing
*;
interactive
palpable
phrasing
transparent
globals
href
target
ping
rel
hreflang
type
referrerpolicy
HTMLAnchorElement
abbr
Abbreviation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
address
Contact information for a page or
article
element
flow
palpable
flow
flow
globals
HTMLElement
area
Hyperlink or dead area on an image map
flow
phrasing
phrasing
empty
globals
alt
coords
shape
href
target
ping
rel
referrerpolicy
HTMLAreaElement
article
Self-contained syndicatable or reusable composition
flow
sectioning
palpable
flow
flow
globals
HTMLElement
aside
Sidebar for tangentially related content
flow
sectioning
palpable
flow
flow
globals
HTMLElement
audio
Audio player
flow
phrasing
embedded
interactive
palpable
phrasing
source
*;
track
*;
transparent
globals
src
crossorigin
preload
autoplay
loading
loop
muted
controls
HTMLAudioElement
Keywords
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
base
Base URL and default target
navigable
for
hyperlinks
and
forms
metadata
head
empty
globals
href
target
HTMLBaseElement
bdi
Text directionality isolation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
bdo
Text directionality formatting
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
blockquote
A section quoted from another source
flow
palpable
flow
flow
globals
cite
HTMLQuoteElement
body
Document body
none
html
flow
globals
onafterprint
onbeforeprint
onbeforeunload
onhashchange
onlanguagechange
onmessage
onmessageerror
onoffline
ononline
onpageswap
onpagehide
onpagereveal
onpageshow
onpopstate
onrejectionhandled
onstorage
onunhandledrejection
onunload
HTMLBodyElement
br
Line break, e.g. in poem or postal address
flow
phrasing
phrasing
empty
globals
HTMLBRElement
button
Button control
flow
phrasing
interactive
listed
labelable
submittable
form-associated
palpable
phrasing
phrasing
globals
command
commandfor
disabled
form
formaction
formenctype
formmethod
formnovalidate
formtarget
name
popovertarget
popovertargetaction
type
value
HTMLButtonElement
canvas
Scriptable bitmap canvas
flow
phrasing
embedded
palpable
phrasing
transparent
globals
width
height
HTMLCanvasElement
caption
Table caption
none
table
flow
globals
HTMLTableCaptionElement
cite
Title of a work
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
code
Computer code
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
col
Table column
none
colgroup
empty
globals
span
HTMLTableColElement
colgroup
Group of columns in a table
none
table
col
*;
template
globals
span
HTMLTableColElement
data
Machine-readable equivalent
flow
phrasing
palpable
phrasing
phrasing
globals
value
HTMLDataElement
datalist
Container for options for
combo box control
flow
phrasing
phrasing
phrasing
*;
option
*;
script-supporting elements
globals
HTMLDataListElement
dd
Content for corresponding
dt
element(s)
none
dl
div
flow
globals
HTMLElement
del
A removal from the document
flow
phrasing
*;
palpable
phrasing
transparent
globals
cite
datetime
HTMLModElement
details
Disclosure control for hiding details
flow
interactive
palpable
flow
summary
*;
flow
globals
name
open
HTMLDetailsElement
dfn
Defining instance
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
dialog
Dialog box or window
flow
flow
flow
globals
open
HTMLDialogElement
div
Generic flow container, or container for name-value groups in
dl
elements
flow
palpable
select
element inner content elements
optgroup
element inner content elements
option
element inner content elements
flow
dl
select
element inner content elements
optgroup
element inner content elements
option
element inner content elements
flow
select
element inner content elements
*;
optgroup
element inner content elements
*;
option
element inner content elements
globals
HTMLDivElement
dl
Association list consisting of zero or more name-value groups
flow
palpable
flow
dt
*;
dd
*;
div
*;
script-supporting elements
globals
HTMLDListElement
dt
Legend for corresponding
dd
element(s)
none
dl
div
flow
globals
HTMLElement
em
Stress emphasis
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
embed
Plugin
flow
phrasing
embedded
interactive
palpable
phrasing
empty
globals
src
type
width
height
any*
HTMLEmbedElement
fieldset
Group of form controls
flow
listed
form-associated
palpable
flow
legend
*;
flow
globals
disabled
form
name
HTMLFieldSetElement
figcaption
Caption for
figure
none
figure
flow
globals
HTMLElement
figure
Figure with optional caption
flow
palpable
flow
figcaption
*;
flow
globals
HTMLElement
footer
Footer for a page or section
flow
palpable
flow
flow
globals
HTMLElement
form
User-submittable form
flow
palpable
flow
flow
globals
accept-charset
action
autocomplete
enctype
method
name
novalidate
rel
target
HTMLFormElement
h1
h2
h3
h4
h5
h6
Heading
flow
heading
palpable
legend
summary
flow
phrasing
globals
HTMLHeadingElement
head
Container for document metadata
none
html
metadata content
globals
HTMLHeadElement
header
Introductory or navigational aids for a page or section
flow
palpable
flow
flow
globals
HTMLElement
hgroup
Heading container
flow
palpable
legend
summary
flow
h1
h2
h3
h4
h5
h6
script-supporting elements
globals
HTMLElement
hr
Thematic break
flow
select
element inner content elements
flow
select
element inner content elements
empty
globals
HTMLHRElement
html
Root element
none
none*
head
*;
body
globals
HTMLHtmlElement
Alternate voice
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
iframe
Child navigable
flow
phrasing
embedded
interactive
palpable
phrasing
empty
globals
src
srcdoc
name
sandbox
allow
allowfullscreen
width
height
referrerpolicy
loading
HTMLIFrameElement
img
Image
flow
phrasing
embedded
interactive
*;
form-associated
palpable
phrasing
picture
empty
globals
alt
src
srcset
sizes
crossorigin
usemap
ismap
controls
width
height
referrerpolicy
decoding
loading
fetchpriority
HTMLImageElement
input
Form control
flow
phrasing
interactive
*;
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
empty
globals
accept
alpha
alt
autocomplete
checked
colorspace
dirname
disabled
form
formaction
formenctype
formmethod
formnovalidate
formtarget
height
list
max
maxlength
min
minlength
multiple
name
pattern
placeholder
popovertarget
popovertargetaction
readonly
required
size
src
step
type
value
width
HTMLInputElement
ins
An addition to the document
flow
phrasing
*;
palpable
phrasing
transparent
globals
cite
datetime
HTMLModElement
kbd
User input
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
label
Caption for a form control
flow
phrasing
interactive
palpable
phrasing
phrasing
globals
for
HTMLLabelElement
legend
Caption for
fieldset
none
fieldset
optgroup
phrasing
*;
heading content
globals
HTMLLegendElement
li
List item
none
ol
ul
flow
globals
value
HTMLLIElement
link
Link metadata
metadata
flow
*;
phrasing
head
noscript
*;
phrasing
empty
globals
href
crossorigin
rel
as
media
hreflang
type
sizes
imagesrcset
imagesizes
referrerpolicy
integrity
blocking
color
disabled
fetchpriority
HTMLLinkElement
main
Container for the dominant contents of the document
flow
palpable
flow
flow
globals
HTMLElement
map
Image map
flow
phrasing
*;
palpable
phrasing
transparent
area
globals
name
HTMLMapElement
mark
Highlight
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
MathML
math
MathML root
flow
phrasing
embedded
palpable
phrasing
per
[MATHML]
per
[MATHML]
Element
Menu of commands
flow
palpable
flow
li
script-supporting elements
globals
HTMLMenuElement
meta
Text metadata
metadata
flow
*;
phrasing
head
noscript
*;
phrasing
empty
globals
name
http-equiv
content
charset
media
HTMLMetaElement
meter
Gauge
flow
phrasing
labelable
palpable
phrasing
phrasing
globals
value
min
max
low
high
optimum
HTMLMeterElement
nav
Section with navigational links
flow
sectioning
palpable
flow
flow
globals
HTMLElement
noscript
Fallback content for script
metadata
flow
phrasing
select
element inner content elements
optgroup
element inner content elements
head
*;
phrasing
varies*
globals
HTMLElement
object
Image,
child navigable
, or
plugin
flow
phrasing
embedded
interactive
*;
listed
form-associated
palpable
phrasing
transparent
globals
data
type
name
form
width
height
HTMLObjectElement
ol
Ordered list
flow
palpable
flow
li
script-supporting elements
globals
reversed
start
type
HTMLOListElement
optgroup
Group of options in a list box
select
element inner content elements
select
div
optgroup
element inner content elements
legend
globals
disabled
label
HTMLOptGroupElement
option
Option in a list box or combo box control
select
element inner content elements
optgroup
element inner content elements
select
datalist
optgroup
div
text
*;
option
element inner content elements
globals
disabled
label
selected
value
HTMLOptionElement
output
Calculated output value
flow
phrasing
listed
labelable
resettable
form-associated
palpable
phrasing
phrasing
globals
for
form
name
HTMLOutputElement
Paragraph
flow
palpable
flow
phrasing
globals
HTMLParagraphElement
picture
Image
flow
phrasing
embedded
palpable
phrasing
source
*;
one
img
script-supporting elements
globals
HTMLPictureElement
pre
Block of preformatted text
flow
palpable
flow
phrasing
globals
HTMLPreElement
progress
Progress bar
flow
phrasing
labelable
palpable
phrasing
phrasing
globals
value
max
HTMLProgressElement
Quotation
flow
phrasing
palpable
phrasing
phrasing
globals
cite
HTMLQuoteElement
rp
Parenthesis for ruby annotation text
none
ruby
text
globals
HTMLElement
rt
Ruby annotation text
none
ruby
phrasing
globals
HTMLElement
ruby
Ruby annotation(s)
flow
phrasing
palpable
phrasing
phrasing
rt
rp
globals
HTMLElement
Inaccurate text
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
samp
Computer output
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
script
Embedded script
metadata
flow
phrasing
script-supporting
head
phrasing
script-supporting
script, data, or script documentation*
globals
src
type
nomodule
async
defer
crossorigin
integrity
referrerpolicy
blocking
fetchpriority
HTMLScriptElement
Container for search controls
flow
palpable
flow
flow
globals
HTMLElement
section
Generic document or application section
flow
sectioning
palpable
flow
flow
globals
HTMLElement
select
List box control
flow
phrasing
interactive
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
select
element inner content elements
button
globals
autocomplete
disabled
form
multiple
name
required
size
HTMLSelectElement
selectedcontent
Mirrors content from an
option
none
button
empty
globals
HTMLSelectedContentElement
slot
Shadow tree slot
flow
phrasing
phrasing
transparent
globals
name
HTMLSlotElement
small
Side comment
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
source
Image source for
img
or media source for
video
or
audio
none
picture
video
audio
empty
globals
type
media
src
srcset
sizes
width
height
HTMLSourceElement
span
Generic phrasing container
flow
phrasing
palpable
phrasing
option
element inner content elements
phrasing
globals
HTMLSpanElement
strong
Importance
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
style
Embedded styling information
metadata
head
noscript
text*
globals
media
blocking
HTMLStyleElement
sub
Subscript
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
summary
Caption for
details
none
details
phrasing
heading content
globals
HTMLElement
sup
Superscript
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
SVG
svg
SVG root
flow
phrasing
embedded
palpable
phrasing
per
[SVG]
per
[SVG]
SVGSVGElement
table
Table
flow
palpable
flow
caption
*;
colgroup
*;
thead
*;
tbody
*;
tfoot
*;
tr
*;
script-supporting elements
globals
HTMLTableElement
tbody
Group of rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
td
Table cell
none
tr
flow
globals
colspan
rowspan
headers
HTMLTableCellElement
template
Template
metadata
flow
phrasing
script-supporting
metadata
phrasing
script-supporting
colgroup
empty
globals
shadowrootmode
shadowrootdelegatesfocus
shadowrootslotassignment
shadowrootclonable
shadowrootserializable
shadowrootcustomelementregistry
HTMLTemplateElement
textarea
Multiline text controls
flow
phrasing
interactive
listed
labelable
submittable
resettable
form-associated
palpable
phrasing
text
globals
autocomplete
cols
dirname
disabled
form
maxlength
minlength
name
placeholder
readonly
required
rows
wrap
HTMLTextAreaElement
tfoot
Group of footer rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
th
Table header cell
interactive
tr
flow
globals
colspan
rowspan
headers
scope
abbr
HTMLTableCellElement
thead
Group of heading rows in a table
none
table
tr
script-supporting elements
globals
HTMLTableSectionElement
time
Machine-readable equivalent of date- or time-related data
flow
phrasing
palpable
phrasing
phrasing
globals
datetime
HTMLTimeElement
title
Document title
metadata
head
text
globals
HTMLTitleElement
tr
Table row
none
table
thead
tbody
tfoot
th
*;
td
script-supporting elements
globals
HTMLTableRowElement
track
Timed text track
none
audio
video
empty
globals
default
kind
label
src
srclang
HTMLTrackElement
Unarticulated annotation
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
ul
List
flow
palpable
flow
li
script-supporting elements
globals
HTMLUListElement
var
Variable
flow
phrasing
palpable
phrasing
phrasing
globals
HTMLElement
video
Video player
flow
phrasing
embedded
interactive
palpable
phrasing
source
*;
track
*;
transparent
globals
src
crossorigin
poster
preload
autoplay
playsinline
loading
loop
muted
controls
width
height
HTMLVideoElement
wbr
Line breaking opportunity
flow
phrasing
phrasing
empty
globals
HTMLElement
autonomous custom elements
Author-defined elements
flow
phrasing
palpable
flow
phrasing
transparent
globals
; any, as decided by the element's author
Supplied by the element's author (inherits from
HTMLElement
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
element's "Parents" column says "phrasing", so any
element whose content model contains the "phrasing" category could be a parent of an
element. Since the "flow" category includes all the "phrasing" elements, that means
the
th
element could be a parent to an
element.
Element content categories
This section is non-normative.
List of element content categories
Category
Elements
Elements with exceptions
Metadata content
base
link
meta
noscript
script
style
template
title
Flow content
abbr
address
article
aside
audio
bdi
bdo
blockquote
br
button
canvas
cite
code
data
datalist
del
details
dfn
dialog
div
dl
em
embed
fieldset
figure
footer
form
h1
h2
h3
h4
h5
h6
header
hgroup
hr
iframe
img
input
ins
kbd
label
map
mark
MathML
math
meter
nav
noscript
object
ol
output
picture
pre
progress
ruby
samp
script
section
select
slot
small
span
strong
sub
sup
SVG
svg
table
template
textarea
time
ul
var
video
wbr
autonomous custom elements
Text
area
(if it is a descendant of a
map
element);
link
(if it is
allowed in the body
);
main
(if it is a
hierarchically correct
main
element
);
meta
(if the
itemprop
attribute is present)
Sectioning content
article
aside
nav
section
Heading content
h1
h2
h3
h4
h5
h6
hgroup
Phrasing content
abbr
audio
bdi
bdo
br
button
canvas
cite
code
data
datalist
del
dfn
em
embed
iframe
img
input
ins
kbd
label
map
mark
MathML
math
meter
noscript
object
output
picture
progress
ruby
samp
script
select
selectedcontent
slot
small
span
strong
sub
sup
SVG
svg
template
textarea
time
var
video
wbr
autonomous custom elements
Text
area
(if it is a descendant of a
map
element);
link
(if it is
allowed in the body
);
meta
(if the
itemprop
attribute is present)
Embedded content
audio
canvas
embed
iframe
img
MathML
math
object
picture
SVG
svg
video
Interactive content
button
details
embed
iframe
label
select
textarea
(if the
href
attribute is present);
audio
(if the
controls
attribute is present);
img
(if the
usemap
or
controls
attribute is present);
input
(if the
type
attribute is
not
in the
Hidden
state);
video
(if the
controls
attribute is present)
Form-associated elements
button
fieldset
input
label
object
output
select
textarea
img
form-associated custom elements
Listed elements
button
fieldset
input
object
output
select
textarea
form-associated custom elements
Submittable elements
button
input
select
textarea
form-associated custom elements
Resettable elements
input
output
select
textarea
form-associated custom elements
Autocapitalize-and-autocorrect
inheriting elements
button
fieldset
input
output
select
textarea
Labelable elements
button
input
meter
output
progress
select
textarea
form-associated custom elements
Palpable content
abbr
address
article
aside
bdi
bdo
blockquote
button
canvas
cite
code
data
del
details
dfn
div
em
embed
fieldset
figure
footer
form
h1
h2
h3
h4
h5
h6
header
hgroup
iframe
img
ins
kbd
label
main
map
mark
MathML
math
meter
nav
object
output
picture
pre
progress
ruby
samp
section
select
small
span
strong
sub
sup
SVG
svg
table
textarea
time
var
video
autonomous custom elements
audio
(if the
controls
attribute is present);
dl
(if the element's children include at least one name-value group);
input
(if the
type
attribute is
not
in the
Hidden
state);
(if the element's children include at least one
li
element);
ol
(if the element's children include at least one
li
element);
ul
(if the element's children include at least one
li
element);
Text
that is not
inter-element whitespace
Script-supporting elements
script
template
select
element inner content elements
option
optgroup
hr
script-supporting elements
noscript
div
optgroup
element inner content elements
option
script-supporting elements
noscript
div
option
element inner content elements
div
phrasing content
except for
datalist
object
interactive content
, or elements with
tabindex
Attributes
This section is non-normative.
List of attributes (excluding event handler content attributes)
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/*
, or
image/*
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
, none of which are
identical to
another, each 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
Permissions policy
to be applied to the
iframe
's contents
Serialized permissions policy
allowfullscreen
iframe
Whether to allow the
iframe
's contents to use
requestFullscreen()
Boolean attribute
alpha
input
Allow the color's alpha component to be set
Boolean attribute
alt
area
img
input
Replacement text for use when images are not available
Text
as
link
Destination for a preload request (for
rel
="
preload
" and
rel
="
modulepreload
")
Preload destination
, for
rel
="
preload
";
module preload destination
, for
rel
="
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*
autocorrect
HTML elements
Recommended autocorrection behavior (for supported input methods)
on
";
off
";
the empty string
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
blocking
link
script
style
Whether the element is
potentially render-blocking
Unordered set of unique space-separated tokens
charset
meta
Character encoding declaration
utf-8
checked
input
Whether the control is checked
Boolean attribute
cite
blockquote
del
ins
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
closedby
dialog
Which user actions will close the dialog
any
";
closerequest
";
none
";
color
link
Color to use when customizing a site's icon (for
rel
="
mask-icon
")
CSS

colorspace
input
The color space of the serialized color
limited-srgb
";
display-p3
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
button
Indicates to the targeted element which action to take.
toggle-popover
";
show-popover
";
hide-popover
";
close
";
request-close
";
show-modal
";
custom command keyword
commandfor
button
Targets another element to be invoked.
ID
content
meta
Value of the element
Text
contenteditable
HTML elements
Whether the element is editable
true
";
false
";
plaintext-only
";
the empty string
controls
audio
video
img
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
";
the empty string
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
form-associated custom elements
Whether the form control is disabled
Boolean attribute
disabled
fieldset
Whether the descendant form controls, except any inside
legend
, are disabled
Boolean attribute
disabled
link
Whether the link is disabled
Boolean attribute
area
Whether to download the resource instead of navigating to it, and its filename 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
";
";
send
fetchpriority
img
link
script
Sets the
priority
for
fetches
initiated by the element
auto
";
high
";
low
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
consisting of IDs*
form
button
fieldset
input
object
output
select
textarea
form-associated custom elements
Associates the element with a
form
element
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
Navigable
for
form submission
Valid navigable target name or keyword
headers
td
th
The header cells for this cell
Unordered set of unique space-separated tokens
consisting of IDs*
headingoffset
HTML elements
Offsets heading levels for descendants
Valid non-negative integer
between 0 and 8
headingreset
HTML elements
Prevents a heading offset computation from traversing beyond the element with the attribute
Boolean attribute
height
canvas
embed
iframe
img
input
object
source
(in
picture
);
video
Vertical dimension
Valid non-negative integer
hidden
HTML elements
Whether the element is relevant
until-found
";
hidden
";
the empty string
high
meter
Low limit of high range
Valid floating-point number
href
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
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 (for
rel
="
preload
")
Valid source size list
imagesrcset
link
Images to use in different situations, e.g., high-resolution displays, small monitors, etc. (for
rel
="
preload
")
Comma-separated list of
image candidate strings
inert
HTML elements
Whether the element is
inert
Boolean attribute
inputmode
HTML elements
Hint for selecting an input modality
none
";
text
";
tel
";
email
";
url
";
numeric
";
decimal
";
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
consisting of
valid absolute URLs
defined property names
, or text*
itemref
HTML elements
Referenced
elements
Unordered set of unique space-separated tokens
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
consisting of
valid absolute URLs
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
loading
iframe
img
audio
video
Used when determining loading deferral
lazy
";
eager
loop
audio
video
Whether to loop the
media resource
Boolean attribute
low
meter
High limit of low range
Valid floating-point number
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
meta
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.elements
API
Text
name
details
Name of group of mutually-exclusive
details
elements
Text
name
form
Name of form to use in the
document.forms
API
Text
name
iframe
object
Name of
content navigable
Valid navigable target name or keyword
name
map
Name of
image map
to
reference
from the
usemap
attribute
Text
name
meta
Metadata name
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
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
popover
HTML elements
Makes the element a
popover
element
auto
";
manual
";
hint
";
the empty string
popovertarget
button
input
Targets a popover element to toggle, show, or hide
ID
popovertargetaction
button
input
Indicates whether a targeted popover element is to be toggled, shown, or hidden
toggle
";
show
";
hide
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
";
the empty string
readonly
input
textarea
Whether to allow the value to be edited by the user
Boolean attribute
readonly
form-associated custom elements
Affects
willValidate
, plus any behavior added by the custom element author
Boolean attribute
referrerpolicy
area
iframe
img
link
script
Referrer policy
for
fetches
initiated by the element
Referrer policy
rel
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-downloads
allow-forms
allow-modals
allow-orientation-lock
allow-pointer-lock
allow-popups
allow-popups-to-escape-sandbox
allow-presentation
allow-same-origin
allow-scripts
allow-top-navigation
allow-top-navigation-by-user-activation
allow-top-navigation-to-custom-protocols
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
shadowrootclonable
template
Sets
clonable
on a declarative shadow root
Boolean attribute
shadowrootcustomelementregistry
template
Enables declarative shadow roots to indicate they will use a custom element registry
Boolean attribute
shadowrootdelegatesfocus
template
Sets
delegates focus
on a declarative shadow root
Boolean attribute
shadowrootmode
template
Enables streaming declarative shadow roots
open
";
closed
shadowrootserializable
template
Sets
serializable
on a declarative shadow root
Boolean attribute
shadowrootslotassignment
template
Sets
slot assignment
on a declarative shadow root
named
";
manual
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
";
the empty string
src
audio
embed
iframe
img
input
script
source
(in
video
or
audio
);
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
iframe
srcdoc
document
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
area
Navigable
for
hyperlink
Valid navigable target name or keyword
target
base
Default
navigable
for
hyperlink
and
form submission
Valid navigable target name or keyword
target
form
Navigable
for
form submission
Valid navigable target 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
pattern
attribute)
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
"; the empty string
type
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
input
type keyword
type
ol
Kind of list marker
";
";
";
";
type
script
Type of script
module
"; "
importmap
"; "
speculationrules
"; a
valid MIME type string
that is not a
JavaScript MIME type essence match
usemap
img
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
width
canvas
embed
iframe
img
input
object
source
(in
picture
);
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
writingsuggestions
HTML elements
Whether the element can offer writing suggestions or not.
true
";
false
";
the empty string
An asterisk (*) in a cell indicates that the actual rules are more
complicated than indicated in the table above.
HTMLElement/drag_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/dragend_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/dragenter_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/dragleave_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/dragover_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/dragstart_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
HTMLElement/drop_event
Support in all current engines.
Firefox
9+
Safari
3.1+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
List of event handler content attributes
Attribute
Element(s)
Description
Value
onafterprint
body
afterprint
event handler for
Window
object
Event handler content attribute
onauxclick
HTML elements
auxclick
event handler
Event handler content attribute
onbeforeinput
HTML elements
beforeinput
event handler
Event handler content attribute
onbeforematch
HTML elements
beforematch
event handler
Event handler content attribute
onbeforeprint
body
beforeprint
event handler for
Window
object
Event handler content attribute
onbeforeunload
body
beforeunload
event handler for
Window
object
Event handler content attribute
onbeforetoggle
HTML elements
beforetoggle
event handler
Event handler content attribute
onblur
HTML elements
blur
event handler
Event handler content attribute
oncancel
HTML elements
cancel
event handler
Event handler content attribute
oncanplay
HTML elements
canplay
event handler
Event handler content attribute
oncanplaythrough
HTML elements
canplaythrough
event handler
Event handler content attribute
onchange
HTML elements
change
event handler
Event handler content attribute
onclick
HTML elements
click
event handler
Event handler content attribute
onclose
HTML elements
close
event handler
Event handler content attribute
oncommand
HTML elements
command
event handler
Event handler content attribute
oncontextlost
HTML elements
contextlost
event handler
Event handler content attribute
oncontextmenu
HTML elements
contextmenu
event handler
Event handler content attribute
oncontextrestored
HTML elements
contextrestored
event handler
Event handler content attribute
oncopy
HTML elements
copy
event handler
Event handler content attribute
oncuechange
HTML elements
cuechange
event handler
Event handler content attribute
oncut
HTML elements
cut
event handler
Event handler content attribute
ondblclick
HTML elements
dblclick
event handler
Event handler content attribute
ondrag
HTML elements
drag
event handler
Event handler content attribute
ondragend
HTML elements
dragend
event handler
Event handler content attribute
ondragenter
HTML elements
dragenter
event handler
Event handler content attribute
ondragleave
HTML elements
dragleave
event handler
Event handler content attribute
ondragover
HTML elements
dragover
event handler
Event handler content attribute
ondragstart
HTML elements
dragstart
event handler
Event handler content attribute
ondrop
HTML elements
drop
event handler
Event handler content attribute
ondurationchange
HTML elements
durationchange
event handler
Event handler content attribute
onemptied
HTML elements
emptied
event handler
Event handler content attribute
onended
HTML elements
ended
event handler
Event handler content attribute
onerror
HTML elements
error
event handler
Event handler content attribute
onfocus
HTML elements
focus
event handler
Event handler content attribute
onformdata
HTML elements
formdata
event handler
Event handler content attribute
onhashchange
body
hashchange
event handler for
Window
object
Event handler content attribute
oninput
HTML elements
input
event handler
Event handler content attribute
oninvalid
HTML elements
invalid
event handler
Event handler content attribute
onkeydown
HTML elements
keydown
event handler
Event handler content attribute
onkeypress
HTML elements
keypress
event handler
Event handler content attribute
onkeyup
HTML elements
keyup
event handler
Event handler content attribute
onlanguagechange
body
languagechange
event handler for
Window
object
Event handler content attribute
onload
HTML elements
load
event handler
Event handler content attribute
onloadeddata
HTML elements
loadeddata
event handler
Event handler content attribute
onloadedmetadata
HTML elements
loadedmetadata
event handler
Event handler content attribute
onloadstart
HTML elements
loadstart
event handler
Event handler content attribute
onmessage
body
message
event handler for
Window
object
Event handler content attribute
onmessageerror
body
messageerror
event handler for
Window
object
Event handler content attribute
onmousedown
HTML elements
mousedown
event handler
Event handler content attribute
onmouseenter
HTML elements
mouseenter
event handler
Event handler content attribute
onmouseleave
HTML elements
mouseleave
event handler
Event handler content attribute
onmousemove
HTML elements
mousemove
event handler
Event handler content attribute
onmouseout
HTML elements
mouseout
event handler
Event handler content attribute
onmouseover
HTML elements
mouseover
event handler
Event handler content attribute
onmouseup
HTML elements
mouseup
event handler
Event handler content attribute
onoffline
body
offline
event handler for
Window
object
Event handler content attribute
ononline
body
online
event handler for
Window
object
Event handler content attribute
onpagehide
body
pagehide
event handler for
Window
object
Event handler content attribute
onpagereveal
body
pagereveal
event handler for
Window
object
Event handler content attribute
onpageshow
body
pageshow
event handler for
Window
object
Event handler content attribute
onpageswap
body
pageswap
event handler for
Window
object
Event handler content attribute
onpaste
HTML elements
paste
event handler
Event handler content attribute
onpause
HTML elements
pause
event handler
Event handler content attribute
onplay
HTML elements
play
event handler
Event handler content attribute
onplaying
HTML elements
playing
event handler
Event handler content attribute
onpopstate
body
popstate
event handler for
Window
object
Event handler content attribute
onprogress
HTML elements
progress
event handler
Event handler content attribute
onratechange
HTML elements
ratechange
event handler
Event handler content attribute
onreset
HTML elements
reset
event handler
Event handler content attribute
onresize
HTML elements
resize
event handler
Event handler content attribute
onrejectionhandled
body
rejectionhandled
event handler for
Window
object
Event handler content attribute
onscroll
HTML elements
scroll
event handler
Event handler content attribute
onscrollend
HTML elements
scrollend
event handler
Event handler content attribute
onsecuritypolicyviolation
HTML elements
securitypolicyviolation
event handler
Event handler content attribute
onseeked
HTML elements
seeked
event handler
Event handler content attribute
onseeking
HTML elements
seeking
event handler
Event handler content attribute
onselect
HTML elements
select
event handler
Event handler content attribute
onslotchange
HTML elements
slotchange
event handler
Event handler content attribute
onstalled
HTML elements
stalled
event handler
Event handler content attribute
onstorage
body
storage
event handler for
Window
object
Event handler content attribute
onsubmit
HTML elements
submit
event handler
Event handler content attribute
onsuspend
HTML elements
suspend
event handler
Event handler content attribute
ontimeupdate
HTML elements
timeupdate
event handler
Event handler content attribute
ontoggle
HTML elements
toggle
event handler
Event handler content attribute
onunhandledrejection
body
unhandledrejection
event handler for
Window
object
Event handler content attribute
onunload
body
unload
event handler for
Window
object
Event handler content attribute
onvolumechange
HTML elements
volumechange
event handler
Event handler content attribute
onwaiting
HTML elements
waiting
event handler
Event handler content attribute
onwheel
HTML elements
wheel
event handler
Event handler content attribute
Element interfaces
This section is non-normative.
List of interfaces for elements
Element(s)
Interface(s)
HTMLAnchorElement
HTMLElement
abbr
HTMLElement
address
HTMLElement
area
HTMLAreaElement
HTMLElement
article
HTMLElement
aside
HTMLElement
audio
HTMLAudioElement
HTMLMediaElement
HTMLElement
HTMLElement
base
HTMLBaseElement
HTMLElement
bdi
HTMLElement
bdo
HTMLElement
blockquote
HTMLQuoteElement
HTMLElement
body
HTMLBodyElement
HTMLElement
br
HTMLBRElement
HTMLElement
button
HTMLButtonElement
HTMLElement
canvas
HTMLCanvasElement
HTMLElement
caption
HTMLTableCaptionElement
HTMLElement
cite
HTMLElement
code
HTMLElement
col
HTMLTableColElement
HTMLElement
colgroup
HTMLTableColElement
HTMLElement
data
HTMLDataElement
HTMLElement
datalist
HTMLDataListElement
HTMLElement
dd
HTMLElement
del
HTMLModElement
HTMLElement
details
HTMLDetailsElement
HTMLElement
dfn
HTMLElement
dialog
HTMLDialogElement
HTMLElement
div
HTMLDivElement
HTMLElement
dl
HTMLDListElement
HTMLElement
dt
HTMLElement
em
HTMLElement
embed
HTMLEmbedElement
HTMLElement
fieldset
HTMLFieldSetElement
HTMLElement
figcaption
HTMLElement
figure
HTMLElement
footer
HTMLElement
form
HTMLFormElement
HTMLElement
h1
HTMLHeadingElement
HTMLElement
h2
HTMLHeadingElement
HTMLElement
h3
HTMLHeadingElement
HTMLElement
h4
HTMLHeadingElement
HTMLElement
h5
HTMLHeadingElement
HTMLElement
h6
HTMLHeadingElement
HTMLElement
head
HTMLHeadElement
HTMLElement
header
HTMLElement
hgroup
HTMLElement
hr
HTMLHRElement
HTMLElement
html
HTMLHtmlElement
HTMLElement
HTMLElement
iframe
HTMLIFrameElement
HTMLElement
img
HTMLImageElement
HTMLElement
input
HTMLInputElement
HTMLElement
ins
HTMLModElement
HTMLElement
kbd
HTMLElement
label
HTMLLabelElement
HTMLElement
legend
HTMLLegendElement
HTMLElement
li
HTMLLIElement
HTMLElement
link
HTMLLinkElement
HTMLElement
main
HTMLElement
map
HTMLMapElement
HTMLElement
mark
HTMLElement
HTMLMenuElement
HTMLElement
meta
HTMLMetaElement
HTMLElement
meter
HTMLMeterElement
HTMLElement
nav
HTMLElement
noscript
HTMLElement
object
HTMLObjectElement
HTMLElement
ol
HTMLOListElement
HTMLElement
optgroup
HTMLOptGroupElement
HTMLElement
option
HTMLOptionElement
HTMLElement
output
HTMLOutputElement
HTMLElement
HTMLParagraphElement
HTMLElement
picture
HTMLPictureElement
HTMLElement
pre
HTMLPreElement
HTMLElement
progress
HTMLProgressElement
HTMLElement
HTMLQuoteElement
HTMLElement
rp
HTMLElement
rt
HTMLElement
ruby
HTMLElement
HTMLElement
samp
HTMLElement
HTMLElement
script
HTMLScriptElement
HTMLElement
section
HTMLElement
select
HTMLSelectElement
HTMLElement
selectedcontent
HTMLSelectedContentElement
HTMLElement
slot
HTMLSlotElement
HTMLElement
small
HTMLElement
source
HTMLSourceElement
HTMLElement
span
HTMLSpanElement
HTMLElement
strong
HTMLElement
style
HTMLStyleElement
HTMLElement
sub
HTMLElement
summary
HTMLElement
sup
HTMLElement
table
HTMLTableElement
HTMLElement
tbody
HTMLTableSectionElement
HTMLElement
td
HTMLTableCellElement
HTMLElement
template
HTMLTemplateElement
HTMLElement
textarea
HTMLTextAreaElement
HTMLElement
tfoot
HTMLTableSectionElement
HTMLElement
th
HTMLTableCellElement
HTMLElement
thead
HTMLTableSectionElement
HTMLElement
time
HTMLTimeElement
HTMLElement
title
HTMLTitleElement
HTMLElement
tr
HTMLTableRowElement
HTMLElement
track
HTMLTrackElement
HTMLElement
HTMLElement
ul
HTMLUListElement
HTMLElement
var
HTMLElement
video
HTMLVideoElement
HTMLMediaElement
HTMLElement
wbr
HTMLElement
custom elements
supplied by the element's author (inherits from
HTMLElement
All interfaces
This section is non-normative.
AudioTrack
AudioTrackList
BarProp
BeforeUnloadEvent
BroadcastChannel
CanvasGradient
CanvasPattern
CanvasRenderingContext2D
CloseWatcher
CommandEvent
CustomElementRegistry
CustomStateSet
DOMParser
DOMStringList
DOMStringMap
DataTransfer
DataTransferItem
DataTransferItemList
DedicatedWorkerGlobalScope
Document
partial 1
DragEvent
Element
partial
ElementInternals
ErrorEvent
EventSource
External
FormDataEvent
HTMLAllCollection
HTMLAnchorElement
partial
HTMLAreaElement
partial
HTMLAudioElement
HTMLBRElement
partial
HTMLBaseElement
HTMLBodyElement
partial
HTMLButtonElement
HTMLCanvasElement
HTMLDListElement
partial
HTMLDataElement
HTMLDataListElement
HTMLDetailsElement
HTMLDialogElement
HTMLDirectoryElement
HTMLDivElement
partial
HTMLElement
HTMLEmbedElement
partial
HTMLFieldSetElement
HTMLFontElement
HTMLFormControlsCollection
HTMLFormElement
HTMLFrameElement
HTMLFrameSetElement
HTMLHRElement
partial
HTMLHeadElement
HTMLHeadingElement
partial
HTMLHtmlElement
partial
HTMLIFrameElement
partial
HTMLImageElement
partial
HTMLInputElement
partial
HTMLLIElement
partial
HTMLLabelElement
HTMLLegendElement
partial
HTMLLinkElement
partial
HTMLMapElement
HTMLMarqueeElement
HTMLMediaElement
HTMLMenuElement
partial
HTMLMetaElement
partial
HTMLMeterElement
HTMLModElement
HTMLOListElement
partial
HTMLObjectElement
partial
HTMLOptGroupElement
HTMLOptionElement
HTMLOptionsCollection
HTMLOutputElement
HTMLParagraphElement
partial
HTMLParamElement
HTMLPictureElement
HTMLPreElement
partial
HTMLProgressElement
HTMLQuoteElement
HTMLScriptElement
partial
HTMLSelectElement
HTMLSelectedContentElement
HTMLSlotElement
HTMLSourceElement
HTMLSpanElement
HTMLStyleElement
partial
HTMLTableCaptionElement
partial
HTMLTableCellElement
partial
HTMLTableColElement
partial
HTMLTableElement
partial
HTMLTableRowElement
partial
HTMLTableSectionElement
partial
HTMLTemplateElement
HTMLTextAreaElement
HTMLTimeElement
HTMLTitleElement
HTMLTrackElement
HTMLUListElement
partial
HTMLUnknownElement
HTMLVideoElement
HashChangeEvent
History
ImageBitmap
ImageBitmapRenderingContext
ImageData
Location
MediaError
MessageChannel
MessageEvent
MessagePort
MimeType
MimeTypeArray
NavigateEvent
NavigationActivation
NavigationCurrentEntryChangeEvent
NavigationDestination
NavigationHistoryEntry
NavigationPrecommitController
NavigationTransition
Navigator
partial
NotRestoredReasonDetails
NotRestoredReasons
OffscreenCanvas
OffscreenCanvasRenderingContext2D
Origin
PageRevealEvent
PageSwapEvent
PageTransitionEvent
Path2D
Plugin
PluginArray
PopStateEvent
PromiseRejectionEvent
RadioNodeList
Range
partial
ShadowRoot
partial
SharedWorker
SharedWorkerGlobalScope
Storage
StorageEvent
SubmitEvent
TextMetrics
TextTrack
TextTrackCue
TextTrackCueList
TextTrackList
TimeRanges
ToggleEvent
TrackEvent
UserActivation
ValidityState
VideoTrack
VideoTrackList
VisibilityStateEntry
Window
partial
Worker
WorkerGlobalScope
WorkerLocation
WorkerNavigator
Worklet
WorkletGlobalScope
XMLSerializer
Events
This section is non-normative.
The following table lists events fired by this document, excluding those
already defined in
media element events
and
drag-and-drop events
List of events
Event
Interface
Interesting targets
Description
DOMContentLoaded
Window/DOMContentLoaded_event
Support in all current engines.
Firefox
1+
Safari
3.1+
Chrome
1+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
10.1+
Event
Document
Fired at the
Document
once the parser has finished
afterprint
Window/afterprint_event
Support in all current engines.
Firefox
6+
Safari
13+
Chrome
63+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
Window
Fired at the
Window
after printing
beforeprint
Window/beforeprint_event
Support in all current engines.
Firefox
6+
Safari
13+
Chrome
63+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
Window
Fired at the
Window
before printing
beforematch
Element/beforematch_event
Support in one engine only.
Firefox
No
Safari
No
Chrome
102+
Opera
No
Edge
102+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
Elements
Fired on elements with the
hidden=until-found
attribute before they are
revealed.
beforetoggle
HTMLElement/beforetoggle_event
Support in all current engines.
Firefox
🔰 114+
Safari
preview+
Chrome
114+
Opera
Edge
114+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
ToggleEvent
Elements
Fired on elements with the
popover
attribute when they
are transitioning between showing and hidden
beforeunload
Window/beforeunload_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
12+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
4+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
BeforeUnloadEvent
Window
Fired at the
Window
when 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
HTMLDialogElement/cancel_event
Support in all current engines.
Firefox
98+
Safari
15.4+
Chrome
37+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
No
WebView Android
Samsung Internet
Opera Android
Event
CloseWatcher
dialog
elements,
input
elements
Fired at
CloseWatcher
objects or
dialog
elements when they receive a
close request
, or at
input
elements whose
type
attribute is in the
File
state when the user does not change their selection
change
HTMLElement/change_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
9+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
10.1+
Event
Form controls
Fired at controls when the user commits a value change (see also the
input
event)
click
PointerEvent
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
HTMLDialogElement/close_event
Support in all current engines.
Firefox
98+
Safari
15.4+
Chrome
37+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
CloseWatcher
dialog
elements,
MessagePort
Fired at
CloseWatcher
objects or
dialog
elements when they are closed via a
close request
or via web developer code, or at
MessagePort
objects when
disentangled
command
CommandEvent
Elements
Fired at elements when they handle a user invocation, via a
commandfor
attribute.
connect
SharedWorkerGlobalScope/connect_event
Support in all current engines.
Firefox
29+
Safari
16+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
16+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
11+
MessageEvent
SharedWorkerGlobalScope
Fired at a shared worker's global scope when a new client connects
contextlost
HTMLCanvasElement/webglcontextlost_event
Support in one engine only.
Firefox
No
Safari
No
Chrome
98+
Opera
Edge
98+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
canvas
elements,
OffscreenCanvas
objects
Fired when the corresponding
CanvasRenderingContext2D
or
OffscreenCanvasRenderingContext2D
is lost
contextrestored
HTMLCanvasElement/contextrestored_event
Support in one engine only.
Firefox
No
Safari
No
Chrome
98+
Opera
Edge
98+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
Event
canvas
elements,
OffscreenCanvas
objects
Fired when the corresponding
CanvasRenderingContext2D
or
OffscreenCanvasRenderingContext2D
is restored after being lost
currententrychange
NavigationCurrentEntryChangeEvent
Fired when
navigation.currentEntry
changes
dispose
Event
NavigationHistoryEntry
Fired when the
session history entry
corresponding to the
NavigationHistoryEntry
has been permanently evicted from session history and can no longer be traversed to
error
EventSource/error_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
12+
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
Window/error_event
Support in all current engines.
Firefox
6+
Safari
5.1+
Chrome
10+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
Event
or
ErrorEvent
Global scope objects,
Worker
objects, 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
HTMLFormElement/formdata_event
Support in all current engines.
Firefox
72+
Safari
15+
Chrome
77+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
FormDataEvent
form
elements
Fired at a
form
element when it is
constructing the entry list
hashchange
Window/hashchange_event
Support in all current engines.
Firefox
3.6+
Safari
5+
Chrome
8+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
8+
Firefox Android
Safari iOS
5+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
11+
HashChangeEvent
Window
Fired at the
Window
when the
fragment
part of the document's
URL
changes
input
Event
Elements
Fired when the user changes the
contenteditable
element's content, or the form control's value. See also the
change
event for form controls.
invalid
HTMLInputElement/invalid_event
Support in all current engines.
Firefox
4+
Safari
5+
Chrome
10+
Opera
10+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
64+
Safari iOS
5+
Chrome Android
WebView Android
4+
Samsung Internet
4.0+
Opera Android
12+
Event
Form controls
Fired at controls during form validation if they do not satisfy their constraints
languagechange
Window/languagechange_event
Support in all current engines.
Firefox
32+
Safari
10.1+
Chrome
37+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
4+
Safari iOS
Chrome Android
WebView Android
Samsung Internet
4.0+
Opera Android
WorkerGlobalScope/languagechange_event
Support in all current engines.
Firefox
74+
Safari
4+
Chrome
4+
Opera
11.5+
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
5+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
Event
Global scope objects
Fired at the global scope object when the user's preferred languages change
load
Event
Window
, elements
Fired at the
Window
when the document has finished loading; fired at an element containing a resource (e.g.
img
embed
) when its resource has finished loading
message
BroadcastChannel/message_event
Support in all current engines.
Firefox
38+
Safari
15.4+
Chrome
54+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
DedicatedWorkerGlobalScope/message_event
Support in all current engines.
Firefox
3.5+
Safari
4+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
Safari iOS
5+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
11.5+
EventSource/message_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
12+
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
MessagePort/message_event
Support in all current engines.
Firefox
41+
Safari
5+
Chrome
2+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
11.5+
Window/message_event
Support in all current engines.
Firefox
9+
Safari
4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
8+
Firefox Android
Safari iOS
4+
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
Worker/message_event
Support in all current engines.
Firefox
3.5+
Safari
4+
Chrome
4+
Opera
10.6+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
Safari iOS
5+
Chrome Android
WebView Android
Samsung Internet
Opera Android
11.5+
MessageEvent
Window
EventSource
MessagePort
BroadcastChannel
DedicatedWorkerGlobalScope
Worker
ServiceWorkerContainer
Fired at an object when it receives a message
messageerror
BroadcastChannel/messageerror_event
Support in all current engines.
Firefox
57+
Safari
15.4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
DedicatedWorkerGlobalScope/messageerror_event
Support in all current engines.
Firefox
57+
Safari
16.4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
18
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
MessagePort/messageerror_event
Support in all current engines.
Firefox
57+
Safari
16.4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
18
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
Window/messageerror_event
Support in all current engines.
Firefox
57+
Safari
16.4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
18
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
Worker/messageerror_event
Support in all current engines.
Firefox
57+
Safari
16.4+
Chrome
60+
Opera
Edge
79+
Edge (Legacy)
18
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
47+
MessageEvent
Window
MessagePort
BroadcastChannel
DedicatedWorkerGlobalScope
Worker
ServiceWorkerContainer
Fired at an object when it receives a message that cannot be deserialized
navigate
NavigateEvent
Fired before the
navigable
navigates
reloads
traverses
, or
otherwise
changes its URL
navigateerror
ErrorEvent
Fired when a navigation does not complete successfully
navigatesuccess
Event
Fired when a navigation completes successfully
offline
Window/offline_event
Support in all current engines.
Firefox
9+
Safari
4+
Chrome
3+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
3+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
Event
Global scope objects
Fired at the global scope object when the network connections fails
online
Window/online_event
Support in all current engines.
Firefox
9+
Safari
4+
Chrome
3+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
3+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
Event
Global scope objects
Fired at the global scope object when the network connections returns
open
EventSource/open_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
6+
Opera
12+
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
45+
Safari iOS
5+
Chrome Android
WebView Android
Samsung Internet
Opera Android
12+
Event
EventSource
Fired at
EventSource
objects when a connection is established
pageswap
PageSwapEvent
Window
Fired at the
Window
right before a document is
unloaded
as a result of a navigation.
pagehide
Window/pagehide_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
3+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
11
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
PageTransitionEvent
Window
Fired at the
Window
when the page's
session history entry
stops
being the
active entry
pagereveal
PageRevealEvent
Window
Fired at the
Window
when the page begins to render for the first time after
it has been initialized or
reactivated
pageshow
Window/pageshow_event
Support in all current engines.
Firefox
6+
Safari
5+
Chrome
3+
Opera
Edge
79+
Edge (Legacy)
12+
Internet Explorer
11
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
PageTransitionEvent
Window
Fired at the
Window
when the page's
session history entry
becomes the
active entry
pointercancel
PointerEvent
Elements and
Text
nodes
Fired at the
source node
when the user attempts to initiate a drag-and-drop operation
popstate
Window/popstate_event
Support in all current engines.
Firefox
4+
Safari
5+
Chrome
5+
Opera
11.5+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
10+
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
11.5+
PopStateEvent
Window
Fired at the
Window
when in some cases of
session history traversal
readystatechange
Document/readystatechange_event
Support in all current engines.
Firefox
4+
Safari
5.1+
Chrome
9+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
4+
Firefox Android
Safari iOS
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
12.1+
Event
Document
Fired at the
Document
when 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
HTMLFormElement/reset_event
Support in all current engines.
Firefox
6+
Safari
3+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
12.1+
Event
form
elements
Fired at a
form
element when it is
reset
select
HTMLInputElement/select_event
Support in all current engines.
Firefox
6+
Safari
1+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12.1+
HTMLTextAreaElement/select_event
Support in all current engines.
Firefox
6+
Safari
1+
Chrome
1+
Opera
12.1+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
12.1+
Event
Form controls
Fired at form controls when their text selection is adjusted (whether by an API or by the user)
storage
Window/storage_event
Support in all current engines.
Firefox
45+
Safari
4+
Chrome
1+
Opera
Edge
79+
Edge (Legacy)
15+
Internet Explorer
9+
Firefox Android
Safari iOS
4+
Chrome Android
WebView Android
37+
Samsung Internet
Opera Android
StorageEvent
Window
Fired at
Window
event when the corresponding
localStorage
or
sessionStorage
storage areas change
submit
HTMLFormElement/submit_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
8+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
9+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
Samsung Internet
Opera Android
10.1+
SubmitEvent
form
elements
Fired at a
form
element when it is
submitted
toggle
HTMLDetailsElement/toggle_event
Support in all current engines.
Firefox
49+
Safari
10.1+
Chrome
36+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
HTMLElement/toggle_event
Support in all current engines.
Firefox
🔰 114+
Safari
preview+
Chrome
114+
Opera
Edge
114+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
Chrome Android
WebView Android
Samsung Internet
Opera Android
ToggleEvent
details
and
popover
elements
Fired at
details
elements when they open or close; fired on elements with the
popover
attribute when they are transitioning between
showing and hidden
unhandledrejection
Window/unhandledrejection_event
Support in all current engines.
Firefox
69+
Safari
11+
Chrome
49+
Opera
Edge
79+
Edge (Legacy)
Internet Explorer
No
Firefox Android
Safari iOS
11.3+
Chrome Android
WebView Android
Samsung Internet
Opera Android
PromiseRejectionEvent
Global scope objects
Fired at global scope objects when a promise rejection goes unhandled
unload
Window/unload_event
Support in all current engines.
Firefox
1+
Safari
3+
Chrome
1+
Opera
4+
Edge
79+
Edge (Legacy)
12+
Internet Explorer
4+
Firefox Android
Safari iOS
1+
Chrome Android
WebView Android
Samsung Internet
Opera Android
10.1+
Event
Window
Fired at the
Window
object when the page is going away
visibilitychange
Document/visibilitychange_event
Support in all current engines.
Firefox
56+
Safari
14.1+
Chrome
62+
Opera
49+
Edge
79+
Edge (Legacy)
18
Internet Explorer
🔰 10+
Firefox Android
Safari iOS
Chrome Android
WebView Android
62+
Samsung Internet
Opera Android
46+
Event
Document
Fired at the
Document
object when the page becomes visible or hidden to the
user
HTTP headers
This section is non-normative.
The following HTTP request headers are defined by this specification:
Last-Event-ID
Ping-From
Ping-To
The following HTTP response headers are defined by this specification:
Cross-Origin-Embedder-Policy
Cross-Origin-Embedder-Policy-Report-Only
Cross-Origin-Opener-Policy
Cross-Origin-Opener-Policy-Report-Only
Origin-Agent-Cluster
Refresh
X-Frame-Options
MIME types
This section is non-normative.
The following MIME types are mentioned in this specification:
application/atom+xml
Atom
[ATOM]
application/json
JSON
[JSON]
application/octet-stream
Generic binary data
[RFC2046]
application/microdata+json
Microdata as JSON
application/rss+xml
RSS
application/wasm
WebAssembly
[WASM]
application/x-www-form-urlencoded
Form submission
application/xhtml+xml
HTML
application/xml
XML
[XML]
[RFC7303]
image/gif
GIF images
[GIF]
image/jpeg
JPEG images
[JPEG]
image/png
PNG images
[PNG]
image/svg+xml
SVG images
[SVG]
multipart/form-data
Form submission
[RFC7578]
multipart/mixed
Generic mixed content
[RFC2046]
multipart/x-mixed-replace
Streaming server push
text/css
CSS
[CSS]
text/event-stream
Server-sent event streams
text/javascript
JavaScript
[JAVASCRIPT]
[RFC9239]
text/json
JSON (legacy type)
text/plain
Generic plain text
[RFC2046]
[RFC3676]
text/html
HTML
text/ping
Hyperlink auditing
text/uri-list
List of URLs
[RFC2483]
text/vcard
vCard
[RFC6350]
text/vtt
WebVTT
[WEBVTT]
text/xml
XML
[XML]
[RFC7303]
video/mp4
MPEG-4 video
[RFC4337]
video/mpeg
MPEG video
[RFC2046]
References
All references are normative unless marked "Non-normative".
[ABNF]
Augmented BNF for Syntax Specifications: ABNF
, D. Crocker, P. Overell. IETF.
[ABOUT]
The 'about' URI scheme
, S. Moonesamy. IETF.
[APNG]
(Non-normative)
APNG Specification
. S. Parmenter, V. Vukicevic, A. Smith. Mozilla.
[ARIA]
Accessible Rich Internet Applications (WAI-ARIA)
, J. Diggs, J. Nurthen, M. Cooper. W3C.
[ARIAHTML]
ARIA in HTML
, S. Faulkner, S. O'Hara. W3C.
[ATAG]
(Non-normative)
Authoring Tool Accessibility Guidelines (ATAG) 2.0
, J. Richards, J. Spellman, J. Treviranus. W3C.
[ATOM]
(Non-normative)
The Atom Syndication Format
, M. Nottingham, R. Sayre. IETF.
[BATTERY]
(Non-normative)
Battery Status API
, A. Kostiainen, M. Lamouri. W3C.
[BCP47]
Tags for Identifying Languages; Matching of Language Tags
, A. Phillips, M. Davis. IETF.
[BEZIER]
Courbes à poles
, P. de Casteljau. INPI, 1959.
[BIDI]
UAX #9: Unicode Bidirectional Algorithm
, M. Davis. Unicode Consortium.
[BOCU1]
(Non-normative)
UTN #6: BOCU-1: MIME-Compatible Unicode Compression
, M. Scherer, M. Davis. Unicode Consortium.
[CESU8]
(Non-normative)
UTR #26: Compatibility Encoding Scheme For UTF-16: 8-BIT (CESU-8)
, T. Phipps. Unicode Consortium.
[CHARMOD]
(Non-normative)
Character Model for the World Wide Web 1.0: Fundamentals
, M. Dürst, F. Yergeau, R. Ishida, M. Wolf, T. Texin. W3C.
[CHARMODNORM]
(Non-normative)
Character Model for the World Wide Web: String Matching
, A. Phillips. W3C.
[CLIPBOARD-APIS]
Clipboard API and events
, G. Kacmarcik, A. Snigdha. W3C.
[COMPOSITE]
Compositing and Blending
, R. Cabanier, N. Andronikos. W3C.
[COMPUTABLE]
(Non-normative)
On computable numbers, with an application to the Entscheidungsproblem
, A. Turing. In
Proceedings of the London Mathematical Society
, series 2, volume 42, pages 230-265. London Mathematical Society, 1937.
[COMPUTEPRESSURE]
(Non-normative)
Compute Pressure
, K. Christiansen, A. Mandy. W3C.
[CONSOLE]
Console
, T. Stock, R. Kowalski, D. Farolino. WHATWG.
[COOKIES]
HTTP State Management Mechanism
, A. Barth. IETF.
[COOKIESTORE]
(Non-normative)
Cookie Store API
, J. Wilcock, M. Nottingham. WHATWG.
[CREDMAN]
Credential Management
, N. Satragno, J. Hodges, M. West. W3C.
[CSP]
Content Security Policy
, M. West, D. Veditz. W3C.
[CSS]
Cascading Style Sheets Level 2 Revision 2
, B. Bos, T. Çelik, I. Hickson, H. Lie. W3C.
[CSSALIGN]
CSS Box Alignment
, E. Etemad, T. Atkins. W3C.
[CSSANCHOR]
CSS Anchor Positioning
, T. Atkins, E. Etemad, I. Kilpatrick. W3C.
[CSSANIMATIONS]
CSS Animations
, D. Jackson, D. Hyatt, C. Marrin, S. Galineau, L. Baron. W3C.
[CSSATTR]
CSS Style Attributes
, T. Çelik, E. Etemad. W3C.
[CSSBG]
CSS Backgrounds and Borders
, B. Bos, E. Etemad, B. Kemper. W3C.
[CSSBOX]
CSS Box Model
, E. Etemad. W3C.
[CSSCASCADE]
CSS Cascading and Inheritance
, E. Etemad, T. Atkins. W3C.
[CSSCONTAIN]
CSS Containment
, T. Atkins, F. Rivoal, V. Levin. W3C.
[CSSCOLOR]
CSS Color Module
, T. Çelik, C. Lilley, L. Baron. W3C.
[CSSCOLORADJUST]
CSS Color Adjustment Module
, E. Etemad, R. Atanassov, R. Lillesveen, T. Atkins. W3C.
[CSSDEVICEADAPT]
CSS Device Adaption
, F. Rivoal, M. Rakow. W3C.
[CSSDISPLAY]
CSS Display
, T. Atkins, E. Etemad. W3C.
[CSSFONTLOAD]
CSS Font Loading
, T. Atkins, J. Daggett. W3C.
[CSSFONTS]
CSS Fonts
, J. Daggett. W3C.
[CSSFORMS]
CSS Forms
, T. Nguyen. W3C.
[CSSFLEXBOX]
CSS Flexible Box Layout
, T. Atkins, E. Etemad, R. Atanassov. W3C.
[CSSGC]
CSS Generated Content
, H. Lie, E. Etemad, I. Hickson. W3C.
[CSSGRID]
CSS Grid Layout
, T. Atkins, E. Etemad, R. Atanassov. W3C.
[CSSIMAGES]
CSS Images Module
, E. Etemad, T. Atkins, L. Verou. W3C.
[CSSIMAGES4]
CSS Images Module Level 4
, E. Etemad, T. Atkins, L. Verou. W3C.
[CSSINLINE]
CSS Inline Layout
, D. Cramer, E. Etemad. W3C.
[CSSLISTS]
CSS Lists and Counters
, T. Atkins. W3C.
[CSSLOGICAL]
CSS Logical Properties
, R. Atanassov, E. Etemad. W3C.
[CSSMULTICOL]
CSS Multi-column Layout
, H. Lie, F. Rivoal, R. Andrew. W3C.
[CSSOM]
Cascading Style Sheets Object Model (CSSOM)
, S. Pieters, G. Adams. W3C.
[CSSOMVIEW]
CSSOM View Module
, S. Pieters, G. Adams. W3C.
[CSSOVERFLOW]
CSS Overflow Module
, L. Baron, F. Rivoal. W3C.
[CSSPAINT]
(Non-normative)
CSS Painting API
, I. Kilpatrick, D. Jackson. W3C.
[CSSPOSITION]
CSS Positioned Layout
, R. Atanassov, A. Eicholz. W3C.
[CSSPSEUDO]
CSS Pseudo-Elements
, D. Glazman, E. Etemad, A. Stearns. W3C.
[CSSRUBY]
CSS3 Ruby Module
, R. Ishida. W3C.
[CSSSCOPING]
CSS Scoping Module
, T. Atkins. W3C.
[CSSSIZING]
CSS Box Sizing Module
, T. Atkins, E. Etemad. W3C.
[CSSSCROLLANCHORING]
(Non-normative)
CSS Scroll Anchoring
, T. Atkins-Bittner. W3C.
[CSSSYNTAX]
CSS Syntax
, T. Atkins, S. Sapin. W3C.
[CSSTRANSITIONS]
(Non-normative)
CSS Transitions
, L. Baron, D. Jackson, B. Birtles. W3C.
[CSSTABLE]
CSS Table
, F. Remy, G. Whitworth. W3C.
[CSSTEXT]
CSS Text
, E. Etemad, K. Ishii. W3C.
[CSSVALUES]
CSS3 Values and Units
, H. Lie, T. Atkins, E. Etemad. W3C.
[CSSVIEWTRANSITIONS]
CSS View Transitions
, T. Atkins Jr.; J. Archibald; K Sagar. W3C.
[CSSUI]
CSS3 Basic User Interface Module
, F. Rivoal. W3C.
[CSSWM]
CSS Writing Modes
, E. Etemad, K. Ishii. W3C.
[DASH]
Dynamic adaptive streaming over HTTP (DASH)
. ISO.
[DEVICEPOSTURE]
(Non-normative)
Device Posture API
, D. Gonzalez-Zuniga, K. Christiansen. W3C.
[DOM]
DOM
, A. van Kesteren, A. Gregor, Ms2ger. WHATWG.
[DOMPARSING]
DOM Parsing and Serialization
, T. Leithead. W3C.
[DOT]
(Non-normative)
The DOT Language
. Graphviz.
[E163]
Recommendation E.163 — Numbering Plan for The International Telephone Service
, CCITT Blue Book, Fascicle II.2, pp. 128-134, November 1988.
[ENCODING]
Encoding
, A. van Kesteren, J. Bell. WHATWG.
[EXECCOMMAND]
execCommand
, J. Wilm, A. Gregor. W3C Editing APIs CG.
[EXIF]
(Non-normative)
Exchangeable image file format
. JEITA.
[FETCH]
Fetch
, A. van Kesteren. WHATWG.
[FETCH-METADATA]
Fetch Metadata Request Headers
, M.West. W3C.
[FILEAPI]
File API
, A. Ranganathan. W3C.
[FILTERS]
Filter Effects
, D. Schulze, D. Jackson, C. Harrelson. W3C.
[FULLSCREEN]
Fullscreen
, A. van Kesteren, T. Çelik. WHATWG.
[GEOMETRY]
Geometry Interfaces
. S. Pieters, D. Schulze, R. Cabanier. W3C.
[GIF]
(Non-normative)
Graphics Interchange Format
. CompuServe.
[GRAPHICS]
(Non-normative)
Computer Graphics: Principles and Practice in C
, Second Edition, J. Foley, A. van Dam, S. Feiner, J. Hughes. Addison-Wesley. ISBN 0-201-84840-6.
[GREGORIAN]
(Non-normative)
Inter Gravissimas
, A. Lilius, C. Clavius. Gregory XIII Papal Bull, February 1582.
[HRT]
High Resolution Time
, I. Grigorik, J. Simonsen, J. Mann. W3C.
[HTMLAAM]
HTML Accessibility API Mappings 1.0
, S. Faulkner, A. Surkov, S. O'Hara. W3C.
[HTTP]
Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests
, R. Fielding, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Range Requests
, R. Fielding, Y. Lafon, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Caching
, R. Fielding, M. Nottingham, J. Reschke. IETF.
Hypertext Transfer Protocol (HTTP/1.1): Authentication
, R. Fielding, J. Reschke. IETF.
[INDEXEDDB]
Indexed Database API
, A. Alabbas, J. Bell. W3C.
[INBAND]
Sourcing In-band Media Resource Tracks from Media Containers into HTML
, S. Pfeiffer, B. Lund. W3C.
[INFRA]
Infra
, A. van Kesteren, D. Denicola. WHATWG.
[INTERSECTIONOBSERVER]
Intersection Observer
, S. Zager. W3C.
[RESIZEOBSERVER]
Resize Observer
, O. Brufau, E. Álvarez. W3C.
[ISO3166]
ISO 3166: Codes for the representation of names of countries and their subdivisions
. ISO.
[ISO4217]
ISO 4217: Codes for the representation of currencies and funds
. ISO.
[ISO8601]
(Non-normative)
ISO8601: Data elements and interchange formats — Information interchange — Representation of dates and times
. ISO.
[JAVASCRIPT]
ECMAScript Language Specification
. Ecma International.
[JLREQ]
Requirements for Japanese Text Layout
. W3C.
[JPEG]
JPEG File Interchange Format
, E. Hamilton.
[JSERRORSTACKS]
(Non-normative)
Error Stacks
. Ecma International.
[JSDYNAMICCODEBRANDCHECKS]
Dynamic code brand checks
. Ecma International.
[JSIMPORTTEXT]
Import Text
. Ecma International.
[JSINTL]
ECMAScript Internationalization API Specification
. Ecma International.
[JSON]
The JavaScript Object Notation (JSON) Data Interchange Format
, T. Bray. IETF.
[JSTEMPORAL]
Temporal
. Ecma International.
[LONGTASKS]
Long Tasks
, D. Denicola, I. Grigorik, S. Panicker. W3C.
[LONGANIMATIONFRAMES]
Long Animation Frames
, N. Rosenthal. W3C.
[MAILTO]
(Non-normative)
The 'mailto' URI scheme
, M. Duerst, L. Masinter, J. Zawinski. IETF.
[MANIFEST]
Web App Manifest
, M. Caceres, K. Rohde Christiansen, M. Lamouri, A. Kostiainen, M. Giuca, A. Gustafson. W3C.
[MATHMLCORE]
Mathematical Markup Language (MathML)
, D. Carlisle, Frédéric Wang. W3C.
[MEDIAFRAG]
Media Fragments URI
, R. Troncy, E. Mannens, S. Pfeiffer, D. Van Deursen. W3C.
[MEDIASOURCE]
Media Source Extensions
, A. Colwell, A. Bateman, M. Watson. W3C.
[MEDIASTREAM]
Media Capture and Streams
, D. Burnett, A. Bergkvist, C. Jennings, A. Narayanan. W3C.
[REPORTING]
Reporting
, D. Creager, I. Clelland, M. West. W3C.
[MFREL]
Microformats Wiki: existing rel values
. Microformats.
[MIMESNIFF]
MIME Sniffing
, G. Hemsley. WHATWG.
[MIX]
Mixed Content
, M. West. W3C.
[MNG]
MNG (Multiple-image Network Graphics) Format
. G. Randers-Pehrson.
[MPEG2]
ISO/IEC 13818-1: Information technology — Generic coding of moving pictures and associated audio information: Systems
. ISO/IEC.
[MPEG4]
ISO/IEC 14496-12: ISO base media file format
. ISO/IEC.
[MQ]
Media Queries
, H. Lie, T. Çelik, D. Glazman, A. van Kesteren. W3C.
[MULTIPLEBUFFERING]
(Non-normative)
Multiple buffering
. Wikipedia.
[NAVIGATIONTIMING]
Navigation Timing
, Y. Weiss. W3C.
[NOVARYSEARCH]
The No-Vary-Search HTTP Response Header Field
, D. Denicola, J. Roman. IETF.
[NPAPI]
(Non-normative)
Gecko Plugin API Reference
. Mozilla.
[OGGSKELETONHEADERS]
SkeletonHeaders
. Xiph.Org.
[OPENSEARCH]
Autodiscovery in HTML/XHTML
. In
OpenSearch 1.1 Draft 6
. GitHub.
[ORIGIN]
(Non-normative)
The Web Origin Concept
, A. Barth. IETF.
[PAINTTIMING]
Paint Timing
, S. Panicker. W3C.
[PAYMENTREQUEST]
Payment Request API
, M. Cáceres, D. Wang, R. Solomakhin, I. Jacobs. W3C.
[PDF]
(Non-normative)
Document management — Portable document format — Part 1: PDF
. ISO.
[PERFORMANCETIMELINE]
Performance Timeline
, N. Peña Moreno, W3C.
[PERMISSIONSPOLICY]
Permissions Policy
, I. Clelland, W3C.
[PICTUREINPICTURE]
(Non-normative)
Picture-in-Picture
, F. Beaufort, M. Lamouri, W3C
[PINGBACK]
Pingback 1.0
, S. Langridge, I. Hickson.
[PNG]
Portable Network Graphics (PNG) Specification
, D. Duce. W3C.
[POINTEREVENTS]
Pointer Events
, J. Rossi, M. Brubeck, R. Byers, P. H. Lauke. W3C.
[POINTERLOCK]
Pointer Lock
, V. Scheib. W3C.
[PPUTF8]
(Non-normative)
The Properties and Promises of UTF-8
, M. Dürst. University of Zürich. In
Proceedings of the 11th International Unicode Conference
[PREFETCH]
Prefetch
, J. Roman. WICG.
[PRERENDERING-REVAMPED]
(Non-normative)
Prerendering Revamped
, D. Denicola, D. Farolino. W3C.
[PRESENTATION]
Presentation API
, M. Foltz, D. Röttsches. W3C.
[REFERRERPOLICY]
Referrer Policy
, J. Eisinger, E. Stark. W3C.
[REQUESTIDLECALLBACK]
Cooperative Scheduling of Background Tasks
, R. McIlroy, I. Grigorik. W3C.
[RESOURCETIMING]
Resource Timing
, Yoav Weiss; Noam Rosenthal. W3C.
[RFC1034]
Domain Names - Concepts and Facilities
, P. Mockapetris. IETF, November 1987.
[RFC1123]
Requirements for Internet Hosts -- Application and Support
, R. Braden. IETF, October 1989.
[RFC2046]
Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
, N. Freed, N. Borenstein. IETF.
[RFC2397]
The "data" URL scheme
, L. Masinter. IETF.
[RFC5545]
Internet Calendaring and Scheduling Core Object Specification (iCalendar)
, B. Desruisseaux. IETF.
[RFC2483]
URI Resolution Services Necessary for URN Resolution
, M. Mealling, R. Daniel. IETF.
[RFC3676]
The Text/Plain Format and DelSp Parameters
, R. Gellens. IETF.
[RFC9239]
Updates to ECMAScript Media Types
, M. Miller, M. Borins, M. Bynens, B. Farias. IETF.
[RFC4337]
(Non-normative)
MIME Type Registration for MPEG-4
, Y. Lim, D. Singer. IETF.
[RFC7595]
Guidelines and Registration Procedures for URI Schemes
, D. Thaler, T. Hansen, T. Hardie. IETF.
[RFC5322]
Internet Message Format
, P. Resnick. IETF.
[RFC6381]
The 'Codecs' and 'Profiles' Parameters for "Bucket" Media Types
, R. Gellens, D. Singer, P. Frojdh. IETF.
[RFC6266]
Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
, J. Reschke. IETF.
[RFC6350]
vCard Format Specification
, S. Perreault. IETF.
[RFC6596]
The Canonical Link Relation
, M. Ohye, J. Kupke. IETF.
[RFC6903]
Additional Link Relation Types
, J. Snell. IETF.
[RFC7034]
(Non-normative)
HTTP Header Field X-Frame-Options
, D. Ross, T. Gondrom. IETF.
[RFC7303]
XML Media Types
, H. Thompson, C. Lilley. IETF.
[RFC7578]
Returning Values from Forms: multipart/form-data
, L. Masinter. IETF.
[RFC8297]
An HTTP Status Code for Indicating Hints
, K. Oku. IETF.
[SCREENORIENTATION]
Screen Orientation
, M. Cáceres. W3C.
[SCSU]
(Non-normative)
UTR #6: A Standard Compression Scheme For Unicode
, M. Wolf, K. Whistler, C. Wicksteed, M. Davis, A. Freytag, M. Scherer. Unicode Consortium.
[SECURE-CONTEXTS]
Secure Contexts
, M. West. W3C.
[SELECTION]
Selection API
, R. Niwa. W3C.
[SELECTORS]
Selectors
, E. Etemad, T. Çelik, D. Glazman, I. Hickson, P. Linss, J. Williams. W3C.
[SMS]
(Non-normative)
URI Scheme for Global System for Mobile Communications (GSM) Short Message Service (SMS)
, E. Wilde, A. Vaha-Sipila. IETF.
[STRUCTURED-FIELDS]
Structured Field Values for HTTP
, M. Nottingham, P-H. Kamp. IETF.
[SRI]
Subresource Integrity
, D. Akhawe, F. Braun, F. Marier, J. Weinberger. W3C.
[STORAGE]
Storage
, A. van Kesteren. WHATWG.
[SVG]
Scalable Vector Graphics (SVG) 2
, N Andronikos, R. Atanassov, T. Bah, B. Birtles, B. Brinza, C. Concolato, E. Dahlström, C. Lilley, C. McCormack, D. Schepers, R. Schwerdtfeger, D. Storey, S. Takagi, J. Watt. W3C.
[SW]
Service Workers
, A. Russell, J. Song, J. Archibald. W3C.
[TOR]
(Non-normative)
Tor
[TOUCH]
Touch Events
, D. Schepers, S. Moon, M. Brubeck, A. Barstow, R. Byers. W3C.
[TRUSTED-TYPES]
Trusted Types
, K. Kotowicz, M. West. W3C.
[TZDATABASE]
(Non-normative)
Time Zone Database
. IANA.
[UAAG]
(Non-normative)
User Agent Accessibility Guidelines (UAAG) 2.0
, J. Allan, K. Ford, J. Richards, J. Spellman. W3C.
[UIEVENTS]
UI Events Specification
, G. Kacmarcik, T. Leithead. W3C.
[UNICODE]
The Unicode Standard
. Unicode Consortium.
[UNIVCHARDET]
(Non-normative)
A composite approach to language/encoding detection
, S. Li, K. Momoi. Netscape. In
Proceedings of the 19th International Unicode Conference
[URL]
URL
, A. van Kesteren. WHATWG.
[URLPATTERN]
URL Pattern
, B. Kelly, J. Roman, 宍戸俊哉. WHATWG.
[URN]
URN Syntax
, R. Moats. IETF.
[UTF7]
(Non-normative)
UTF-7: A Mail-Safe Transformation Format of Unicode
, D. Goldsmith, M. Davis. IETF.
[UTF8DET]
(Non-normative)
Multilingual form encoding
, M. Dürst. W3C.
[UTR36]
(Non-normative)
UTR #36: Unicode Security Considerations
, M. Davis, M. Suignard. Unicode Consortium.
[WASM]
WebAssembly Core Specification
, A. Rossberg. W3C.
[WASMESM]
WebAssembly JavaScript Interface: ESM Integration
, L. Clark, D. Ehrenberg., A. Takikawa., G. Bedford. W3C.
[WASMJS]
(Non-normative)
WebAssembly JavaScript Interface
, D. Ehrenberg. W3C.
[WCAG]
(Non-normative)
Web Content Accessibility Guidelines (WCAG)
, A. Kirkpatrick, J. O Connor, A. Campbell, M. Cooper. W3C.
[WEBANIMATIONS]
Web Animations
, B. Birtles, S. Stephens, D. Stockwell. W3C.
[WEBAUDIO]
(Non-normative)
Web Audio API
, P. Adenot, H. Choi. W3C.
[WEBAUTHN]
Web Authentication: An API for accessing Public Key Credentials
, M. Jones, A. Kumar, E. Lundberg, D. Balfanz, V. Bharadwaj, A. Birgisson, A. Czeskis, J. Hodges, J.C. Jones, H. Le Van Gong, A. Liao, R. Lindemann, J. Bradley, C. Brand, T. Cappalli, A. Langley, G. Mandyam, M. Miller, N. Satragno, N. Steele, J. Tan, S. Weeden, M. West, J. Yasskin. W3C.
[WEBCODECS]
WebCodecs API
, C. Cunningham, P. Adenot, B. Aboba. W3C.
[WEBCRYPTO]
Web Cryptography API
, D. Huigens. W3C.
[WEBDRIVER]
WebDriver
, S. Stewart, D. Burns. W3C.
[WEBDRIVERBIDI]
WebDriver BiDi
. W3C
[WEBGL]
WebGL Specifications
, D. Jackson, J. Gilbert. Khronos Group.
[WEBGPU]
WebGPU
, D. Malyshau, K. Ninomiya. W3C.
[WEBIDL]
Web IDL
, E. Chen, T. Gu. WHATWG.
[WEBLINK]
Web Linking
, M. Nottingham. IETF.
[WEBLOCKS]
(Non-normative)
Web Locks API
, J. Bell, K. Rosylight. W3C.
[WEBMCG]
WebM Container Guidelines
. The WebM Project.
[WEBNFC]
(Non-normative)
Web NFC
, F. Beaufort, K. Christiansen, Z. Kis. W3C.
[WEBRTC]
(Non-normative)
Web RTC
, C. Jennings, F. Castelli, H. Boström, J. Bruaroey. W3C.
[WEBSOCKETS]
WebSockets
, A. Rice. WHATWG.
[WEBTRANSPORT]
WebTransport
, B. Aboba, N. Jaju, V. Vasiliev. W3C.
[WEBVTT]
WebVTT
, S. Pieters. W3C.
[WHATWGWIKI]
The WHATWG Wiki
. WHATWG.
[X121]
Recommendation X.121 — International Numbering Plan for Public Data Networks
, CCITT Blue Book, Fascicle VIII.3, pp. 317-332.
[XFN]
XFN 1.1 profile
, T. Çelik, M. Mullenweg, E. Meyer. GMPG.
[XHR]
XMLHttpRequest
, A. van Kesteren. WHATWG.
[XKCD1288]
(Non-normative)
Substitutions
, Randall Munroe. xkcd.
[XML]
Extensible Markup Language
, T. Bray, J. Paoli, C. Sperberg-McQueen, E. Maler, F. Yergeau. W3C.
[XMLENTITY]
(Non-normative)
XML Entity Definitions for Characters
, D. Carlisle, P. Ion. W3C.
[XMLNS]
Namespaces in XML
, T. Bray, D. Hollander, A. Layman, R. Tobin. W3C.
[XMLSSPI]
Associating Style Sheets with XML documents
, J. Clark, S. Pieters, H. Thompson. W3C.
[XPATH10]
XML Path Language (XPath) Version 1.0
, J. Clark, S. DeRose. W3C.
[XSLT10]
(Non-normative)
XSL Transformations (XSLT) Version 1.0
, J. Clark. W3C.
[XSLTP]
(Non-normative)
DOM XSLTProcessor
, WHATWG Wiki. WHATWG.
Acknowledgments
Thanks to Tim Berners-Lee for inventing HTML, without which none of this would exist.
Thanks to

Aankhen,
Aaqa Ishtyaq,
Aaron Boodman,
Aaron Leventhal,
Aaron Krajeski,
Abhishek Ghaskata,
Abhishek Gupta,
Adam Barth,
Alexandra Borovova,
Adam de Boor,
Adam Hepton,
Adam Klein,
Adam Rice,
Adam Roben,
Addison Phillips,
Adele Peterson,
Adrian Bateman,
Adrian Roselli,
Adrian Sutton,
Agustín Fernández,
Aharon (Vladimir) Lanin,
Ajai Tirumali,
Ajay Poshak,
Akash Balenalli,
Akatsuki Kitamura,
Alan Jeffrey,
Alan Plum,
Alastair Campbell,
Alejandro G. Castro,
Alex Bishop,
Alex Nicolaou,
Alex Nozdriukhin,
Alex Rousskov,
Alex Soncodi,
Alexander Farkas,
Alexander J. Vincent,
Alexander Kalenik,
Alexandre Dieulot,
Alexandre Morgaut,
Alexey Feldgendler,
Алексей Проскуряков (Alexey Proskuryakov),
Alexey Shvayka,
Alexis Deveria,
Alfred Agrell,
Ali Juma,
Alice Boxhall,
Alice Wonder,
Allan Clements,
Allen Wirfs-Brock,
Alex Komoroske,
Alex Russell,
Alphan Chen,
Aman Ansari,
Ami Fischman,
Amos Jeffries,
Amos Lim,
Anders Carlsson,
André Bargull,
André E. Veltstra,
Andrea Rendine,
Andreas,
Andreas Deuschlinger,
Andreas Farre,
Andreas Kling,
Andrei Popescu,
Andres Gomez,
Andres Rios,
Andreu Botella,
Andrew Barfield,
Andrew Clover,
Andrew Gove,
Andrew Grieve,
Andrew Kaster,
Andrew Macpherson,
Andrew Oakley,
Andrew Paseltiner,
Andrew Simons,
Andrew Smith,
Andrew W. Hagen,
Andrew Williams,
Andrey V. Lukyanov,
Andry Rendy,
Andy Davies,
Andy Earnshaw,
Andy Heydon,
Andy Paicu,
Andy Palay,
Anjana Vakil,
Ankur Kaushal,
Anna Belle Leiserson,
Anna Sidwell,
Anthony Boyd,
Anthony Bryan,
Anthony Hickson,
Anthony Ramine,
Anthony Ricaud,
Anton Vayvod,
Antonio Sartori,
Antti Koivisto,
Arfat Salman,
Arkadiusz Michalski,
Arne Thomassen,
Aron Spohr,
Arphen Lin,
Arthur Hemery,
Arthur Sonzogni,
Arthur Stolyar,
Arun Patole,
Aryeh Gregor,
Asanka Herath,
Asbjørn Ulsberg,
Ashley Gullen,
Ashley Sheridan,
Asumu Takikawa,
Atsushi Takayama,
Attila Haraszti,
Aurelien Levy,
Ave Wrigley,
Avi Drissman,
Axel Dahmen,
방성범 (Bang Seongbeom),
Barry Pollard,
Ben Boyle,
Ben Godfrey,
Ben Golightly,
Ben Kelly,
Ben Lerner,
Ben Leslie,
Ben Meadowcroft,
Ben Millard,
Benjamin Carl Wiley Sittler,
Benjamin Hawkes-Lewis,
Benjamin VanderSloot,
Benji Bilheimer,
Benoit Ren,
Bert Bos,
Bijan Parsia,
Bil Corry,
Bill Mason,
Bill McCoy,
Billy Wong,
Billy Woods,
Bjartur Thorlacius,
Björn Höhrmann,
Blake Frantz,
Bob Lund,
Bob Owen,
Bobby Holley,
Boris Zbarsky,
Brad Fults,
Brad Neuberg,
Brad Spencer,
Bradley Meck,
Brady Eidson,
Brandon Jones,
Brendan Eich,
Brenton Simpson,
Brett Wilson,
Brett Zamir,
Brian Birtles,
Brian Blakely,
Brian Campbell,
Brian Korver,
Brian Kuhn,
Brian M. Dube,
Brian Ryner,
Brian Smith,
Brian Wilson,
Bryan Sullivan,
Bruce Bailey,
Bruce D'Arcus,
Bruce Lawson,
Bruce Miller,
Bugs Nash,
C. Scott Ananian,
C. Williams,
Cameron McCormack,
Cameron Zemek,
Cao Yipeng,
Carlos Amengual,
Carlos Gabriel Cardona,
Carlos Ibarra López,
Carlos Perelló Marín,
Carolyn MacLeod,
Casey Leask,
Cătălin Badea,
Cătălin Mariș,
Cem Turesoy,
ceving,
Chao Cai,
윤석찬 (Channy Yun),
Charl van Niekerk,
Charlene Wright,
Charles Iliya Krempeaux,
Charles McCathie Nevile,
Charlie Reis,
白丞祐 (Cheng-You Bai),
Chris Apers,
Chris Cressman,
Chris Dumez,
Chris Evans,
Chris Harrelson,
Chris Markiewicz,
Chris Morris,
Chris Nardi,
Chris Needham,
Chris Pearce,
Chris Peterson,
Chris Rebert,
Chris Weber,
Chris Wilson,
Christian Biesinger,
Christian Johansen,
Christian Schmidt,
Christoph Päper,
Christophe Dumez,
Christopher Aillon,
Christopher Cameron,
Christopher Ferris,
Chriswa,
Clark Buehler,
Cole Robison,
Colin Fine,
Collin Jackson,
Conrad Crawford,
Corey Farwell,
Corprew Reed,
Craig Cockburn,
Csaba Gabor,
Csaba Marton,
Cynthia Shelly,
Cyrille Tuzi,
Daksh Shah,
Dan Callahan,
Dan Yoder,
Dane Foster,
Daniel Barclay,
Daniel Bratell,
Daniel Brooks,
Daniel Brumbaugh Keeney,
Daniel Buchner,
Daniel Cheng,
Daniel Clark,
Daniel Davis,
Daniel Ehrenberg,
Daniel Ethridge,
Daniel Glazman,
Daniel Holbert,
Daniel Peng,
Daniel Schattenkirchner,
Daniel Spång,
Daniel Steinberg,
Daniel Tan,
Daniel Trebbien,
Daniel Vogelheim,
Danny Sullivan,
Daphne Preston-Kendal,
Darien Maillet Valentine,
Darin Adler,
Darin Fisher,
Darxus,
Dave Camp,
Dave Cramer,
Dave Hodder,
Dave Lampton,
Dave Singer,
Dave Tapuska,
Dave Townsend,
David Baron,
David Bloom,
David Bokan,
David Bruant,
David Carlisle,
David E. Cleary,
David Egan Evans,
David Fink,
David Flanagan,
David Gerard,
David Grogan,
David Hale,
David Håsäther,
David Hyatt,
David I. Lehn,
David John Burrowes,
David Matja,
David Remahl,
David Resseguie,
David Smith,
David Storey,
David Vest,
David Woolley,
David Zbarsky,
Dave Methvin,
DeWitt Clinton,
Dean Edridge,
Dean Edwards,
Dean Jackson,
Debanjana Sarkar,
Debi Orton,
Delan Azabani,
Derek Featherstone,
Derek Guenther,
Devarshi Pant,
Devdatta,
Devin Mullins,
Devin Rousso,
Di Zhang,
Diego Ferreiro Val,
Diego González Zúñiga,
Diego Ponce de León,
Dimitri Glazkov,
Dimitry Golubovsky,
Dirk Pranke,
Dirk Schulze,
Dirkjan Ochtman,
Divya Manian,
Dmitry Lazutkin,
Dmitry Titov,
dolphinling,
Dominic Cooney,
Dominique Hazaël-Massieux,
Don Brutzman,
Donovan Glover,
Doron Rosenberg,
Doug Kramer,
Doug Simpkinson,
Drew Wilson,
Edgar Chen,
Edmund Lai,
Eduard Pascual,
Eduardo Vela,
Edward Welbourne,
Edward Z. Yang,
Eemeli Aro,
Ehsan Akhgari,
Ehsan Karamad,
Eira Monstad,
Eitan Adler,
Eli Friedman,
Eli Grey,
Eliot Graff,
Elisabeth Robson,
Elizabeth Castro,
Elliott Sprehn,
Elliotte Harold,
Emilio Cobos Álvarez,
Emily Stark,
Eric Carlson,
Eric Casler,
Eric Lawrence,
Eric Portis,
Eric Rescorla,
Eric Semling,
Eric Shepherd,
Eric Willigers,
Erik Arvidsson,
Erik Charlebois,
Erik Rose,
栗本 英理子 (Eriko Kurimoto),
espretto,
Evan Jacobs,
Evan Martin,
Evan Prodromou,
Evan Stade,
Evert,
Evgeny Kapun,
ExE-Boss,
Ezequiel Garzón,
fantasai,
Félix Sanz,
Felix Sasaki,
Fernando Altomare Serboncini,
Forbes Lindesay,
Francesco Schwarz,
Francis Brosnan Blazquez,
Franck 'Shift' Quélain,
François Marier,
Frank Barchard,
Frank Liberato,
Franklin Shirley,
Frederik Braun,
Fredrik Söderquist,
鵜飼文敏 (Fumitoshi Ukai),
Futomi Hatano,
Gavin Carothers,
Gavin Kistner,
Gareth Rees,
Garrett Smith,
Gary Blackwood,
Gary Kacmarcik,
Gary Katsevman,
Geoff Richards,
Geoffrey Garen,
Georg Neis,
George Lund,
Gianmarco Armellin,
Giovanni Campagna,
Giuseppe Pascale,
Glenn Adams,
Glenn Maynard,
Graham Klyne,
Greg Botten,
Greg Houston,
Greg Wilkins,
Gregg Tavares,
Gregory J. Rosmaita,
Gregory Terzian,
Grey,
guest271314,
Guilherme Johansson Tramontina,
Guy Bedford,
Gytis Jakutonis,
Håkon Wium Lie,
Habib Virji,
Hajime Morrita,
Hallvord Reiar Michaelsen Steen,
Hanna Laakso,
Hans S. Tømmerhalt,
Hans Stimer,
Harald Alvestrand,
Hayato Ito,
何志翔 (HE Zhixiang),
Henri Sivonen,
Henrik Lied,
Henrik Lievonen,
Henry Lewis,
Henry Mason,
Henry Story,
Hermann Donfack Zeufack,
中川博貴 (Hiroki Nakagawa),
Hiroshige Hayashizaki,
Hiroyuki USHITO,
Hitoshi Yoshida,
Hongchan Choi,
王华 (Hua Wang),
Hugh Bellamy,
Hugh Guiney,
Hugh Winkler,
Ian Bicking,
Ian Clelland,
Ian Davis,
Ian Fette,
Ian Henderson,
Ian Kilpatrick,
Ibrahim Ahmed,
Ido Green,
Ignacio Javier,
Igor Oliveira,
安次嶺 一功 (Ikko Ashimine),
Ilya Grigorik,
Ingvar Stepanyan,
isonmad,
Iurii Kucherov,
Ivan Enderlin,
Ivan Nikulin,
Ivan Panchenko,
Ivo Emanuel Gonçalves,
J. King,
J.C. Jones,
Jackson Ray Hamilton,
Jacob Davies,
Jacques Distler,
Jake Archibald,
Jake Verbaten,
Jakub Vrána,
Jakub Łopuszański,
Jakub Wilk,
James Browning,
James Craig,
James Graham,
James Greene,
James Justin Harrell,
James Kozianski,
James M Snell,
James Perrett,
James Robinson,
Jamie Liu,
Jamie Lokier,
Jamie Mansfield,
Jan Kühle,
Jan Miksovsky,
Janice Shiu,
Janusz Majnert,
Jan-Ivar Bruaroey,
Jan-Klaas Kollhof,
Jared Jacobs,
Jason Duell,
Jason Kersey,
Jason Lustig,
Jason Orendorff,
Jason White,
Jasper Bryant-Greene,
Jasper St. Pierre,
Jatinder Mann,
Jay Henry Kao,
Jayson Chen,
Jean-Yves Avenard,
Jed Hartman,
Jeff Balogh,
Jeff Cutsinger,
Jeff Gilbert,
Jeff "=JeffH" Hodges,
Jeff Schiller,
Jeff Walden,
Jeffrey Yasskin,
Jeffrey Zeldman,
胡慧鋒 (Jennifer Braithwaite),
Jellybean Stonerfish,
Jennifer Apacible,
Jens Bannmann,
Jens Fendler,
Jens Oliver Meiert,
Jens Widell,
Jer Noble,
Jeremey Hustman,
Jeremy Keith,
Jeremy Orlow,
Jeremy Roman,
Jeroen van der Meer,
Jerry Smith,
Jesse Renée Beach,
Jessica Jong,
jfkthame,
Jian Li,
Jihye Hong,
Jim Jewett,
Jim Ley,
Jim Meehan,
Jim Michaels,
Jin Dongxun (金东勋, 金東勳, 김동훈),
Jinho Bang,
Jinjiang (勾三股四),
Jirka Kosek,
Jjgod Jiang,
Joaquim Medeiros,
João Eiras,
Jochen Eisinger,
Joe Clark,
Joe Gregorio,
Joel Spolsky,
Joel Verhagen,
Joey Arhar,
Johan Herland,
Johanna Herman,
John Boyer,
John Bussjaeger,
John Carpenter,
John Daggett,
John Fallows,
John Foliot,
John Harding,
John Keiser,
John Law,
John Musgrave,
John Snyders,
John Stockton,
John-Mark Bell,
Johnny Stenback,
Jon Coppeard,
Jon Ferraiolo,
Jon Gibbins,
Jon Jensen,
Jon Perlow,
Jonas Sicking,
Jonathan Cook,
Jonathan Kew,
Jonathan Neal,
Jonathan Oddy,
Jonathan Rees,
Jonathan Watt,
Jonathan Worent,
Jonny Axelsson,
Joram Schrijver,
Jordan Tucker,
Jorgen Horstink,
Joris van der Wel,
Jorunn Danielsen Newth,
Joseph Kesselman,
Joseph Mansfield,
Joseph Pecoraro,
Josh Aas,
Josh Hart,
Josh Juran,
Josh Levenberg,
Josh Matthews,
Joshua Bell,
Joshua Chen,
Joshua Randall,
Juan Olvera,
Juanmi Huertas,
Jukka K. Korpela,
Jules Clément-Ripoche,
Julian Reschke,
Julio Lopez,
小勝 純 (Jun Kokatsu),
Jun Yang (harttle),
Jungkee Song,
Jürgen Jeka,
Justin Lebar,
Justin Novosad,
Justin Rogers,
Justin Schuh,
Justin Sinclair,
Juuso Lapinlampi,
Ka-Sing Chou,
Kagami Sascha Rosylight,
Kai Hendry,
Kamishetty Sreeja,
呂康豪 (KangHao Lu),
Karl Dubost,
Karl Tomlinson,
Kartik Arora,
Kartikaya Gupta,
Kathy Walton,
河童エクマ(Kawarabe Ecma)
Keith Cirkel,
Keith Rollin,
Keith Yeung,
Kelly Ford,
Kelly Norton,
Ken Russell,
Kenji Baheux,
Kevin Benson,
Kevin Cole,
Kevin Gadd,
Kevin McNee,
Kevin Venkiteswaran,
Khushal Sagar,
Kinuko Yasuda,
Koji Ishii,
Kornél Pál,
Kornel Lesinski,
上野 康平 (UENO, Kouhei),
Kris Northfield,
Kristian Spangsege,
Kristof Zelechovski,
Krzysztof Maczyński,
黒澤剛志 (Kurosawa Takeshi),
Kurt Catti-Schmidt,
Kyle Barnhart,
Kyle Hofmann,
Kyle Huey,
Léonard Bouchet,
Léonie Watson,
Lachlan Hunt,
Larry Masinter,
Larry Page,
Lars Gunther,
Lars Solberg,
Laura Carlson,
Laura Granka,
Laura L. Carlson,
Laura Wisewell,
Laurens Holst,
Lawrence Forooghian,
Lee Kowalkowski,
Leif Halvard Silli,
Leif Kornstaedt,
Lenny Domnitser,
Leonard Rosenthol,
Leons Petrazickis,
Liviu Tinta,
Lobotom Dysmon,
Logan,
Logan Moore,
Lorenz Ackermann,
Loune,
Lucas Gadani,
Łukasz Pilorz,
Luke Kenneth Casson Leighton,
Luke Warlow,
Luke Wilde,
Maciej Stachowiak,
Magne Andersson,
Magnus Kristiansen,
Maik Merten,
Majid Valipour,
Maksim Sadym,
Malcolm Rowe,
Manish Goregaokar,
Manish Tripathi,
Manuel Martinez-Almeida,
Manuel Rego Casasnovas,
Marc Hoyois,
Marc-André Choquette,
Marc-André Lafortune,
Marco Zehe,
Marcus Bointon,
Marcus Otterström,
Marijn Kruisselbrink,
Mark Amery,
Mark Birbeck,
Mark Davis,
Mark Green,
Mark Miller,
Mark Nottingham,
Mark Pilgrim,
Mark Rogers,
Mark Rowe,
Mark Schenk,
Mark Vickers,
Mark Wilton-Jones,
Markus Cadonau,
Markus Stange,
Martijn van der Ven,
Martijn Wargers,
Martin Atkins,
Martin Chaov,
Martin Dürst,
Martin Honnen,
Martin Janecke,
Martin Kutschker,
Martin Nilsson,
Martin Robinson,
Martin Thomson,
Masataka Yakura,
Masatoshi Kimura,
Mason Freed,
Mason Mize,
Mathias Bynens,
Mathieu Henri,
Matias Larsson,
Matt Brubeck,
Matt Di Pasquale,
Matt Falkenhagen,
Matt Giuca,
Matt Harding,
Matt Schmidt,
Matt Wright,
Matthew Gaudet,
Matthew Gregan,
Matthew Mastracci,
Matthew Noorenberghe,
Matthew Raymond,
Matthew Thomas,
Matthew Tylee Atkinson,
Mattias Waldau,
Max Romantschuk,
Maxim Tsoy,
Mayeul Cantan,
Menachem Salomon,
Menno van Slooten,
Micah Dubinko,
Micah Nerren,
Michael 'Ratt' Iannarelli,
Michael A. Nachbaur,
Michael A. Puls II,
Michael Carter,
Michael Daskalov,
Michael Day,
Michael Dyck,
Michael Enright,
Michael Ficarra,
Michael Gratton,
Michael Kohler,
Michael McKelvey,
Michael Nordman,
Michael Powers,
Michael Rakowski,
Michael(tm) Smith,
Michael Walmsley,
Michal Zalewski,
Michel Buffa,
Michel Fortin,
Michelangelo De Simone,
Michiel van der Blonk,
Miguel Casas-Sanchez,
Mihai Şucan,
Mihai Parparita,
Mike Brown,
Mike Dierken,
Mike Dixon,
Mike Hearn,
Mike Pennisi,
Mike Schinkel,
Mike Shaver,
Mikko Rantalainen,
Mingye Wang,
Mirko Brodesser,
Mohamed Zergaoui,
Mohammad Al Houssami,
Mohammad Reza Zakerinasab,
Momdo Nakamura,
Morten Stenshorne,
Mounir Lamouri,
Ms2ger,
mtrootyy,
邱慕安 (Mu-An Chiou),
Mukilan Thiyagarajan,
Mustaq Ahmed,
Myles Borins,
Nadia Heninger,
Nate Chapin,
NARUSE Yui,
Navid Zolghadr,
Neil Deakin,
Neil Rashbrook,
Neil Soiffer,
Nereida Rondon,
networkException,
Nicholas Shanks,
Nicholas Stimpson,
Nicholas Zakas,
Nickolay Ponomarev,
Nicolas Gallagher,
Nicolas Pena Moreno,
Nicolò Ribaudo,
Nidhi Jaju,
Nikki Bee,
Niklas Gögge,
Nina Satragno,
Noah Mendelsohn,
Noah Slater,
Noam Rosenthal,
Noel Gordon,
Nolan Waite,
NoozNooz42,
Norbert Lindenberg,
Oisín Nolan,
Ojan Vafai,
Olaf Hoffmann,
Olav Junker Kjær,
Oldřich Vetešník,
Oli Studholme,
Oliver Hunt,
Oliver Rigby,
Olivia (Xiaoni) Lai,
Olivier Gendrin,
Olli Pettay,
Ondřej Žára,
Ori Avtalion,
Oriol Brufau,
oSand,
Pablo Flouret,
Patrick Dark,
Patrick Garies,
Patrick H. Lauke,
Patrik Persson,
Paul Adenot,
Paul Lewis,
Paul Norman,
Per-Erik Brodin,
一丝 (percyley),
Perry Smith,
Peter Beverloo,
Peter Karlsson,
Peter Kasting,
Peter Moulder,
Peter Occil,
Peter Stark,
Peter Van der Beken,
Peter van der Zee,
Peter-Paul Koch,
Phil Pickering,
Philip Ahlberg,
Philip Brembeck,
Philip Taylor,
Philip TAYLOR,
Philippe De Ryck,
Pierre-Arnaud Allumé,
Pierre-Marie Dartus,
Pierre-Yves Gérardy,
Piers Wombwell,
Pooja Sanklecha,
Prashant Hiremath,
Prashanth Chandra,
Prateek Rungta,
Pravir Gupta,
Prayag Verma,
Psychpsyo,
李普君 (Pujun Li),
Rachid Finge,
Rafael Weinstein,
Rafał Miłecki,
Rahim Abdi,
Rahul Purohit,
Raj Doshi,
Rajas Moonka,
Rakina Zata Amni,
Ralf Stoltze,
Ralph Giles,
Raphael Champeimont,
Rebecca Star,
Remci Mizkur,
Remco,
Remy Sharp,
Rene Saarsoo,
Rene Stach,
Ric Hardacre,
Rich Clark,
Rich Doughty,
Richa Rupela,
Richard Gibson,
Richard Ishida,
Richard Torres,
Ricky Mondello,
Rigo Wenning,
Rikkert Koppes,
Rimantas Liubertas,
Riona Macnamara,
Rob Buis,
Rob Ennals,
Rob Jellinghaus,
Rob S,
Rob Smith,
Robert Blaut,
Robert Collins,
Robert Hogan,
Robert Kieffer,
Robert Linder,
Robert Millan,
Robert O'Callahan,
Robert Sayre,
Robin Berjon,
Robin Schaufler,
Rodger Combs,
Roland Steiner,
Roma Matusevich,
Romain Deltour,
Roman Ivanov,
Roy Fielding,
Rune Lillesveen,
Russell Bicknell,
Ruud Steltenpool,
Ryan King,
Ryan Landay,
Ryan Sleevi,
Ryo Kajiwara,
Ryo Kato,
Ryosuke Niwa,
S. Mike Dierken,
Salvatore Loreto,
Sam Atkins,
Sam Dutton,
Sam Kuper,
Sam Ruby,
Sam Sneddon,
Sam Weinig,
Samikshya Chand,
Samuel Bronson,
Samy Kamkar,
Sander van Lambalgen,
Sanjoy Pal,
Sanket Joshi,
Sarah Gebauer,
Sarven Capadisli,
Satrujit Behera,
Sayan Sivakumaran,
Schalk Neethling,
Scott Beardsley,
Scott González,
Scott Hess,
Scott Jehl,
Scott Miles,
Scott O'Hara,
Sean B. Palmer,
Sean Feng,
Sean Fraser,
Sean Hayes,
Sean Hogan,
Sean Knapp,
Sebastian Markbåge,
Sebastian Schnitzenbaumer,
Sendil Kumar N,
Seth Call,
Seth Dillingham,
Shannon Booth,
Shannon Moeller,
Shanti Rao,
Shaun Inman,
Shiino Yuki,
贺师俊 (HE Shi-Jun),
Shiki Okasaka,
Shivani Sharma,
shreyateeza,
Shubheksha Jalan,
Sidak Singh Aulakh,
Sierk Bornemann,
Sigbjørn Finne,
Sigbjørn Vik,
Silver Ghost,
Silvia Pfeiffer,
Šime Vidas,
Simon Fraser,
Simon Montagu,
Simon Sapin,
Yu Han,
Simon Spiegel,
Simon Wülker,
Siye Liu,
skeww,
Smylers,
Srirama Chandra Sekhar Mogali,
Stanton McCandlish,
stasoid,
Stefan Håkansson,
Stefan Haustein,
Stefan Santesson,
Stefan Schumacher,
Ştefan Vargyas,
Stefan Weiss,
Steffen Meschkat,
Stephen Chenney,
Stephen Ma,
Stephen Stewart,
Stephen White,
Steve Comstock,
Steve Faulkner,
Steve Fink,
Steve Orvell,
Steve Runyon,
Steven Bennett,
Steven Bingler,
Steven Garrity,
Steven Tate,
Stewart Brodie,
Stuart Ballard,
Stuart Langridge,
Stuart Parmenter,
Subramanian Peruvemba,
Sudhanshu Jaiswal,
sudokus999,
Sunava Dutta,
Surma,
Susan Borgrink,
Susan Lesch,
Sylvain Pasche,
T.J. Crowder,
Tab Atkins-Bittner,
Taiju Tsuiki,
Takashi Toyoshima,
Takayoshi Kochi,
Takeshi Yoshino,
Tantek Çelik
田村健人 (Kent TAMURA),
Tawanda Moyo,
Taylor Hunt,
Ted Mielczarek,
Terence Eden,
Terrence Wood,
Tetsuharu OHZEKI,
Theresa O'Connor,
Thijs van der Vossen,
Thomas Broyer,
Thomas Koetter,
Thomas O'Connor,
Tim Altman,
Tim Dresser,
Tim Flynn,
Tim Johansson,
Tim Nguyen,
Tim Perry,
Tim van der Lippe,
TJ VanToll,
Tobias Schneider,
Tobie Langel,
Toby Inkster,
Todd Moody,
Tom Baker,
Tom Pike,
Tom Schuster,
Tom ten Thij,
Tomasz Jakut,
Tomek Wytrębowicz,
Tommy Thorsen,
Tony Ross,
Tooru Fujisawa,
Toru Kobayashi,
Traian Captan,
Travis Leithead,
Trevor Rowbotham,
Trevor Saunders,
Trey Eckels,
triple-underscore,
Tristan Fraipont,
Tristan Parisot,
保呂 毅 (Tsuyoshi Horo),
Tyler Close,
Valentin Gosu,
Vardhan Gupta,
Vas Sudanagunta,
Veli Şenol,
Victor Carbune,
Victor Costan,
Vipul Snehadeep Chawathe,
Vitya Muhachev,
Vlad Levin,
Vladimir Katardjiev,
Vladimir Vukićević,
Vyacheslav Aristov,
voracity,
Walter Steiner,
Wakaba,
Wayne Carr,
Wayne Pollock,
Wellington Fernando de Macedo,
Wenson Hsieh,
Weston Ruter,
Wilhelm Joys Andersen,
Will Levine,
Will Ray,
William Chen,
William Swanson,
Willy Martin Aguirre Rodriguez,
Wladimir Palant,
Wojciech Mach,
Wolfram Kriesing,
Xan Gregg,
xenotheme,
XhmikosR,
Xida Chen,
Xidorn Quan,
Xue Fuqiao,
Yang Chen,
Yao Xiao,
Yash Handa,
Yay295,
Ye-Kui Wang,
Yehuda Katz,
Yi Xu,
Yi-An Huang,
Yngve Nysaeter Pettersen,
Yoav Weiss,
Yoel Hawa,
Yonathan Randolph,
Yu Huojiang,
Yuki Okushi,
Yury Delendik,
平野裕 (Yutaka Hirano),
Yuzo Fujishima,
西條柚 (Yuzu Saijo),
Zhenbin Xu,
张智强 (Zhiqiang Zhang),
Zoltan Herczeg,
Zyachel,
and
Øistein E. Andersen,

for their useful comments, both large and small, that have led to changes to this specification
over the years.
Thanks also to everyone who has ever posted about HTML to their blogs, public mailing lists, or
forums, including all the contributors to the
various
W3C HTML WG lists
and the
various WHATWG
lists
Special thanks to Richard Williamson for creating the first implementation of
canvas
in Safari, from which the canvas feature was designed.
Special thanks also to the Microsoft employees who first implemented the event-based
drag-and-drop mechanism,
contenteditable
, and other
features first widely deployed by the Windows Internet Explorer browser.
Special thanks and $10,000 to David Hyatt who came up with a broken implementation
of the
adoption agency algorithm
that the editor had to reverse
engineer and fix before using it in the parsing section.
Thanks to the participants of the microdata usability study for allowing us to use their
mistakes as a guide for designing the microdata feature.
Thanks to the many sources that provided inspiration for the examples used in the
specification.
Thanks also to the Microsoft blogging community for some ideas, to the attendees of the W3C
Workshop on Web Applications and Compound Documents for inspiration, to the #mrt crew, the #mrt.no
crew, and the #whatwg crew, and to Pillar and Hedral for their ideas and support.
Thanks to Igor Zhbanov for generating PDF versions of the specification.
Special thanks to the
RICG
for developing
the
picture
element and related features; in particular thanks to Adrian Bateman,
Bruce Lawson, David Newton, Ilya Grigorik, John Schoenick, Leon de Rijke, Mat Marquis, Marcos
Cáceres, Tab Atkins, Theresa O'Connor, and Yoav Weiss for their contributions.
Special thanks to the
WPWG
for incubating the
custom elements
feature. In particular, thanks to David Hyatt and
Ian Hickson for their influence through the XBL specifications, Dimitri Glazkov for the first
draft of the custom elements specification, and to
Alex Komoroske,
Alex Russell,
Andres Rios,
Boris Zbarsky,
Brian Kardell,
Daniel Buchner,
Dominic Cooney,
Erik Arvidsson,
Elliott Sprehn,
Hajime Morrita,
Hayato Ito,
Jan Miksovsky,
Jonas Sicking,
Olli Pettay,
Rafael Weinstein,
Roland Steiner,
Ryosuke Niwa,
Scott Miles,
Steve Faulkner,
Steve Orvell,
Tab Atkins,
Theresa O'Connor,
Tim Perry, and
William Chen
for their contributions.
Special thanks to the
CSSWG
for developing
the
worklets
. In particular, thanks to Ian Kilpatrick for his work as
editor of the original worklets specification.
Special thanks to the
WICG
for incubating the
speculative loading
feature. In particular, thanks to Jeremy Roman
for his work as editor of the original speculation rules and prefetch specifications.
For about ten years starting in 2003, this standard was almost entirely written by Ian Hickson
Google
ian@hixie.ch
).
Starting in 2015, the editor group expanded. It is currently maintained by
Anne van Kesteren
Apple
annevk@annevk.nl
),
Domenic Denicola
Google
d@domenic.me
Dominic Farolino
Google
domfarolino@gmail.com
),
Philip Jägenstedt
Google
philip@foolip.org
), and
Simon Pieters (
Mozilla
zcorpan@gmail.com
).
Intellectual property rights
The image in the introduction is based on
a photo
by
Wonderlane
CC BY 2.0
The image of the wolf in the embedded content introduction is based on
a photo
by
Barry O'Neill
Public domain
The image of the kettlebell swing in the embedded content introduction is based on
a photo
by
kokkarina
CC0 1.0
The Blue Robot Player sprite used in the canvas demo is based on
a work
by
JohnColburn
CC BY-SA 3.0
The photograph of robot 148 climbing the tower at the FIRST Robotics Competition 2013 Silicon Valley Regional is based on
a work
by
Lenore Edman
CC BY 2.0
The diagram showing how
async
and
defer
impact
script
loading is based on a
similar diagram from
blog post
by
Peter Beverloo
CC0 1.0
The image decoding demo used to demonstrate module-based workers draws on some example code
from
tutorial
by
Ilmari Heikkinen
CC BY 3.0
The

example was inspired by
a custom element
by
Steven
Skelton
. (
MIT
Part of the revision history of the
picture
element and related features can be found in the
ResponsiveImagesCG/picture-element
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
theme-color
metadata name can be found in the
whatwg/meta-theme-color
repository
, which is available under
CC0
Part of the revision history of the
custom elements
feature can be found in the
w3c/webcomponents
repository
, which
is available under the
W3C Software and
Document License
Part of the revision history of the
innerText
getter and setter can be found in the
rocallahan/innerText-spec
repository
, which is available under
CC0
Part of the revision history of the
worklets
feature can be found in the
w3c/css-houdini-drafts
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
import maps
feature can be found in the
WICG/import-maps
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
navigation API
feature can be found in the
WICG/navigation-api
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
Close requests and close watchers
section can be
found in the
WICG/close-watcher
repository
, which is available under the
W3C Software and
Document License
Part of the revision history of the
Speculative loading
section can be
found in the
WICG/nav-speculation
repository
, which is available under the
W3C Software and
Document License
Copyright © WHATWG (Apple, Google, Mozilla, Microsoft). This work is licensed under a
Creative Commons Attribution 4.0
International License
. To the extent portions of it are incorporated into source code, such
portions in the source code are licensed under the
BSD 3-Clause License
instead.
This is the Living Standard. Those interested in the patent-review version
should view the
Living Standard Review Draft