Demodal is a browser extension that automatically removes content blocking modals including paywalls, discount offers, promts to sign up or enter your email address and more.

Overview

Demodal

Demodal is a browser extension that automatically removes content blocking modals including paywalls, discount offers, promts to sign up or enter your email address and more.

Modal dialogues such as paywalls, discount offers, cookie prompts and GDPR banners are user-hostile interfaces that demand your attention and interrupt your browsing experience. Demodal puts you back in control, letting you focus on the content.

Installation

Google Chrome

https://chrome.google.com/webstore/detail/demodal/fjhbdkfknppikobblnjibmkmogjeffcf

Install locally:

  • Clone this repository
  • Run ./run manifest v3 or copy manifest-v3.json to manifest.json
  • Go go about:extensions
  • Enable 'Developer mode'
  • Click 'Load unpacked'
  • Select the project folder

Mozilla Firefox

https://addons.mozilla.org/firefox/addon/demodal

Install locally:

  • Clone this repository
  • Run ./run manifest v2 or copy manifest-v2.json to manifest.json
  • Go go about:debugging#/runtime/this-firefox
  • Click 'Load Temporary Add-on'
  • Select manifest.json

Contributing

This extension is in early development. You can help by reporting websites with modals that didn't get blocked, or by creating your own definitions and sharing them with us and the community. The aim is to build up a comprehensive set of rules over time to block modals anywhere.

Demodal is not an ad-blocker. Only create definitions for UI elements that intefere with reading of content.

When submitting a pull request, please include a screenshot of the element that's being blocked and a link to a website to test.

Every definition should clearly match one modal type (e.g. consent request or paywall). Don't create overly broad definitions (e.g. div.modal) that could block legimitate modals.

Specification

Modal types

Type Description
consent Cookie and GDPR notices.
donate Prompts to make a donation.
email Prompts to enter your email address.
message General messages and notifications.
offer Promotions and discounts.
paywall Prompts to sign up for a paid subscription.
signup Prompts to create an account.

Definitions

Definitions are located in /definitions, file-separated by modal type. Definitions are grouped by URL pattern.

{
  "<glob> [ <glob> ... ]": { // URL pattern
    // Definition
    "if <function> [ <function> ... ]": { // Condition
      "<selector>": "<function> [ <argument> ... ]" // Action
    },
    // Definition (shorthand, no condition)
    "<selector>": "<function> [ <argument> ... ]" // Action
  }
}

Examples

{
  "*.example.com *.example.org": {
    "if $(.modal)": {
      ".modal": "remove" // Remove element if present
    },
    ".modal": "addClass hide" // Remove element (shorthand)
    "if defined(ModalDialog)": {
      "ModalDialog.close": "call" // Call function if defined
    },
    "if defined(ModalDialog)": {
      "ModalDialog.setClosed": "call true" // Call function with arguments
    },      
  }
}

URL pattern

URL patterns are defined as globs, allowing wildcards (*).

