Show No More

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.

A Chrome extension for Netflix, Prime Video, Disney+, Paramount+, Crave, Apple TV and CBC Gem that lets you:

  • Mark titles as seen. They stay in place, dimmed, with a green check.
  • Mark titles as on your watchlist. They’re dimmed the same way, with a blue eye badge, so titles you already know about stand apart from new ones.
  • Hide titles. They’re covered by a plain placeholder card in the same slot, so rows keep their shape and you don’t see the artwork. Clicks on a hidden tile are blocked so you don’t open it by accident.

Marks are shared across services by title name (toggle in the popup), so a show marked on Prime is also marked on every other supported service. A movie and a series with the same name are kept apart wherever the sites say which one a tile is.

Version: 2.5.14

Install

  1. Unzip this folder somewhere you’ll keep it.
  2. In Chrome, go to chrome://extensions.
  3. Turn on Developer mode (top right).
  4. Click Load unpacked and choose the show-no-more folder (the one containing manifest.json).
  5. Pin the extension from the puzzle-piece menu if you want quick access to the popup.

Reload any streaming-site tabs that were already open.

Using it

On any of the three sites:

  • Hover a tile and use the buttons in its top-right corner: ✓ for seen, the eye for watchlist, ⊘ for hide. Click the same button again to unmark. A title has one mark at a time, so marking a watchlist title as seen moves it off the watchlist.
  • Keyboard: with the pointer over a tile (or its hover preview), press S for seen, W for watchlist or H for hide. Press again to unmark.
  • Right-click a tile → Show No More → Mark as seen / Mark as on my watchlist / Hide this title / Clear mark.
  • On a hidden tile, hover it to get Peek (reveal it temporarily) and Unhide.

A seen or watchlist badge with an outline (instead of solid green or blue) means the title was matched from a different service.

Why is (or isn’t) this marked? Hover a tile’s ✓ or ⊘ button, the green check badge, or a Hidden card. The tooltip shows: – the title the extension read from the tile; – its matching name, the cleaned-up form used to match by name (“kim s convenience”), or why it has none (an episode-style name, or no title found); – the service’s ID for that title; – if it’s marked, which saved entry matched: “Marked on Netflix”, or “Matched by name to “…” from Prime Video (ID …)”.

On the settings page, hovering a title in the Seen, Watchlist or Hidden list shows the same details for that saved entry. If a tile and a saved entry look alike but don’t match, compare their matching names.

Saved matching names are recalculated whenever the extension loads, so entries saved by older versions pick up improvements to the name cleanup.

Title cleanup (site text around titles). Sites add text to their title labels, such as Disney+’s “New Movie Badge …” before the title and “… Disney+ Original” or “… Select for details on this title.” after it. This text is removed before titles are shown or matched. You control it in the popup under Title cleanup:

  • Remove from the start of titles / Remove from the end of titles: one phrase per line, not case-sensitive. Phrases match whole words only, so a start phrase “Watch” removes it from “Watch Andor” but leaves Watchmen alone. A full stop at the end of a phrase is optional. Both lists are filled with default phrases when the extension is installed, and you can edit, add or delete any of them. Opening the settings page sorts both lists alphabetically (the order doesn’t change what’s removed: longer phrases are always tried first).
    • * stands for any words: “Rated *” at the end removes “Rated TV-14, Drama”, “Hulu Original *” removes “Hulu Original” and “Hulu Original Series”, and “New on *:” at the start removes “New on Disney+:”.
    • A separator mark on the side next to the title is required: “New:” at the start removes “New: Andor” but leaves New Girl alone, and “- Play” at the end removes “Loki – Play” but leaves Child’s Play alone.
    • A title is never cleaned down to nothing, so a real title like Select or The Badge stays as it is.
  • Restore defaults under each list replaces that list with the default phrases. If you’ve added phrases of your own, it says which ones would be removed and asks first.
  • Test a title: paste a label from a tooltip to see what it cleans to, and its matching name.

