What the link cleaner removes and keeps
The rules
Every utm_* name, fbclid, gclid, gclsrc, dclid, msclkid, igshid, igsh, mc_cid, mc_eid, yclid, twclid, ttclid, li_fat_id, _hsenc, _hsmi, mkt_tok, ref and ref_src. Host-scoped rules: s and t on x.com and twitter.com, feature=shared on YouTube hosts, and si on YouTube and Spotify hosts. Because s, t and si are real parameters elsewhere, they are only removed on those hosts.
Names are compared after decoding and ignoring case, so utm%5Fsource and UTM_Medium are caught. Parameter values and order are not rewritten, and a repeated functional parameter such as tag=a&tag=b is kept in full.
Normalising
The host is lowercased, an explicit default port (:80 on http, :443 on https) is dropped, and an empty trailing ? or # is removed. The path is never changed, because paths can be case sensitive. A non-ASCII host is kept readable as typed, and an already encoded xn-- host is left encoded.
Limitations
The parameter list is our own, drawn from names widely used by ad and analytics systems, not an official registry, and sites add new ones. Server-side tracking, cookies and links hidden behind short links are out of reach. Only http and https links are cleaned.