URL Forge
Recursively decode URLs, edit query parameters live, and build UTM tracking links.
Input
Output
URL
Parameters
0 parametersRebuilt URL
Link details
Generated URL
How URL encoding and query parsing work
A URL can only contain a limited set of characters safely. Percent-encoding (also called URL encoding) replaces every other character with % followed by its two-digit hex byte value, per RFC 3986. A URL that passes through several systems — a redirect, a tracking pixel, an email link — sometimes gets encoded more than once, which is where recursive decoding helps:
// One pass isn't always enough
%2568%2565%256C%256C%256F → %68%65%6C%6C%6F → hello
(pass 1) (pass 2)
The query parser and UTM builder use the browser's native URL and URLSearchParams classes instead of hand-written regex, so a value that's itself a percent-encoded URL (like a redirect parameter) is decoded once for editing and re-encoded once on rebuild — it never gets double-encoded by accident.
Frequently asked questions
What does "recursive" decoding mean?
Some URLs get percent-encoded more than once (for example when a link is embedded inside another link). Recursive decoding keeps applying decodeURIComponent until the string stops changing, and shows exactly how many passes it took.
Why does editing a query parameter not corrupt an already-encoded value?
The query table reads and writes parameters through the native URLSearchParams API, which decodes a value once on read and re-encodes it once on write — so a value like a nested URL round-trips correctly instead of getting double-encoded.
Is this safe for tokens, API keys or session URLs?
Yes. Everything runs in your browser with native JavaScript; nothing you paste here is sent to a server.
What are UTM parameters for?
utm_source, utm_medium and utm_campaign (plus optional utm_term and utm_content) are query parameters that analytics tools like Google Analytics use to attribute traffic to a specific link, so you can tell which campaign or channel sent a visitor.