When an update adds new default phrases, they’re added to your lists once. Phrases you deleted aren’t brought back. Before version 2.5.7 some of the defaults were fixed “built-in rules”; updating adds them to your lists as editable phrases (unless you had turned built-in rules off), and restoring an older backup does the same.

Changes save automatically. Open streaming pages re-read their tiles straight away, and saved entries are tidied with the new phrases. The lists are included in backups.

Details pages: movie or series, and the year.
Netflix and Prime Video tiles don’t say whether a title is a movie or a series. When you open a title’s details (Netflix’s details window, or a Prime Video title page), the extension reads its info line (“2019 · 3 Seasons”, “2021 · 1h 52m”) and saves the kind and year for that title, on its mark if it has one. From then on its tiles are kept apart from the other kind with the same name, the year helps pick the right IMDb title when several share the name (within a year either way), and Borrowed marks can flag titles whose years differ.

Episode names. Some series tiles label an episode (“Pilot”, “Episode 1”, “S1:E3 …”) rather than the show. The extension prefers the show’s name when the tile offers one, and strips “S1:E3 …”-style suffixes. An episode-style name is never used to match by name, because many shows share it. A title marked on such a tile only applies to that exact tile. In the popup, entries with an episode-style name are flagged Episode? so you can remove any that were saved by mistake. Import list skips them.

A show can appear on the same service under more than one link (for example an episode in Continue Watching and the show itself in another row). These match each other by name even with cross-service matching off, and unmarking one unmarks the other.

On Netflix, hovering a tile opens an enlarged preview on top of it, which covers the tile’s buttons. Two things handle this:

  • Buttons on the preview. A moment after you hover, the extension looks for whatever Netflix has drawn over the tile and adds ✓ Seen and ⊘ Hide buttons to its top-right corner. This works by position rather than by Netflix’s class names, so it survives Netflix redesigns. The details window that opens when you click a title gets them too, top-left. The S/H keys and the right-click menu also work in both.
  • Turn off Netflix hover previews (settings page, under Matching). Netflix never sees the pointer over a tile, so tiles stay their normal size and the buttons stay where they are. Clicking a tile still opens it, and the S/H keys still work. (It works by stopping hover events at the top of the page, before Netflix’s own code sees them.)

The popup and the settings page

The popup (toolbar icon) has what you use while browsing:

  • the on/off switch for the whole extension;
  • Hide seen titles;
  • Hide watchlist titles;
  • Turn off Netflix hover previews (the same setting as on the settings page);
  • Minimum IMDb votes (the same setting as on the settings page; available only while IMDb ratings are on);
  • Filter by IMDb rating, with minimum rating, which kinds of title to show, years, and genres to hide;
  • Check this page: opens a panel on the current streaming page listing every tile (see Page check);
  • All settings, which opens the settings page.

Your Seen, Watchlist and Hidden lists (search, move between lists, remove) and the tips on using tiles are on the settings page.

The settings page (All settings, or right-click the toolbar icon → Options) has everything, including your Seen, Watchlist and Hidden lists, List health (see below), and setup you do once: matching options, IMDb ratings, genre and year filters, title cleanup, backups, import/restore, and keyboard shortcuts.

List health

