URL Parser
Paste a link to see every part of it: protocol, credentials, host, port, path, query string, fragment and origin. Edit, add or remove query parameters in a table and the URL is rebuilt live, ready to copy.
Relative URL? Resolve it against a base URL
Paths like ../img/a.png, /about, ?page=2 or //cdn.example.com/x.js are resolved the way a browser would.
URL breakdown
Query parameters
| # | Key | Value (decoded) | Remove |
|---|
This URL has no query string. Add a parameter below.
How to use the URL Parser
- Paste a URL into the box and press Parse URL (it also parses as you type). If you leave out https://, it is added for you.
- Read the breakdown: each part has its own card with a Copy button and a decoded version when it contains %-escapes.
- Edit the query parameters in the table: change a key or value, press + Add parameter, or click × to remove one.
- Copy the rebuilt URL from the green box. Tick “Encode spaces as +” if your server expects form-style encoding.
- For relative links such as ../img/logo.png, open “Resolve it against a base URL” and enter the page address they belong to.
Anatomy of a URL
Here is how this example URL is split up:
https://ann:[email protected]:8443/en/mugs/blue?color=blue&size=L#reviews
| Part | Value | JavaScript property |
|---|---|---|
| Protocol (scheme) | https: | url.protocol |
| Username / password | ann / secret | url.username, url.password |
| Hostname | shop.example.com | url.hostname |
| Port | 8443 (empty when it is the default 443) | url.port |
| Host | shop.example.com:8443 | url.host |
| Origin | https://shop.example.com:8443 | url.origin |
| Path | /en/mugs/blue | url.pathname |
| Query string | ?color=blue&size=L | url.search |
| Fragment (hash) | #reviews | url.hash |
The fragment is never sent to the server; the browser uses it to scroll to an element or a single-page app uses it for routing.
Common percent-encodings in URLs
| Character | Encoded | Character | Encoded |
|---|---|---|---|
| space | %20 or + (query only) | & | %26 |
= | %3D | ? | %3F |
# | %23 | + | %2B |
% | %25 | / | %2F |
é | %C3%A9 | € | %E2%82%AC |
Inside a query value you must encode &, =, #, + and %, otherwise they change the meaning of the URL. The rebuilt URL in this tool does that automatically while leaving harmless characters such as /, : and , readable.
Resolving relative URLs: examples
With the base URL https://example.com/blog/2024/post.html:
| Relative URL | Resolves to |
|---|---|
image.png | https://example.com/blog/2024/image.png |
../images/logo.png | https://example.com/blog/images/logo.png |
/about | https://example.com/about |
?page=2 | https://example.com/blog/2024/post.html?page=2 |
#comments | https://example.com/blog/2024/post.html#comments |
//cdn.example.net/app.js | https://cdn.example.net/app.js |
Frequently asked questions
What are the parts of a URL?
A URL is made of a protocol (https:), optional credentials (user:pass@), a hostname (shop.example.com), an optional port (:8443), a path (/path/page), a query string (?x=1) and a fragment or hash (#top). The host is the hostname plus the port, and the origin is the protocol plus the host.
What is a query string?
The query string is the part after the ? and before any #. It holds key=value pairs separated by &, for example ?q=shoes&page=2. Servers and analytics tools read these parameters; the order usually does not matter but repeated keys can carry several values.
Why are values shown decoded?
Special characters in URLs are percent-encoded, so a space becomes %20 (or + in query strings) and é becomes %C3%A9. The table shows the readable value; when the URL is rebuilt, values are encoded again correctly.
Should spaces be encoded as + or %20?
Both are common in query strings. %20 works everywhere; + is the HTML form convention understood by most servers. The parser always reads + in a query as a space and lets you choose which one to write when rebuilding.
How do I remove tracking parameters from a link?
Paste the link and press “Remove utm_* tracking”. It removes utm_source, utm_medium, utm_campaign and similar keys plus gclid, fbclid, msclkid and a few other click IDs, then gives you the clean URL to copy.
How are relative URLs resolved?
Exactly like a browser resolves a link on a page: ../ goes up one folder, / starts at the site root, ?x=1 replaces only the query and //host keeps only the protocol of the base. Enter the base URL in the optional field to see the absolute result.
Is the URL sent anywhere?
No. Parsing uses your browser's built-in URL API, so nothing leaves your device and private links stay private.