Skip to content

Page Scanner Privacy Policy

What Page Scanner stores, where it stores it, and what never leaves your machine.

Last updated: 2026-10-11

Page Scanner is a browser extension that captures the page you are looking at and extracts it as a PDF. This policy explains what the extension does and does not do with your data, and what the two Page Scanner websites collect.

Summary

Your captures never leave your machine. Every capture, every mark you draw on it and every file you export is produced and stored on your own computer, and Page Scanner never uploads, sells or shares any of it. The command line and the MCP server collect nothing at all.

The extension counts which of its features are used, with Google Analytics: that a scan ran and how it ended, which kinds of mark were drawn, which export options were chosen. It never sends the address, title or content of a page, and you can switch it off in the extension's settings. Usage statistics lists exactly what is sent.

The websites, pagescanner.app and docs.pagescanner.app, count visits with Google Analytics too (pagescanner.app asks a visitor in the EEA or the UK first), and their server keeps a log of requests, without IP addresses, for 30 days. The websites says what each collects. When you remove the extension, your browser opens a page there that asks why; When you remove the extension says what its address carries and what answering sends.

The extension makes six kinds of network request and no others: the usage statistics, unless you switch them off, the local agent bridge described below, which stays on your own machine and is off unless you turn it on yourself, requests to a model server running on your own computer, if you choose one in the settings, which also stay on it, the download of a model to run in the browser, from Hugging Face, only when you press Download for it in the settings, what you send in the editor's Assistant or the side panel before a scan, which goes to Page Scanner's server with the rest of that conversation, unless you switch that off, and, when you ask for a map of a site and allow that site, the reading of that site's pages, from your browser to that site and nowhere else (A map of a site). The Assistant's server says what it is sent and what it keeps; it is never sent a page's text, pictures, address or title. Your browser's own download of its built-in model, which Sensitive Text's AI scan and a tidied Markdown or Word export can ask for, is the browser's request and not the extension's; The browser's built-in model says when it happens.

When the extension touches a page

Nothing happens until you ask for it. Page Scanner acts only on the tab that is active when you click its toolbar icon or press its keyboard shortcut, or, when you have selected several tabs and press Scan for them, on exactly the tabs you selected. It never watches pages you have not scanned. Unless you connect local agents, it never runs in the background and has no access to any tab you did not scan; once you connect them, an agent on your own computer can list your tabs and ask for scans, as that section describes. A site map you start yourself reads and captures the pages of the one site you allowed, as A map of a site describes, and a recording you start yourself watches the clicks in the one tab you started it in until you stop it, as Recording steps describes, and a scroll scan you start yourself scrolls the one tab you started it in from top to bottom, as Scanning the scroll describes.

Scanning a page attaches the browser's own debugger to that tab for as long as the scan takes — a few seconds on an ordinary page, longer on a very large one — and detaches again the moment it is done. While attached it lays the page out at its full height and takes two things from that single layout: a screenshot for the on-screen preview, and the browser's print-to-PDF output for the vectors. While that runs, the browser shows its own "Page Scanner: Full Page Screenshot" started debugging this browser banner, and takes it down five seconds after the scan detaches.

The side panel before a scan, when its Assistant needs to know what a page has to set the scan up ("make it clean for printing"), counts on the tab it was opened for, and on no other, what the scan would find to hide (ads, cookie banners, chat widgets, pop-ups), whether the page has a dark version, which color scheme the browser asks for, its size and how many sections are folded. It hides what it counts and puts it back before the page can draw again, so nothing on the page changes, and only the counts leave the page.

A map of a site

Map this site in the popup makes a map of the site of the page you are on. Nothing is read until you press Find pages in the map's tab, and then your browser asks you to let Page Scanner read that one site (for example every page under example.com); the extension asks for no other site, and works without it.