The settings page has four reports that help keep your lists right.
Each one shows how many entries it found; open it to see them. Nothing changes until you use a button.

  • Same name, saved more than once. Names saved more than once whose entries disagree: different marks (The Office seen on Netflix, hidden on Prime Video), a movie and a series, or different IMDb titles. It says which mark a tile that doesn’t say which one it is would get (the newest entry’s). For each entry you can change its mark, say whether it’s a movie or a series, link an IMDb title, or remove it. Keep as is stops listing the name until another entry with that name is saved.
  • Borrowed marks. Tiles you’ve browsed past that showed a mark saved on another service, matched only by name (not by IMDb title). Most are the same title, but a different show or movie with the same name gets the wrong mark this way, so they’re listed for you to check, grouped by name. Doubtful ones come first: Years differ (the two services show different years), Shared name (IMDb has more than one title with the name) and Kind unknown (either one doesn’t say whether it’s a movie or a series). Use the service names to open both titles, then:
    • Same title stops listing that tile.
    • Different title means the mark no longer applies to that tile: it shows unmarked, other tiles with the name still match, and marking the tile itself gives it its own mark without touching the other one.
    • IMDb… links the saved entry to its IMDb title, which keeps it apart from tiles linked to a different IMDb title.

    Your choices are saved with the mark (and in backups), and stay with the title if you later mark it on another service. Kept apart under the list shows each tile you said is a different title, with Undo. Tiles are recorded only while matching across services is on; the most recent 1,000 are kept.

  • Matched by name only. Marks with no IMDb title that don’t say whether they’re a movie or a series, grouped by service. These match any title with the same name on another service.
    Movie or Series keeps them apart from the other kind wherever a site says which a tile is; IMDb… links an IMDb title (choose from the titles with that name when IMDb ratings are on, or paste a link), which keeps them apart from a different title with the same name and sets the kind too.
    Entries marked Shared name come first: you have another entry with that name, or IMDb has more than one title with it. An IMDb title you link here belongs to that entry only and isn’t changed by automatic matching or by a match you choose for the whole name.
  • Titles that look wrong. Saved titles that may still have site text in them (such as “Disney+ Original”, “New Episodes” or “TV-14”), look like an episode name, are only the service’s ID (no title was found), or are unusually long. Edit changes the saved title and works out its matching name again; Looks fine stops listing it until the title changes. If the same site text keeps turning up, add it to Title cleanup so it’s removed everywhere.

The service name next to each entry (Netflix, Prime Video, Disney+ …) links to the title on that service, in a new tab; so does the one in your Seen, Watchlist and Hidden lists. Imported entries, and Disney+ titles saved from older Disney+ links, have no link.

Lists of more than 50 show the first 50, with Show all. Your Keep as is, Looks fine and IMDb links are kept in backups.

Temporary covers: Hide seen, Hide watchlist and the IMDb filter

Covers only apply while they’re switched on. Nothing is marked or saved as Hidden, and switching them off brings everything back immediately. A banner at the bottom-left of the page says what’s covering titles, how many tiles are covered, and has an Off button that turns all covers off.

  • Hide seen titles covers Seen titles (green-striped Seen ✓ card) instead of dimming them.
  • Hide watchlist titles covers Watchlist titles (blue-striped On watchlist card) instead of dimming them.
  • Filter by IMDb rating covers titles that don’t pass your rules (yellow-striped Filtered · … card showing the value and the rule it failed: ★ 6.1 < 7.0, 37 votes < 500, not on IMDb, 2001 < 2010, 2024 > 2020, or Horror · hidden genre):
    • Minimum rating (inclusive), for titles with at least your minimum votes;
    • Show few-vote titles (★ 6.2 (37)) and Show titles not on IMDb, each on or off. Few-vote titles that are shown aren’t judged by the minimum rating, since a handful of votes isn’t a meaningful rating. Tiles with no usable title count as not on IMDb;
    • Years from / to (blank = no limit; a series counts from the year it started), in the popup and on the settings page;
    • Hide these genres (IMDb’s genres), with Select all and Select none, in the popup and on the settings page. The heading shows how many are selected.

    A rated title must pass every rule you’ve set; few-vote and not-on-IMDb titles are shown according to their own options.

Your own marks come before the IMDb filter. A Seen, Watchlist or Hidden title is always shown with its mark (dimmed, or its Seen / On watchlist / Hidden card), even when its rating, genre or year would fail the filter; the filter only covers titles you haven’t marked.

Your data: back up, restore, import

Data is stored locally in Chrome on this computer only.

  • Automatic backups (on by default): every N days (default 7) a backup of everything, including your settings and the backup schedule itself, is saved to a folder inside your Downloads folder (default Show No More backups; type a sub-folder such as Backups/Show No More, and it’s created if it doesn’t exist). The schedule is checked hourly, so a browser that was closed when a backup fell due catches up within the hour. The first one is made within an hour of installing or updating. Back up now makes one immediately. Each one shows briefly in Chrome’s downloads list.
    • Keep N earlier (default 5, 0 to 365): the latest backup is always kept, plus the newest backup from each of the N most recent earlier days that have one. Several backups on an earlier day count as one (only that day’s newest stays), days with no backup count as nothing, and other backups made on the same day as the latest are replaced by it. For example, with 3: backups on Monday (two), Wednesday, Thursday, Friday and Saturday keep Saturday plus Friday, Thursday and Wednesday; both Monday files go.
    • Old backups are deleted only after the new one has finished saving.
      Backups the extension made in an earlier folder are cleaned up by the same rule.
  • Restore (replace)… replaces everything with the contents of a backup file (automatic or manual): all three lists, your IMDb matches and every setting in it, including the backup schedule and folder. It shows what the file contains and asks you to confirm first.
    Settings an older backup doesn’t have stay as they are. Titles are re-normalized on restore. Backups from version 1.0 (the old Export button) restore too.
  • Restore (merge)… adds a backup’s titles to your current lists instead of replacing them, then removes duplicates. Before saving it shows your counts now and after the merge, and asks you to confirm. The backup’s Remove from the start of titles and Remove from the end of titles phrases are added to yours (duplicates skipped, lists sorted), and saved titles are tidied with them; your other settings aren’t changed. Your IMDb matches are added (yours win where both have one).
    • Titles are compared after normalization, so “The Office (U.S.)” and “Office” count as the same title.
    • If a title is on different lists in the two (Seen, Watchlist or Hidden), the more recently marked one wins.
    • The same title marked on two different services keeps both entries, since each matches its own site exactly. An Imported-list entry is dropped if a service entry already covers that title.
    • Merging the same backup twice changes nothing the second time.
  • Import list… adds titles from a file of your own to the Seen or Hidden list. Each title has the extension’s normalization applied, so “The Office (U.S.)”, “Office” and “the office” are all the same entry, and “Severance: Season 2” matches “Severance”.

Chrome closes the toolbar popup whenever a file picker opens, so the two Restore buttons and Import list… open the page in a full tab, where you pick the file.

Import list file formats

Plain text (.txt) — one title per line.
Blank lines and lines starting with # are ignored.

# Already watched
Stranger Things
The Office (U.S.)
Severance: Season 2

CSV (.csv or .tsv) — titles in the first column, or in a column headed title / name / show / movie. An optional state (or status / list) column sets each row individually: seen / watched / done, watchlist / to watch / want to watch, or hidden / hide / skip. Rows without a state go to the list you chose.

title,year,state
"Love, Death & Robots",2019,hidden
Dune: Part Two,2024,seen
Bluey,2018,

JSON (.json) — an array of titles, or of { "title": ..., "state": ... } objects.

["Andor", { "title": "Loki", "state": "hidden" }]

After an import, the popup reports how many titles were added, moved from the other list, already there, duplicates within the file, or unreadable.

How imported titles match. An imported title isn’t tied to one service, so it’s shown as Imported in the lists and matches by name on every supported service, even with cross-service matching turned off. Un-marking a tile that was matched from your list removes it from the list.

IMDb ratings

Turn on Show IMDb ratings on tiles (settings page) to put a small badge on each title. Hover it for the vote count, year, genres and which IMDb title it matched; click it to choose a different match or open the title on IMDb.

Each tile gets one of three badges:

Badge Meaning
★ 7.8 On IMDb, with at least your minimum votes
★ 6.2 (37) (muted) On IMDb, but rated by fewer people than your minimum; the number in brackets is the vote count
Not on IMDb (muted) No IMDb movie or series with that name has any ratings, or you set it as not on IMDb

