What Plot Armor reads, keeps and sends

In short: it reads pages inside your browser to find spoilers, keeps your choices in your browser, and sends nothing about you anywhere.

What it reads

The text of each page you open, as it loads, including image descriptions and the words in link addresses. It compares that text with the names in the titles you blocked, inside your browser, and blurs the parts that match. It does not run on banks, email or document editors. In sites-only mode it runs only on YouTube and Reddit.

What it keeps

In your browser's storage for this extension, and nowhere else: your blocked titles, your own terms, your strict-mode choices, when each block ends, the episode you have watched up to, the teams whose scores you hide, the packs you imported from files, your "Not a spoiler" rules, your answers to "Was I spoiled?", this week's counts, and the last daily file. It reads a pack file only when you choose one, and an exported pack is a file saved where you choose; neither is sent anywhere. A "Not a spoiler" rule holds the name that matched and a short number computed from the blurred text, never the page's address. The popup deletes the rules; removing the extension deletes everything.

What it sends

Nothing about you. Once a day it downloads one public file, the trending titles and their packs, from nickharder.github.io: a plain request with no cookies and nothing about you or your browsing in it. Like any download, that server sees your IP address. There are no analytics, no tracking and no AI services. The popup's "Something wrong?" and "Ask for a pack" links open a GitHub issue page filled in with what you typed and the extension's version; nothing is sent unless you submit it there yourself. If you turn on sync in the popup, your blocked titles, your own terms and their settings go through your browser's own sync (Chrome's or Firefox's), like your bookmarks; the packs, your counts and your "Not a spoiler" rules stay on this computer.

What a site can still see

A site's own code can see that a part of its page is blurred, and could guess from that part's text which show you are avoiding. It cannot see the name that matched or your list: those stay in the extension, out of the site's reach.

Why every site

Chrome warns that the extension can "read and change all your data on all websites". It asks for every site because a spoiler can be on any page. It reads only to compare text in your browser, and changes a page only by blurring part of it, never by deleting or rewriting anything. Sites-only mode, in the popup, keeps it to YouTube and Reddit: the permission stays, but the extension no longer runs anywhere else.

Where the packs come from

The curated packs are written by hand. Packs for other titles are generated from names only, never plot text: Wikidata (CC0), TVmaze (CC BY-SA), Fandom wikis (CC BY-SA) and Wikipedia's cast lists (CC BY-SA); they are shared under CC BY-SA. The common-word list is from wordfreq by Robyn Speer (CC BY-SA 4.0), and the slur filter's list from "List of Dirty, Naughty, Obscene, and Otherwise Bad Words" (CC BY 4.0).