URL Cleaner
WebEverything runs locally in your browser — nothing is uploaded
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
- Paste the links, one per line
- Turn off any vendor family you want to keep (for example Google, if you need attribution)
- Add any names not on the built-in list under “extra parameters”
- 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
URL Parser
WebParse a URL into scheme, host, port, path, query parameters and fragment, with each parameter shown raw and decoded. Runs entirely in your browser.
User-Agent Parser
WebParse a user agent into browser, version, OS, device type and engine, and see which rules matched. Pattern matching only. Runs entirely in your browser.
HTTP Status Codes
WebLook up an HTTP status code for its meaning, 1xx–5xx class, typical uses and common traps. Runs entirely in your browser.
MIME Types
WebLook up a MIME type from an extension, or the default extension for a media type. Common types only. Runs entirely in your browser.
.gitignore Generator
WebGenerate a .gitignore from language, framework, editor and OS templates. Sections are merged and duplicates removed. Runs entirely in your browser.
Image to Base64
WebConvert an image to Base64 or a data URL by dropping, choosing or pasting it. Resize and switch format, all locally — nothing is ever uploaded.