URI vs URL

Normalized

{input: "http://example\t.\norg", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "example\t.\nor" "example.org"

{input: "http:foo.com", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.org"
path "foo.com" "/foo/foo.com"

{input: "\t :foo.com \n", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:foo.com"

{input: "a:\t foo.com", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "foo.com" " foo.com"

{input: "http://f:21/ b ? d # e ", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "/%20b" "/%20b%20"
fragment "#%20e" "# e"

{input: "http://f:0/c", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
port "" "0"

{input: "http://f:00000000000000/c", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
port "" "0"

{input: ":foo.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:foo.com/"

{input: ":foo.com\\", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:foo.com/"

{input: ":", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:"

{input: ":a", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:a"

{input: ":/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:/"

{input: ":\\", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:/"

{input: ":#", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:"
fragment "" "#"

{input: "?", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
query "" "?"

{input: ":23", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/:23"

{input: "::", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/::"

{input: "::23", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/::23"

{input: "foo://", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "" "//"

{input: "http::@c:29", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.org"
path ":@c:29" "/foo/:@c:29"

{input: "http://&a:foo(b]c@d:2/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
password "" "foo(b]c"
host "" "d"
port "" "2"
path "" "/"
user "" "&a"

{input: "http://::@c@d:2", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
password "%3A%40c" ":%40c"

{input: "http://foo.com/\\@", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "/%5C@" "//@"

{input: "http:\\\\foo.com\\", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "foo.com"
path "%5C%5Cfoo.com%5C" "/"

{input: "http:\\\\a\\b:c\\d@foo.com\\", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "a"
path "%5C%5Ca%5Cb:c%5Cd@foo.com%5C" "/b:c/d@foo.com/"

{input: "foo://///////", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "///////" "/////////"

{input: "foo://///////bar.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "///////bar.com/" "/////////bar.com/"

{input: "foo:////://///", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "//://///" "////://///"

{input: "http://foo/path;a??e#f#g", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
fragment "#f%23g" "#f#g"

{input: "[61:24:74]:98", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "" "http"
host "" "example.org"
path "" "/foo/[61:24:74]:98"

{input: "http:[61:27]/:foo", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.org"
path "%5B61:27%5D/:foo" "/foo/[61:27]/:foo"

{input: "http://[1::2]:3:4", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "http" ""
host "[1::2]:3" ""
port "4" ""
path "/" ""

{input: "http://2001::1", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "http" ""
host "2001:" ""
port "1" ""
path "/" ""

{input: "http://2001::1]", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "http" ""
host "2001::1]" ""
path "/" ""

{input: "http://2001::1]:80", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
scheme "http" ""
host "2001::1]" ""
path "/" ""

{input: "http:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.org"

{input: "ftp:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "https:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "gopher:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "ws:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "wss:/example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "http:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.org"
path "example.com/" "/foo/example.com/"

{input: "ftp:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "https:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "gopher:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "ws:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "wss:example.com/", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "/a%2fc", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "/a%2Fc" "/a%2fc"

{input: "/a/%2f/c", base: "http://example.org/foo/bar"}

property IETF URI WHATWG URL
path "/a/%2F/c" "/a/%2f/c"

{input: "file:c:\\foo\\bar.html", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "c:%5Cfoo%5Cbar.html" "/c:/foo/bar.html"

{input: " File:c|////foo\\bar.html", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "c%7C////foo%5Cbar.html" "/c:////foo/bar.html"

{input: "C|/foo/bar", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "/tmp/mock/C%7C/foo/bar" "/C:/foo/bar"

{input: "/C|\\foo\\bar", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "/C%7C%5Cfoo%5Cbar" "/C:/foo/bar"

{input: "//C|/foo/bar", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
host "c|" ""
path "/foo/bar" "/C:/foo/bar"

{input: "\\\\server\\file", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
host "" "server"
path "/tmp/mock/%5C%5Cserver%5Cfile" "/file"

{input: "/\\server/file", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
host "" "server"
path "/%5Cserver/file" "/file"

{input: "//", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "" "/"

{input: "file://test", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "" "/"

{input: "file://localhost", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "" "/"

{input: "file:test", base: "file:///tmp/mock/path"}

property IETF URI WHATWG URL
path "test" "/tmp/mock/test"

{input: "http://example.com/foo/%2e%2", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo/.%252" "/foo/%2e%2"

{input: "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar", base: "about:blank"}

property IETF URI WHATWG URL
path "/..bar" "/%2e.bar"

{input: "http://example.com/foo%", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%25" "/foo%"

{input: "http://example.com/foo%2", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%252" "/foo%2"

{input: "http://example.com/foo%2zbar", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%252zbar" "/foo%2zbar"

{input: "http://example.com/foo%2©zbar", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%252%C3%82%C2%A9zbar" "/foo%2%C3%82%C2%A9zbar"

{input: "http://example.com/foo%41%7a", base: "about:blank"}

property IETF URI WHATWG URL
path "/fooAz" "/foo%41%7a"

{input: "http://example.com/foo\t\u0091%91", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%09%C2%91%91" "/foo%C2%91%91"

{input: "http://example.com/foo%00%51", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%00Q" "/foo%00%51"

{input: "http://example.com/(%28:%3A%29)", base: "about:blank"}

property IETF URI WHATWG URL
path "/((::))" "/(%28:%3A%29)"

{input: "http://example.com/%3A%3a%3C%3c", base: "about:blank"}

property IETF URI WHATWG URL
path "/::%3C%3C" "/%3A%3a%3C%3c"

{input: "http://example.com/foo\tbar", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo%09bar" "/foobar"

{input: "http://example.com\\\\foo\\\\bar", base: "about:blank"}

property IETF URI WHATWG URL
host "example.com\\\\foo\\\\bar" "example.com"
path "/" "//foo//bar"

{input: "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd", base: "about:blank"}

property IETF URI WHATWG URL
path "/%7Ffp3%3Eju=duvgw=d" "/%7Ffp3%3Eju%3Dduvgw%3Dd"

{input: "http://example.com/@asdf%40", base: "about:blank"}

property IETF URI WHATWG URL
path "/@asdf@" "/@asdf%40"

{input: "http://example.com/‥/foo", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo" "/%E2%80%A5/foo"

{input: "http://www.google.com/foo?bar=baz#", base: "about:blank"}

property IETF URI WHATWG URL
fragment "" "#"

{input: "http://www.google.com/foo?bar=baz# »", base: "about:blank"}

property IETF URI WHATWG URL
fragment "#%20%C2%BB" "# %C2%BB"

{input: "http://[www.google.com]/", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
host "[www.google.com]" ""
path "/" ""

{input: "http://www/foo%2Ehtml", base: "about:blank"}

property IETF URI WHATWG URL
path "/foo.html" "/foo%2Ehtml"

{input: "http://user:pass@/", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
password "pass" ""
path "/" ""
user "user" ""

{input: "http:\\\\www.google.com\\foo", base: "about:blank"}

property IETF URI WHATWG URL
host "" "www.google.com"
path "%5C%5Cwww.google.com%5Cfoo" "/foo"

{input: "httpa://foo:80/", base: "about:blank"}

property IETF URI WHATWG URL
host "foo" ""
port "80" ""
path "/" "//foo:80/"

{input: "ws://foo:80/", base: "about:blank"}

property IETF URI WHATWG URL
port "80" ""

{input: "wss://foo:443/", base: "about:blank"}

property IETF URI WHATWG URL
port "443" ""

{input: "http:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "ftp:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "https:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "gopher:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "ws:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "wss:/example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "/example.com/" "/"

{input: "http:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "ftp:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "https:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "gopher:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "ws:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "wss:example.com/", base: "about:blank"}

property IETF URI WHATWG URL
host "" "example.com"
path "example.com/" "/"

{input: "http:@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
host "" "www.example.com"
path "@www.example.com" "/"

{input: "http:/@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
host "" "www.example.com"
path "/@www.example.com" "/"

{input: "http:a:b@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
password "" "b"
host "" "www.example.com"
path "a:b@www.example.com" "/"
user "" "a"

{input: "http:/a:b@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
password "" "b"
host "" "www.example.com"
path "/a:b@www.example.com" "/"
user "" "a"

{input: "http::b@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
password "" "b"
host "" "www.example.com"
path ":b@www.example.com" "/"

{input: "http:/:b@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
password "" "b"
host "" "www.example.com"
path "/:b@www.example.com" "/"

{input: "http:/:@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/:@/www.example.com" ""

{input: "http://user@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/www.example.com" ""
user "user" ""

{input: "http:@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "@/www.example.com" ""

{input: "http:/@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/@/www.example.com" ""

{input: "http://@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/www.example.com" ""

{input: "https:@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "https" ""
path "@/www.example.com" ""

{input: "http:a:b@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "a:b@/www.example.com" ""

{input: "http:/a:b@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/a:b@/www.example.com" ""

{input: "http://a:b@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
password "b" ""
path "/www.example.com" ""
user "a" ""

{input: "http::@/www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path ":@/www.example.com" ""

{input: "http:a:@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
host "" "www.example.com"
path "a:@www.example.com" "/"
user "" "a"

{input: "http:/a:@www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
host "" "www.example.com"
path "/a:@www.example.com" "/"
user "" "a"

{input: "http:@:www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "@:www.example.com" ""

{input: "http:/@:www.example.com", base: "about:blank"}

property IETF URI WHATWG URL
scheme "http" ""
path "/@:www.example.com" ""

{input: "http://example example.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "example example.com" ""
path "/" ""

{input: "http://Goo%20 goo%7C|.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "goo goo||.com" ""
path "/" ""

{input: "http://GOO  goo.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--goo goo-.com" ""
path "/" ""

{input: "http://GOO​⁠goo.com", base: "http://other.com/"}

property IETF URI WHATWG URL
host "xn--googoo-df0c40ax241n.com" "googoo.com"

{input: "http://www.foo。bar.com", base: "http://other.com/"}

property IETF URI WHATWG URL
host "www.xn--foobar-rr3e.com" "www.foo.bar.com"

{input: "http://\uFDD0zyx.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--zyx-h05s.com" ""
path "/" ""

{input: "http://%ef%b7%90zyx.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--zyx-h05s.com" ""
path "/" ""

{input: "http://Go.com", base: "http://other.com/"}

property IETF URI WHATWG URL
host "xn--go-.com" "go.com"

{input: "http://%41.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--%41-.com" ""
path "/" ""

{input: "http://%ef%bc%85%ef%bc%94%ef%bc%91.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--%41-.com" ""
path "/" ""

{input: "http://%00.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--%00-.com" ""
path "/" ""

{input: "http://%ef%bc%85%ef%bc%90%ef%bc%90.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "xn--%00-.com" ""
path "/" ""

{input: "http://%zz%66%a.com", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "%zzf%a.com" ""
path "/" ""

{input: "http://%25", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "%" ""
path "/" ""

{input: "http://hello%00", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "hello\u0000" ""
path "/" ""

{input: "http://%30%78%63%30%2e%30%32%35%30.01", base: "http://other.com/"}

property IETF URI WHATWG URL
host "0xc0.0250.01" "127.0.0.1"

{input: "http://%30%78%63%30%2e%30%32%35%30.01%2e", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "0xc0.0250.01" ""
path "/" ""

{input: "http://%3g%78%63%30%2e%30%32%35%30%2E.01", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "%3gxc0.0250..01" ""
path "/" ""

{input: "http://192.168.0.1 hello", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "192.168.0.1 hello" ""
path "/" ""

{input: "http://0Xc0.0250.01", base: "http://other.com/"}

property IETF URI WHATWG URL
host "xn--0xc0.0250.01-" "192.168.0.1"

{input: "http://192.168.0.257", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "192.168.0.257" ""
path "/" ""

{input: "http://[google.com]", base: "http://other.com/"}

property IETF URI WHATWG URL
scheme "http" ""
host "[google.com]" ""
path "/" ""