Once you allow it, the extension reads the site's pages from your browser, the way your browser would open them, with the cookies your browser already has for that site, so a page you are signed in to lists what you see. It reads at most 30 pages and each host's robots.txt, follows no link whose address says it would act (sign out, delete, unsubscribe and the like) and opens no file, and shows you the list before anything else happens. When you press Start, each page on the list is opened in a background tab and captured the way a scan is, with the debugger and its banner. The pages are read by your browser and sent nowhere else: not to Page Scanner, not to any server of ours, and the list, the pictures and the captures stay in your browser, as captures do.

The permission stays granted after the map is made, until you remove it from Page Scanner's details page in your browser (Site access). It is used only when you press Find pages again.

Recording steps

Record steps in the popup records what you do on the page you are on, to make a step-by-step guide. It attaches the browser's debugger to that one tab, with its banner up, until you stop it from the popup, cancel the banner, open DevTools on the tab or close it, or it reaches 100 steps or 30 minutes. While it runs it notices your clicks on that page, and after each click that changes the screen it keeps a picture of the part of the page that was in the window before the click, the page's address and title, what you clicked (its kind and its visible name), and the words in view. It never keeps what you type: the value of a field is in no record it makes. Fields for a sign-in, a password, a one-time code, a card or an ID number are found on each screen and covered in that step's picture, and a field of another kind shows in the picture what was typed in it, as it showed on your screen.

The pictures and the steps stay in your browser, as captures do, and are sent nowhere: not to Page Scanner, not to any server of ours. When you extract the guide, its pictures' words are read on your computer to make the PDF searchable, as text recognition always is.

Scanning the scroll

Scan scrolling in the popup records how the page you are on behaves as it is scrolled, to make a storyboard of it. It attaches the browser's debugger to that one tab, with its banner up, scrolls the page from its top to its end at a steady pace, and keeps the pictures the browser drew while it scrolled, the page's address and title, and, every fifth of a second, where the elements on the screen were and how they looked (their size, position, opacity, movement and colors, and their words). It stops at the page's end, after two minutes, when you press Stop in the popup, when you scroll, click, touch or type on the page, when you cancel the banner or open DevTools on the tab, or when you close it, and puts the page back where it was.

The pictures and the storyboard stay in your browser and are sent nowhere: not to Page Scanner, not to any server of ours. They are kept while the editor tab that shows them is open, and deleted when you close it. A local agent you have connected can ask for the same scan (see the local agent bridge); its pictures and storyboard then go to that agent on your own computer and are not kept in the browser.

What the extension stores

Everything is stored locally in your browser:

None of this leaves your device. It is not associated with any account, and Page Scanner has no server of its own. The one thing that does leave, the usage statistics, is described next.

Usage statistics

The extension tells Google Analytics 4 which features are used, so that work goes where people actually are. It is on unless you switch off Report usage statistics, under Privacy in the extension's settings, which stops every request before it is made.

Each event is a name and a few choices, sent with the random identifier above, a session number that changes after 30 minutes without use, the extension's version, which browser it runs in (Chrome or Edge), and which store it was installed from:

Never sent: the address, title or content of any page, anything you type on a capture, file names, what you ask the Assistant, your browsing history, the local agent bridge's token, port, name or traffic, or whether you wrote a review.

The request goes straight from your browser to Google's Measurement Protocol endpoint at www.google-analytics.com. No script is loaded from Google, no cookie is set or sent, and no permission was added for it. Google receives your IP address with the request, as with any request, and derives an approximate location from it; Google Analytics 4 does not log or store the IP address itself. Google signals and advertising features are off, and the data is not used for advertising. Event-level data is kept for two months and user-level data for fourteen, as for the websites.

When you remove the extension

The extension tells your browser which page to open once it is removed, and the browser opens it in a new tab when you remove the extension; nothing of the extension runs by then. The page is pagescanner.app/uninstalled/, and it asks why you removed Page Scanner.

While usage statistics are on, its address names the version you removed, the browser (Chrome or Edge) and the store it came from, the same three values every usage event carries. While they are off, the address names none of them. It never carries the random identifier the usage statistics use, so an answer on that page cannot be joined to them. A copy that was not installed from a store (loaded unpacked, for development) opens no page at all.