Glob Matches
* Any URL.
*.example.com Apex domain and any subdomain, e.g. example.com, www.example.com.
example.com example.org example.com and example.org.
*.example.com/*/about E.g. www.example.com/en/about.

Conditions

Conditions start with if, followed by one or more functions. If all functions evaluate to true, the specified actions are run.

Functions

Function Argument Description
$() Query selector Tests if an HTML element exists.
defined() JavaScript property Tests if a JavaScript property exists.
sleep() Time in milliseconds Returns true after the specified time has passed

Actions

Actions are run when the condition is met, or if no condition is specified.

Functions

Function Argument Description
remove Remove the HTML element
removeIf String Remove the HTML element if its text content matches a string
addClass Class name Add a class
removeClass Class name Remove a class
addStyle Styles Appends CSS to the style attribute
removeStyle Clears the style attribute
click Click the HTML element
call Call the function. Any arguments will be passed to the function.
Comments
  • Simply Wall Street's paywall is not blocked

    Simply Wall Street's paywall is not blocked

    Unfortunately instructions for me are unclear how to create rule for removing paywall, so I ask somebody to do this.

    Link (it's showing paywall only when stock is chosen) - https://simplywall.st/stocks/us/tech/nasdaq-aapl/apple

    image

    opened by zincurat 5
  • Add rule to remove `eldiario.es` consent modal

    Add rule to remove `eldiario.es` consent modal

    Link: eldiario.es

    I am a bit unsure if the UUID at the end of the class name used for the rule will change in the future. Is there a way to select it using a wildcard?

    Anyway here is the screenshot of the web

    image
    opened by labellson 3
  • The Wall Street Journal

    The Wall Street Journal

    The wall street journal paywall still there

    ex: https://www.wsj.com https://www.wsj.com/articles/states-file-new-suits-against-google-over-location-tracking-11643037890

    Great addon !

    opened by samuraikid0 2
  • Add weather.com definitions to paywall.json

    Add weather.com definitions to paywall.json

    Removes paywall modal from weather.com.

    Example test url: https://weather.com/weather/today/l/814cccae5a35eb448d2585b01999033fced9c4fa475ad736fc1d7ec76f253d68

    Screen Shot 2022-04-08 at 11 05 43 AM
    opened by jeffmo 1
  • Added definitions for vk.com, redhat.com, ubuntu.com, canonical.com and more

    Added definitions for vk.com, redhat.com, ubuntu.com, canonical.com and more

    • Add definitions for vk.com (russian-speaking social network)
    • Add definitions for redhat.com
    • Add some common rules for (ubuntu.com, canonical.com, and *.edusite.ru)
    • Update definition for deepl.com
    opened by lcomrade 1
  • Add Russian locale

    Add Russian locale

    I translated everything into Russian. But I don't know if I need to include a translation file somewhere in the code.

    There are some inaccuracies in the translation. The word modal has no direct translation into Russian. That's why I used the closest word in the meaning of pop-up message (всплывающие сообщение).

    opened by lcomrade 1
  • Add definition that removes chatbot from Pandora help pages

    Add definition that removes chatbot from Pandora help pages

    Added a definition to remove a chat bot that appears in the bottom-right-hand corner on all of the help webpages in the "help" subdomain of Pandora's (the streaming music service) website, "help.pandora.com".

    Screenshot - Pandora + Alexa - 02-18-2022
    opened by clarkb22086 1
  • Updated definition for vk.com. Added definitions for openweathermap.org and chocolatey.org.

    Updated definition for vk.com. Added definitions for openweathermap.org and chocolatey.org.

    • Updated definition for vk.com. They updated the interface a little bit, I updated the definition.
    • Added definition for openweathermap.org.
    • Added some common rule for chocolatey.org.
    opened by lcomrade 0
  • model overlay on coasttocoastam.com

    model overlay on coasttocoastam.com

    There's a modal overlay on coasttocoastam.com that demodal doesn't handle. It blocks page views a couple of seconds after the page loads until clicked. Pretty annoying, the main reason I picked up your addon.

    The majority of assets this page loads come from either iheart.com or adobedtm.com, if that makes any difference.

    c2c

    opened by wagb283 0
A comprehensive user sign-up/sign-in system

Nodejs Login System You want a comprehensive user sign-up/sign-in system I strongly suggest you take a look at this repo. The System Includes Welcome

Furkan Gulsen 8 Aug 1, 2022
A cache that automatically removes the least-recently-used items

A cache that automatically removes the least-recently-used items

Evandro Leopoldino Gonçalves 9 Feb 27, 2022
A tool to calculate discount available on SGB (Sovereign Gold Bonds) compared to current market price on NSE

A tool to calculate discount available on SGB (Sovereign Gold Bonds) compared to current market price on NSE

Amit Wani 9 Nov 20, 2022
A boilerplate project to build proof of concept paywalls with lightning service authentication tokens (LSATs)

lsat-workshop-boilerplate A boilerplate project to build proof of concept paywalls with lightning service authentication tokens (LSATs) Install Setup

Buck Perley 2 Oct 13, 2022
Easiest 1-click way to install and use Stable Diffusion on your own computer. Provides a browser UI for generating images from text prompts and images. Just enter your text prompt, and see the generated image.

Stable Diffusion UI Easiest way to install and use Stable Diffusion on your own computer. No dependencies or technical knowledge required. 1-click ins

null 3.5k Dec 30, 2022
Browser extension that enables you to Log-in as ANY address on ALL dapps

Impersonator Extension Log-in as ANY address on ALL dapps. Impersonator injects into the dapps just like Metamask, but gives you the freedom to set cu

Apoorv Lathey 32 Dec 14, 2022
A simple single page web-app that stores, removes and edits books' names in the browser's local storage.

A simple single page web-app that stores, removes and edits books' names in the browser's local storage. Made with Webpack bundler

Alejandro Neira 5 Apr 1, 2022
Email Genie Allows autocomplete on email field by providing a list of domain suggestions (gmail.com, outlook.com, etc.).

Allows users to easily and quickly complete an email field by providing a list of domain suggestions (gmail.com, outlook.com, etc.). This package stands out for its flexibility, its compatibility with libraries / frameworks, but especially its use of basic HTML and Javascript functionalities that maximize the native behavior of desktop AND mobile browsers.

Simon Arnold 3 Oct 4, 2022
A package that allows your bot of discord.js v13 & v14 to create the new awesome Discord Modals and interact with them

A package that allows your bot of discord.js v13 & v14 to create the new awesome Discord Modals and interact with them

MateoDeveloper 85 Dec 23, 2022
This simple extension can automatically load NBN availability information for properties on realestate.com.au & domain.com.au including technology type, maximum line speed, and co-existance status if available.

NBN Availability Check Chrome Extension This simple extension can automatically load NBN availability information for properties on realestate.com.au

Luke Prior 17 Aug 17, 2022
linuxbu - a chrome extension that helps you to enter SBU classes via html-view in linux

linuxbu is a chrome extension that helps you to enter SBU classes via html-view in linux

Hasan Zonuzi 8 Dec 19, 2022
A JavaScript class for creating Bootstrap 5 Modals

BS5ModalJS A JavaScript class for creating Bootstrap 5 Modals Why BS5ModalJS? BS5ModalJS removes the hassle of writing the bootstrap 5 modal html elem

null 1 Feb 1, 2022
Incredible drastically simplifies creation of developer video content. It offers a unified workflow to storyboard, record, collaborate and produce the video.

?? Introduction Incredible drastically simplifies creation of developer video content. It offers a unified workflow to storyboard, record, collaborate

Incredible 113 Dec 6, 2022
A rhythm game played in your browser's address bar

URLX URLX is a rhythm game played in your browser's address bar. (no it does not stand for anything it's just the best name i could think of) Hit arro

Colon 37 Dec 21, 2022
A lightweight extension to automatically detect and provide verbose warnings for embedded iframe elements in order to protect against Browser-In-The-Browser (BITB) attacks.

Enhanced iFrame Protection - Browser Extension Enhanced iFrame Protection (EIP) is a lightweight extension to automatically detect and provide verbose

odacavo 16 Dec 24, 2022
Tiny JavaScript library (1kB) by CurrencyRate.today, providing simple way and advanced number, money and currency formatting and removes all formatting/cruft and returns the raw float value.

Zero dependency tiny JavaScript library (1kB bytes) by CurrencyRate.today, providing simple way and advanced number, money and currency formatting and removes all formatting/cruft and returns the raw float value.

Yurii De 11 Nov 8, 2022
Demo running web assembly apps a terminal with blocking stdin/stdout/stderr

Python wasm-terminal Live version here: https://wasm-terminal.firebaseapp.com/ This is a small demo of running Python in the browser with a focus on i

Katie Bell 16 Nov 16, 2022
Simple rate-limiter NPM Module used for blocking IPs that exceeds certain number of requests per second in a specific time frame.

API Rate Limiter Zero-Dependencies Simple rate-limiter NPM Module used for blocking IPs that exceeds certain number of requests per second in a specif

Khaldon 7 Oct 7, 2022