This script is part of the Keywords in Sheets Free Add-On.
With this script you can input a range of URLs and the formula will extract the domain from the URLs (with or without the protocol). 🚀
Check out the GIF to see it in action 🎥

How to add the Script to Google Sheets
1. Copy the script below:
/**
* Extract the domain from a URL
* @param {A2:A100} url - A range of URLs or a single URL
* @param {false} protocol - If true, return the protocol eg. https://
* @customfunction
*/
function domainextract(url, protocol) {
// protocol false by default
protocol = protocol || false;
// if url is a single cell, return domain
if (!Array.isArray(url)) {
// if there is no domain or domain is not a valid URL, return error
if (!url || !url.match(/^https?:\/\//)) {
return 'You need to enter a valid URL.';
} else {
if (protocol === true) {
// return domain with protocol
return url.match(/^https?:\/\/[^/]+/)[0];
} else {
// return domain without protocol
return url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i)[2];
}
}
} else {
// strip empty cells
url = url.flat(Infinity).filter((value, index, array) => {
// if the value is not empty, return true
if (value) return true;
// if the value is empty and the index is 0, return false
if (index === 0) return false;
// if the value is empty and the index is the last value in the array, return false
if (index === array.length - 1) return false;
return true;
});
let domains = [];
// loop through each URL and, if valid, return domain
for (let i = 0; i < url.length; i++) {
if (!url[i].match(/^https?:\/\//) || !url[i]) {
domains.push('');
} else {
if (protocol === true) {
// push domain with protocol
domains.push(url[i].match(/^https?:\/\/[^/]+/)[0]);
} else {
// push domain without protocol
domains.push(url[i].match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i)[2]);
}
}
}
return domains;
}
}
2. Head over to Google Sheets
Or if you’re really smart, create a new sheet by going to: https://sheets.new
Select Appscript from the Extensions menu.
Paste the script and save it.

3. Add the formula to any cell in your sheet
=domainextract(A2:A100, false)
Replace A2:A100 with any range of URLs (you can also run the formula on a single cell).
Change false to true if you want to include the protocol in the domains returns. eg. from example.com to https://www.example.com.

Thanks for stopping by 👋
I’m Andrew Charlton, the Google Sheets nerd behind Keywords in Sheets. 🤓
Questions? Get in touch with me on social or comment below 👇