Privacy policy

Unfurl is a tool. It runs on your Mac, looks at the contents of your pasteboard when you copy something, and rewrites that content if it's a URL with tracking parameters. It does that, and only that, locally — without contacting any service we operate. We do not operate a service.

If you are looking for the version of this policy that sells you data buried in clause 14(b)(iii) — there isn't one. We don't have a way to sell your data, because we don't have your data.

What we collect

From the app: nothing. We have no servers, no analytics, no crash collector, no user accounts. There is no telemetry pipeline. The app does not know whether you have launched it, used it, or uninstalled it.

From this website: standard edge-server access logs (IP address, user agent, requested URL, timestamp) held briefly by Cloudflare to deliver pages and stop bots. We don't run third-party scripts, fonts, or trackers on this site. There is no cookie banner because there are no cookies.

From email you send us: the contents of your email, until we've answered it. We use Fastmail. We don't put you on a mailing list.

What Unfurl stores on your Mac

Four kinds of state, all under your user account, all local:

  • Your settings. Toggle states, your custom rule URL (if you've set one), the auto-update preference, the history retention period, the pause/skip-next state. Kept in your account's standard macOS user defaults — the same place every Mac app stores preferences.
  • Your history. Since 1.1, every cleaning is saved inside Unfurl's sandboxed app container the moment it happens — the original URL, the clean URL, what was removed, and when. Kept for 7, 30, or 90 days, or forever; your call in Settings → History. Older entries are pruned automatically, and Clear all wipes the list instantly.
  • Cached rule files. If you turn on automatic rule updates, fresh copies of the bundled open-standards rulesets are saved alongside and used in place of the originals on the next launch. No more, no less.
  • The rules you make. Since 2.1 you can create your own cleaning rules — which parameters to remove, keep, or leave alone on a given site. These sync privately across your own devices through your iCloud account, using Apple's encrypted key-value storage, so a rule you make on the Mac is there on your iPhone. It's the one thing Unfurl syncs, and it's just your rules — a short list of parameter names and hosts. Never your history, never the links you clean, never anything about your browsing. It rides your iCloud, so it's covered by Apple's privacy terms, and it's never sent to us.

Your history, settings, and cached rules stay on your Mac. The only thing that leaves it is the rules you choose to make — synced through your own iCloud, or handed to a friend when you deliberately share one. No telemetry, no analytics, no server of ours with a copy of anything.

The Safari extension

On the Mac and on iPhone and iPad, Unfurl includes a Safari extension that cleans links as pages load. It works through Safari's declarativeNetRequest API, which means the cleaning rules run inside Safari's own network layer — Unfurl never reads, sees, or alters the content of your pages. It only ever touches the URL.

The rules are bundled in the app and evaluated on-device. The extension makes no network requests of its own, keeps no history, and has no account. On iPhone and iPad, that's the whole story: nothing about the links you open ever leaves your device.

Since 2.3, Unfurl also includes a Safari content blocker — a second, separate extension — that keeps cookie-consent banners off the page. It uses Apple's declarative content-blocker mechanism: Unfurl hands Safari a list of hide rules, and Safari applies them itself. No script of ours runs on any page, nothing about the pages you visit is read back, and the extension makes no network requests of its own.

The rules come from the public EasyList Cookie list. The app refreshes it about once a day with a conditional request to the list's own address (secure.fanboy.co.nz, or a mirror you choose in Settings → Blocking) — the request carries nothing about you, and if the list hasn't changed nothing is downloaded. The list, and Unfurl's converted copy of it, are stored on your device.

When you turn the blocker off for a site, that site's name is kept in a small list on your device. If iCloud is on, the list syncs between your devices through iCloud key-value storage — inside your Apple ID, where we can't see it. Hiding a banner means the site receives no consent choice from you; sites that behave differently without one can be exempted with the same switch.

About favicons

The History window can show small site icons next to each row, to make the list easier to scan. Pulling those icons is a network call, so we keep it off by default.

If you turn it on in Settings → History, Unfurl fetches icons through DuckDuckGo's icon service rather than hitting each site directly — the sites in your history never see the request, and nothing is proxied through us. Icons are cached locally and re-fetched at most weekly.

Some links — bit.ly, t.co, SendGrid-style wrappers — only reveal their destination when a server is asked. On the Mac, Unfurl can follow these and clean where they land, but that's a network request, so it's off by default. Turn on Manual and a "Resolve" button appears per link — nothing fires until you click it; turn on Auto and it resolves on copy. Either way your IP reaches the shortener, so you can route the request through a SOCKS5 proxy (Tor, Mullvad) to keep it out. This is a macOS-only feature — the iPhone and iPad extension never makes this call.

Crash reports

If Unfurl crashes, macOS generates a standard crash report in ~/Library/Logs/DiagnosticReports/. We do not auto-upload these. If you submit a bug report by email, you can choose to attach the most recent crash log — read it first, redact anything that looks personal, and decide for yourself.

Sharing & sale of data

We do not share, sell, rent, lease, license, gift, swap, or otherwise transfer your data — because we do not have your data. If a government or law-enforcement agency requested information about you, we would have nothing to give them. We have nothing to give them about any of our users. We've checked.

Children

Unfurl is suitable for all ages. We do not knowingly collect any information from anyone, of any age, because, as established above, we do not collect any information from anyone.

GDPR, CCPA & LGPD rights

If you are in the EU/EEA, UK, California, or Brazil, you have specific rights over personal data we hold about you (access, correction, deletion, portability, the right to object to processing). Since we hold no personal data about you, exercising those rights with respect to us is a one-line email reply.

For your local Unfurl data, you have full access — it's on your Mac. Wipe history from Settings → History → Clear all, or delete everything at once by removing the app's container folder at ~/Library/Containers/dev.johnnywell.Unfurl/.

Terms of service

Your use of Unfurl is governed by the standard Mac App Store License Agreement that Apple shows you on first purchase. The app is provided as-is, without warranty. We make no promises that it will clean every URL you throw at it, never crash, or accurately count the number of params it strips — though we try hard on all three. If something breaks because of Unfurl, our liability is capped at the price you paid for it.

You agree not to use Unfurl to launder data in a way that violates someone else's privacy, to evade affiliate disclosure rules, or to circumvent platform link policies in jurisdictions where doing so would be illegal. We can't enforce that — but we'd appreciate it.

We can change these terms with notice on this page. We won't change them retroactively. If a change is material, we'll mention it in the release notes of the next version.

Acknowledgments

Unfurl stands on the shoulders of open-source work. In particular:

Brave layered URL cleaning ruleset Source of the bulk of our cleaning rules. Updated upstream daily.
MPL-2.0
ClearURLs catalog Per-provider rules for thousands of sites. Maintained by the ClearURLs project.
LGPL-3.0
AdGuard URL Tracking filter The long tail of tracking parameters, maintained by the AdGuard filters team.
GPL-3.0
PURL (Munir, Lee, Iqbal, Shafiq & Siby — USENIX Security 2024) Academic research that verified, across 20,000 sites, which link decorations actually track. Its findings and open dataset inform how Unfurl classifies unknown parameters.
CC-BY-4.0
EasyList Cookie List (by Fanboy and the EasyList authors) Some 23,000 element-hiding rules for cookie-consent banners, behind “Unfurl Cookie Banners” (2.3). Only the hide rules are used, converted on your device into Safari's content-blocker format.
CC-BY-3.0
URL Shorteners list (by Peter Dave Hello) ~1,400 community-maintained URL-shortener domains. Unfurl uses it to decide which copied links are worth resolving to their real destination.
CC-BY-SA-4.0

Per LGPL-3.0, the version of ClearURLs we ship is unmodified and loaded as data, not code; you can load your own copy via Settings → Rules → Custom source URL.

Questions, requests, complaints

Email hi@unfurl.software. A real person replies, usually the same day.

— The Unfurl team · Curitiba, Brazil · June 2026