AI-Created Software

Last Updated: October 16, 2026

The following is AI-generated (aka vibe-coded) software. The software is specific to my needs and my system and may not work for you or your system. Support is limited, but if you report a bug I'll certainly look into it. All code is provided in a zip file for you to review should you choose.

Reddit Domain Blocker

A Chrome extension that hides Reddit posts linking to domains you don’t want to see (e.g. dailybeast.com).

Version: 2.5.4

Install (unpacked, for personal use)

  1. Unzip this folder somewhere permanent (don’t delete it after installing — Chrome loads the extension from this folder).
  2. Open chrome://extensions in Chrome.
  3. Turn on Developer mode (top-right toggle).
  4. Click Load unpacked and select the reddit-domain-blocker folder.
  5. The extension icon will appear in your toolbar.

Upgrading from an earlier version: hit Reload on the extension card, then reload any Reddit tabs you already have open.
Chrome doesn’t inject an updated content script into pages that are already loaded.

Usage

Click the extension icon, type a domain (e.g. dailybeast.com), and press Enter. Posts linking there disappear from your feed, including as you scroll. Click the ✕ next to a domain to unblock it.

Block without typing. Right-click any link on Reddit and choose Block dailybeast.com — the menu names the domain under your cursor. The post disappears immediately.

Snooze for a day. The ☾ button next to a domain stops blocking it for 24 hours, then resumes on its own. Useful when a site you normally skip is covering something you’re following. Snoozed rows show how long is left; ⏻ resumes blocking immediately.

Pause everything. The Pause button in the popup header stops all blocking without touching your list. The toolbar badge reads off while it’s paused, so you can’t forget you left it that way.

Filter a long list. Once you’re blocking 20 or more domains, a filter box appears above the list.

What the toolbar badge means

Badge Meaning
A number How many posts are hidden on this page right now
Blank Nothing matched on this page
off Blocking is paused
! No posts could be found on a feed page — see below

The ! badge is a canary. It means the extension looked at a feed, waited for it to render, and couldn’t find a single post card. That almost always means Reddit changed its page structure and the detection logic needs updating. Without it, a broken extension looks exactly like a quiet day on your feed.

Settings page

Right-click the extension icon and choose Options, or use Import list… in the popup. It holds:

  • When a post matches — collapse each blocked post to a one-line Hidden: dailybeast.com · show row (the default), or hide it completely with no trace. Collapsing gives you an escape hatch when a domain catches something you wanted to read.
  • Add several at once — paste a batch of domains, one per line or separated by commas. Full URLs are fine; they get trimmed down to the domain.
  • Export and Import — see below.
  • Scheduled backup — automatic backups, Back up now and Restore; see below.

Backing up your list

Export — click Export list in the popup or on the settings page. The file holds every setting: your blocked domains, preferences, snoozes and backup schedule. Chrome saves a file named reddit-domain-blocker-settings-YYYY-MM-DD-HHMMSS.json to your downloads folder, using your local clock — for example reddit-domain-blocker-settings-2026-09-06-145837.json. The timestamp means repeated exports on the same day sit side by side instead of Chrome appending (1), (2) to them.

Import — click Import list… in the popup. That opens the settings page in a new tab, where you can drop the file onto the page or pick it with Choose file. Before loading it, choose what should happen:

  • Add to my list (default) — merges the file into what you already block. Domains you already have are left alone, and your preferences aren’t touched.
  • Replace my list — throws away your current domains and preferences, and uses only what’s in the file.

Either way you get a count of what was added, skipped as a duplicate, or rejected as not a valid domain. Open Reddit tabs update immediately — no reload needed.

Import lives on the settings page rather than in the popup because Chrome closes the popup the moment the file-picker dialog takes focus, which would silently discard your choice. Import reads the domains and, with Replace my list, the preferences. To put back everything a file holds, use Restore below.

Scheduled backup

