URL parser

Split a URL into protocol, host, path, query parameters and fragment. Edit or drop parameters and get the new URL back.

Examples: · · ·

Structure
Parts
Query parameters 0 parameters

This URL has no parameters. Use “Add parameter” to attach one.

Name Value Delete
Rebuilt URL
Open

The “share link” is this page's address with your URL after a # - send it to someone and they land straight on the analysis.

Fragment
Parameters as JSON
 

Frequently asked questions

A complete URL looks like https://user:password@example.com:8080/path?a=1#section: protocol, credentials (rare in practice), host, port, path, the query string after ? and the fragment after #. Most everyday URLs only have a protocol, a host and a path. Paste a URL into the box above and each part gets its own colour, with the full breakdown in the "Parts" table.

The query string is everything after ?. It is sent to the server and is normally used for filtering, searching or tagging where a visit came from.

The fragment is everything after #, and the browser keeps it to itself - it is never sent to the server. That is why it is used for jumping to a section of a page, and why some sign-in services hand a token back through it: the value never reaches the server logs.

They are the five parameters utm_source, utm_medium, utm_campaign, utm_term and utm_content, added to a link so analytics tools can tell where a visitor came from. They exist purely for measurement and never change what the page shows.

Strip them when you just want to send someone a clean link, because leaving them on means that person's visit gets counted against an old campaign. This tool labels UTM parameters so they are easy to spot - hit the bin icon on each row and copy the URL underneath.

A URL can only carry a narrow set of characters, so spaces, accented letters and special characters have to be percent-encoded: each byte becomes a % followed by two hex digits. %20 is a space, and chào becomes ch%C3%A0o because "à" takes two bytes in UTF-8.

The parameter table shows the decoded text so it can be read, with the encoded form on the small line underneath each cell. One special case: inside a query string a + also means a space by web-form convention, so hello+there reads as "hello there".

Because it is normalised the same way a browser normalises it: the host is lowercased, the default ports :443 and :80 are dropped, an empty path becomes /, and spaces and + are rewritten as %20.

The meaning does not change - the server still receives exactly the same values. If you need every character preserved as you typed it, use your original string; the "Rebuilt URL" box is there to give you the result after you edit parameters.

It is the nested parameter notation that PHP, Laravel, Rails and many other libraries understand: empty square brackets mean "append an item to an array", and brackets with a word inside are a sub-key. The "Parameters as JSON" box at the bottom of the page rebuilds that structure so you can see what the server actually receives. A name repeated several times, such as a=1&a=2, is collected into an array too.

The whole analysis runs in JavaScript inside your own browser. The page never sends the URL to any server and never stores it; close the tab and it is gone.

The thing to watch is the "Copy share link" button: that link carries your full URL, so whoever you send it to can read all of it. The tool flags parameters with names like token, password or api_key so you remember to strip them first.

It appends your URL after the # of this page, giving something like nguyenlap.net/en/tools/parse-url#https://.... Anyone opening that link lands straight on the analysis without pasting anything. And because nothing after # is sent to a server, the URL you are looking at never reaches this site's logs either.

Yes. With no protocol, the tool adds https:// for you and says so. The ambiguous cases are handled properly too: localhost:8080/api is read as a hostname with a port rather than a protocol called "localhost", and //cdn.example.com/a.js is read as protocol-relative.

The standard sets no limit, but in practice it is worth staying under roughly 2,000 characters. Some older browsers and a fair number of servers cut off around that mark, and a very long URL pasted into a message or an email is easily broken in two. The character count sits in the top right of the "Structure" box; dropping a few tracking parameters usually shortens things considerably.

This tool runs entirely in your browser. Nothing you type is sent anywhere.