Strip it.
See for yourself.
Real tracker-laden links, ready to be cleaned — the red parts are what's following you. Two ways in:
Tap a link
Unfurl strips the junk in Safari's network layer — the page loads already clean.
Under the hood
The extension uses Safari's declarativeNetRequest: rules run inside Safari's network process and rewrite the request before it leaves. Nothing reads the page — the cleaned URL is simply what loads. The links below point at a landing page on this site that reports exactly which parameters arrived. Enable the extension and allow it on this site (or every website) first.
Copy a link
The menu-bar app watches your clipboard and scrubs whatever you copy.
Under the hood
Copy any card below. The Mac app detects the pasteboard change, runs the URL through its offline engine (ClearURLs + Brave + AdGuard rule sets), strips trackers, unwraps known redirectors, and rewrites the clipboard in place. Paste anywhere to see the result.
Tap a link, lose the trackers Extension
Real links — tap one and the landing page shows exactly what arrived.
Under the hood
These exercise the extension's global declarativeNetRequest rule, which fires on any host — including this page. Per-host rules only apply when navigating to their real host, so for those, watch the address bar on the actual sites.
The classic marketing-campaign tags.
landing.html?utm_source=newsletter&utm_medium=email&utm_campaign=spring2026&id=42
Open ↗
Facebook + Google ad-click identifiers.
landing.html?fbclid=AbC123xYz&gclid=Cj0KCQiAxyz&id=42
Open ↗
Trackers the AdGuard URL Tracking list adds beyond ClearURLs.
landing.html?tgclid=tg123&ranMID=12345&mc_eid=m99&id=42
Open ↗
A worst-case mix across sources.
landing.html?utm_source=x&fbclid=y&gclid=z&tgclid=t&ranMID=r&id=42
Open ↗
Sanity check: a clean link must pass through untouched (DNR shouldn't over-strip).
landing.html?id=42&page=3
Open ↗
Skip the wrapper Extension
These links normally bounce through an AMP wrapper. With Unfurl you land straight on the destination — watch the address bar.
Under the hood
AMP-class wrappers carry their real destination unencoded in the path; the extension rewrites them with regexSubstitution before navigation. Unlike the param tests above, these land on the real destination (the rule prepends https://, so they can't return to the landing page here) — success means the address bar shows the destination host, not the wrapper.
Google's AMP wrapper around a third-party page; the destination follows /amp/s/ unencoded.
https://www.google.com/amp/s/example.com/article-on-something
Open ↗
example.com/article-on-something, not google.com/amp/s/…google.com/url?q=… notice instead, the rule didn't fire (stale ruleset — rebuild the v2 host).The Google/Cloudflare AMP cache shape; destination follows /c/s/ unencoded.
https://example-com.cdn.ampproject.org/c/s/example.com/page
Open ↗
example.com/page. If the rule doesn't fire you'll hit a DNS error on the ampproject host — which itself signals "not unwrapped."The destination is percent-encoded in a query param. DNR can't URL-decode (verified — DNRProbe case 5), so this is deliberately not unwrapped at click time; only the clipboard engine (Copy) handles it.
https://googleads.g.doubleclick.net/aclk?sa=l&adurl=https%3A%2F%2Fexample.com%2Fdest
The usual suspects Copy · Mac app
Campaign tags that follow you everywhere. Copy a link — paste it back clean.
Under the hood
Cross-site marketing analytics params — added by ad networks and email tools, recognized by name regardless of host. Covered by ClearURLs' global rules.
The full UTM cluster, the way mailing-list software emits it.
https://example.com/article?utm_source=newsletter&utm_medium=email&utm_campaign=spring2026&id=42
Appended by Facebook when you click a link in their feed.
https://example.com/post?fbclid=AbC123xYz_long_token_string&id=42
Appended by Google when you click through an ad or sponsored result.
https://example.com/buy?gclid=Cj0KCQiAxyz_lorem_ipsum&product=42
Per-recipient analytics for Mailchimp campaigns.
https://example.com/?mc_eid=abc123&mc_cid=xyz789&id=42
Site-specific clutter Copy · Mac app
Junk that only one site uses — scrubbed there, untouched everywhere else.
Under the hood
Per-host rules from ClearURLs providers and Brave's clean-urls list. Each rule is scoped to its host, so other sites that happen to share a param name are never affected.
Amazon embeds a `/ref=…` segment in product URLs that identifies the entry path.
https://www.amazon.com/Some-Product/dp/B000ABCDEF/ref=sr_1_1?keywords=test&qid=1234
The `si=` param is YouTube's "shared from" attribution token.
https://www.youtube.com/watch?v=dQw4w9WgXcQ&si=tracking_token_abc&t=42
Spotify's `si=` is a per-share tracking token.
https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT?si=abc123def456
Unwrap the middleman Copy · Mac app
The link points at a redirector — your clipboard gets the real destination.
Under the hood
These URLs point at a redirector rather than the destination. The offline engine (Brave + Unfurl debounce rules) extracts the wrapped URL from a known parameter or path shape — no network request needed.
Google's mobile-AMP wrapper around a third-party page.
https://www.google.com/amp/s/example.com/article-on-something
https://example.com/article-on-somethingThe doubleclick ad-click wrapper. Unfurl's own debounce rule extracts `adurl` and the cleaning pipeline then strips the destination's marketing tail.
https://googleads.g.doubleclick.net/aclk?sa=l&ai=foo&adurl=https%3A%2F%2Fkoreadates.com%2Fsp%3Fpartner%3Dadw%26gclid%3Dxyz%26target%3D%26asset_type%3D
https://koreadates.com/sp?partner=adwThe long tail Copy · Mac app
Thousands of rarer trackers most cleaners miss — covered.
Under the hood
2,521 $removeparam rules adopted from the AdGuard URL Tracking list — the long tail of tracker param names that ClearURLs and Brave haven't catalogued.
Telegram's click-tracking ID added when sharing channel posts.
https://example.com/article?tgclid=abc123def456&id=42
Rakuten's three-param affiliate attribution cluster.
https://shop.example.com/?ranMID=12345&ranEAID=678&ranSiteID=abc&product=42
Generic email-campaign attribution params several platforms use.
https://example.com/article?eml-name=spring_newsletter&eml-publisher=substack&eml-mediaplan=plan42&id=42
Generic "X-" prefixed tracker params — used by various ad networks.
https://example.com/post?x-clickref=tracking_id&x-source=newsletter&x-a-medium=email&id=42
Distributed-tracing tokens leaking into share URLs.
https://example.com/page?analytics_context=session_42&analytics_trace_id=trace_xyz&id=42
Shorthand tokens used by various link-shortener and analytics tools.
https://example.com/page?_ly_c=campaign_42&_ly_r=referrer&taid=track_abc&id=42
The kitchen sink Copy · Mac app
Everything at once. Still one clean link.
Under the hood
URLs that exercise multiple rule sources in a single clean — useful for verifying the pipeline composition (ClearURLs + Brave + AdGuard + the empty-param sweep) works end to end.
Real-world worst case — utm (ClearURLs), fbclid (ClearURLs), gclid (ClearURLs), tgclid (AdGuard NEW), ranMID (AdGuard NEW), plus an empty param.
https://example.com/article?utm_source=newsletter&fbclid=fb_abc&gclid=g_xyz&tgclid=tg_123&ranMID=456&empty=&id=42
https://example.com/article?id=42Amazon URL with marketing trackers and the host-specific /ref=… segment.
https://www.amazon.com/Item/dp/B000ABCDEF/ref=sr_1_1?utm_source=ad&fbclid=fb&tgclid=tg&keywords=test
Flagged, not faked Copy · Mac app
Some links can't be cleaned offline. Unfurl tells you — instead of pretending.
Under the hood
Known shorteners, opaque wrappers, and single-use token URLs can't be reversed without a network request. The analyzer flags these so you get a heads-up rather than a silent passthrough — and the optional network resolver (off by default, your call) can follow the chain for you.
Resolving requires a network HEAD request to bit.ly — that's v2's job. v1 flags + passes through.
https://bit.ly/3xYzAbC
Mailing-list click trackers wrap the destination in a session-encoded URL. Can't reverse offline.
https://url1234.send.example.com/ls/click?upn=abcXYZopaque_session_token