---
title: "URL Parser - Break a URL Into Its Parts Online | CanDoYa"
description: "Free online URL parser. Paste any URL to split it into scheme, host, port, path, query parameters, and fragment instantly. Runs in your browser, nothing uploaded."
url: https://candoya.com/tools/url-parser/
locale: en
type: browser-tool
---

# URL Parser

Category: Developer

## What is a URL parser?

A URL parser breaks a web address into its component parts - scheme (https), hostname, port, path, query string, and fragment - and lists each query parameter as a decoded key/value pair. This tool parses any URL in your browser using the same standard the browser itself uses, so you can inspect, debug, or copy any single part.

Parsing happens as you type and stays on your device - the URL is never uploaded, which matters when it carries API keys, tokens, or tracking IDs. The tool uses the browser's built-in WHATWG `URL` and `URLSearchParams`, the exact same engine your address bar uses, so what you see is how a real client will read the address. Each query parameter is shown already percent-decoded, and duplicate keys are kept in order instead of being collapsed.

## How to use it

1. **Paste a URL** - Drop any absolute URL into the input box - it can include a userinfo part, port, query string, and fragment.
2. **Read the breakdown** - The panel lists each structural part - scheme, hostname, port, path, query, fragment, origin - as soon as the URL is valid.
3. **Inspect the parameters** - The query-parameter table shows every key and its decoded value, keeping duplicate keys in the order they appear.
4. **Copy what you need** - Copy any single part, or use Copy as JSON to grab the whole parsed structure for a test or a bug report.

## Who it's for

- **Developers debugging** a redirect or callback URL - see the exact `path`, `query`, and `fragment` a request will hit.
- **Marketers auditing** tracking links - read every `utm_*` parameter as a clean key/value list instead of squinting at one long string.
- **QA and support** reproducing a bug from a shared link - copy the isolated hostname, port, or a single query value.
- **Anyone learning** how a URL is structured - a labeled breakdown makes scheme, host, port, path, query, and fragment concrete.

## Expert note

The WHATWG URL parser this tool uses drops the port from `host` when it is the scheme default - `https://example.com:443/` reports an empty `port` and a `host` of just `example.com`, because 443 is implied by `https`. It also needs an absolute URL: a bare `example.com/path` or a relative `/path?x=1` has no scheme, so the parser can't know the host and will ask you to add `https://`. Non-ASCII hostnames are converted to their punycode (`xn--`) form in `hostname`, which is exactly what gets sent over DNS.

## Frequently asked questions

### Is this URL parser free?

Yes - it's completely free, with no sign-up and no usage limits. Parsing runs entirely in your browser.

### Is my URL uploaded anywhere?

No. The URL is parsed locally in your browser and never sent to a server, so it's safe for links that contain API keys, session tokens, or private query parameters.

### What parts of a URL does it show?

It shows the scheme, any username and password (userinfo), the hostname, the port, the path, the query string, and the fragment, plus the origin. Every query parameter is also listed as a decoded key/value pair.

### Why does it say to add https:// ?

The URL standard needs an absolute URL to know the host. A bare address like `example.com/path` or a relative one like `/path?x=1` has no scheme, so it can't be parsed on its own - add `https://` (or the correct scheme) to the front and it will parse.

### Are query parameters decoded?

Yes. Each parameter value is percent-decoded, so `%20` shows as a space and `caf%C3%A9` shows as `café`. Duplicate keys - like `color=blue&color=red` - are kept as separate rows in their original order rather than being merged.

### Why is the port sometimes blank?

When a URL uses the default port for its scheme (443 for https, 80 for http), the standard leaves the `port` empty because it is implied. A non-default port such as `:8443` is shown explicitly.

### Can it parse the fragment after the # ?

Yes. The part after `#` is shown as the fragment. It is never sent to the server by browsers, but it is a real part of the URL - useful for single-page-app routes and deep links.

## Related tools

- [URL Encode and Decode](https://candoya.com/tools/url-encode-decode/)
- [JSON Formatter](https://candoya.com/tools/json-formatter/)
- [Base64 Encode and Decode](https://candoya.com/tools/base64-encode-decode/)
- [HTML Entity Encode and Decode](https://candoya.com/tools/html-entity-encode-decode/)
- [UUID Generator (v4 & v7)](https://candoya.com/tools/uuid-generator/)

---

*Markdown edition of <https://candoya.com/tools/url-parser/>, published for AI agents and other automated readers. Index of key pages: <https://candoya.com/llms.txt>.*
