URL Parser, Encoder & UTM Query Builder
Parse URLs into components, edit query parameters live, decode percent-encoded strings, and build UTM-tagged links locally in your browser.
Debug URLs safely. Everything is parsed locally using the browser's native URL API. No uploads. No server logging. Safe for private API endpoints, signed links, auth callbacks, and campaign URLs.
Paste a URL above to begin
Supports HTTP, HTTPS, and any URL scheme · Long URLs, signed links, and campaign URLs all welcome
All URL parsing, editing, and encoding happens locally in your browser using the native URL and URLSearchParams APIs. Nothing is uploaded to CodeAva servers and nothing is stored between sessions. This makes the tool safe for private API endpoints, signed URLs, auth tokens, internal callback links, and campaign URLs that cannot be shared with external services.
Why URL parsing and query editing matter
URLs seem simple until they are not. A real-world URL for an analytics event, a signed API request, or a UTM-tagged campaign link can be hundreds of characters long, contain multiple layers of percent-encoding, carry a mix of required and optional parameters, and break silently when a single character is wrong. Reading them by eye is slow and error-prone. Building them by hand is worse.
Developers need to inspect webhook callbacks, debug encoded query strings, verify redirect target parameters, and check whether a signed request is structurally correct before it expires. Marketing and growth teams need to build, validate, and review UTM campaign links without accidentally duplicating parameters or breaking existing tracking. Both groups are working with URLs that are often sensitive — private API endpoints, auth tokens, or pre-release campaign links that should not pass through a third-party tool.
The browser's native URL and URLSearchParams APIs provide a reliable, spec-compliant way to parse URLs without fragile regular expressions. This tool wraps those APIs in a clear, editable UI that makes query parameter inspection and editing practical without leaving your device.
What is URL encoding and why is it necessary?
URLs can only reliably carry a limited set of characters directly. When a URL contains spaces, symbols, or reserved characters, those values must be converted into percent-encoded form so they can travel safely across the web without ambiguity. A space becomes %20, an @ symbol becomes %40, and a forward slash in a parameter value becomes %2F. Decoding reverses that process so humans can read the URL more easily. Double-encoding happens when an already-encoded value is encoded again — producing strings like %2520 (a percent sign that was itself encoded). This is a common source of API and webhook bugs.
Anatomy of a URL
Every URL is composed of structured components. Using the example https://api.codeava.com/v1/users?role=admin&sort=name#settings:
| Component | Value in example | Notes |
|---|---|---|
| Scheme / protocol | https | Defines the communication protocol |
| Subdomain | api | Prefix before the registered domain |
| Domain | codeava.com | Registered domain name |
| Path | /v1/users | Resource path on the server |
| Query string | ?role=admin&sort=name | Key-value parameters sent to the server |
| Fragment | #settings | Processed by the browser only — never sent to the server |
UTM parameters explained
UTM parameters are query string parameters that analytics platforms like Google Analytics use to attribute traffic to specific marketing campaigns. They are added to the end of a destination URL and parsed when the page loads. All five are optional, but utm_source and utm_medium are the most consistently used.
| Parameter | Purpose | Example value |
|---|---|---|
utm_source | Where the traffic came from | google, newsletter |
utm_medium | The marketing channel type | cpc, email, social |
utm_campaign | The specific campaign name or ID | spring-sale-2026 |
utm_term | Paid search keyword (optional) | running+shoes |
utm_content | Differentiates ads or links in the same campaign | banner-top, text-link |
Parse URLs in JavaScript with the native URL API
Modern browsers provide a built-in URL constructor and URLSearchParams class that make manual URL parsing unnecessary:
const myUrl = new URL('https://codeava.com/search?q=url+parser&sort=desc');
myUrl.hostname; // "codeava.com"
myUrl.pathname; // "/search"
myUrl.searchParams.get('q'); // "url parser" (decoded automatically)
myUrl.searchParams.get('sort'); // "desc"
// Edit parameters in place:
myUrl.searchParams.set('page', '2');
myUrl.searchParams.delete('sort');
myUrl.toString();
// "https://codeava.com/search?q=url+parser&page=2"
// Iterate all params:
for (const [key, value] of myUrl.searchParams) {
console.log(key, value);
}The native API handles encoding and decoding automatically. For one-off debugging and manual campaign link editing, the CodeAva tool is faster than writing throwaway script — and keeps sensitive URLs off any server.
What this tool helps with
Good uses
- Debugging webhook callback URLspaste a full callback URL and inspect each parameter, decode percent-encoded values, and verify the structure before testing.
- Inspecting signed or encoded API linksreview all parameters in a signed S3, GCS, or API URL without modifying the signature fields.
- Building and validating UTM campaign linksuse the UTM quick-add builder to inject source, medium, campaign, term, and content parameters into any destination URL cleanly.
- Extracting and editing query parametersadd, remove, or rename query parameters and see the rebuilt URL update instantly without writing script.
- Checking encoding before deploying a linkswitch between decoded and encoded view to verify that special characters in parameter values are handled correctly.
- Comparing query strings by sorting parameterssort parameters alphabetically to compare two URLs with the same parameters in a different order.
Limitations to know
- Modifying signed URLsURLs signed with AWS, GCS, or similar services embed the signature across query parameters. Editing any parameter invalidates the signature. Inspect only.
- Public suffix list subdomain detectionsubdomain extraction uses a simple hostname split. Multi-level TLDs like .co.uk may not split correctly. The tool does not implement a full public suffix list.
- Parsing relative URLs without a basethe native URL API requires an absolute URL or a base. Relative paths like /api/users?page=1 will need a protocol and host prepended first.
- Validating URL reachabilitythis tool parses URL structure only. It does not make a network request. Use the HTTP Headers Checker to verify that a URL responds correctly.
How to use the URL Parser & Query Builder
- 1
Paste a URL into the input
Type or paste any URL. The protocol can be omitted — the tool auto-prepends https:// for parsing. A status line immediately shows the validation result, parameter count, and UTM tag count.
- 2
Inspect URL components
The components panel breaks the URL into protocol, hostname, subdomain, domain, port, path, query string, and fragment. Copy any component individually with one click.
- 3
Edit query parameters
Modify key or value fields directly in the parameter table. UTM parameters are highlighted. Add new parameters with the + button. Sort alphabetically, remove duplicates, or clear all with the toolbar buttons.
- 4
Add or update UTM tags
Open the UTM quick-add panel. Fill in the values you need. Click Inject UTM parameters — existing UTM keys are replaced, non-UTM parameters are preserved.
- 5
Copy the rebuilt URL
The Rebuilt URL panel shows the live output as you edit. Choose As-is, Decoded, or Encoded view. Copy the full URL, decoded URL, query string only, or path using the dedicated buttons.
Common issues and how to fix them
URL shows a parse error even though it looks correct
The most common cause is a missing protocol. The tool auto-prepends https:// if none is found, but some non-standard schemes or malformed hosts may still fail. Check for typos in the hostname, double slashes, or illegal characters like spaces in the host part.
Percent-encoded characters appear doubled (%2520 instead of %20)
This is double-encoding — a value that was already percent-encoded has been encoded again. The %25 is the encoding of %, so %2520 is %20 with the % encoded. Use the Decoded view to see the actual intended value, then check where the extra encoding is being applied in your pipeline.
Sorting parameters breaks a signed URL
Signed URLs include a signature that is computed over the exact parameter order or a specific set of canonical fields. Reordering parameters will invalidate the signature. Use the tool to inspect a signed URL without editing it.
UTM parameters appear duplicated after injection
The UTM quick-add builder replaces existing UTM keys before injecting. If duplicates appear, they may have been present in the original URL. Use the Dedupe button to remove exact-match duplicate parameters.
Fragment (#) is not sent to the server — expected it to appear in server logs
URL fragments are processed entirely by the browser and are never transmitted to the server in HTTP requests. Server-side analytics, logs, and request handlers will not see the fragment. If you need this value server-side, pass it as a query parameter instead.
Query parameter values look wrong in the decoded view
The decoded view applies decodeURIComponent to the full rebuilt URL, which may decode characters that should remain encoded. Use the decoded view for human readability only — do not copy a fully decoded URL for production use if the parameter values contain special characters.