URL
developer.mozilla.orgThe URL
interface is used to parse, construct, normalize, and encode URLs. It works by providing properties which allow you to easily read and modify the components of a URL. You normally create a new URL
object by specifying the URL as a string when calling its constructor, or by providing a relative URL and a base URL. You can then easily read the parsed components of the URL or make changes to the URL.
If a browser doesn't yet support the URL()
constructor, you can access a URL object using the Window
interface's Window.URL
property. Be sure to check to see if any of your target browsers require this to be prefixed.
Note: This feature is available in Web Workers.
Constructor
new URL()
Creates and returns a
URL
object referencing the URL specified using an absolute URL string, or a relative URL string and a base URL string.
Properties
hash
A
USVString
containing a
'#'
followed by the fragment identifier of the URL.
host
A
USVString
containing the domain (that is the
hostname) followed by (if a port was specified) a
':'
and the
port of the URL.
hostname
A
USVString
containing the domain of the URL.
href
A
USVString
containing the whole URL.
origin
Read only Returns a
USVString
containing the origin of the URL, that is its scheme, its domain and its port.
password
A
USVString
containing the password specified before the domain name.
pathname
A
USVString
containing an initial
'/'
followed by the path of the URL.
port
A
USVString
containing the port number of the URL.
protocol
A
USVString
containing the protocol scheme of the URL, including the final
':'
.
search
A
USVString
indicating the URL's parameter string; if any parameters are provided, this string includes all of them, beginning with the leading
'?'
character.
searchParams
Read only A
URLSearchParams
object which can be used to access the individual query parameters found in
search
.
USVString
containing the username specified before the domain name.
Methods
toString()
Returns a
USVString
containing the whole URL. It is a synonym for
URL.href
, though it can't be used to modify the value.
toJSON()
Returns a
USVString
containing the whole URL. It returns the same string as the
href
property.
Static methods
createObjectURL()
Returns a
DOMString
containing a unique blob URL, that is a URL with
blob:
as its scheme, followed by an opaque string uniquely identifying the object in the browser.
revokeObjectURL()
Revokes an object URL previously created using
Usage notes
The constructor takes a url
parameter, and an optional base
parameter to use as a base if the url
parameter is a relative URL:
const url = new URL('../cats', 'http://www.example.com/cats'); console.log(url.hostname); // "www.example.com" console.log(url.pathname); // "/cats"
URL properties can be set to construct the URL:
url.hash = 'tabby'; console.log(url.href); // "http://www.example.com/cats#tabby"
URLs are encoded according to the rules found in RFC 3986. For instance:
url.pathname = 'démonstration.html'; console.log(url.href); // "http://www.example.com/d%C3%A9monstration.html"
The URLSearchParams
interface can be used to build and manipulate the URL query string.
To get the search params from the current window's URL, you can do this:
// https://some.site/?id=123 var parsedUrl = new URL(window.location.href); console.log(parsedUrl.searchParams.get("id")); // 123
The toString() method of URL
just returns the value of the href
property, so the constructor can be used to normalize and encode a URL directly.
const response = await fetch(new URL('http://www.example.com/démonstration.html'));
Specifications
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHubDesktopMobileChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
URL
Chrome Full support 32 Full support 32 Full support 2
Prefixed
Prefixed
Implemented with the vendor prefix: webkitEdge Full support 12Firefox Full support 19
Notes
Full support 19
Notes
Notes Before version 57, Firefox had a bug whereby single quotes contained in URLs are escaped when accessed via URL APIs (see
bug 1386683).Notes To use it from chrome code, JSM and Bootstrap scope, you have to import it with
Cu.importGlobalProperties(['URL']);
.IE Full support YesOpera Full support 19 Full support 19 Full support 15
Prefixed
Prefixed
Implemented with the vendor prefix: webkitSafari Full support 7 Full support 7 Full support 6
Prefixed
Prefixed
Implemented with the vendor prefix: webkitWebView Android Full support 4.4 Full support 4.4 Full support 4
Prefixed
Prefixed
Implemented with the vendor prefix: webkitChrome Android Full support 32 Full support 32 Full support 18
Prefixed
Prefixed
Implemented with the vendor prefix: webkitFirefox Android Full support 19
Notes
Full support 19
Notes
Notes Before version 57, Firefox had a bug whereby single quotes contained in URLs are escaped when accessed via URL APIs (see
bug 1386683).Notes To use it from chrome code, JSM and Bootstrap scope, you have to import it with
Cu.importGlobalProperties(['URL']);
.Opera Android Full support 19 Full support 19 Full support 14
Prefixed
Prefixed
Implemented with the vendor prefix: webkitSafari iOS Full support 7 Full support 7 Full support 6
Prefixed
Prefixed
Implemented with the vendor prefix: webkitSamsung Internet Android Full support Yes
URL()
constructorChrome Full support YesEdge Full support 12Firefox Full support 26IE No support ? — 11Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 26Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
createObjectURL
Experimental
Chrome Full support 8Edge Full support 12Firefox Full support 19
Notes
Full support 19
Notes
Notes
createObjectURL()
is no longer available within the context of a
ServiceWorker
.IE Full support 10Opera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 19
Notes
Full support 19
Notes
Notes
createObjectURL()
is no longer available within the context of a
ServiceWorker
.Opera Android Full support 14Safari iOS Full support 6Samsung Internet Android Full support Yes
hash
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
host
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
hostname
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
href
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
origin
Chrome Full support 52Edge Full support 12Firefox Full support 26 Full support 26 No support 26 — 49
Notes
Notes Results for
URL
using the
blob
scheme incorrectly returned
null
.IE ? Opera Full support YesSafari Full support 10WebView Android Full support 52Chrome Android Full support 52Firefox Android Full support 26 Full support 26 No support 26 — 49
Notes
Notes Results for
URL
using the
blob
scheme incorrectly returned
null
.Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
password
Chrome Full support 52Edge Full support 12Firefox Full support 26IE ? Opera Full support YesSafari Full support 10WebView Android Full support 52Chrome Android Full support 52Firefox Android Full support 26Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
pathname
Chrome Full support YesEdge Full support 13Firefox Full support 53 Full support 53 No support 22 — 53
Notes
Notes
pathname
and
search
returned the wrong values so that for a URL of
http://z.com/x?a=true&b=false
,
pathname
would return "/x?a=true&b=false" and
search
would return "", rather than "/x" and "?a=true&b=false" respectively.IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 53 Full support 53 No support 22 — 53
Notes
Notes
pathname
and
search
returned the wrong values so that for a URL of
http://z.com/x?a=true&b=false
,
pathname
would return "/x?a=true&b=false" and
search
would return "", rather than "/x" and "?a=true&b=false" respectively.Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
port
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
protocol
Chrome Full support YesEdge Full support 13Firefox Full support 22IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 22Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
revokeObjectURL
Experimental
Chrome Full support 8Edge Full support 12Firefox Full support 19
Notes
Full support 19
Notes
Notes
revokeObjectURL()
is no longer available within the context of a
ServiceWorker
.IE Full support 10Opera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 19
Notes
Full support 19
Notes
Notes
revokeObjectURL()
is no longer available within the context of a
ServiceWorker
.Opera Android Full support 14Safari iOS Full support 6Samsung Internet Android Full support Yes
search
Chrome Full support YesEdge Full support 13Firefox Full support 53 Full support 53 No support 22 — 53
Notes
Notes
pathname
and
search
returned the wrong values so that for a URL of
http://z.com/x?a=true&b=false
,
pathname
would return "/x?a=true&b=false" and
search
would return "", rather than "/x" and "?a=true&b=false" respectively.IE ? Opera Full support YesSafari Full support 10WebView Android Full support YesChrome Android Full support YesFirefox Android Full support 53 Full support 53 No support 22 — 53
Notes
Notes
pathname
and
search
returned the wrong values so that for a URL of
http://z.com/x?a=true&b=false
,
pathname
would return "/x?a=true&b=false" and
search
would return "", rather than "/x" and "?a=true&b=false" respectively.Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
searchParams
Chrome Full support 51Edge Full support 17Firefox Full support 29IE No support NoOpera Full support YesSafari Full support 10WebView Android Full support 51Chrome Android Full support 51Firefox Android Full support 29Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
toJSON
Chrome Full support 71Edge Full support 17Firefox Full support 54IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support 71Chrome Android Full support 71Firefox Android Full support 54Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
toString
Chrome Full support 52Edge Full support 17Firefox Full support 54IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support 52Chrome Android Full support 52Firefox Android Full support 54Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
username
Chrome Full support 52Edge Full support 12Firefox Full support 26IE ? Opera Full support YesSafari Full support 10WebView Android Full support 52Chrome Android Full support 52Firefox Android Full support 26Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes
Legend
Full support Full support No support No support Compatibility unknown Compatibility unknownExperimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.See implementation notes.See implementation notes.Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.
See also
Source developer.mozilla.org