diff --git a/src/Http/Url.php b/src/Http/Url.php
index <HASH>..<HASH> 100644
--- a/src/Http/Url.php
+++ b/src/Http/Url.php
@@ -19,6 +19,15 @@ final class Url
     {
         $parsed = parse_url($value);
 
+        if ($parsed === false) {
+            throw new \InvalidArgumentException(
+                sprintf(
+                    'The url "%s" is malformed.',
+                    $value
+                )
+            );
+        }
+
         if (!isset($parsed['host']) && !isset($parsed['scheme'])) {
             throw new \InvalidArgumentException(
                 sprintf(
diff --git a/tests/unit/Http/UrlTest.php b/tests/unit/Http/UrlTest.php
index <HASH>..<HASH> 100644
--- a/tests/unit/Http/UrlTest.php
+++ b/tests/unit/Http/UrlTest.php
@@ -90,7 +90,8 @@ class UrlTest extends TestCase
             ['/'],
             ['/?foo=bar'],
             ['/foo/bar'],
-            ['malformed']
+            ['malformed'],
+            ['http:///:80']
         ];
     }
 }
Handle malformed urls properly