Skip to content

URL Parser

Split a URL into parts and edit its query parameters. Runs in your browser.

Loading tool…

About this url parser

This URL parser splits any web address into its parts (scheme, host, port, path, query parameters and fragment) and lets you edit each one to rebuild the URL. It is for developers debugging redirects and API calls, marketers cleaning tracking tags off links, and anyone who wants to read a 400-character link without squinting.

Query parameters appear in an editable table with their values decoded. You can change a value, add or delete a row, sort them, or strip every utm_, gclid and fbclid tag in one click. If a parameter holds another URL, as redirect and login links often do, you can open that inner URL in the parser too.

Parsing uses your browser's built-in URL engine, the same one that follows the link when you click it, so the parts you see are the parts the browser sends. Nothing is uploaded, which matters because real URLs often carry tokens.

Features

  • Every part, labelled

    Protocol, username, password, hostname, port (with the default shown when it is empty), path with decoded segments, fragment and origin.

  • Editable query table

    Change keys and values as plain text. The tool encodes them and rebuilds the query in the order you see, keeping duplicate keys and flags without a value.

  • Remove tracking parameters

    utm_source, utm_medium and other utm_ tags, gclid, fbclid, msclkid, mc_eid and similar are highlighted and can be removed together.

  • Nested URLs

    A parameter like ref=https%3A%2F%2F… shows a Parse this URL link. A Back button returns to the outer URL.

  • Choice of space encoding

    Rebuild with + for spaces (the HTML form style) or %20, and choose whether + in the input is read as a space.

  • Internationalized domains

    Hosts such as xn--bcher-kva.example are shown in Unicode (bücher.example) next to the ASCII form the browser actually sends.

  • Readable output

    Copy the rebuilt URL, a decoded version that is easy to read, or the query as JSON with repeated keys turned into arrays.

How to use the url parser

  1. 1Paste a URL. The parts and query parameters appear at once.
  2. 2Edit any part or parameter, remove tracking tags, or sort the query.
  3. 3Copy the rebuilt URL, the decoded version or the query as JSON.

When to use it

  • Cleaning a link before sharing it

    A shopping link with eight tracking tags becomes a short, clean URL after Remove tracking. The product id stays.

  • Debugging an OAuth or SSO redirect

    Paste the login URL, read redirect_uri, scope and state as plain text, then open redirect_uri in the parser to check it.

  • Checking campaign links

    Confirm that utm_campaign is spelled the same on every ad before launch. To build new ones, use the UTM builder.

  • Testing API query strings

    Change one filter value in the table and copy the new URL into your API client, without hand-encoding spaces or ampersands.

What are the parts of a URL?

Take https://user:[email protected]:8443/products/item?id=42&color=navy#reviews. The scheme is https. user:pw is the user info, rarely used and hidden by browsers. shop.example.com is the host and 8443 the port; when the port is missing, the scheme's default applies (443 for https, 80 for http). /products/item is the path, id=42&color=navy is the query, and reviews is the fragment.

The scheme, host and port together make the origin, https://shop.example.com:8443. Browsers use the origin for security rules such as same-origin and CORS. The rules for all of this are in RFC 3986 and the WHATWG URL Standard, which is what browsers follow.

How do query parameters work?

The query is everything between ? and #. By convention it is a list of key=value pairs joined with &. Nothing stops a key from appearing twice (tag=a&tag=b), or from having no value at all (?debug). Servers differ in how they read those cases: some keep the last value, some the first, some make an array.

Values must be percent-encoded: a space becomes %20 or +, & becomes %26, and = becomes %3D. If you paste a value with a raw & into a URL, the server sees two parameters. The table here does the encoding for you, so you can type values as plain text. For a one-off value, the URL encoder does the same job on its own.

Is a space %20 or + in a URL?

Both, depending on where it is. In the path, a space must be %20, and a + is a literal plus sign. In the query string, HTML forms send spaces as +, and most servers decode + back to a space. %20 is also accepted there.

So %20 is always safe, while + is only safe in the query. That is why the tool asks how to read + and how to write spaces when it rebuilds the query. If a value really contains a plus, as in a phone number like +44, it must be sent as %2B.

Why does the fragment never reach the server?

The part after # is handled by the browser alone. It scrolls to an element with that id or lets a single-page app route without reloading. It is not sent in the HTTP request, so it never shows up in server logs. Some sign-in flows put tokens in the fragment for exactly that reason.

Why use Mavros

 MavrosTypical upload sites
ParserThe browser's own WHATWG URL engineCustom regex that misreads edge cases
Query editingEdit, add, delete and sort rows, rebuild liveRead-only list
Tracking cleanupOne click for utm_, gclid, fbclid and moreNot offered
Nested URLsOpen an inner URL with a Back buttonShown as one encoded string
Space handlingChoose + or %20, and how to read +Fixed and undocumented
PrivacyParsed in the browser, never uploadedURL sent to a server

Tips

  • The parser normalizes the URL the way a browser does: the host becomes lowercase, a missing / after the host is added, and spaces become %20. The rebuilt URL is what a browser would really request.
  • If you paste a link without https://, the tool adds it and tells you. Check that the site really serves https.
  • Remove credentials from a URL before sharing it. user:password@ in a link ends up in browser history and server logs.
  • Pulling URLs out of a big text dump first? The email and URL extractor finds them all, and you can then inspect each one here.
  • A redirect behaving oddly? Check the status code it returns in the HTTP status code list.

Questions

How do I get query parameters from a URL?

Paste the URL here and read the table. In JavaScript, new URL(link).searchParams.get("id") returns one value and getAll("id") returns every value for a repeated key. URLSearchParams decodes + as a space.

What is the difference between a URL and a URI?

A URI is any identifier in that syntax; a URL is a URI that also says how to fetch the resource, such as https://. In everyday web work the terms mean the same thing, and the WHATWG standard simply uses URL.

How long can a URL be?

There is no fixed limit in the standards. RFC 9110 recommends supporting at least 8,000 octets. In practice, keep URLs under about 2,000 characters, because some proxies, CDNs and email clients cut longer ones.

What does %20 mean in a URL?

%20 is a percent-encoded space. The % is followed by the character's byte value in hex: 20 is the ASCII code for a space, so %20 means space. Non-ASCII characters use their UTF-8 bytes, so é is %C3%A9.

What are UTM parameters?

Tags such as utm_source, utm_medium and utm_campaign that analytics tools read to see where a visit came from. They do not change the page itself, so removing them from a link you share is safe.

Why does the parser change my URL?

It shows the normalized form a browser would request. Uppercase letters in the host become lowercase, default ports such as :443 are dropped, a bare host gets a trailing /, and unsafe characters are percent-encoded.

Is the URL I paste stored or sent anywhere?

No. The tool runs in your browser and does not put the URL in the page address, so it is not even kept in your history. That makes it safe for links that contain tokens or session ids.