You clicked a link. You wanted to read an article. Instead, you got a full-screen popup demanding your email address, your cookie preferences, your newsletter subscription, and your firstborn child — before you've even seen a single word of the page you came for.
Modal Yeet fixes that. It watches for popups that appear without you asking for them and quietly sends them into the void. No clicks, no dismissals, no negotiating with dark patterns. You just get the website.
Modal Yeet sits invisibly in the background and watches every page you visit for elements that look like uninvited overlays — things with role="dialog", suspiciously high z-indexes, class names like modal or overlay, or anything that covers a significant chunk of the viewport.
When one appears without you clicking anything, it gets yeeted. When you trigger a popup — by clicking a button that opens a dialog, for example — Modal Yeet leaves it alone. It knows the difference.
The yeet itself is polite: it first looks for a close or dismiss button inside the popup and clicks it properly, so the site's own logic can clean up after itself. If no such button exists, or the button click doesn't actually close the popup, it removes the element from the DOM directly and cleans up any backdrop overlay behind it.
A few safeguards keep Modal Yeet from being too aggressive:
- Page load grace period — popups that appear in the first second after a page loads are left alone. Sites that open a dialog immediately on load usually have a reason for it (login walls, age gates, etc.).
- Click grace period — any popup that appears within a second of a click is assumed to be intentional and ignored.
- Text content check — if the element contains more than ~1,000 characters of visible text, or accounts for more than 40% of the page's total text, it's not a modal — it's the page. Modal Yeet will not touch it.
- Structural element protection —
<body>,<main>,<article>, and other semantic page elements are permanently off-limits, as are common single-page app mount points like#rootand#app. - Edge element detection — fixed elements flush against the side or top of the viewport (navigation bars, sidebars) are excluded.
- Automatic — works silently on every page, no interaction needed
- Badge counter — the extension icon shows how many modals have been yeeted on the current page
- Closed modals list — open the popup to see what was removed, including the element type and how it was closed
- Ignore list — some sites just don't play well with automated dismissal; add them to the ignore list and Modal Yeet will stand down entirely on those domains
- Debug mode — outlines detected modals in red for one second before removing them, so you can see exactly what's being targeted
- Configurable grace periods — adjust the page load and click timing windows to suit your browsing style
- Prefer dismiss — when enabled, Modal Yeet prefers "Close" and "No thanks" buttons over "Accept" and "OK" ones, reducing the chance of accidentally accepting something you didn't mean to
- Clone or download this repository
- Open Chrome and go to
chrome://extensions - Enable Developer mode (toggle in the top right)
- Click Load unpacked and select the project folder
- Start browsing — popups will be yeeted automatically
If Modal Yeet causes problems on a specific site, click the extension icon and hit Ignore this site. That domain will be permanently skipped. You can manage and remove entries from the ignored sites list in the same popup.
Built because life is too short to click "No thanks, I don't want 10% off."