diff --git a/package.json b/package.json
index b480519f9..820c76bad 100644
--- a/package.json
+++ b/package.json
@@ -142,7 +142,6 @@
 		"insert-text-at-cursor": "0.1.1",
 		"is-root": "2.0.0",
 		"is-svg": "3.0.0",
-		"is-url": "1.2.4",
 		"js-yaml": "3.12.1",
 		"jsdom": "13.1.0",
 		"json5": "2.1.0",
diff --git a/src/@types/is-url.d.ts b/src/@types/is-url.d.ts
deleted file mode 100644
index c1ccadd49..000000000
--- a/src/@types/is-url.d.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-declare module 'is-url' {
-	function isUrl(string: string): boolean;
-
-	namespace isUrl {} // Hack
-
-	export = isUrl;
-}
diff --git a/src/config/load.ts b/src/config/load.ts
index 57cfb8075..fc3e69919 100644
--- a/src/config/load.ts
+++ b/src/config/load.ts
@@ -6,7 +6,6 @@ import * as fs from 'fs';
 import { URL } from 'url';
 import * as yaml from 'js-yaml';
 import { Source, Mixin } from './types';
-import * as isUrl from 'is-url';
 import * as pkg from '../../package.json';
 
 /**
@@ -26,10 +25,7 @@ export default function load() {
 
 	const mixin = {} as Mixin;
 
-	// Validate URLs
-	if (!isUrl(config.url)) throw `url="${config.url}" is not a valid URL`;
-
-	const url = new URL(config.url);
+	const url = validateUrl(config.url);
 	config.url = normalizeUrl(config.url);
 
 	mixin.host = url.host;
@@ -51,6 +47,14 @@ export default function load() {
 	return Object.assign(config, mixin);
 }
 
+function validateUrl(url: string) {
+	try {
+		return new URL(url);
+	} catch (e) {
+		throw `url="${url}" is not a valid URL`;
+	}
+}
+
 function normalizeUrl(url: string) {
 	return url.endsWith('/') ? url.substr(0, url.length - 1) : url;
 }