Privacy Policy
PDF Page Remover has no server and stores nothing at all, not even a setting. It does not request the storage permission, so there is no place in it for your data to accumulate. Everything it does happens inside your browser, between the PDF you are looking at and your Downloads folder.
What the extension stores
Nothing.
That is checkable in one step. The manifest lists three permissions, activeTab, downloads and scripting, and storage is not among them, so the browser would refuse a write even if the code attempted one. Search the package for chrome.storage, localStorage, sessionStorage or indexedDB and there are no calls.
The only state the extension has is the page selection you make while the popup is open. It exists in memory for as long as the popup is open and is gone when it closes.
What the extension reads, and where that reading goes
When you click the toolbar icon, the extension reads the address of the tab you are on and then reads that PDF, which is the document you asked it to work on. A PDF on the web is requested from the same address the tab is already showing, with your browser's own session, exactly as the tab itself requested it. A PDF on your own disk is read with XMLHttpRequest from its file:// address, and only if you have turned on Chrome's "Allow access to file URLs" for this extension.
Once the pages are removed, the new PDF is written to your Downloads folder. Your original file is never modified and never overwritten: the download is created with conflictAction: 'uniquify', so a name that already exists gets a number rather than replacing anything.
On jstor.org, and only if you have granted the optional permission for that site, the same thing happens from a button on the page instead of from the popup. The article PDF is requested from JSTOR with your existing JSTOR session, page 1 is removed, and the result is saved to Downloads.
The PDF goes in exactly one direction, into a file on your computer. It is never sent to the developer, to an analytics service, or to any third party.
What the extension does not do
- No analytics, telemetry, crash reporting, or usage counting of any kind.
- No advertising, and no advertising identifiers.
- No account, no sign-in, no API key, and no server of its own.
- No selling or sharing of data, because none is collected.
- No reading of any website other than the tab you click the icon on, plus jstor.org if you grant it. The extension does not request access to all sites.
- No modification of your original files. Every result is a new download.
How you can check this rather than take my word for it
The extension's own code is eight small JavaScript files, none of them minified and all of them commented, so you can unpack the downloaded package and read every line. Two searches settle the claims on this page.
- Search it for the addresses it contains. The only external address anywhere in the extension's own code is https://www.jstor.org/, four times, twice in background.js and twice in popup.js, each time to ask whether the optional JSTOR permission has been granted. There is no other host, no analytics endpoint, and no developer-owned address of any kind.
- Search it for ways to send data. There is no sendBeacon, no WebSocket and no image beacon. There are exactly three network reads, every one of them the PDF you chose: a fetch in popup.js for a PDF on the web, an XMLHttpRequest in popup.js for a PDF on your disk, and a fetch in content-jstor.js for the JSTOR article PDF. Each one requests a document you are already looking at, from the site it is already on.
Permissions, and why each one exists
- activeTab — to read the address and the bytes of the PDF in the one tab whose icon you clicked, at the moment you click it. There is no <all_urls> and no broad host pattern in the manifest; nothing is readable before the click.
- downloads — to save the PDF the extension produced, without a Save-As dialog and without replacing an existing file. No download ever starts unless you press the button.
- scripting — to register the JSTOR content script at runtime, and only while you have granted the optional jstor.org permission. This is what keeps the base install free of any site access; when you withdraw that permission the script is unregistered again.
- Access to file:///* — to open a PDF you have on your own computer, which Chrome's fetch cannot read and which activeTab does not cover. On its own this declaration does nothing: the real gate is Chrome's per-extension "Allow access to file URLs" switch, which is off when you install and which no extension is permitted to turn on for you.
- Optional access to jstor.org — requested at runtime, from a row that appears in the popup only on a JSTOR article page, for the one-click "Remove cover" button. Decline it and the extension never touches jstor.org.
The two bundled libraries
The page work is done on your machine by two open-source libraries shipped inside the package, not by a service: pdf-lib 1.17.1 and Mozilla's pdf.js 3.11.174, both the projects' own published builds. They are minified, which the Chrome Web Store permits explicitly and distinguishes from obfuscation, and neither is modified, so the bundled pdf-lib.min.js is byte-for-byte the file npm publishes for version 1.17.1. Nothing is fetched from a CDN, and no code is loaded from any remote address at any point.
JSTOR
This extension is not affiliated with, sponsored by, or endorsed by JSTOR or ITHAKA. "JSTOR" is a trademark of ITHAKA, used here only to say what the button is for. Nothing in the extension bypasses a login or a paywall; it removes a page from a PDF you can already download, using the access you already have.
Children
The extension is not directed at children and collects nothing from anyone.
Changes
If this policy ever changes, the date at the top changes with it, and the change is described in the extension's release notes.
Contact
PDF Page Remover is a Chrome extension by Kisoo Kim. Other projects