The Scheduled backup section of the settings page backs up every setting, including the schedule itself, on its own:

  • Back up settings automatically turns it on. The first backup is made straight away.
  • Back up every (days) — how often, e.g. 3 for every three days.
  • Earlier backups to keep — how many backups to keep besides the latest. With 3, the latest backup and the three before it are kept.
  • Backup folder — a folder inside your downloads folder, e.g. Backups/Reddit Domain Blocker. It’s created if it doesn’t exist. The default is Reddit Domain Blocker Backups.

Backups are named reddit-domain-blocker-backup-YYYY-MM-DD-HHMMSS.json. The schedule is checked every hour, so a backup that fell due while the browser was closed is made within the hour of opening it.

Old backups are counted by calendar day, and only cleared once a new backup has finished saving:

  • An earlier day with several backups keeps only its newest one, and counts as one against the number to keep.
  • A day with no backups counts as zero.
  • Other backups made on the same day as the latest are replaced by it.

For example, with Earlier backups to keep set to 3 and backups made twice on Monday, then once on Wednesday, Thursday, Friday and Saturday, Saturday’s is the latest and Wednesday’s, Thursday’s and Friday’s are kept. Both of Monday’s go.

Only backups this extension saved, and that Chrome still lists in its downloads, are ever deleted. Clearing Chrome’s download history leaves the files in place.

Back up now saves a backup immediately. It counts like any other backup, and the next scheduled one is due the set number of days after it.

Restore reads a backup or export file and, once you confirm, replaces your blocked domains, preferences, snoozes and backup schedule with what’s in it. Snoozes that have since expired are dropped.
Older exports that don’t carry a schedule or snoozes leave those alone.

The schedule and the time of the last backup are kept on this computer only (they don’t sync), since the backups land in this computer’s downloads folder.

File format

Entries are normalised on import, so https://www.Example.com/story and example.com both become example.com. A plain JSON array of domains works too, which makes it easy to hand-write a starter list. Files from version 1.1 still import fine.

{
  "format": "reddit-domain-blocker/settings",
  "version": 3,
  "exportedAt": "2026-09-06T12:00:00.000Z",
  "blockedDomains": ["dailybeast.com", "example.org"],
  "prefs": { "paused": false, "hideMode": "collapse" },
  "snoozes": { "example.org": 1788782400000 },
  "backupSchedule": {
    "enabled": true,
    "everyDays": 3,
    "keep": 3,
    "folder": "Backups/Reddit Domain Blocker"
  }
}

snoozes maps each snoozed domain to when its snooze ends, in milliseconds since 1970. Import ignores snoozes and the schedule; Restore puts them back.

Troubleshooting

Backups land in the downloads folder as download.json Another extension that renames downloads is overriding the backup’s name. Chrome forgets the name an extension asks for whenever any extension renames downloads, so that extension has to put it back. Download Router does this; for others, turn them off or check their settings.

Notes

  • Subdomains are covered automatically — blocking dailybeast.com also hides links to amp.dailybeast.com.
  • Your list, preferences, and snoozes sync via chrome.storage.sync, so they follow you across Chrome installs signed into the same Google account. Chrome caps each of those at 8 KB (roughly 400 domains for the list); past that, saving fails and the extension tells you so.
  • Works on both old.reddit.com and the new www.reddit.com layout.
  • Permissions: storage for your list, contextMenus for the right-click action, alarms to wake snoozed domains back up and check the backup schedule, downloads to save and clear scheduled backups, and access to reddit.com pages. Nothing is sent anywhere — there is no network code in this extension.

Files

File Purpose
manifest.json Extension manifest (MV3)
content.js Runs on Reddit pages: hides or collapses matching posts
background.js Service worker: badge, right-click menu, snooze expiry, scheduled backups
popup.html / popup.js Toolbar popup: add, remove, snooze, pause, filter, export
options.html / options.js Settings page: display mode, bulk add, export, import, scheduled backup and restore
shared.js Domain rules, storage, parsing and backup rules shared by all of the above
test_backup.mjs Tests for the backup rules: node test_backup.mjs
icons/ Toolbar and store icons, plus icon.svg source
(1 votes, average: 5.00 out of 5)

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail.