NoJS is a Safari Web Extension for quickly disabling JavaScript on individual websites. Click its toolbar icon to toggle JavaScript for the current domain; NoJS remembers the choice and reloads the page automatically.
- One-click JavaScript toggle for the current domain
- Persistent per-domain settings
- Automatic page reload after each change
- Toolbar badge when JavaScript is disabled
- Native Safari Web Extension for macOS and iOS
- No frontend framework or third-party runtime dependencies
- Xcode 27 or later
- A macOS or iOS development signing team for running on a device
- Safari website access for the domains where NoJS is used
- Open
NoJS.xcodeprojin Xcode. - Select the
NoJS (macOS)scheme. - Configure signing for both the app and extension targets.
- Build and run the app.
- Enable NoJS in Safari's extension settings and grant website access.
The repository also contains a macOS GitHub Actions workflow. It runs nightly and can be started manually from the Actions tab. CI artifacts are unsigned development builds.
Nightly releases are unsigned. To install and ad-hoc sign one locally:
-
Download the DMG from the latest nightly release and open it.
-
Drag
NoJS.appto the Applications folder. -
Open Terminal and remove the download quarantine attribute:
xattr -dr com.apple.quarantine /Applications/NoJS.app
-
Ad-hoc sign the installed app bundle:
codesign --force --deep --sign - /Applications/NoJS.app
If the app is not writable by your account, run the
xattrandcodesigncommands withsudo. -
Verify the signature:
codesign --verify --deep --strict --verbose=2 /Applications/NoJS.app
-
Control-click
NoJS.app, choose Open, and confirm the first launch if macOS asks. -
Open Safari's extension settings, enable NoJS, and grant it website access.
An ad-hoc signature is local to your copy of the app. It does not provide Apple notarization or establish the developer's identity.
NoJS is available under the MIT License.