files/en-us/web/api/url/index.md
{{APIRef("URL API")}} {{AvailableInWorkers}}
The URL interface is used to parse, construct, normalize, and encode {{glossary("URL", "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.
URL object from a URL string and optional base URL string.
Throws if the passed arguments don't define a valid URL.'#' followed by the fragment identifier of the URL.':' and the port of the URL.'/' followed by the path of the URL, not including the query string or fragment.':'.? character.search.blob: as its scheme, followed by an opaque string uniquely identifying the object in the browser.URL object from a URL string and optional base URL string, or returns null if the passed parameters define an invalid URL.href property.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/dogs");
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/cats"
The constructor will raise an exception if the URL cannot be parsed to a valid URL.
You can either call the above code in a try...catch block or use the {{domxref("URL.canParse_static", "canParse()")}} static method to first check the URL is valid:
if (URL.canParse("../cats", "http://www.example.com/dogs")) {
const url = new URL("../cats", "http://www.example.com/dogs");
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/cats"
} else {
console.log("Invalid URL");
}
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 {{domxref("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
const parsedUrl = new URL(window.location.href);
console.log(parsedUrl.searchParams.get("id")); // "123"
The {{domxref("URL.toString", "toString()")}} method of URL just returns the value of the {{domxref("URL.href", "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}}
{{Compat}}
URL in core-js