How to extract the hostname portion of a URL in JavaScript

How to extract the hostname portion of a URL in JavaScript

Is there a really easy way to start from a full URL:
document.location.href = “”

And extract just the host part:

There’s gotta be a JavaScript function that does this reliably, but I can’t find it.


Solution 1:

suppose that you have a page with this address: use the following in page code to achive those results:

  • : you’ll get or
  • window.location.hostname : you’ll get
  • window.location.protocol : you’ll get http:
  • window.location.port : you’ll get 8080 or 80
  • window.location.pathname : you’ll get /virtualPath
  • window.location.origin : you’ll get *****

Update: about the .origin

***** As the ref states, browser compatibility for window.location.origin is not clear. I’ve checked it in chrome and it returned if the port is anything but 80, and if the port is 80.

Special thanks to @torazaburo for mentioning that to me.

Solution 2:

You could concatenate the location protocol and the host:

var root = location.protocol + '//' +;

For a url, let say '', it will return ''

Solution 3:

Use document.location object and its host or hostname properties.

alert(document.location.hostname); // alerts ""

Solution 4:

There are two ways. The first is a variant of another answer here, but this one accounts for non-default ports:

function getRootUrl() {
  var defaultPorts = {"http:":80,"https:":443};

  return window.location.protocol + "//" + window.location.hostname
   + (((window.location.port)
    && (window.location.port != defaultPorts[window.location.protocol]))
    ? (":"+window.location.port) : "");

But I prefer this simpler method (which works with any URI string):

function getRootUrl(url) {
  return url.toString().replace(/^(.*\/\/[^\/?#]*).*$/,"$1");

Solution 5:

The accepted answer didn’t work for me since wanted to be able to work with any arbitary url’s, not just the current page URL.

Take a look at the URL object:

var url = new URL("");
url.protocol;  // "http:"
url.hostname;  // ""
url.pathname;  // "/asdf/asdf/sadf.aspx";    // "?blah"

Solution 6:



and for: “

you will get: