Browse by topic

Pick a starting point.

FAQ

The asked-most.

If something here is wrong, out-of-date, or contradicts what you're seeing — please let us know. The page is a living document.

Getting started

How do I install Unfurl? +

Install it from the Mac App Store — or open the App Store, search for Unfurl, and install from there. Launch it from Launchpad once it's downloaded. The first time it opens, macOS will ask permission to read the pasteboard. Say yes — that's the only thing Unfurl ever needs.

The icon then appears in the menu bar, in the corner of your screen.

On iPhone and iPad, install from the App Store (same Universal Purchase — if you already own the Mac app, it's free). Open Unfurl once for the setup steps, then turn the extension on in Settings → Apps → Safari → Extensions → Unfurl for Safari and allow it on your sites. See iPhone & iPad below.

What permissions does Unfurl ask for? +

One. Pasteboard access — required to inspect URLs that hit the clipboard. macOS asks the first time, you confirm, and that's it. Unfurl doesn't request automation, accessibility, full disk access, or anything else. (On macOS 14.0–15.3 the prompt can repeat until you choose Always Allow — see Troubleshooting.)

On macOS 15.4 or later you can revoke pasteboard access at any time in System Settings → Privacy & Security → Pasteboard.

Can Unfurl start automatically on login? +

Yes — Settings → General → Launch at login. Unfurl uses Apple's modern ServiceManagement API, which means no LaunchAgent plists, no orphaned background processes. Untick the box and it's gone from autostart immediately.

How do I know Unfurl is actually doing anything? +

Copy a link with tracking parameters — try one from an email newsletter or an Amazon product page — and open the menu-bar dropdown. The "Trackers off today" number ticks up, and the most recent clean appears as a notice card at the top with the count of removed params.

You can also click History… to see the full diff of original vs clean.

Everyday use

I needed the dirty link — can I get it back? +

Three ways:

  • Click Restore at the bottom of the dropdown — copies the original to your clipboard.
  • Open History, find the entry, click Restore original.
  • Run the Restore Original action from Shortcuts — or just say "Restore Original" to Siri. It puts the last cleaned URL back on the pasteboard exactly as you copied it. One-shot: once restored, the undo is spent.

If you need a particular host to be left alone going forward, use Mark host untouched from the history row.

I want the next link untouched but not all of them. +

Use Skip Next Clean. One-off, snaps back automatically after the next copy. Click the scissors row in the dropdown, or use the macOS Service Skip next clean — bind it to ⌃⌥⌘C in System Settings → Keyboard → Keyboard Shortcuts → Services.

If you find yourself skipping the same host repeatedly, consider marking it untouched.

How do I pause Unfurl entirely? +

Click the pause glyph in the dropdown (between Restore and History). The menu-bar icon turns amber and Unfurl stops touching the pasteboard. Click it again to resume. The pause state survives reboots — useful if you're doing affiliate work.

iPhone & iPad

What does Unfurl do on iPhone and iPad? +

On iOS, Unfurl is a Safari extension. Turn it on in Settings → Apps → Safari → Extensions → Unfurl for Safari and set All Websites to Allow. From then on it strips tracking parameters and unwraps AMP links as pages load — right in Safari's network layer, so the clean page is simply what opens.

Allow every website rather than picking sites: Safari won't ask on its own, and each link you open from Mail leads to a different site, so a list of sites never keeps up.

It never reads or alters page content, runs entirely on-device, and makes no network requests of its own. There's no menu bar or copy-to-clean on iPhone — those are Mac things. One purchase covers both (Universal Purchase).

Why didn't a bit.ly / short link get unwrapped on my iPhone? +

Because following a shortener means asking its server where it points — a network request — and the iPhone extension deliberately doesn't make its own. It cleans what's readable in the link itself: tracking parameters, and AMP wrappers that carry the real destination in plain text. Those need no lookup, so they're handled on every page.

True shorteners — bit.ly, t.co, SendGrid-style click-wrappers — only resolve server-side. Unwrapping those is a Mac feature, where you can opt into network resolution (off by default, Manual or Auto, with an optional Tor/Mullvad proxy). On iPhone the shortened link is passed through untouched rather than followed — so it's never broken, just not expanded.

Rules & exceptions

Can I add my own cleaning rules? +

The way to extend Unfurl is to point it at any URL serving a ClearURLs-format JSON ruleset. Settings → Rules → Custom source URL — paste the URL, save, and Unfurl loads it on the same schedule as the bundled rule libraries.

Host-pattern + wildcard + regex editing inside the app isn't here yet — it's on the list.

How do "untouched hosts" work? +

An untouched host is a domain Unfurl never modifies — every URL from that host is passed through as-is, every parameter intact. Useful for affiliate dashboards, internal tools, and shared docs whose tokens look like trackers.

Add a host from any History row, from Settings → Rules → Untouched hosts, or by right-clicking the dropdown notice.

What order do the rule sources apply in? +

Layered ruleset first, then the provider catalog, then your custom source (if you've configured one). Each pass narrows what's left; the result is what gets written back to the pasteboard.

How does the cookie-banner blocker work? +

It's a second, separate Safari extension — Unfurl Cookie Banners on the Mac, the row called Unfurl on iPhone and iPad — built on Apple's content-blocker mechanism. Unfurl hands Safari a list of hide rules; Safari applies them itself before the page renders. No script of ours runs on the page, and nothing you read is read back.

The banner isn't clicked, dismissed, or answered on your behalf. It's simply never shown — so the site gets no consent and, as a rule, sets no optional cookies. The rules come from EasyList Cookie (Fanboy and the EasyList authors, CC BY 3.0), some 23,000 of them, converted on your device.

How do I turn it on? +

Mac: Safari → Settings → Extensions, tick Unfurl Cookie Banners. It asks for no website access — a content blocker can't see pages. Then, in Unfurl, Settings → Blocking shows whether Safari has it on and lets you switch hiding off altogether.

iPhone & iPad: Settings → Apps → Safari → Extensions, turn on Unfurl. The Cookie banners screen in the app has a one-tap button that opens exactly that page (iOS 26.2 and later) and reports "On in Safari" once it is.

A page won't scroll, or is dimmed with nothing to click. +

Some sites lock the page until the banner is answered — and the banner is hidden. Turn hiding off for that site: click the Unfurl button in Safari's toolbar (Mac) or open Safari's page menu and tap Unfurl for Safari (iPhone, iPad), then flip Hide on this site off and reload. It takes about a second and syncs to your other devices over iCloud.

The same list lives in Settings → Blocking on the Mac and in the Cookie banners screen on iPhone, where you can type a site — or paste the page's address; only the site is kept — and remove one again later.

It's on, but a banner still shows. +

Two checks first. In Settings → Blocking (Mac) or the Cookie banners screen (iPhone), the top row should read On in Safari, and the List row should say when Safari last loaded the list. If Safari hasn't asked for it yet, flip Hide cookie banners off and on — that hands Safari the list again — then reload the page.

Only on one site, and only outside Private Browsing? Then Safari's own per-site switch is the likely culprit. On iPhone, the page menu has Turn Off Content Blockers right next to Unfurl for Safari — one tap turns off every content blocker for that site, and Safari remembers it (the same setting lives in Settings → Apps → Safari → Content Blockers). If the menu now reads Turn On Content Blockers, tap it and reload. On the Mac it's Safari → Settings → Websites → Content Blockers. Private tabs ignore that per-site setting, which is why the banner is hidden there and not in a normal tab.

If that's all fine, the banner probably isn't in the list. Two known gaps: sites whose consent manager EasyList Cookie handles by blocking a script rather than hiding an element (Sourcepoint — the Guardian, the FT — and CookieHub, for instance): Unfurl 2.3 hides only and doesn't block, so those still appear. And regional sites the list hasn't reached yet. Either way, tell us the address at hi@unfurl.software — we pass missing banners upstream to the EasyList Cookie maintainers, so the fix reaches everyone.

On iPhone the extension is just called "Unfurl" — is that the right one? +

Yes. iOS lists an app's content blocker under the app's own name, whatever we call it, and shows our description under the row ("Hides cookie-consent banners before they appear…"). The other Unfurl row, Unfurl for Safari, is the link cleaner — its popup also holds the per-site switch for banners. Turn on both.

What does the blocker send anywhere? +

One thing: about once a day, Unfurl downloads the current EasyList Cookie list from its published address — a plain file fetch that says nothing about you. Conversion, checks against Safari's own engine (so one bad rule can never take the others down), and the hiding itself all happen on your device. Your per-site list syncs through your own iCloud account when iCloud is on, and stays on the device when it isn't. Safari never tells Unfurl which pages you visit, and Unfurl never asks.

Privacy & data

What does Unfurl collect or send anywhere? +

Nothing. There are no accounts, no servers, and no analytics. The app makes zero outbound network connections out of the box. The only network calls are ones you switch on yourself: rule updates from the upstream libraries, and site favicons — fetched through DuckDuckGo's icon service, so the sites in your history never see the request.

See the full Privacy page for specifics.

Where is my history stored? +

Locally, inside Unfurl's sandboxed app container. Since 1.1, every cleaning is saved the moment it happens, so the dropdown's Recent list and the History window survive quits and reboots. It never leaves your Mac.

Retention is yours to set — keep 7, 30, or 90 days, or Forever, in Settings → History. Older entries are pruned automatically; Clear all wipes the whole list in one click.

Does Unfurl sync across my Macs? +

No. Each install keeps its own settings and history locally — there's no iCloud sync, no account, nothing shared between your devices.

Keyboard & Shortcuts

What keyboard shortcuts are there? +

Three — two macOS Services (Copy URL with trackers and Skip next clean) plus the standard ⌘, to open Settings. See the table below for the bindings.

Custom rebinding for the in-app actions (open dropdown, restore, pause, etc.) isn't here yet; it's on the list. Meanwhile, the four Shortcuts actions cover most of it — see the next question.

Can I use Unfurl inside Apple Shortcuts? +

Yes — four actions since 1.1: Clean URL, Restore Original, Pause Unfurl, and Resume Unfurl. All of them run without opening the app.

They ship as App Shortcuts, so each has a Siri phrase out of the box — "Pause Unfurl" works out loud. Restore Original is one-shot: once the original is back on the pasteboard, the undo is spent. Pause Unfurl stays paused across relaunches; Resume Unfurl picks the work back up.

Troubleshooting

My menu-bar icon is amber. What's wrong? +

Amber means Unfurl is paused — either by you, or because it failed to acquire pasteboard access on launch. Click the icon: if it shows "Resume", you paused it on purpose. If it shows "Grant pasteboard access", open System Settings → Privacy & Security → Pasteboard and re-enable Unfurl (macOS 15.4 or later) — on earlier versions, relaunch Unfurl and choose Always Allow when prompted.

macOS keeps asking permission to read the pasteboard. +

On macOS 14.0–15.3, the system's pasteboard-access prompt is a little chattier until you pick Always Allow — the quieter permission API Unfurl uses on newer releases simply doesn't exist there. Choose Always Allow once and the prompts stop.

On macOS 15.4 and later (including Tahoe), you'll only ever see the prompt once.

I copied a URL with utm_source and it wasn't cleaned. +

A few possible reasons:

  • The host is on your untouched list (Settings → Rules → Untouched hosts).
  • Skip Next Clean was active — the dropdown notice tells you so for ~30 seconds after.
  • The URL is actually a custom format (e.g. a Shopify checkout) that requires those params to work. Check History for the diff.
How do I file a useful bug report? +

Email hi@unfurl.software with what you copied, what got pasted, and what you expected. Your macOS version and Unfurl version (Settings → About) help a lot. A real person reads it within a day.

Reference

Keyboard shortcuts.

A short list — most of what Unfurl does is automatic, so there isn't much to bind a key to. Two are macOS Services you can enable in System Settings → Keyboard → Keyboard Shortcuts → Services; the third is the standard Settings shortcut.

Copy URL with trackersmacOS Service. Copies the original URL on the clipboard, untouched by Unfurl.
⌃⌘C
Skip next cleanmacOS Service. Arms a one-shot pass-through — the next URL you copy stays untouched.
⌃⌥⌘C
Open SettingsStandard macOS app shortcut. Same as the gear in the dropdown.
⌘,

System requirements

macOS 14 Sonoma or later — Sonoma, Sequoia, and Tahoe — both Apple silicon and Intel. Unfurl uses native frameworks only — no Electron, no helper apps. The Liquid Glass flourishes render on Tahoe; everywhere else you get standard macOS controls, with nothing missing.

Unfurl is sandboxed and hardened, distributed exclusively through the Mac App Store. The one entitlement it requests is pasteboard access. On macOS 14.0–15.3 the system's permission prompt is a little chattier until you choose Always Allow — newer releases have a quieter permission API.

Languages: English at launch. More languages will land in later releases.

How to uninstall

Quit Unfurl from the menu bar, then delete it from Launchpad (long-press the icon) or drag it from /Applications to the Trash.

To also wipe your saved settings, history, and any cached rule files, remove the app's container directory:

  • ~/Library/Containers/dev.johnnywell.Unfurl/
Still stuck?

Real people read these.

There's no helpdesk, no ticket queue, no AI middleware. Pick the channel you prefer.

Average reply time: under 18 hours, weekdays.

Bug reports with steps to reproduce get answered fastest. Feature ideas are welcome too — we read every one.