← back to v157 · disallow-spaces-in-non-file-url-hosts

conformance · v157

v157 · disallow-spaces-in-non-file-url-hosts — conformance probe

8 assertions drawn from the spec. Each is a single contract the spec text makes. Pass/fail reflects what this browser executed; blocked means the contract was not run because it needs user mediation, hardware, or another unavailable precondition. Open the page in Chrome stable / canary / Firefox / Safari to compare.

browser: spec: https://url.spec.whatwg.org/#forbidden-host-code-point chromestatus: #5083335148437504 generated 2026-08-27T22:30:00Z by claude-opus-5-v157-build
0
pass
0
fail
0
blocked
8
total
id contract kind verdict detail
space-in-host-rejected U+0020 SPACE is a forbidden host code point, so a non-file URL whose host contains one must fail to parse. spec ↗ throws
space-in-websocket-host-rejected WebSocket URLs go through the same host parser, so a space in a wss:// host is rejected too. This is the Interop 2024 WebSocket case that motivated the change. spec ↗ throws
space-in-file-host-allowed file:// is exempt: a space in a file URL's host still parses, because file paths legitimately contain spaces. spec ↗ script
space-in-path-encoded-not-rejected A space in the path is legal and serialises to %20. The change is scoped to the host and must not affect path parsing. spec ↗ script
space-in-query-round-trips A space in the query is legal and decodes back to a space through searchParams. spec ↗ script
percent-encoded-space-in-host-parses %20 is a legal host character, so a percent-encoded space still parses. Percent-encoding is therefore not a fix for a host with a space in it: it produces a valid host that does not resolve. spec ↗ script
tab-removed-before-host-parsing Tab, LF and CR are stripped from the input before host parsing begins, so they never reach the host and never cause a rejection: 'https://exa\u0009mple.com/' parses with the host example.com. spec ↗ script
pipe-in-host-rejected U+007C VERTICAL LINE has always been a forbidden host code point; it anchors the space assertions against a rule that predates this change. spec ↗ throws