🔥 HOT: TR/html - Full Gallery 2025
HTML
Living Standard — Last Updated 17 December 2025
Table of contents
- 1 Introduction
- 2 Common infrastructure
- 3 Semantics, structure, and APIs of HTML documents
- 4 The elements of HTML
- 5 Microdata
- 6 User interaction
- 7 Loading web pages
- 8 Web application APIs
- 9 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
- 1 Introduction
- 2 Common infrastructure
- 2.1 Terminology
- 2.2 Policy-controlled features
- 2.3 Common microsyntaxes
- 2.4 URLs
- 2.5 Fetching resources
- 2.6 Common DOM interfaces
- 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
- 3 Semantics, structure, and APIs of HTML documents
- 3.1 Documents
- 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.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
selectelement inner content elements - 3.2.5.2.11
optgroupelement inner content elements - 3.2.5.2.12
optionelement inner content elements
- 3.2.5.3 Transparent content models
- 3.2.5.4 Paragraphs
- 3.2.6 Global attributes
- 3.2.7 The
innerTextandouterTextproperties - 3.2.8 Requirements relating to the bidirectional algorithm
- 3.2.9 Requirements related to ARIA and to platform accessibility APIs
- 4 The elements of HTML
- 4.1 The document element
- 4.2 Document metadata
- 4.3 Sections
- 4.3.1 The
bodyelement - 4.3.2 The
articleelement - 4.3.3 The
sectionelement - 4.3.4 The
navelement - 4.3.5 The
asideelement - 4.3.6 The
h1,h2,h3,h4,h5, andh6elements - 4.3.7 The
hgroupelement - 4.3.8 The
headerelement - 4.3.9 The
footerelement - 4.3.10 The
addresselement - 4.3.11 Headings and outlines
- 4.3.12 Usage summary
- 4.3.1 The
- 4.4 Grouping content
- 4.4.1 The
pelement - 4.4.2 The
hrelement - 4.4.3 The
preelement - 4.4.4 The
blockquoteelement - 4.4.5 The
olelement - 4.4.6 The
ulelement - 4.4.7 The
menuelement - 4.4.8 The
lielement - 4.4.9 The
dlelement - 4.4.10 The
dtelement - 4.4.11 The
ddelement - 4.4.12 The
figureelement - 4.4.13 The
figcaptionelement - 4.4.14 The
mainelement - 4.4.15 The
searchelement - 4.4.16 The
divelement
- 4.4.1 The
- 4.5 Text-level semantics
- 4.5.1 The
aelement - 4.5.2 The
emelement - 4.5.3 The
strongelement - 4.5.4 The
smallelement - 4.5.5 The
selement - 4.5.6 The
citeelement - 4.5.7 The
qelement - 4.5.8 The
dfnelement - 4.5.9 The
abbrelement - 4.5.10 The
rubyelement - 4.5.11 The
rtelement - 4.5.12 The
rpelement - 4.5.13 The
dataelement - 4.5.14 The
timeelement - 4.5.15 The
codeelement - 4.5.16 The
varelement - 4.5.17 The
sampelement - 4.5.18 The
kbdelement - 4.5.19 The
subandsupelements - 4.5.20 The
ielement - 4.5.21 The
belement - 4.5.22 The
uelement - 4.5.23 The
markelement - 4.5.24 The
bdielement - 4.5.25 The
bdoelement - 4.5.26 The
spanelement - 4.5.27 The
brelement - 4.5.28 The
wbrelement - 4.5.29 Usage summary
- 4.5.1 The
- 4.6 Links
- 4.6.1 Introduction
- 4.6.2 Links created by
aandareaelements - 4.6.3 API for
aandareaelements - 4.6.4 Following hyperlinks
- 4.6.5 Downloading resources
- 4.6.6 Hyperlink auditing
- 4.6.7 Link types
- 4.6.7.1 Link type "
alternate" - 4.6.7.2 Link type "
author" - 4.6.7.3 Link type "
bookmark" - 4.6.7.4 Link type "
canonical" - 4.6.7.5 Link type "
dns-prefetch" - 4.6.7.6 Link type "
expect" - 4.6.7.7 Link type "
external" - 4.6.7.8 Link type "
help" - 4.6.7.9 Link type "
icon" - 4.6.7.10 Link type "
license" - 4.6.7.11 Link type "
manifest" - 4.6.7.12 Link type "
modulepreload" - 4.6.7.13 Link type "
nofollow" - 4.6.7.14 Link type "
noopener" - 4.6.7.15 Link type "
noreferrer" - 4.6.7.16 Link type "
opener" - 4.6.7.17 Link type "
pingback" - 4.6.7.18 Link type "
preconnect" - 4.6.7.19 Link type "
prefetch" - 4.6.7.20 Link type "
preload" - 4.6.7.21 Link type "
privacy-policy" - 4.6.7.22 Link type "
search" - 4.6.7.23 Link type "
stylesheet" - 4.6.7.24 Link type "
tag" - 4.6.7.25 Link Type "
terms-of-service" - 4.6.7.26 Sequential link types
- 4.6.7.27 Other link types
- 4.6.7.1 Link type "
- 4.7 Edits
- 4.8 Embedded content
- 4.8.1 The
pictureelement - 4.8.2 The
sourceelement - 4.8.3 The
imgelement - 4.8.4 Images
- 4.8.4.1 Introduction
- 4.8.4.2 Attributes common to
source,img, andlinkelements - 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
iframeelement - 4.8.6 The
embedelement - 4.8.7 The
objectelement - 4.8.8 The
videoelement - 4.8.9 The
audioelement - 4.8.10 The
trackelement - 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.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
TrackEventinterface - 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
mapelement - 4.8.13 The
areaelement - 4.8.14 Image maps
- 4.8.15 MathML
- 4.8.16 SVG
- 4.8.17 Dimension attributes
- 4.8.1 The
- 4.9 Tabular data
- 4.9.1 The
tableelement - 4.9.2 The
captionelement - 4.9.3 The
colgroupelement - 4.9.4 The
colelement - 4.9.5 The
tbodyelement - 4.9.6 The
theadelement - 4.9.7 The
tfootelement - 4.9.8 The
trelement - 4.9.9 The
tdelement - 4.9.10 The
thelement - 4.9.11 Attributes common to
tdandthelements - 4.9.12 Processing model
- 4.9.13 Examples
- 4.9.1 The
- 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
formelement - 4.10.4 The
labelelement - 4.10.5 The
inputelement- 4.10.5.1 States of the
typeattribute- 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.1.1 Hidden state (
- 4.10.5.2 Implementation notes regarding localization of form controls
- 4.10.5.3 Common
inputelement attributes- 4.10.5.3.1 The
maxlengthandminlengthattributes - 4.10.5.3.2 The
sizeattribute - 4.10.5.3.3 The
readonlyattribute - 4.10.5.3.4 The
requiredattribute - 4.10.5.3.5 The
multipleattribute - 4.10.5.3.6 The
patternattribute - 4.10.5.3.7 The
minandmaxattributes - 4.10.5.3.8 The
stepattribute - 4.10.5.3.9 The
listattribute - 4.10.5.3.10 The
placeholderattribute
- 4.10.5.3.1 The
- 4.10.5.4 Common
inputelement APIs - 4.10.5.5 Common event behaviors
- 4.10.5.1 States of the
- 4.10.6 The
buttonelement - 4.10.7 The
selectelement - 4.10.8 The
datalistelement - 4.10.9 The
optgroupelement - 4.10.10 The
optionelement - 4.10.11 The
textareaelement - 4.10.12 The
outputelement - 4.10.13 The
progresselement - 4.10.14 The
meterelement - 4.10.15 The
fieldsetelement - 4.10.16 The
legendelement - 4.10.17 The
selectedcontentelement - 4.10.18 Form control infrastructure
- 4.10.19 Attributes common to form controls
- 4.10.19.1 Naming form controls: the
nameattribute - 4.10.19.2 Submitting element directionality: the
dirnameattribute - 4.10.19.3 Limiting user input length: the
maxlengthattribute - 4.10.19.4 Setting minimum input length requirements: the
minlengthattribute - 4.10.19.5 Enabling and disabling form controls: the
disabledattribute - 4.10.19.6 Form submission attributes
- 4.10.19.7 Autofill
- 4.10.19.1 Naming form controls: the
- 4.10.20 APIs for the text control selections
- 4.10.21 Constraints
- 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
SubmitEventinterface - 4.10.22.11 The
FormDataEventinterface
- 4.10.23 Resetting a form
- 4.10.1 Introduction
- 4.11 Interactive elements
- 4.11.1 The
detailselement - 4.11.2 The
summaryelement - 4.11.3 Commands
- 4.11.3.1 Facets
- 4.11.3.2 Using the
aelement to define a command - 4.11.3.3 Using the
buttonelement to define a command - 4.11.3.4 Using the
inputelement to define a command - 4.11.3.5 Using the
optionelement to define a command - 4.11.3.6 Using the
accesskeyattribute on alegendelement to define a command - 4.11.3.7 Using the
accesskeyattribute to define a command on other elements
- 4.11.4 The
dialogelement - 4.11.5 Dialog light dismiss
- 4.11.1 The
- 4.12 Scripting
- 4.12.1 The
scriptelement - 4.12.2 The
noscriptelement - 4.12.3 The
templateelement - 4.12.4 The
slotelement - 4.12.5 The
canvaselement- 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
Path2Dobjects - 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
ImageBitmaprendering context - 4.12.5.3 The
OffscreenCanvasinterface - 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
canvaselements - 4.12.5.7 Premultiplied alpha and the 2D rendering context
- 4.12.5.1 The 2D rendering context
- 4.12.1 The
- 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.3 Core concepts
- 4.13.4 The
CustomElementRegistryinterface - 4.13.5 Upgrades
- 4.13.6 Custom element reactions
- 4.13.7 Element internals
- 4.13.1 Introduction
- 4.14 Common idioms without dedicated elements
- 4.15 Disabled elements
- 4.16 Matching HTML elements using selectors and CSS
- 5 Microdata
- 6 User interaction
- 6.1 The
hiddenattribute - 6.2 Page visibility
- 6.3 Inert subtrees
- 6.4 Tracking user activation
- 6.5 Activation behavior of elements
- 6.6 Focus
- 6.7 Assigning keyboard shortcuts
- 6.8 Editing
- 6.8.1 Making document regions editable: The
contenteditablecontent attribute - 6.8.2 Making entire documents
editable: the
designModegetter 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
inputmodeattribute - 6.8.10 Input modalities: the
enterkeyhintattribute
- 6.8.1 Making document regions editable: The
- 6.9 Find-in-page
- 6.10 Close requests and close watchers
- 6.11 Drag and drop
- 6.12 The
popoverattribute
- 6.1 The
- 7 Loading web pages
- 7.1 Supporting concepts
- 7.2 APIs related to navigation and
session history
- 7.2.1 Security infrastructure for
Window,WindowProxy, andLocationobjects- 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 ( O )
- 7.2.1.3.2 CrossOriginPropertyFallback ( P )
- 7.2.1.3.3 IsPlatformObjectSameOrigin ( O )
- 7.2.1.3.4 CrossOriginGetOwnPropertyHelper ( O, P )
- 7.2.1.3.5 CrossOriginGet ( O, P, Receiver )
- 7.2.1.3.6 CrossOriginSet ( O, P, V, Receiver )
- 7.2.1.3.7 CrossOriginOwnPropertyKeys ( O )
- 7.2.2 The
Windowobject - 7.2.3 The
WindowProxyexotic object - 7.2.4 The
Locationinterface - 7.2.5 The
Historyinterface - 7.2.6 The navigation API
- 7.2.6.1 Introduction
- 7.2.6.2 The
Navigationinterface - 7.2.6.3 Core infrastructure
- 7.2.6.4 Initializing and updating the entry list
- 7.2.6.5 The
NavigationHistoryEntryinterface - 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
NavigationActivationinterface - 7.2.6.10 The
navigateevent
- 7.2.7 Event interfaces
- 7.2.8 The
NotRestoredReasonsinterface
- 7.2.1 Security infrastructure for
- 7.3 Infrastructure for sequences of documents
- 7.4 Navigation and session history
- 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-replacedocuments - 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.7 The `
X-Frame-Options` header - 7.8 The `
Refresh` header - 7.9 Browser user interface considerations
- 8 Web application APIs
- 8.1 Scripting
- 8.1.1 Introduction
- 8.1.2 Agents and agent clusters
- 8.1.3 Realms and their counterparts
- 8.1.4 Script processing model
- 8.1.5 Module specifier resolution
- 8.1.6 JavaScript specification host hooks
- 8.1.6.1 HostEnsureCanAddPrivateElement(O)
- 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, V, 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.7 Event loops
- 8.1.8 Events
- 8.2 The
WindowOrWorkerGlobalScopemixin - 8.3 Base64 utility methods
- 8.4 Dynamic markup insertion
- 8.5 DOM parsing and serialization APIs
- 8.1 Scripting