Reference
HTML link relation types (rel values)
The HTML standard defines twenty-seven link types for the rel attribute. Some create hyperlinks, such as canonical, alternate, next and author; some load an external resource, such as stylesheet, icon, manifest, preload and preconnect; some only annotate a link, such as nofollow, noopener and noreferrer. Each is allowed on some of link, a and area, and form, and not on the others. Keywords are case-insensitive, and several can be combined in one rel attribute separated by spaces.
| rel value | On link | On a and area | On form | Meaning | Read by the scan |
|---|---|---|---|---|---|
| alternate | Hyperlink | Hyperlink | Not allowed | Gives alternate representations of the current document. | Internal targets are added to the crawl. |
| canonical | Hyperlink | Not allowed | Not allowed | Gives the preferred URL for the current document. | Read by seo.canonical; an internal target is added to the crawl. |
| author | Hyperlink | Hyperlink | Not allowed | Gives a link to the author of the current document or article. | Not read. |
| bookmark | Not allowed | Hyperlink | Not allowed | Gives the permalink for the nearest ancestor section. | Not read. |
| dns-prefetch | External resource | Not allowed | Not allowed | Specifies that the user agent should preemptively perform DNS resolution for the target resource's origin. | Read by performance.dns_prefetch. |
| expect | Internal resource | Not allowed | Not allowed | Expect an element with the target ID to appear in the current document. | Not read. |
| external | Not allowed | Annotation | Annotation | Indicates that the referenced document is not part of the same site as the current document. | Not read. |
| help | Hyperlink | Hyperlink | Hyperlink | Provides a link to context-sensitive help. | Not read. |
| icon | External resource | Not allowed | Not allowed | Imports an icon to represent the current document. | Read by quality.favicon. |
| manifest | External resource | Not allowed | Not allowed | Imports or links to an application manifest. | Read by exposure.manifest.present, which fetches the manifest once. |
| modulepreload | External resource | Not allowed | Not allowed | Fetches a module script early and stores it in the document's module map for later evaluation. | Collected as a resource of the page; not graded on its own. |
| license | Hyperlink | Hyperlink | Hyperlink | Indicates that the main content of the current document is covered by the copyright license described by the referenced document. | Not read. |
| next | Hyperlink | Hyperlink | Hyperlink | Indicates that the current document is a part of a series, and that the next document in the series is the referenced document. | Internal targets are added to the crawl. |
| nofollow | Not allowed | Annotation | Annotation | Indicates that the current document's original author or publisher does not endorse the referenced document. | Not read. |
| noopener | Not allowed | Annotation | Annotation | A page opened in a new window through the link gets no reference back to the page that opened it. | Not read. |
| noreferrer | Not allowed | Annotation | Annotation | No `Referer` header will be included. Additionally, has the same effect as noopener. | Not read. |
| opener | Not allowed | Annotation | Annotation | The reverse of noopener: a link opened with target=_blank keeps a reference to its opener. | Not read. |
| pingback | External resource | Not allowed | Not allowed | Gives the address of the pingback server that handles pingbacks to the current document. | Not read. |
| preconnect | External resource | Not allowed | Not allowed | Specifies that the user agent should preemptively connect to the target resource's origin. | Read by performance.preconnect. |
| prefetch | External resource | Not allowed | Not allowed | Specifies that the user agent should preemptively fetch and cache the target resource as it is likely to be required for a followup navigation. | Collected; not graded. |
| preload | External resource | Not allowed | Not allowed | Fetches and caches the target resource for the current navigation, with the destination given by the as attribute. | Read by performance.preload; font preloads are also counted by performance.fonts. |
| prev | Hyperlink | Hyperlink | Hyperlink | Indicates that the current document is a part of a series, and that the previous document in the series is the referenced document. | Internal targets are added to the crawl. |
| privacy-policy | Hyperlink | Hyperlink | Not allowed | Gives a link to information about the data collection and usage practices that apply to the current document. | Not read. |
| search | Hyperlink | Hyperlink | Hyperlink | Gives a link to a resource that can be used to search through the current document and its related pages. | Not read. |
| stylesheet | External resource | Not allowed | Not allowed | Imports a style sheet. | Read by performance.render_blocking when declared in the head. |
| tag | Not allowed | Hyperlink | Not allowed | Gives a tag (identified by the given address) that applies to the current document. | Not read. |
| terms-of-service | Hyperlink | Hyperlink | Not allowed | Gives a link to information about the agreements between the current document's provider and users who wish to use the current document. | Not read. |
Hyperlinks, external resources and annotations
A hyperlink type describes a relationship the user or a program can follow: `canonical` names the preferred URL of the page, `alternate` a different representation of it, `next` and `prev` the neighbours in a series.
An external-resource type asks the browser to load something: `stylesheet` and `icon` are used by the page, `manifest` describes the installable application, and the resource hints — `dns-prefetch`, `preconnect`, `preload`, `modulepreload` and `prefetch` — ask the browser to do work early.
An annotation changes how a link behaves without being a link of its own. `noopener` stops a page opened in a new window from reaching back to its opener; `noreferrer` also withholds the Referer header; `nofollow` says the publisher does not endorse the target.
Seven types are body-ok — dns-prefetch, modulepreload, pingback, preconnect, prefetch, preload and stylesheet — meaning a link element with one of them may appear in the body rather than only in the head.
Types defined elsewhere
Not every rel value in use is in the table. The HTML standard lets other specifications and a public registry of extensions define more, and some widely used values live there — `me`, for example, or the values used by particular platforms.
Search engines also give their own documented meaning to some values, such as `sponsored` and `ugc` for links, alongside `nofollow`. Those meanings are the search engine's, not the HTML standard's.
An unknown rel value is simply ignored by browsers, so a misspelled `stylesheet` or `canonical` fails silently.
Keywords are compared case-insensitively, so `rel="NEXT"` means the same as `rel="next"`, and the standard lists a few legacy synonyms, such as `copyright` for `license`, that browsers still honour but documents must not use.
What a scan reads
The crawler treats the internal targets of `canonical`, `alternate`, `next` and `prev` as URLs to discover, so a page reachable only through one of them is still crawled. `seo.canonical` reads the canonical declaration of each page.
`performance.preload`, `performance.preconnect` and `performance.dns_prefetch` read the resource hints against the resources and third-party origins the page really uses; `performance.fonts` counts font preloads. `modulepreload` and `prefetch` are collected but not graded on their own.
`performance.render_blocking` reads the stylesheets declared in the head, `quality.favicon` looks for an icon link, and `exposure.manifest.present` finds a declared manifest and fetches it once.
The other types — including `nofollow`, `noopener` and `noreferrer` — are not read.
Frequently asked questions
- Is rel=canonical part of HTML?
- Yes. The HTML Standard defines canonical as a hyperlink type allowed on link elements only, giving the preferred URL for the current document. It was first specified in RFC 6596, and search engines document how they use it.
- What is the difference between noopener and noreferrer?
- noopener prevents a page opened in a new window from getting a reference back to the page that opened it. noreferrer does the same and also omits the Referer header on the navigation.
- Can a link have several rel values?
- Yes. The rel attribute is split on whitespace and each keyword applies, as in rel="noopener noreferrer". A keyword must not appear twice in the same attribute.
Sources
Related
VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.
Scan a website