Get the domain name of the subdomain Javascript

How i can get the domain name from the set of possible subdomains using javascript ...?


var parts = location.hostname.split('.');
var subdomain = parts.shift();
var upperleveldomain = parts.join('.');

To get only the second-level-domain, you might use

var sndleveldomain = parts.slice(-2).join('.');

This is faster

const firstDotIndex = subDomain.indexOf('.');
const domain = subDomain.substring(firstDotIndex + 1);

The generic solution is explained here From above link

var domain = (function(){
   var i=0,domain=document.domain,p=domain.split('.'),s='_gd'+(new Date()).getTime();
   while(i<(p.length-1) && document.cookie.indexOf(s+'='+s)==-1){
      domain = p.slice(-1-(++i)).join('.');
      document.cookie = s+"="+s+";domain="+domain+";";
   document.cookie = s+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain="+domain+";";
   return domain;
function getDomain() {
    const hostnameArray = window.location.hostname.split('.')
    const numberOfSubdomains = hostname.length - 2
    return hostnameArray.length === 2 ? window.location.hostname : hostname.slice(numberOfSubdomains).join('.')

This will remove all subdomains, so "" will become ""


The accepted answer will work to get the second level domain. However, there is something called "public suffixes" that you may want to take into account. Otherwise, you may get unexpected and erroneous results.

For example, take the domain If you just try getting the second level domain, you'll end up with, which is probably not what you want. That's because is a "public suffix", which means it's essentially a top level domain. Here's the definition of a public suffix, taken from

A "public suffix" is one under which Internet users can (or historically could) directly register names.

If this is a crucial part of your application, I would look into something like psl ( for domain parsing. It works in nodejs and the browser, and it's tested on Mozilla's maintained public suffix list.

Here's a quick example from their README:

var psl = require('psl');

// TLD with some 2-level rules.
psl.get(''); // null);
psl.get(''); // '');
psl.get(''); // '');


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.