Tiles with no usable title (for example, only an episode name) get no badge, since there’s nothing to look up.

  • Minimum votes (settings page, default 500): ratings from fewer votes are shown muted and count as “few-vote” in the filter.
    Change it any time; it applies straight away, with no download, because every rated title is kept locally.
  • Where the data comes from. IMDb’s free non-commercial datasets, offered for personal, non-commercial use. Don’t share or republish the downloaded data.
  • Off by default. Nothing is downloaded until you turn it on.
  • Update every N days. Set how often the data is refreshed (1 to 365 days, default 7). The extension checks hourly whether an update is due, so a computer that was asleep or off catches up soon after it wakes. Update now runs one immediately. Data from an older version is refreshed once automatically when its layout changes.
  • Polite. Before downloading, it asks IMDb (headers only) whether the files have changed. If they haven’t, nothing is downloaded. After a failed update it waits a few hours before trying again, and keeps showing the ratings it already has.
  • What it downloads and keeps. Each update downloads two files from IMDb, roughly 200 MB in total. They’re processed as they arrive, a chunk at a time, and never saved. What’s kept is a lookup of every rated IMDb movie and series (about 600,000): around 75–90 MB of disk, shown on the settings page. An update builds a fresh copy alongside the current one and switches over when it’s complete, so ratings keep working during an update and disk use briefly doubles. Measured on a dataset of IMDb’s size: about 75 seconds of processing per 4 million title rows (so roughly 2–3 minutes for IMDb’s ~11 million), using about 115 MB of memory at peak (memory stays about the same whatever the data size, because titles are written to disk in small batches as they’re found). Delete downloaded ratings removes the lookup.
  • Which IMDb types are kept. Only these four: movie, TV movie (both treated as movies), TV series and TV mini-series (both treated as series). Everything else in IMDb’s data is dropped while processing: short (anything IMDb lists under about 45 minutes, e.g. The Wonderful Story of Henry Sugar), TV special (most stand-up comedy specials and concert films), video (direct-to-video films), TV short, TV episode, video game, and anything marked adult. A title of a dropped type shows as Not on IMDb. To link one anyway, click its badge and paste its IMDb link. It’s then linked by IMDb ID, but has no rating in your local data, so its badge reads “IMDb (0)” and the filter counts it as few-vote. The list is KINDS in offscreen/offscreen.js.
  • How titles are matched. By name, using the same matching names as Seen/Hide. IMDb’s original titles are included, so La Casa de Papel and Money Heist both match. Where the site’s link says whether it’s a movie or a series (Apple TV, Disney+, Paramount+, Crave, CBC Gem), that’s used to pick the right one.
    Otherwise the most-voted title with that name wins.
  • “?” after a rating means another title shares the name and has a real following, for example The Office (US and UK). The tooltip lists the alternatives.
  • Never-rated titles. IMDb’s ratings file only lists titles someone has rated, so a title that’s on IMDb but has never been rated shows as Not on IMDb. If you know it’s there, click the badge and paste its IMDb link.

Choosing the IMDb match yourself