The page is part of the website, so opening it is a page view as described under The websites, address included. Answering is up to you: nothing about your answer is sent until you press Send, and what it sends is listed there.

The browser's built-in model

Sensitive Text's AI scan can ask your browser's own on-device model, through its Prompt API, to look in a capture's text for the kinds you tick: names, postal addresses, ID numbers and payment details. It does so only when you press the button that asks it. A Markdown or Word export can ask the same model which parts of the text are the page's menus and footers, and which lines are section titles, when you choose to have it tidied by the browser's model. Each way, the text goes to the model running on your computer and nowhere else; Page Scanner sends it nowhere. If the model is not yet on your computer, the browser downloads it from its maker the first time you ask, as it would for any page that uses it. On a computer the browser does not offer the model on, nothing is asked and nothing is downloaded.

A model server on your computer

Instead of the browser's model, the extension's settings (AI Model) can choose a model that a program you run on your own computer serves, such as Ollama, LM Studio or llama.cpp. Choosing one asks the browser to let Page Scanner reach localhost, your own computer, and nothing else. From then on, AI scan sends the text it looks through and a tidied export sends its lines to that server at http://localhost on the port you set, and only when you press the button that asks. The extension also asks the server which models it has, when you open that part of the settings or press Refresh. The requests do not leave your computer; what the server does with them is up to the program you run, and Page Scanner starts no server and downloads no model. So that Ollama accepts them, the extension takes its own address off these requests to localhost (and no others) as they go out.

A model run in your browser

The settings (AI Model) can also run a model inside the browser, on your computer's graphics processor. Nothing is downloaded until you choose one and press Download. Then the extension downloads that model's files, between about 700 MB and 2 GB, from Hugging Face (huggingface.co and the servers it sends downloads through), which receives your IP address with the request, as any website does. No text, no page and nothing about you is sent with it: only the request for the files. The files are kept in the browser's storage for the extension, on this computer, until you press Delete or remove the extension. From then on, AI scan and tidying run on that model inside the browser, and the text goes nowhere.

The Assistant's server

