FIRST CH TOOLS / 18 URL PARAMETERS

URL Parameter Editor & UTM Builder

Paste a URL and its query string is broken out into a key/value table. Values are shown decoded, and editing, adding, removing or switching off a parameter rebuilds the URL as you type. Add UTM tags, strip click IDs like gclid in one click, and encode or decode strings on their own.

Paste a URL — it is parsed as you type

URL
KEY VALUE
Rebuilt URL Open
0
Parameters
0
URL length
0
Query length
0
Duplicate names
Checks

    Values in the table are shown decoded (%20 → a space, + → a space). Rows you have not edited are written back byte-for-byte, so rebuilding a URL without touching anything returns exactly what you pasted. Tick “Re-encode everything” to rewrite every parameter with encodeURIComponent rules instead.

    How to Use

    1. Paste a URLDrop it into the box at the top and the query string splits into key/value rows. Values are shown decoded, and the scheme, host and path are listed next to them.
    2. Edit, add or removeRewrite keys and values in place, untick a row to leave it out without deleting it, or press “Add a parameter” for a new row. The UTM tab gives you a form for the tracking tags instead.
    3. Copy the rebuilt URLEvery edit is reflected immediately — hit Copy to take it. Duplicate names, unencoded spaces and leftover ad click IDs are listed under Checks.

    About This Tool

    Everything after the ? in a URL is keys joined to values with =, separated by &. Only a limited set of characters is allowed there, so spaces, non-ASCII text and most punctuation have to travel as %XX percent-encoding. This tool decodes that for display and re-encodes on the way out, so you can read and write the actual values.

    A + in a query string means a space — a leftover from HTML form submission that URLs inherited. A literal plus has to be written as %2B, and getting this wrong turns “1+1” into “1 1”. This tool shows + as a space and lets you choose which form (%20 or +) to write back.

    Rows you have not edited are written back exactly as they arrived. URL builders that normalise everything on open are how signed URLs get broken by simply looking at them. Turn on “Re-encode everything” only when you actually want the whole query rewritten.

    UTM tags are the convention for telling analytics where a visit came from. GA4 decides the source from utm_source (where) and utm_medium (how) together, and it compares them case-sensitively, so a stray capital letter becomes a separate channel. Click IDs such as gclid and fbclid are the opposite: they only mean something immediately after an ad click and do not belong in a link you paste into an article or a chat. One button clears them all.

    Whatever is in a URL leaves traces — browser history, the Referer header sent to the destination, proxy and server access logs. When a key looks like a token or a session ID, this tool says so. The URL you paste never leaves your browser; the checks run locally too.

    Directly callable via URL parameters: /en/url/?u=https%3A%2F%2Fexample.com%2F%3Fa%3D1 / /en/url/?text=hello%20world&tab=encode

    From AI Agents

    The same parsing and rebuilding logic is available as the url_params tool on the MCP (Model Context Protocol) server @first-ch/tools-mcp, so an AI agent can call it directly without driving a browser. See How to use from AI agents for setup.

    Install

    claude mcp add firstch-tools -- npx -y @first-ch/tools-mcp

    Examples

    # Break a URL down and see the checks
    url_params(url="https://example.com/p?utm_source=Google&gclid=EAIa&q=a+b")
    
    # Add UTM tags
    url_params(
      url="https://example.com/lp/",
      utm={"source": "newsletter", "medium": "email",
           "campaign": "2026-08"})
    
    # Strip click IDs and sort what is left by name
    url_params(url="…", removeTracking=true, sort=true)
    
    # Encode / decode a string on its own
    url_params(mode="encode", text="hello world")
    url_params(mode="decode", text="hello+world%21")

    Other Tools