Purix On-device link cleaner
Chrome · Firefox · Safari

Links, minus the tracking.

Purix removes known tracking parameters — utm_*, fbclid, and site-specific tokens on Amazon, YouTube, X/Twitter, eBay, AliExpress, Walmart, LinkedIn, and Instagram — from URLs as you navigate, click links, and copy them. It performs no other function.

Zero network calls Zero telemetry Zero remote config One rule set, three browsers

Legend Signal blue — Purix, and the URL that survives Rust — a parameter Purix strips Green — a parameter Purix deliberately keeps
FIG 01 Anatomy of a tracked link 1 / 4
A tracked URL, dissected into what survives, what is stripped, and what is kept The host and path stay in signal blue. A search query parameter is highlighted green because it is on Purix's keep list, labeled underneath as the search term. Three tracking parameters — utm_source, fbclid, and mc_eid — are struck through in rust, each with a label underneath naming what it is: campaign source, meta click id, mailchimp id. Below, an arrow marked Purix cleans leads to the final clean URL in blue. https://example.com/search ?q=running-shoes SEARCH TERM &utm_source=newsletter CAMPAIGN SOURCE &fbclid=IwAR2ab9X META CLICK ID &mc_eid=8f3a1c MAILCHIMP ID PURIX CLEANS https://example.com/search ?q=running-shoes
FIG 01 — the host and path always survive in signal blue; q survives too, because it is on the hard keep-list; utm_source, fbclid, and mc_eid are recognized trackers and are struck.

Four moments it cleans a link

Same core cleaning logic, applied at every point a URL could leave the page.

01

Navigation

Before a tracked link finishes loading, Purix redirects it to the clean URL as early as the platform allows — see fig 02 for how that differs by browser.

02

Link clicks

An <a href> on the page is rewritten the instant you press down or right-click it, so opening it in a new tab, middle-clicking it, or copying its address all see the clean version.

03

Copying text

If the text you copy contains a URL Purix would change, the clipboard write is intercepted and the clean version is copied instead — both text/plain and text/html are checked. Copy something with no affected URL, and Purix never touches the clipboard.

04

Context menu

A "Copy clean link" entry is added to any link's right-click menu, alongside the browser's own items. Desktop only — Safari on iOS doesn't expose a context-menu API to extensions.

Where it intervenes

Each browser gives extensions a different mechanism for redirecting a navigation. Purix uses whichever one is safest and most reliable on each platform — all three run the same core cleaning logic underneath.

FIG 02 Navigation, per browser 2 / 4
When each browser cleans a navigation, relative to the request leaving the device Three vertical lanes — Chrome, Firefox, Safari — run downward from click to resolve, across a horizontal device boundary, to page loads. Chrome intervenes before the boundary with a square marker, labeled DNR ruleset, because it is a static declarative rule. Firefox also intervenes before the boundary but with a circular marker, labeled webRequest, because it is a callback. Both lanes turn from rust (tracked) to blue (clean) above the line. Safari intervenes after the boundary, so its lane stays rust past the line, with a small warning mark where it crosses, before turning blue at a marker labeled location.replace. CHROME FIREFOX SAFARI CLICK RESOLVE DEVICE BOUNDARY PAGE LOADS DNR RULESET WEBREQUEST LOCATION.REPLACE
  • Chrome a static Declarative Net Request ruleset redirects the request before it leaves the browser.
  • Firefox blocking webRequest.onBeforeRequest returns a redirectUrl — the dirty request never leaves.
  • Safari a content script calls location.replace at document_start — the first (tracked) request can briefly go out before the page redirects.
FIG 02 — Chrome's background script re-checks the committed URL as a same-tab safety net, which is also where Amazon path cleaning happens: one visible correction, never a loop, and never on a Back press. The same table, in full, ships in the extension’s own README.

What it looks like

A popup for the moment, a dashboard for the trend line — both live entirely in your browser.

SHOTPopup1 / 3
Purix popup UI labeled with five callouts: a per-site on/off switch, today and all-time removed-parameter counts, a top-domains list, the five most recently cleaned links, and a Copy clean URL of this page button.
The popup — everything it removed, at a glance.
SHOTDashboard2 / 3
Purix options page showing a 30-day bar chart of links cleaned and a by-domain table with links-cleaned and params-removed columns for eight domains.
The dashboard — a 30-day history and a per-domain breakdown, both on your device.
SHOTCopy clean link3 / 3
Illustration of right-clicking a tracked link, choosing Purix's Copy clean link menu item, and the clipboard ending up with the clean URL instead of the tracked one.
Right-click a link, choose "Copy clean link," paste it clean.

Blocklist-only, on purpose

A tracking-param stripper only earns a permanent place in your browser if it never breaks a page — one broken checkout and it gets uninstalled. Purix never guesses: a parameter is stripped only if it is named on a curated list, or matches a known prefix like utm_. A fixed keep-list overrides every strip rule, and anything Purix doesn't recognize is left exactly as it was.

FIG 03 Where a parameter lands 3 / 4
Decision order for any query parameter Purix sees A parameter is first checked against the hard keep list — if it matches, it is kept. Otherwise it is checked against the strip list by exact name or known prefix — if it matches, it is stripped. Anything left over is passed through untouched, never guessed at. KEEP LIST? YES KEEP q · id · t NO STRIP LIST? YES STRIP utm_ · gclid NO PASS THROUGH never guessed
FIG 03 — the one deliberate exception: on x.com/twitter.com, t/s pierce the keep-list, because there they're share-tracking tokens rather than content selectors.

28 global strip params 1 global prefix (utm_) 10 protected keep-list params 8 site-specific rule sets 323 unit tests

Built-in site rules cover Amazon, YouTube, X/Twitter, eBay, AliExpress, Walmart, LinkedIn, and Instagram. You can also add your own strip or never-strip rules from the dashboard — see Support for how.

Zero network calls. Zero telemetry.

Purix's entire rule set ships inside the extension and is only ever updated by installing a new version — nothing is fetched at runtime. Settings, local usage counters, and a recent activity log (hostname and the names of removed parameters, never the URL itself) live in your browser's local storage and are never transmitted anywhere.

FIG 04 The device boundary 4 / 4
Everything Purix stores stays on your device — there is no server A bordered box labeled on your device contains four smaller boxes: settings, counters, rules, and activity log. Outside the box is empty space, with a crossed-out circle labeled no server, showing that nothing is ever sent off the device. ON YOUR DEVICE BOUNDARY SETTINGS COUNTERS RULES ACTIVITY LOG NO SERVER
FIG 04 — settings, custom rules, usage counters, and the activity log live in storage.local on this device only. There is nothing on the other side of the line to send them to.

Read the full privacy policy.

Get Purix

Not published to any store yet — links go live here the moment each listing is approved.

BrowserStoreStatusMechanism
Chrome Chrome Web Store Coming soon Static DNR ruleset
Firefox Firefox Add-ons Coming soon Blocking webRequest
Safari (macOS) App Store Coming soon Content-script redirect
Safari (iOS) App Store Coming soon Content-script redirect

Until listings go live, Purix is installed by loading it unpacked from a local build — the repository’s README carries the per-browser steps.