The editor's Assistant does what you ask of the editor in a sentence, with the editor's own controls, and the side panel before a scan does the same with the choices a scan makes before it starts (the page's width, the clutter hidden first, folded sections, the color scheme, videos, one element). Both are read by a model on Page Scanner's server at relay.pagescanner.app; nothing is read on your computer. A message you send is worked through in a few steps: the model answers, the extension does what it asked for (looking at the editor's choices, counting, or, once you approve it, changing them) and tells it what came of that, and the model is asked again, until it answers you. The server is asked only when you send a message or press Run or Try again, and never while Page Scanner's server is switched off in Settings › AI Model.

What is sent, with each step: the conversation on that page so far, which is what you typed (at most 1,000 characters a message), the editor's choices or the scan's as they stood when you sent it, what the model said, and what the extension did for it, which is choices and counts ("the format is PDF", "2 email addresses listed", "3 ads on the page"); the instructions and the list of tools the model may use; and the random id described under What the extension stores. Never the page's text, pictures, address or title, or anything you drew on it.

What the server does with it: it passes each step to a language model through OpenRouter (openrouter.ai), which sends it to the company that runs the model, today DeepSeek V4.1 Flash on a provider OpenRouter chooses, and returns the answer to you. When that model cannot answer (its providers are down or busy), OpenRouter sends the same step to a second model from another company instead, today Google's Gemini 3.1 Flash-Lite, under the same rules. Page Scanner does not keep the conversation or the answer. The request tells OpenRouter to send it only to a provider that does not collect what it is sent (OpenRouter's data_collection: deny), and OpenRouter says it keeps no prompts unless the account opts in to its logging. The server keeps three counts so it can hold each install to its 10 requests a month, where a request is one message however many steps it takes: one under a one-way hash of the random id, for the calendar month, deleted in the month after; one under a one-way hash of the network the request came from (your IP address with its last part removed), for the day, deleted after two days; and one of all requests for the day. While a message is being worked through it also keeps that message's number of steps, under the hash of the random id, for 30 minutes. Its log records that a step was answered or why not, how long it took, which model answered and how many tokens it used; not the conversation, not the id and not the address. It runs in Amazon Web Services' Seoul region, like the support mailbox.

The Assistant and the side panel are previews, and Page Scanner can close either, or only the server, without an update. To learn whether it has, the extension asks the same server which previews are open: once after it is installed or updated, when an editor tab opens, and every ten minutes while one stays open. That request carries nothing about you or the page: no id, no cookie, no address but the server's own. Like any request it reaches the server from your IP address, which the server does not record for it, and nothing is counted for it.

Files you open

The editor can open a PDF, or a PNG, JPEG or WebP picture, from your computer instead of a page. The file is read in the editor tab and stored with your captures in the browser's own storage on your computer, for the same 12 hours; it is not uploaded anywhere. A PDF is drawn by a PDF reader that ships inside the extension, which fetches nothing, not even fonts, and runs no script the file contains. Its text is recognized, as below, only when you open Sensitive Text on it or export it as a searchable PDF.

Text recognition

When a PDF is made from a capture that is a picture, or that has text drawn into a canvas, the editor can read that text so the file can be searched, and Sensitive Text reads a picture's text to look through it. It is read on your computer, by an engine and language files that ship inside the extension; nothing is downloaded for it and nothing about the page is sent anywhere. What is read goes into the file you export and nowhere else.

The local agent bridge (off by default)

An AI agent running on your own machine can be allowed to start a scan and receive the file, and the page's text as Markdown if it asks for it. It can ask for that text with email addresses, phone numbers, card and account numbers, ID numbers, IP addresses, keys and your saved Sensitive Text patterns replaced by placeholders, which happens in the browser before the text is sent. A command can also ask for the design a page is drawn with: how many of its elements use each color, font, size and spacing, and the values of the custom properties its stylesheets declare, with its address and title but none of its other text, and, when the command asks to follow the site's links, the addresses those links on the page point to on the same site. Asked for the page's components, it also scans the page as an ordinary capture, kept in the browser like any other for 12 hours, and sends what each button, field and repeated box looks like and at most 40 characters of a control's words; the catalog it then draws from that capture goes to the same agent. It can also ask for a page's scroll as a storyboard (Scanning the scroll, above): the pictures the scan kept, what it measured and the words on screen go to the agent, and nothing of it is kept in the browser. This is off until you turn it on, in one of two ways: you run a command that sets up Page Scanner's helper on your computer, press Connect in the extension's settings and allow the browser's prompt; or you run a command that prints a port and a token, and paste both into the settings.

While it is on:

The bridge goes through no server of Page Scanner's, and nothing it carries is sent anywhere.

What the extension does not do

Permissions

PermissionWhy it is needed
activeTabGrants access to the one tab you scan, at the moment you click the icon, and to nothing else.
debuggerLays the tab out at its full content size and takes the full-page screenshot and the vector PDF from that one layout. This is the capture, and it is the only browser API that can produce a real vector PDF of a whole page. When you scan several selected tabs together, it is also what reaches the ones that are not in front. While you record steps, it is what notices your clicks on that one tab and takes a picture of what is in the window.
scriptingMeasures the page's full height, drives the scroll-and-stitch fallback used when the debugger cannot attach (for example when DevTools is open), and shows the element picker when you ask to capture one element.
storageRemembers your light/dark theme, the editor panel's width, your capture and editor settings, the bridge pairing, and the usage statistics' random id and on/off choice, on this device.
faviconShows the site's icon in the popup and the editor, read from the browser's local favicon cache. No request leaves the browser.
nativeMessaging (optional)Lets the extension talk to Page Scanner's helper on your own computer, for the local agent bridge. Asked for only when you press Connect in the settings' Local Agents section; the extension works without it.
tabGroups (optional)Names and colors the tab group, "Page Scanner" in green, that a tab the local agent bridge opens goes into, so you can see which tabs an agent is using. Asked for with Connect in the settings' Local Agents section, or when you turn on Group an agent's tabs; the extension works without it.
localhost (optional)Lets the extension reach a model server on your own computer (http://localhost and http://127.0.0.1). Asked for only when you choose a (Local) model server in the settings' AI Model section; the extension works without it.
declarativeNetRequestWithHostAccess (optional)Takes the extension's own address off its requests to that server, which Ollama otherwise refuses. Asked for with localhost, it acts only on hosts the extension was allowed, and on no other site's requests.
Every website (optional)Declared so that a site map can ask for the one site it is of, for example every page under example.com, when you press Find pages, and read its pages to list them. No site is granted at install, and none is asked for any other way; the extension works without it.

Page Scanner is granted no website at install, so it has no standing access to any site. Two kinds of host can be given to it, each only when you ask: your own computer, for a model server you chose, and the one site you asked to map, at Find pages.

The files you export

PDFs are written straight to your browser's downloads folder by the browser itself. Page Scanner never sees them again and never sends them anywhere.

The websites

pagescanner.app and docs.pagescanner.app use Google Analytics 4 to count visits and to see which links and buttons are used. What follows applies to the websites; the extension's own usage statistics are described above. The command line and the MCP server send nothing to Google or to anyone else.

When you open a page on either website, your browser loads Google's analytics script from googletagmanager.com and sends Google:

Google Analytics sets first-party cookies named _ga and _ga_<ID> on pagescanner.app so that two page views in one visit can be counted as one visitor. They do not carry your name, your email address or anything you type. Google signals and advertising features are not turned on, and the data is not used for advertising. Event-level data is kept for two months and user-level data for fourteen months, Google Analytics' defaults.

On pagescanner.app, a visitor in the European Economic Area or the United Kingdom is asked first, with a banner at the bottom of the page. The site's server, Amazon CloudFront, tells the page which country the connection comes from only by setting a cookie named ps_region to eea for those countries, for the browser session; it holds nothing else and is not sent to anyone. Until you press Accept all, Google's script is not loaded and nothing above is sent. Reject all keeps it that way, and so does the banner's close button, after which the banner asks again on your next visit. Your answer is kept in your browser's local storage for the website, under the name consent, and Manage cookies at the foot of every page changes it; taking back a yes stops the script from sending anything more and deletes the _ga cookies. docs.pagescanner.app does not ask.

Google processes this data under the Google Privacy Policy, and explains in how Google uses information from sites that use its services what it does with it. To opt out, block cookies for pagescanner.app, use a content blocker, or install Google's opt-out browser add-on.

Both websites follow your system's light or dark theme. If you pick one with a website's theme switch, the choice is kept in your browser's local storage for that website, under the name theme, and is not sent anywhere.

The websites are served by Amazon CloudFront, which also writes a log line for every request, whether or not the browser runs any script. That is how visits by search engines, AI crawlers and browsers that block Google Analytics are counted. Each line holds:

The IP address itself, the connection's port and cookies are not written. The logs are stored in Amazon S3 in the United States (US East, N. Virginia), readable only from the account that runs the websites, and each file is deleted 30 days after it is written. What is kept longer is daily totals, such as requests per page, per country and per kind of client, which contain no line of any log.

Data sharing

The command line and the MCP server collect nothing, so they share nothing. The extension's usage statistics and the websites' analytics are shared with Google, which processes them to produce the reports. The websites' server logs stay in the Amazon Web Services account that hosts the websites. What the Assistant sends to Page Scanner's server is passed to OpenRouter and the model's provider to be answered, as The Assistant's server says. None of it is sold, and none of it is shared with anyone else.

Children's privacy

The extension collects no personal information from anyone, including children: its usage statistics carry a random identifier and the names of features, nothing that identifies a person. The websites are not directed at children and collect only the analytics data and server logs described above.

Changes

If this policy changes, the updated version will be posted at this URL with a new "Last updated" date.

Contact

Questions about this policy: hello@pagescanner.app.