Living Standard — Last Updated 20 October 2025
a
and area
elementsa
and area
elementsalternate
"author
"bookmark
"canonical
"dns-prefetch
"expect
"external
"help
"icon
"license
"manifest
"modulepreload
"nofollow
"noopener
"noreferrer
"opener
"pingback
"preconnect
"prefetch
"preload
"privacy-policy
"search
"stylesheet
"tag
"terms-of-service
"Links are a conceptual construct, created by a
, area
,
form
, and link
elements, that represent
a connection between two resources, one of which is the current Document
. There are
three kinds of links in HTML:
These are links to resources that are to be used to augment the current document, generally automatically processed by the user agent. All external resource links have a fetch and process the linked resource algorithm which describes how the resource is obtained.
These are links to other resources that are generally exposed to the user by the user agent so that the user can cause the user agent to navigate to those resources, e.g. to visit them in a browser or download them.
These are links to resources within the current document, used to give those resources special meaning or behavior.
For link
elements with an href
attribute and a
rel
attribute, links must be created for the keywords of the
rel
attribute, as defined for those keywords in the link types section.
Similarly, for a
and area
elements with an href
attribute and a rel
attribute, links must be created for the keywords of the
rel
attribute as defined for those keywords in the link types section. Unlike link
elements, however,
a
and area
elements with an href
attribute that either do not have a rel
attribute, or
whose rel
attribute has no keywords that are defined as
specifying hyperlinks, must also create a hyperlink.
This implied hyperlink has no special meaning (it has no link type)
beyond linking the element's node document to the resource given by the element's href
attribute.
Similarly, for form
elements with a rel
attribute, links must be created for the keywords of the rel
attribute as defined for those keywords in the link types section.
form
elements that do not have a rel
attribute,
or whose rel
attribute has no keywords that are defined as
specifying hyperlinks, must also create a hyperlink.
A hyperlink can have one or more hyperlink annotations that modify the processing semantics of that hyperlink.
a
and area
elementsThe href
attribute on a
and area
elements must have a value that is a valid
URL potentially surrounded by spaces.
The href
attribute on a
and
area
elements is not required; when those elements do not have href
attributes they do not create hyperlinks.
The target
attribute, if present, must be a valid navigable target name or keyword. It gives the
name of the navigable that will be used. User agents use this
name when following hyperlinks.
The download
attribute, if present, indicates that the author intends the hyperlink to be used for downloading a resource. The attribute may have a value; the
value, if any, specifies the default filename that the author recommends for use in labeling the
resource in a local file system. There are no restrictions on allowed values, but authors are
cautioned that most file systems have limitations with regard to what punctuation is supported in
filenames, and user agents are likely to adjust filenames accordingly.
Support in all current engines.
The ping
attribute, if present, gives the URLs of the
resources that are interested in being notified if the user follows the hyperlink. The value must
be a set of space-separated tokens, each of which must be a valid non-empty
URL whose scheme is an HTTP(S)
scheme. The value is used by the user agent for hyperlink
auditing.
The rel
attribute on a
and area
elements controls what kinds of links the elements create. The attribute's value must be an
unordered set of unique space-separated tokens. The allowed
keywords and their meanings are defined below.
rel
's supported tokens are the keywords defined in HTML link types which are allowed on a
and area
elements, impact the processing model, and are supported by the user agent. The possible supported tokens are noreferrer
, noopener
, and opener
. rel
's supported tokens must only include the tokens from this
list that the user agent implements the processing model for.
The rel
attribute has no default value. If the
attribute is omitted or if none of the values in the attribute are recognized by the user agent,
then the document has no particular relationship with the destination resource other than there
being a hyperlink between the two.
The hreflang
attribute on a
elements that create hyperlinks, if
present, gives the language of the linked resource. It is purely advisory. The value must be a
valid BCP 47 language tag. [BCP47] User agents must not consider this
attribute authoritative — upon fetching the resource, user agents must use only language
information associated with the resource to determine its language, not metadata included in the
link to the resource.
The type
attribute, if present, gives the MIME type of the linked resource. It is purely
advisory. The value must be a valid MIME type string. User agents must
not consider the type
attribute authoritative —
upon fetching the resource, user agents must not use metadata included in the link to the resource
to determine its type.
The referrerpolicy
attribute is a referrer
policy attribute. Its purpose is to set the referrer policy used when
following hyperlinks. [REFERRERPOLICY]
When an a
or area
element's activation behavior is
invoked, the user agent may allow the user to indicate a preference regarding whether the
hyperlink is to be used for navigation or whether the resource it
specifies is to be downloaded.
In the absence of a user preference, the default should be navigation if the element has no
download
attribute, and should be to download the
specified resource if it does.
The activation behavior of an a
or area
element
element given an event event is:
If element has no href
attribute,
then return.
Let hyperlinkSuffix be null.
If element is an a
element, and event's target is an img
with an ismap
attribute specified, then:
Let x and y be 0.
If event's isTrusted
attribute is
initialized to true, then set x to the distance in CSS
pixels from the left edge of the image to the location of the click, and set
y to the distance in CSS pixels from the top edge of the
image to the location of the click.
If x is negative, set x to 0.
If y is negative, set y to 0.
Set hyperlinkSuffix to the concatenation of U+003F (?), the value of x expressed as a base-ten integer using ASCII digits, U+002C (,), and the value of y expressed as a base-ten integer using ASCII digits.
Let userInvolvement be event's user navigation involvement.
If the user has expressed a preference to download the hyperlink, then set
userInvolvement to "browser UI
".
That is, if the user has expressed a specific preference for downloading, this
no longer counts as merely "activation
".
If element has a download
attribute, or if the user has expressed a preference to download the hyperlink, then download the hyperlink created by element with
hyperlinkSuffix set to hyperlinkSuffix and
userInvolvement set to
userInvolvement.
Otherwise, follow the hyperlink created by element with hyperlinkSuffix set to hyperlinkSuffix and userInvolvement set to userInvolvement.
a
and area
elementsinterface mixin HTMLHyperlinkElementUtils {
[CEReactions , ReflectSetter ] stringifier attribute USVString href ;
readonly attribute USVString origin ;
[CEReactions ] attribute USVString protocol ;
[CEReactions ] attribute USVString username ;
[CEReactions ] attribute USVString password ;
[CEReactions ] attribute USVString host ;
[CEReactions ] attribute USVString hostname ;
[CEReactions ] attribute USVString port ;
[CEReactions ] attribute USVString pathname ;
[CEReactions ] attribute USVString search ;
[CEReactions ] attribute USVString hash ;
};
hyperlink.toString()
hyperlink.href
Support in all current engines.
Support in all current engines.
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL.
Can be set, to change the URL.
hyperlink.origin
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's origin.
hyperlink.protocol
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's scheme.
Can be set, to change the URL's scheme.
hyperlink.username
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's username.
Can be set, to change the URL's username.
hyperlink.password
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's password.
Can be set, to change the URL's password.
hyperlink.host
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's host and port (if different from the default port for the scheme).
Can be set, to change the URL's host and port.
hyperlink.hostname
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's host.
Can be set, to change the URL's host.
hyperlink.port
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's port.
Can be set, to change the URL's port.
hyperlink.pathname
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's path.
Can be set, to change the URL's path.
hyperlink.search
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's query (includes leading "?
" if
non-empty).
Can be set, to change the URL's query (ignores leading "?
").
hyperlink.hash
Support in all current engines.
Support in all current engines.
Returns the hyperlink's URL's fragment (includes leading "#
" if
non-empty).
Can be set, to change the URL's fragment (ignores leading "#
").