Decompose any URL into standard RFC 3986 components (Protocol, Host, Port, Path, Query Parameters, Hash Fragment), edit query parameters interactively, and export to JSON or cURL.
TL;DR: Enter any full or partial URL below to dissect every part in real time. 100% Client-Side in your browser without sending URLs or credentials to any server. Features an interactive query parameter builder, UTM cleaner, and JSON export.
| Protocol | - | |
| Origin | - | |
| Hostname | - | |
| Host (Host:Port) | - | |
| Port | - | |
| Pathname | - | |
| Search (Query) | - | |
| Hash (Fragment) | - | |
| Username | - | |
| Password | - |
Edit, add, sort, or strip query parameters with real-time sync
| # | Key (Parameter Name) | Value | Action |
|---|---|---|---|
| No query parameters found on this URL. Click "Add Parameter" to insert one. | |||
{} Follow these simple steps to inspect, debug, and modify URL components safely in InfoKoding:
infokoding.com/tools), our tool automatically assumes https:// for you.According to the IETF RFC 3986 (Uniform Resource Identifier: Generic Syntax) standard, a URL consists of five core components organized in a hierarchical format:
Defines the communication protocol used by client programs to access network resources. Examples: https (TLS encrypted), http, ftp, ws, wss, or mailto.
Encompasses the target domain/IP address and optional HTTP basic authentication credentials in the format username:password@hostname:port.
Hierarchical file system directory structure directing browsers to specific web pages or backend API endpoints, separated by slashes /.
Non-hierarchical variable key-value pairs introduced by a question mark ? and separated by ampersands & used for filtering, pagination, and tracking.
Developers often confuse URI, URL, and URN. According to W3C & IETF internet standards, their relationship is defined as: All URLs and URNs are URIs, but not all URIs are URLs.
Uniform Resource Identifier is the umbrella superset identifying any abstract or physical resource (by location, name, or both).
Uniform Resource Locator is a specific subset of URI specifying physical network location and access protocol.
Uniform Resource Name is a subset of URI providing a permanent, persistent unique identifier without location or protocol.
| Characteristic | URI | URL | URN |
|---|---|---|---|
| Primary Role | Identifies resource identity | Locates resource & access protocol | Names resource persistently |
| Includes Protocol? | Optional | Required (http, https, ftp) | No (uses urn: scheme) |
| Location Resilience | Subtype dependent | Breaks if domain/path changes (404) | Permanent over time |
| Real-World Sample | mailto:dev@infokoding.com | https://infokoding.com/tools | urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8 |
Reserved characters have syntactic meaning in RFC 3986. When used as literal data within query strings or path parameters, they must be percent-encoded in hexadecimal format:
| ASCII Character | Hex Encoded | RFC 3986 Class | Syntactic Role in URLs |
|---|---|---|---|
| : | %3A | Gen-delims | Scheme protocol & port delimiter. |
| / | %2F | Gen-delims | Path segment separator. |
| ? | %3F | Gen-delims | Query string parameter delimiter. |
| # | %23 | Gen-delims | Client fragment anchor delimiter. |
| [ ] | %5B %5D | Gen-delims | IPv6 host literal wrappers. |
| @ | %40 | Gen-delims | Userinfo credentials separator. |
| & | %26 | Sub-delims | Query parameter separator (key=val&key2=val2). |
| = | %3D | Sub-delims | Query key-value assignment operator. |
| + | %2B | Sub-delims | Plus literal or application/x-www-form-urlencoded space. |
| Space | %20 | Unsafe Char | Standard space character in URLs. |
When port numbers are not explicitly specified, HTTP clients and web browsers automatically resolve these standard IANA registered defaults:
| Scheme / Protocol | Default Port | Encryption Level | Purpose & Description |
|---|---|---|---|
| http:// | 80 | Plaintext (Unencrypted) | Standard unencrypted web communication. |
| https:// | 443 | TLS/SSL (Secure) | Industry standard encrypted website communications. |
| ws:// / wss:// | 80 / 443 | WSS uses TLS | Bi-directional full-duplex WebSocket connections. |
| ftp:// / sftp:// | 21 / 22 | SFTP via SSH (Port 22) | File Transfer Protocol for managing remote server files. |
| ssh:// | 22 | SSH Authenticated | Secure remote terminal access & Git repositories. |
Official syntax for parsing and manipulating URLs across popular programming languages:
const parsed = new URL("https://infokoding.com/search?q=php#top");
console.log(parsed.hostname); // "infokoding.com"
console.log(parsed.pathname); // "/search"
console.log(parsed.searchParams.get('q')); // "php"
console.log(parsed.hash); // "#top" $url = "https://infokoding.com/search?q=php#top";
$parts = parse_url($url);
// ['scheme' => 'https', 'host' => 'infokoding.com', ...]
parse_str($parts['query'] ?? '', $queryParams);
echo $queryParams['q']; // "php" from urllib.parse import urlparse, parse_qs
url = "https://infokoding.com/search?q=php#top"
result = urlparse(url)
params = parse_qs(result.query)
print(result.netloc) # "infokoding.com"
print(params['q'][0]) # "php" import "net/url"
u, err := url.Parse("https://infokoding.com/search?q=php#top")
if err == nil {
q := u.Query()
println(u.Hostname()) // "infokoding.com"
println(q.Get("q")) // "php"
} Hostname represents only the domain name or IP address without a port number (e.g. infokoding.com or 127.0.0.1). Host includes both the domain name and the custom port number if explicitly specified (e.g. infokoding.com:8080 or localhost:3000).
URI (Identifier) is the umbrella identifier for any resource. URL (Locator) is a URI that specifies physical server location and access protocol (e.g. https://infokoding.com). URN (Name) is a URI that assigns a permanent, persistent unique name without defining physical location or access protocol (e.g. urn:isbn:978-0-13-475759-9).
The standard browser URL Web API requires a valid URI scheme to parse authority and host components. Our parser intelligently defaults to https:// in the background so you can paste plain domains without syntax errors.
According to RFC specifications, the fragment identifier # is strictly a client-side directive used by web browsers for document scrolling or Single Page Application (SPA) routing. Browsers strip the fragment before sending HTTP request packets to the server.
Characters like &, =, ?, and / serve as syntactic delimiters in RFC 3986. When used as literal data inside query values, percent-encoding transforms them into hexadecimal notation (such as %26 for &) preventing servers from misinterpreting parameter boundaries.