URL validator
Validate one URL or a list. Returns valid / invalid with the exact character position of the error. Strict (full spec) and lenient (browser-tolerant) modes.
Ready.
How to use
- Paste a URL or a list (one per line).
- Pick Mode — Strict (rejects anything the spec disallows, even if browsers accept it) or Lenient (matches what Chrome/Firefox accept).
- Output table shows each URL, its verdict, and — for invalid ones — the position and reason:
position 47: unescaped space,missing scheme,unexpected character ":". - Filter to show only failures; Copy fails dumps them to clipboard for further fixing.
Strict vs. lenient
- Strict rejects unescaped spaces, control chars, square brackets in path, and missing scheme. Use this for URLs you'll pass to cURL, Python
requests, or JavaURI. - Lenient matches the WHATWG URL parser (what Chrome/Firefox use). It accepts a lot of input that "real" URI parsers reject.
- "Valid in lenient mode but not strict" usually means a space, square brackets, or non-ASCII char that browsers handle but spec-compliant parsers reject. Fix these before sending URLs through automation.
FAQ
Why are some URLs valid in Chrome but invalid here?
Chrome silently fixes a lot — it lowercases scheme, accepts spaces in paths, encodes them on navigation. Strict mode here matches the spec, not the browser. Use lenient mode for parity.
Does it check DNS / reachability?
No — only syntax. Reachability checks need a server to follow the URL on your behalf.
What schemes does it accept?
Any scheme that starts with letter[letter|digit|+|-|.]*. So https:, mailto:, myapp+v2: all pass the scheme check.
Does the output preserve input order?
Yes — and if you filter to failures, the relative order is preserved.