Click a rating badge to open the match chooser. It lists every IMDb movie and series in your local data that shares the tile’s name (with year, type, rating, votes and genres), with the current match outlined.

  • Click one to use it. Your choice applies to every tile with that name, on every service, and the badge gets a thin yellow ring.
  • IMDb ↗ opens that title on IMDb.
  • Paste an IMDb link or ID (e.g. https://www.imdb.com/title/tt0290978/) to use a title that isn’t listed.
  • Not on IMDb: the name counts as unrated (badge shows “IMDb –”).
  • Automatic forgets your choice.

Your matches are listed (and can all be forgotten) on the settings page, and are included in backups.

IMDb titles as identity

When a tile is confidently linked to an IMDb title (an unambiguous match, or one you chose), marking it stores that IMDb ID with the mark.
A mark with an IMDb ID matches the same title everywhere, even under a different name: mark Money Heist on Netflix and La Casa de Papel on Disney+ shows as seen (the tooltip says “Matched by IMDb title”). Unmarking either unmarks both. Two different titles that share a name no longer get mixed up once either is linked.

Marks you saved before this get their IMDb IDs filled in automatically: after each ratings update, and as you browse past them.

Page check

Check this page in the popup opens a panel listing every tile on the current page: the title read, its matching name, any mark (and why it matched), the IMDb match and rating, and whether it’s covered and why. Only problems narrows it to tiles with no matching name, no IMDb match, or an ambiguous one. Hover a row to highlight the tile; click to scroll to it. Copy puts the table on the clipboard to paste into a message or spreadsheet.

Keyboard shortcuts

  • Alt+Shift+F: IMDb rating filter on/off
  • Alt+Shift+S: Hide seen on/off
  • Alt+Shift+W: Hide watchlist on/off
  • Alt+Shift+O: the whole extension on/off
  • On a tile: S = seen, W = watchlist, H = hide

A short message on the page confirms each change. Change them at chrome://extensions/shortcuts (the settings page has a link). Chrome leaves a shortcut unset if another extension already uses it.

Supported sites

  • netflix.com
  • primevideo.com, plus Prime Video on amazon.com/gp/video and amazon.ca/gp/video
  • disneyplus.com
  • paramountplus.com (including /ca/)
  • crave.ca (English and French)
  • tv.apple.com
  • gem.cbc.ca

How titles are identified on the newer sites:

  • Apple TV uses its own title IDs (umc.cmc.…) from each title’s link. On Top 10 shelves, where the link text includes the rank and genre, the title is taken from the link’s address instead.
  • Paramount+ uses the show’s page name (/shows/yellowstone/) or the movie’s ID. Genre and category pages are ignored.
  • Crave reads the title from the data-media-title attribute on each tile’s link, and uses the title’s page address, ignoring the /en/ or /fr/ prefix, so English and French pages count as the same title.
  • CBC Gem reads the title from each tile’s heading and uses the title’s page address (/beirut) as its ID; season links (/steal/s01) count as the show. The tile’s hidden description (“110 min”, “5 seasons” or “Season 20”) says whether it’s a movie or a series.

Paramount+ and Crave were built from their link formats without seeing their live pages, so they’re the most likely to need adjusting.
If tiles on either site don’t get buttons, the fix goes in src/adapters.js.

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.

Limitations

  • Site changes can break detection. Each service has its own small adapter in src/adapters.js (link patterns, tile containers, where to read the title). If a site redesign stops tiles from being recognized, that file is where to fix it.
  • Cross-service matching is by name. Different shows with the same name (e.g. The Office US vs. UK) will match each other, unless either is linked to an IMDb title. A movie and a series with the same name don’t match when both tiles say which they are: Apple TV, Disney+, Paramount+, Crave and CBC Gem do; Netflix and Prime Video only do for titles whose details you’ve opened. Borrowed marks in List health lists the rest for you to check. Turn matching off in the popup if that becomes annoying, or remove the wrong entry from the list. List health on the settings page lists the names most at risk.
  • Different IDs within one service. Some “Continue watching” rows link to an episode rather than the show. Title matching usually still catches these.
  • Browser only. It doesn’t change the services’ recommendations or anything in their TV/phone apps.

Files

manifest.json      Extension definition (Manifest V3)
background.js      Right-click menu; IMDb ratings schedule and lookups; IMDb IDs on marks;
                   automatic backups; keyboard shortcuts; saves on behalf of
                   the streaming-site tabs (checked and capped, one write at a time)
src/normalize.js   Title cleanup + normalization for cross-service matching
src/imdb-match.js  Choosing the IMDb title for a tile (automatic or your choice)
src/store.js       Storage and mark logic
shared/backup.js   Suite-wide backup retention and scheduler (from _template, don't edit here)
src/health.js      List health reports and their fixes (settings page)
src/adapters.js    Per-service tile detection (edit here when a site changes)
src/content.js     Finds tiles, adds controls, applies Seen/Watchlist/Hidden. Reads
                   storage but never writes it: changes go to the background.
                   Ignores synthetic events, so a site can't press the controls.
src/content.css    Dimmed / covered tile styling, rating badges
src/ratings-db.js  Local IMDb ratings lookup (IndexedDB)
offscreen/         Hidden page that downloads and processes IMDb's files
popup/             Toolbar popup
icons/             Extension icons

Version history

2.5.15 — The service worker is now an ES module ("type": "module"), loading its helpers with import instead of importScripts(). No change in behaviour; alarms, settings and backups carry over.

2.5.14 — Scheduled backups run on the suite’s shared backup code (shared/backup.js). Backup files, and restoring old ones, are unchanged.

Download Release:

⬇️ Show No More.zipLast Updated: November 4, 2026
(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.