Privacy Policy

Last updated: May 27, 2026

What we collect

AdMute collects the minimum needed to run the service and to measure how well detection is working:

We do not collect: your IP address (raw IPs are SHA-256 hashed with a server-side salt and never stored), your browsing history, the content of pages you visit, page URLs, video titles, or anything you type.

Anonymous usage events (v1.2.0 default change)

Existing installs prior to v1.2.0 had anonymous analytics off by default. With v1.2.0, anonymous events (no IP, no email, no browsing history — only the events listed below) are on by default to help us measure detection accuracy. You can opt out anytime from the popup settings.

Every event carries: a random installation ID (a UUID generated locally on first install, not tied to your identity), the event name, a timestamp, the app version, and the platform (chrome / fire-tv / android-tv). If you are signed in, events are additionally linked to your user ID so you can see your own usage in the dashboard; signing out detaches that link going forward.

The full set of events the extension may emit:

Event What it captures Example data
install Fired once when the extension is first installed. { referrer: "chrome_web_store" }
daily_open Service-worker boot or once-per-day heartbeat (tells us the install is still active). {}
service_visit A tab navigated to a supported streaming service. We record which service, not the URL. { service: "youtube" }
ad_detected The detector fired on a service (may or may not have led to a mute). { service: "hulu", detector: "dom_v3", confidence: 0.87 }
ad_muted The tab was actually muted in response to an ad detection. { service: "youtube", duration_s: 15, detector: "dom_v3" }
ad_unmuted_auto The detector cleared and the tab was auto-unmuted. { service: "youtube", duration_s: 15 }
ad_missed Heuristic signal that an ad probably played without us catching it (e.g. unexpected audio during an expected ad window). { service: "peacock", duration_s: 30 }
manual_unmute You unmuted the tab during an active mute (helps us spot false positives). { service: "twitch", duration_s: 4 }
detection_failure A detector threw an error during its lifecycle. { service: "hulu", error_kind: "TypeError" }
popup_open The extension popup was opened. { from: "toolbar" }
settings_changed You changed a setting from the popup. We record the setting name and the before/after values, not anything else. { setting: "analytics.enabled", from: true, to: false }
signin_started You clicked Sign in (Google OAuth began). {}
signin_completed OAuth callback returned and a session was stored. { subscription_status: "free" }
signout You signed out. {}
upgrade_clicked You clicked the Upgrade call-to-action. { from: "popup" }
upgrade_completed Stripe returned a successful subscription. { plan: "monthly" }
upgrade_cancelled You cancelled the Stripe checkout flow. { from: "popup" }
error_boundary An unhandled error reached the top-level error handler. The error message and a hash of the stack trace are sent (no source content). { error_kind: "ReferenceError", stack_hash: "9c1b…" }

The taxonomy above is versioned (current version: 1.0.0). Any addition will be reflected here and in an updated "last updated" date at the top of this page.

How we use your data

Data security

Third-party services

We do not sell or share user data with any third party for advertising or marketing.

Your rights

Contact

Questions? Email us at [email protected]