URL DEMUXIFIER

Paste a link and get the clean address back: campaign tags, click identifiers and redirect wrappers come off, and the platforms that have a canonical shape get tidy URLs. Everything runs in your browser — the link is read as text and never fetched.

Open clean link
Try an example:

What came off, and why

Every removal and every rewrite is listed here with its reason, so you can see the judgement the tool made instead of trusting a number. If a link cannot be explained, the parameter stays.

  • Paste a link above and every removal will be listed here, with its reason.

How the demux works

Three passes, in this order. Each one is a lookup table rather than a guess, and the changelog above names the rule that fired.

1. Named parameters

A rulebook of tracking names utm_*, fbclid, gclid, mc_eid, share ids, session ids and advertising click ids. Some rules are scoped to a host, because a short name such as sr or si means something else on another site.

2. Redirect wrappers

Facebook shields, Google /url redirects, Outlook SafeLinks, DuckDuckGo result links and LinkedIn redirects all carry the real address in a plain parameter. The wrapper is read and dropped, up to three hops, without requesting anything.

3. Platform shapes

Where a platform publishes a canonical address, the link is rewritten to match: a video becomes youtu.be/<id>, an Amazon product becomes /dp/<ASIN>, and a Google search keeps only the query and the settings that change the results.

What this tool will not do

It never opens the link

No preview, no fetch, no head request. A consequence worth knowing: short links such as amzn.to or bit.ly cannot be expanded, because their destination only exists on the shortener's server.

It never guesses

A parameter is removed only when a rule can explain it. Anything else is kept and listed under Kept, so you can decide. That is also why the output can still be long: the tool would rather leave a tag in place than break the page.

What the parameters it removes actually do

The rulebook as a table. A parameter that is not named here, and does not match one of the patterns, is left alone — and the changelog says so under Kept.

Parameter What it carries Comes off
utm_source, utm_medium, utm_campaign, utm_content, utm_term Campaign tag written when the link was made: which newsletter, post or ad sent the click. The most common tracking parameter on the web. Always
mtm_campaign, pk_campaign, pk_kwd The same campaign idea in Matomo, including older installs that used the pk_ prefix. Always
oly_enc_id, vero_id, _hsenc, _hsmi, mkt_tok, hsctatracking Email platform identifiers from Omeda, Vero, HubSpot and Marketo: each one ties the click to a single recipient on a mailing list. Always
mc_cid, mc_eid Mailchimp campaign id and subscriber id, the pair behind most newsletter clicks. Always
fbclid, twclid, ttclid, yclid, msclkid Advertising click identifiers from Facebook, X, TikTok, Yandex and Microsoft. Each one links the visit back to the ad that produced it. Always
gclid, gclsrc, dclid, gbraid, wbraid, gad_source, srsltid Google's click identifiers: search ads, Display, the iOS bridge values, and Shopping's own srsltid. Always
_ga, _gl, s_kwcid, ef_id, s_cid Cross-domain linkers and Adobe attribution values. A linker carries a visitor id from one site to the next, which is how a booking started on a blog gets credited to the blog. Always
li_fat_id, lipi, trk, trkcampaign LinkedIn's ad click id and page-insight marker, on the links it hands out. Scoped to LinkedIn, so a bare trk elsewhere is left alone. Always
igshid, igsh, exln, dlrf, psln, si Share identifiers from Instagram, Spotify and YouTube: who shared the link and from which surface, nothing about the content. Instagram's exln, dlrf and psln are base64 tokens the app adds when it hands you a link, psln included on reels. Always
ref_src, ref_url, __twitter_impression Which X surface a link came from, the page that was on screen when it was clicked, and X's impression counter. Always
ved, sxsrf, sca_esv, usp Google's where-you-clicked trace, the request token tied to your search session, the experiment stamp on results, and the how-this-was-shared marker on Docs, Drive and Maps links. Always
guccounter The Guardian's own click counter, on links it hands out. Always
trackingid A per-visit identifier some sites attach to the links they send you. Always
phpsessid, jsessionid, sessionid, session_id Session ids: tokens for whoever clicked, not parts of a document. Passing them on tells the recipient's server a little about your visit. Always
algo_pvid, spm, scm, btsid, ws_ab_test, gatewayadapt AliExpress and Taobao ranking traces: which recommendation experiment, ad slot or session put the product in front of you. Always
pf_rd_p, pd_rd_r, dib, dib_tag, psc, content-id, _encoding Amazon's recommendation-rail bookkeeping: the shelf, carousel or widget a product was clicked from, plus the encoding marker Amazon adds to the link. Always
qid, sr, sprefix, crid The timestamp of an Amazon search, your position in the results list, the prefix recorded as you typed, and the search's correlation id. Always
tag, th, ascsubtag, linkcode, linkid, creativeasin Amazon Associates tags. This is the money behind an affiliate link: it decides who gets paid, not which page opens, so it comes off like the rest — untick the box when the tag is your own commission. Always, unless the affiliate box is unticked
aff_platform, aff_trace_key, aff_short_key, aff, aff_id, affiliate, affiliate_id, ref, ref_, clickid, irclickid, irgwc Affiliate identifiers from AliExpress, Impact Radius and the generic networks: whichever site sent the click gets credited for the sale. Always, unless the affiliate box is unticked

Two conventions worth knowing. Parameters are matched case-insensitively, so PHPSESSID and phpsessid are the same rule. And a short name is only removed on the platform that owns it: sr comes off an Amazon link but survives elsewhere, where it might mean a page number.

Frequently asked questions

No. The link is read as text: it is parsed, its parameters are inspected, and a redirect wrapper is unwrapped by reading the address stored inside it. Nothing is requested, so nothing you paste leaves your browser and the destination site never learns that the link was cleaned.

Because a tag= decides who gets paid when the link is clicked, not which page opens. The checkbox is an opt-out rather than an opt-in: if the link is yours, untick it and the commission survives.

A short link carries no destination. The real address only exists in the shortener's database, and finding it out means asking their server. This tool never makes a request, so a short link stays short.

Almost always. What comes off is bookkeeping: it tells the sender's analytics which campaign, post or ad the click came from, not which page to show. If a link looks unusual, the changelog tells you exactly what was taken off before you send it.

They stay, and they are listed under Kept so you can judge them yourself. The rulebook only removes parameter names it can explain, and it would rather leave a tracking tag in place than cut a parameter that actually changes the page.

No. The whole rulebook is one script that runs in your browser, so there is no upload step, no account and no request to this site when you paste a link.

Related tools

When a cleaned link still contains an awkward character, encode or decode it here.

See how a clean URL previews before you post it anywhere.

Turn the demuxed link into a QR code — no tracking tags baked into the print.