Most of the time it's fine to say things like "I bought a domain" or "Our images are hosted on a different site", even if that's not strictly true. However, in some contexts it's necessary to be more precise. For example, when dealing with cookies, you need to understand the difference between site and origin.
Names for URL parts are specified in a standard, which also defines a JavaScript API:
- The URL standard defines URLs and related concepts to enable engineers to build interoperable web browsers.
- The URL API component of the standard defines methods to provide access to parts of a URL string, such as the scheme or origin.
This document explains a range of terms used with HTTP or HTTPS URL strings. It
does not cover other types of URL such as file or data URLs. For terms such as
host
and origin
, accurate definitions are inherently complex, so this
document provides examples and links to the URL standard, rather than
attempting full explanations.
You can use JavaScript to get the names of URL components that are defined by the URL API. For example:
let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);
URL analyzer
Edit the URL below to see how parts of the URL string are named. You can also open this in a separate tab at url-parts.glitch.me.
Names for URL parts are listed alphabetically below.
Country-code top-level domain (ccTLD)
A top-level domain defined in the ISO 3166-1 Country Codes list.
Domain name
The parts of an HTTP or HTTPS URL separated by dots: everything after the scheme, but before the path or port (if specified). Each part of the domain name is known as a label.
URL | Domain name |
---|---|
https://example.github.io/path | example.github.io |
https://support.example.org.au:443 | support.example.org.au |
Effective top-level domain (eTLD)
An entry in the Public Suffix List, including a TLD and(for eTLDs with multiple parts) additional domains below that: second-level, third-level, and so on.
- For example:
com
,com.au
,github.io
,sa.edu.au
,schools.nsw.edu.au
.
A "public suffix", such as these examples, is a name under which domains can be registered. The Public Suffix List is a list of all known public suffixes, and is frequently updated. Browsers including Chromium and Firefox use the list in their builds.
eTLD+1
See registrable domain.
An eTLD plus the subdomain that precedes it.
- For example:
example.com
,example.org.au
,example.github.io
,example.sa.edu.au
,example.schools.nsw.edu.au
.
Filename
Not defined in the URL standard, and not part of the URL API, but commonly used to refer to the final, non-path, part of the URL based on the—often incorrect—assumption that the URL maps directly to a directory structure.
For example, with https://example.com/dir/file.html
, file.html
might be referred to as the filename.
The filename value is also used by browsers to name an asset if it's downloaded.
For example, https://example.com/images/image.jpg
would typically be saved
locally to image.jpg
.
Fragment
A string following a # character at the end of a URL that provides a fragment identifier.
- For example: the URL
https://example.com/cats#tabby
has a fragment identifier value oftabby
.
The part including the #
is known as the hash or anchor.
You can also link to and highlight a text fragment.
The hash is returned by the URL API rather than the fragment.
Fully-qualified domain name (FQDN)
A complete address for a website or a server, that maps to an IP address.
URL | FQDN |
---|---|
https://example.com:1234/cats | example.com |
https://api.example.github.io | api.example.github.io |
The FQDN for a URL does not include the port, even if a non-default port is used.
Hash (or anchor)
A string following a # character at the end of a URL that provides a fragment identifier.(In some contexts this is referred to as an "anchor".)
The part excluding the #
is known as the fragment.
You can also link to and highlight a text fragment.
The hash is returned by the URL API rather than the fragment.
Host
As defined in the URL standard, a host can be a domain name, IP v4 address, IPv6 address, opaque host, or empty host.
- The URL standard's definition of
host
does not include the port. URL.host
includes the port, unless the port is the default for the scheme.URL.hostname
does not include the port.
URL | URL.host |
---|---|
https://www.example.com:443/cat |
www.example.com // 443 is the default port for the scheme
|
https://www.example.com:1234/cat | www.example.com:1234 |
https://cat.example.github.io | cat.example.github.io |
Hostname
Hostname is defined by the JavaScript URL
API, but not elsewhere by the URL
standard. See host representation for more detail.
URL.hostname
returns the host without the port.
URL | URL.hostname |
---|---|
https://www.example.com:443/cat | www.example.com |
https://www.example.com:1234/cat | www.example.com |
https://cat.example.github.io | cat.example.github.io |
Origin
The URL standard defines origin
, and
links to the HTML standard for
background.
For HTTP or HTTPS URLs, URL.origin
returns the scheme, the host, and port (unless the port is the default
for the scheme).
URL | URL.origin |
---|---|
https://www.example.com:443/cat | https://www.example.com |
https://www.example.com:1234/cat | https://www.example.com:1234 |
https://cat.example.github.io | https://cat.example.github.io |
Parameter
See Search params
Password
See username.
Pathname
For an HTTP or HTTPS URL, the part after the domain and port (if defined), including a filename (if defined) but not including the search string or hash.
URL | URL.pathname |
---|---|
https://example.com | [empty string] |
https://example.com:8000/search?q=tabby | /search |
https://example.github.io/cat/pattern#tabby | /cat/pattern |
https://example.github.io/README.md | /README.md |
"Path" is sometimes used to refer to the pathname without the filename. For
example, for the URL https://example.com/cat/pattern/tabby.html
, the "path"
is /cat/pattern
.
Port
The number after a :
in a URL that identifies a network port. For example: for
the URL https://example.com:1234/tabby
the port number is 1234.
The port number must be a 16-bit unsigned integer: in other words, an integer between 0 and 65535 inclusive.
For an HTTP URL, the default port is 80; for HTTPS, the default is 443. A URL does not need to specify the port number unless a non-default port is used.
The API returns an empty string if the port is the default for the scheme.
URL | URL.port |
---|---|
https://example.com | // empty string |
https://example.com:443/foo | // empty string: port is default for scheme |
https://www.example.com:1234/foo | 1234 |
Protocol
The scheme followed by :
(for example http:
or https:
).
protocol
is available from the URL API, but scheme
is not.
Query (or "query string")
The search portion of the URL, excluding the leading ?
.
Registrable domain
- For a URL with a single-part eTLD such as
com
ororg
(i.e. an eTLD that corresponds to a TLD), the domain and the second-level domain before it: for example,example.com
orexample.org
. - For a URL with a two-part eTLD where only third-level registration is
allowed (i.e. entries in the Public Suffix List such as
com.au
and,github.io
) the two-part top-level domain ("public suffix") and the third-level domain name just before that. For example:example.org.au
orexample.github.io
. - For eTLDs with three or more parts, the eTLD and the domain before that.
Scheme
The part of the URL (before ://
) that defines the network protocol (or action to be taken
by the user agent) when a request is made to a URL. For example, a request to a
URL with an https
scheme should be made using the HTTPS protocol. For a request to a URL with a scheme
such as file
, mailto
or git
that doesn't correspond to a network
protocol, behavior depends on the user agent. For example, when a user clicks
on a mailto
link, most browsers open their default email application, using
the values in the link's href
URL.
Search
A question mark followed by a series of key-value pairs that represent parameters and their values, provided after the pathname.
URL | URL.search |
---|---|
https://example.com/cats?pattern=tabby&mood=bonkers | ?pattern=tabby&mood=bonkers |
https://example.com/cats:443?pattern=tabby | ?pattern=tabby |
The query
or "query string" refers to the search
without the
leading ?
.
See also Search params.
Search params
Refer to an item of data passed in a search string (or "query string").
- For example: for
https://example.com/cats?pattern=tabby&mood=bonkers
, the search string has two parameters:pattern=tabby
andmood=bonkers
.
Second-level domain
The domain before a top-level domain.
For the URL
https://www.example.com
, the second-level domain isexample.com
, a subdomain of the top-level domaincom
.For
https://example.org.au
, the top-level domain isau
, the second-level domain isorg
and the third-level domain isexample
. In this example,org.au
is a subdomain ofau
andexample.org.au
is a subdomain oforg.au
.
Site
Site is defined by the HTML standard, along with same-site, which includes scheme, and schemeless same-site.
Site is not defined in the URL standard or the JavaScript URL API.
In this context:
- For an HTTP or HTTPS URL with a single-part eTLD such as
https://example.com
, the site consists of thescheme
, the eTLD and the label before that. For example: for the URLhttps://www.example.com/cat
, the site ishttps://example.com
. (For this URL, the eTLD is the same as the top-level domain.) - For multipart eTLDs such as
co.uk
,github.io
orsa.edu.au
, the "site" consists of thescheme
, the eTLD and the label before that. For example: for the URLhttps://cat.example.co.uk/tabby
, the site ishttps://example.co.uk
, and forhttps://www.education.sa.gov.au
the site ishttps://education.sa.gov.au
.
URL | Site (with scheme and eTLD +1) |
---|---|
https://cat.example.com/tabby | ("https", "example.com") |
https://cat.example.co.uk/tabby | ("https", "example.co.uk") |
Unlike origin, site does not include port.
Subdomain
A domain within a higher-level domain.
For sites with single-part top-level domains such as com
or org
, the parts
before the top-level domain, each of which is separated by a dot.
www.example.com
is a subdomain ofexample.com
.support.api.example.org
is a subdomain ofapi.example.org
, which is a subdomain ofexample.org
.
For two-part eTLDs where only third-level registrations are allowed(i.e. entries
in the Public Suffix List such as co.uk
and
github.io
) the subdomains are the parts of the domain name before that.
- For example:
cat.example.co.uk
is a subdomain ofexample.co.uk
.
Text fragment
A type of fragment that makes it possible to link to and highlight a range of text within a page. When a user follows a link with a text fragment, the browser attempts to locate, scroll to and highlight the text within the page.
A text fragment begins with :~:text=
followed by the search term.
For example, to link to the first occurrence of the text "fragment"
on this page, use the URL https://web.dev/articles/url-parts#:~:text=fragment
.
Find out more: Text fragments.
Top-level domain (TLD)
A domain name listed in the Root Zone Database such as com
or org
. Some top-level domains are
country code top-level domains, such as uk
and tv
.
When describing the parts of an HTTP or HTTPS URL, the TLD is the domain name that follows the final dot.
- For
https://example.org
, the URL's top-level domain isorg
. - For
https://example.org.au
, the URL's top-level domain isau
, andorg
is a second-level domain (even thoughorg
is also a top-level domain).org.au
is a two-part eTLD.
The Public Suffix List of eTLDs includes domains with one, two or more parts, so a TLD can also be an eTLD. For example:
- For
https://example.com
, the URL's eTLD iscom
, which is also a TLD.
Username
An optional username and password can be provided at the beginning of the URL, but this has been deprecated for security reasons and will be ignored in many cases.
For example, with https://user123:password1@example.com
the username is
user123
. Note the username (and password!) is in plain text and not encrypted.
If the username contains :
or @
symbols they must be URL encoded to %3A
and %40
respectively.
Find out more
- WHATWG: URL Living Standard
- WHATWG: HTML Living Standard
- URL API
- Understanding "same-site" and "same-origin"
- RFC: Uniform Resource Locators (URL)
- RFC: URIs, URLs and URNs
- Root Zone Database (directory of TLDs)
- Public Suffix List (directory of eTLDs: "A public suffix is a set of DNS names or wildcards concatenated with dots. It represents the part of a domain name which is not under the control of the individual registrant.")
- ICANN glossary
- What is a Fully Qualified Domain Name?
- How many ways can you slice a URL and name the pieces?
- MDN Web Docs Glossary
- What is a URL?
- The History of the URL