A link you copy from an app is rarely just an address. The trail behind the question mark records which campaign reached you, which click was yours, and sometimes which account did the sharing.
Anatomy of a shared link
Copy a product link out of a newsletter and it tends to look like this:
https://shop.example.com/p/kettle?colour=black &utm_source=newsletter&utm_medium=email &utm_campaign=aug_sale&fbclid=IwAR2xQ81vG
Only the first line is the address. colour=black is a real parameter — the page uses it to show the black kettle. Everything after it exists to tell the destination something about you: which mailing reached you, which click was yours.
The distinction matters because it is the whole rule for cleaning links safely. A parameter the page needs describes the page. A tracking parameter describes the visitor.
The utm_ family: campaign labels
utm_source, utm_medium, utm_campaign, utm_term, and utm_content are the oldest and most common — the naming dates back to Urchin, the product Google bought and turned into Google Analytics. They label where a link was published, so the site owner can see that a visit came from the August newsletter rather than from a search result.
On their own they are labels rather than identifiers: everyone who clicks the same newsletter link carries the same values. The privacy cost is modest but real — forwarding the link tells the site that your recipient came "from the newsletter" too, which is misleading at best. And the labels make otherwise-identical links look different, which breaks bookmark deduplication and makes shared links needlessly long.
Click identifiers: gclid, fbclid, and friends
A second family is different in kind, not just in name: gclid (Google Ads), fbclid (Facebook), msclkid (Microsoft), ttclid (TikTok), and similar are unique per click. That long random-looking value was generated for the specific moment you clicked, and it lets the ad platform connect what happens on the destination site back to your click — and through it, to your ad profile.
Because the value identifies one click rather than one campaign, passing the link on passes the identifier on with it. Anyone you share it with visits the page carrying a token minted for you.
These identifiers are also why a link "works fine" without them: they exist for the platform’s measurement, not for the page. Deleting them changes what the advertiser can see, never what the recipient gets.
Share IDs: the parameter with your account on it
The third family is the one most people have never noticed. When an app’s Share button builds a link, it often appends an identifier tied to the sharing account:
- si= on YouTube and Spotify share links.
- igsh= / igshid= on Instagram links.
- s= and t= on posts copied from X.
- share_id= and correlation_id= on Reddit shares.
These let the platform attribute later views to the person who shared — which is why the same video shared by two people produces two different links. The video plays identically without the parameter; what disappears is the platform’s record that your copy of the link was the one that spread.
Wrappers and highlight fragments
Two more artifacts travel with copied links without being parameters at all.
A redirect wrapper replaces the address entirely: links copied out of Google results can be google.com/url?q=…, links in corporate email become …safelinks.protection.outlook.com/?url=…, and Facebook routes outbound clicks through l.php. The real destination is sitting inside a query parameter, and every click is logged at the wrapper first. The honest clean version of such a link is the address it points at.
And a link made with "copy link to highlight" carries #:~:text= followed by the words you had selected. It is a scroll instruction for the browser — but it also publishes your exact selection to anyone who reads the URL.
What is safe to delete, and what is not
The families above are safe to remove precisely because they describe the visitor, not the page. The parameters that must survive are the ones the page reads: product IDs and variants, page numbers, search queries, video timestamps like ?t= on YouTube.
That is why deleting everything after the question mark — the tempting manual fix — regularly breaks links, and why a careful cleaner works from an explicit list of known trackers and keeps anything it does not recognise. An unknown parameter is far more likely to be a page number than a tracker.
One deliberate exception is worth knowing: on Amazon links, tag= is an affiliate ID. It is tracking in the technical sense, but if the link is your own affiliate link, the tag is the part that pays you — a reasonable cleaner leaves it alone rather than silently deleting someone’s commission.
Fix it now
Remove utm_source, fbclid, gclid, and the rest of the tracking trail from copied links, unwrap redirect wrappers, and keep every parameter the page actually needs.
Common questions
Yes. The utm_ family exists for the site’s analytics, not for the page itself, so the link works identically without them. They only label which campaign the link was published in.
A click identifier, unique to the specific click that produced the link. It lets the ad platform connect activity on the destination site back to that click and the profile behind it. The page itself never needs it.
The Share button appends si=, an identifier tied to the sharing account, so each person’s copy of the link is distinct. The video plays the same without it.
Only if a parameter the page needs is removed — a product ID, a page number, a timestamp. Known trackers are safe to delete, which is why cleaning by an explicit tracker list is safer than deleting everything after the question mark.