Every link you copy is carrying something.
Campaign tags, click IDs, playlist positions, share fingerprints. Paste a link to see what is attached to it, then take it off.
Already cleared … links.
The link, taken apart
An example. Paste a link above to run your own.
https://www.youtube.com/watch
- ?v=dQw4w9WgXcQkept
- &list=RDdQw4w9WgXcQPlaylist ID
- &index=1Position in playlist
- &si=8fK2qShare fingerprint
- &feature=shareReferral feature tag
Cleaned link
Short link
What comes off
A parameter is removed when it exists to identify the person clicking, the campaign that sent them, or the surface they clicked from. Parameters the page actually needs, like a product ID or a search query, stay.
Campaign tags
utm_source, utm_medium, utm_campaign, mtm_*, pk_*, itm_*
Written by marketing tools so a visit can be tied back to one specific email, ad, or post.
Click IDs
fbclid, gclid, msclkid, ttclid, twclid, igshid, li_fat_id
Unique per click. These are how an ad network matches a page view to the individual it showed the ad to.
Share fingerprints
si, ref_src, __twitter_impression, _branch_*
Added at the moment you press Share. They record who sent the link, so the receiver's click reports back to the sender's account.
Playlist and player state
list, index, start_radio, pp, ab_channel, feature
Carries your viewing session into someone else's. Sending a video with these still attached hands over your playlist and where you were in it.
Affiliate and session codes
irclickid, cjevent, ranMID, ascsubtag, mc_eid, mkt_tok
Commission tracking and per-recipient email IDs. An mc_eid in a forwarded newsletter link identifies the original subscriber.
YouTube, specifically
YouTube links are the worst offenders, so they get a stricter rule than everything else. On a /watch URL only v survives. Every other parameter is dropped, including the start timestamp, because the allowlist is deliberately narrow rather than a list of known-bad names that YouTube can add to faster than anyone can keep up.
youtu.be links keep nothing at all: the video ID lives in the path, so the query string is pure tracking.
For your own tools
The cleaning logic sits behind one POST endpoint that any script, shortcut, or browser extension can call. It is open to every origin, needs no key, and stores nothing about the caller.
curl -X POST https://untrackme.narek.actcollege.am/clean \
-H 'Content-Type: application/json' \
-d '{"url":"https://youtu.be/dQw4w9WgXcQ?si=xY12ab","shorten":true}'
{
"ok": true,
"original": "https://youtu.be/dQw4w9WgXcQ?si=xY12ab",
"cleaned": "https://youtu.be/dQw4w9WgXcQ",
"removed": [
{ "key": "si", "value": "xY12ab", "reason": "Share fingerprint" }
],
"kept": [],
"changed": true,
"total": 1284,
"code": "a7Bc2Q",
"short": "https://untrackme.narek.actcollege.am/r/a7Bc2Q"
}
Set shorten to false or leave it out and the code and short fields are omitted. kept lists the parameters that survived, in their original order. GET /api/stats returns the public counter. GET /r/<code> answers with a 302 to the cleaned URL.