piapia123
en

URL Cleaner

Web

Everything runs locally in your browser — nothing is uploaded

Input
Drop a file here to load its contents
Output

Links copied out of social platforms, email campaigns and search ads carry a tail of parameters only the sender needs: `utm_source`, `fbclid`, `gclid`… Their job is to credit the click to somebody. Cutting that off before you forward a link is a small courtesy, and doing it by hand is error-prone — cut too much and you change the page, cut too little and the tail travels with it. The list is organised by vendor family (UTM, Google, Meta, Microsoft, HubSpot, Mailchimp, Matomo, TikTok, Twitter/X, Snapchat, Pinterest, and an “other” bucket), 90+ entries in all. Each family is a checkbox and all are on by default (strip everything), so you can “drop the UTM tags but keep Meta”. The result says which families were stripped and how many parameters each URL lost. ⚠️ Stripping everything is a trade-off, not unconditionally right. A click ID such as `gclid` is how an ad platform attributes a visit — remove it and you can no longer tell which ad brought someone; `mc_cid` / `mc_eid` relate to email open and click statistics and unsubscribe handling. Turn the relevant family off if you need those (see the FAQ). ⚠️ The decision is based on a list of known tracking parameters, not on what looks suspicious. Anything not on the list is kept: the `ref=home` in `/article?id=1234&ref=home` may be the site’s own navigation parameter, and removing it sends the page somewhere else. Better to remove too little than to remove the wrong thing. You can add your own names in the options.

Features

  • The list has 11 vendor families plus “other”, 90+ entries: UTM, Google (gclid / gclsrc / dclid / wbraid / gbraid / _ga / _gl), Meta/Facebook, Microsoft, HubSpot, Mailchimp, Matomo, TikTok, Twitter/X, Snapchat, Pinterest
  • One checkbox per family, all on by default (strip everything) — so you can drop the UTM tags and keep Meta
  • ⚠️ Anything not on the list is kept — better to remove too little than the wrong thing; add your own names in the options
  • ⚠️ Parameter order and percent-encoding are left byte for byte, so a URL with nothing to remove comes back unchanged
  • The result says which families were stripped and how many parameters each URL lost, and lists exactly which parameters were dropped
  • ⚠️ Stripping a click ID such as gclid, or an email parameter such as mc_cid, raises an honest warning that attribution or email statistics will lose the data
  • Keeps only the first of a repeated parameter (and says how many were merged) — repeats are usually the trace of a forwarding chain
  • Fragment removal and trailing-slash removal are separate options, and the slash on a root path is never removed
  • Paste many links, one per line, grouped per line, with a total at the end
  • Only http/https is accepted: a javascript: URL is not treated as a link at all

How to use

  1. Paste the links, one per line
  2. Turn off any vendor family you want to keep (for example Google, if you need attribution)
  3. Add any names not on the built-in list under “extra parameters”
  4. The result gives the cleaned link, the families stripped and how many parameters went

FAQ

Why were some parameters left alone?
Because a parameter that is not on the list cannot be judged. `?id=42` is almost certainly used by the page, while `?ref=home` may be the site’s own navigation parameter — removing it sends the visitor somewhere else with no visible explanation. So only definite tracking parameters are removed (their format and purpose are defined by ad platforms; a site would not use them for anything else), and you can name the rest yourself in the options.
Why is the parameter order preserved?
Because signed URLs include the parameter order in the signature. Reordering makes the signature fail and the server rejects the link — and all the user sees is “this link does not open”, with nothing pointing at the order. So the order is kept and only the intended parameters are dropped.
Why does an already-clean link come back byte for byte?
Because the query string is split by hand here, rather than decoded through `URLSearchParams` and re-emitted. The latter turns `y=%2B` into `y=+` — and in this encoding `+` means a space, so the parameter’s meaning is quietly changed. There is a test pinning exactly that.
Why merge repeated parameters?
`?a=1&a=2&a=3` is nearly always the trace of a forwarding chain, each hop appending another — and servers usually read only the first. Keeping just the first, and telling you how many were merged, is more useful than passing the repetition through: leaving it makes the link look clean while some server framework errors out or reads an unexpected value.
When should I not strip?
When you need attribution. Click IDs such as `gclid`, `fbclid` and `msclkid` are how ad platforms answer “which ad, which click brought this visit”; `mc_cid` / `mc_eid` relate to email open and click statistics and unsubscribe handling. If you are on the marketing side, or reconciling against those numbers, stripping them makes the other side’s data stop adding up. The fix is simple: untick the relevant family (Google, Meta, Mailchimp…) and remove only what you actually want gone, such as UTM. “Strip everything” is a reasonable default for forwarding a link, not an unconditional truth.

Related tools