URL parsers break on the parts nobody tests: a fragment after a query string, a repeated parameter, a host with non-ASCII characters. Turn on the deep shape and internationalised domains and you get all three in one batch.
What you can control
- Four shapes from a bare domain to a full URL with path, query and fragment.
- Fifteen TLDs, including newer ones like
.devand.toolsthat some validators still reject. - Internationalised domains produce hosts like
café.dev, which is where a URL parser's encoding handling shows. - Query parameters are built with
URLSearchParams, so encoding is correct.
What this is not
Generated domains may coincidentally match a registered one. Do not send requests to them; they are for parsing and validation testing.
Questions
Are these domains registered?
Some may be by coincidence, since they are assembled from common word parts. Treat them as strings to parse, not addresses to fetch.
Why test internationalised domains?
Because a URL parser has to convert them to punycode, and one that assumes ASCII will either mangle or reject them. Both are bugs users hit.
What order do query and fragment go in?
Query first, then fragment: ?a=1#section. Parsers that read them the other way round silently lose the query string.