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:
- Captures: the preview image and the PDF of a scanned page, with where its headings, its main content and its canvases sit on it, the language it says it is in (or, when it says none, the one Chrome's language detector finds in its text, on your computer), what its markup declares to cite it by (its authors, date, journal, DOI and canonical address), an author and a date its byline shows where it declares none, and how many things of each kind clean-up hid before the capture, held in the extension's own IndexedDB database so the editor tab can open them. They are scratch data: anything older than 12 hours is deleted automatically the next time the extension starts, and nothing is uploaded anywhere.
- Site maps: the list of pages a map made, each page's address, title, links and status, and a small picture of each page, in the same IndexedDB database, with each page's capture beside them. They are deleted with the captures, 12 hours on.
- Recordings: each step of a recording (its picture, the page's address and title, what was clicked, the words in view, the fields covered, and the sentence and marks you gave it), in the same IndexedDB database. They are deleted with the captures, 12 hours on.
- Storyboards: each scroll scan's pictures, the page's address and title, what was measured on it (its scenes, what moved and the words on screen), and what you changed in it (its marks, your notes, the scenes left out, the lines taken out and the frames you chose), in the same IndexedDB database. They are deleted when the editor tab showing them is closed, and otherwise with the captures, 12 hours on.
- Theme choice: light or dark, in the browser's local extension storage.
- The editor panel's width: how wide you dragged the editor's side panel, in pixels, in the browser's local extension storage.
- Capture settings: how a video is handled, which color scheme a page is captured in, the width it is laid out at, whether folded sections are opened, which kinds of clutter are hidden before a capture, how tall a page may go, whether the editor opens on the main content or the whole page, which notifications the editor shows and for how long, and, if you turn on the local agent bridge, how it connects, the name you gave this browser, whether an agent's tabs are grouped and, if you paired it with a port and a token, those two. All in local extension storage, none of it synced to your Google account.
- Editor choices: the color, stroke and options of the last mark you drew, and the output choices you last made (format, paper, page breaks, whether to recognize text in pictures, whether to write an integrity record, frame, stamp, the brand's place and name, the watermark's text and strength, and JPEG quality), so the next capture opens on them. Local extension storage; the settings reset them.
- A logo: the picture you chose for the brand, if you chose one, kept as a small PNG so every capture can use it. Local extension storage; the editor's Stamp & Brand panel removes it.
- A background picture: the picture you chose to fill the frame's padding, if you chose one, kept as a JPEG so every capture can use it. Local extension storage; the editor's Frame panel removes it.
- Sensitive-text patterns: the words and patterns you typed in the settings for Sensitive text to look for. Local extension storage, and only the number of them is ever counted.
- What Pattern Scan looks for: which of email addresses, phone numbers, card numbers, IBANs, IP addresses and keys you last ticked in Sensitive Text's Pattern Scan, so the next capture looks for the same. Local extension storage, and never counted.
- What AI scan looks for: which of names, postal addresses, ID numbers and payment details you last ticked in Sensitive Text's AI scan, so the next capture asks for the same. Local extension storage, and never counted.
- The AI Model settings: whether AI scan and tidying ask the browser's built-in model, a model server on your computer or a model run in the browser, which server, its port and the model's name, which model runs in the browser, and any wording you wrote for AI scan's kinds. Local extension storage. The usage statistics count which kind of model and which server you chose, and that a wording was edited; never the model's name, the port or the wording.
- The Assistant's server: whether the Assistant may ask Page Scanner's server (on unless you switch it off in Settings › AI Model), and a random id made the first time it asks, which the server counts this install's requests by. Local extension storage; the id is sent with each request to that server and nowhere else, and is not the id the usage statistics use.
- Which previews are open: the server's last answer on whether each feature shipped as a preview (the Assistant, its server, and the side panel before the scan) is open or closed, and when it came, and which of their buttons you have used, so the dot that marks a new one goes once you have. Local extension storage.
- Downloaded models: which in-browser models you downloaded, and the addresses of their files, so Delete removes them. Local extension storage; the files themselves are in the browser's cache storage for the extension.
- A signing key, only if you choose a signed integrity record: an ECDSA key pair made in this browser, in the extension's own IndexedDB database. Its private half cannot be read out, not even by the extension; it only signs. Its public half is written into each record it signs, which is how anyone can check the signature. Removing the extension removes it.
- Presets: any sets of those choices you saved under a name, with the names you gave them. Local extension storage; the settings rename and delete them.
- Whether the editor's tour is due: noted when the extension is installed, or when you ask for the tour in the settings, and cleared once it is finished or skipped. Local extension storage.
- An export count: how many files you have extracted, so that the editor can ask for a review after the second, and whether you have closed that request, so it is not asked again. Whether you review is not recorded, and neither value leaves the browser.
- A random identifier and your usage-statistics choice: the id the usage statistics are sent with, made on first use, and whether you switched them off.
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:
- installed or updated, and which of the two;
- the popup opened, and over which kind of tab: a page it can scan, a page of the browser's own such as a new tab, an extension store, the extension's own editor, or another kind (never the page or its address);
- a scan ended: whether you started it from the popup or the side panel, or a paired agent did, the page width chosen, whether the result was a vector or an image capture, failed, or was refused because the browser does not allow that page, and for an image capture or a failure, at which step the vector capture stopped (the debugger could not attach or was detached, the page was being prepared, laid out, photographed or printed; never the error's words), whether it stopped at the size limit, which rule found the page's main content (the page's own markup, the text score, or none; never the content or where it is), whether you picked one element to capture (never which), whether collapsed content was opened first and whether there was any (never what), whether ads, banners or overlays were asked to be hidden first and whether any were (never which or how many), whether it went past 60,000 pixels, how many tabs went into it when you scanned several together (never which), and how long it took;
- a mark was drawn: its kind only, for example an arrow or a redaction;
- a file was exported, or failed to: the format, whether it went to a file or the clipboard, the paper and page-break choices, whether a stamp and a frame were on and which window style, where a brand was placed and whether there was a watermark (never the name, the logo or the watermark's text), whether the crop was the whole page, the main content as found, a picked element or one of your own, how many marks it had, whether it was a vector or an image capture, whether text in its pictures was recognized (never the text), whether it was made as PDF/A for archiving, whether the page declared anything to cite it by and whether a reference file went with it (never what it declared), whether a text export was tidied by a model, and which kind of model it was (the browser's built-in one, one running in the browser, or a server on your computer);
- a file was opened in the editor, or could not be: whether it was a picture or a PDF, never its name, size or content;
- a preset was saved, overwritten, applied or deleted: which of the four, never its name;
- the editor's tour was finished or skipped: which of the two, and how many of its steps were shown;
- the welcome page the install opens was shown, or used: that it was shown and whether the extension's icon was on the toolbar then, that the icon was pinned while it was open, that its guide was opened, or that the browser's shortcut settings were opened from it;
- a site map's list was made, its capture started, finished, was canceled or failed, or it was extracted: which of these, how many links deep it went, how many pages, and, when it was extracted, whether as a PNG, an SVG or for Figma; never an address, a site or a title;
- a recording started or ended, or its guide was extracted: which of these, how many steps it had, and how it ended (stopped, canceled from the banner or by DevTools, the tab closed, a limit reached, or an error); never an address, a title, a sentence or anything typed;
- a scroll scan started or ended, or its storyboard saved as a PDF: which of the three, whether the popup or a local agent started it, how many scenes and pictures it had, how it ended (at the page's end, stopped, the page touched, canceled from the banner or by DevTools, the tab closed, or an error), how many seconds it took, and how many marks the PDF's pictures have; never an address, a title, a note or a word of the page;
- Sensitive Text ran its Pattern Scan or its AI scan, or hid what it found as redactions, blurs or erases: which of these, how many it found or hid, whether the browser's built-in model is available, and which kind of model the AI scan asked; never what it found, and not which kinds either scan looked for;
- the Assistant proposed, ran or undid a plan, answered in words, or could not have a request read, in the editor or in the side panel before a scan, and which of the two; in the side panel also that it opened ready for a request and whether you scanned with its choices or rejected them: which of these, how many lines a plan had or how many steps the model took, and why the server did not read a request (offline, a timeout, this month's requests used and the like); never what you asked, what the Assistant said or what a step changed;
- another model was offered, or the offer taken, where the browser's built-in model is missing: whether it was under the AI scan, the tidy option or in the Assistant, whether it was a model to run in the browser (and which of Page Scanner's listed models) or a server on your computer;
- a setting changed: which one, and its new value.
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:
- Through the helper, the browser starts a program on your own computer, which
installput there, and the extension talks to it directly, through the browser's Native Messaging. This needs the optionalnativeMessagingpermission, which the extension asks for only when you press Connect. With a port and a token, the extension opens a WebSocket to 127.0.0.1 on your own machine and to no other address. Either way nothing the bridge carries leaves the machine. A scan an agent starts is counted in the usage statistics like any other scan, without its address. - The connection carries the pairing token, read by the helper from a file on your computer or pasted by you. Without it the connection is refused, which is what stops any other program on the machine asking for a scan.
- An agent can list your open tabs and their addresses, capture one of them, read its design or scan its scroll, and open an address of its own choosing in order to do any of these. That is the point of the feature, and it is why it is off by default and behind a token.
- Disconnect, in the settings' Local Agents section, closes the connection immediately.
The bridge goes through no server of Page Scanner's, and nothing it carries is sent anywhere.
What the extension does not do
- No network requests other than the usage statistics above, the Assistant's server for what you send it, the pages of a site you asked to map and allowed, and, once you turn either on, the bridge and a model server on your computer, both of which stay on your own machine.
- No crash reporting, advertising, or third-party code. The usage statistics are sent by the extension's own code; no Google script runs in it.
- No reading or transmission of your browsing history, cookies, credentials, or form data.
- No remote code: everything that runs is inside the published package.
Permissions
| Permission | Why it is needed |
|---|---|
activeTab | Grants access to the one tab you scan, at the moment you click the icon, and to nothing else. |
debugger | Lays 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. |
scripting | Measures 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. |
storage | Remembers 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. |
favicon | Shows 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:
- the page address, its title, and the address you came from;
- your browser, operating system, screen size and language;
- an approximate location, which Google derives from your IP address. Google Analytics 4 does not log or store the IP address itself;
- which of these you click: a link to an extension store, a link between the two websites, a code block's copy button (with the first line of that code block), the documentation's Copy page and Open Markdown controls, and its Copy prompt buttons (with which prompt, the command line's or the MCP server's, and not the prompt's text);
- on the page opened when you remove the extension, when you press Send: which of its ten boxes you ticked, how many, and the version, browser and store its address named. The page has no text box, so nothing you type is sent;
- the address of a link to another website, or of a downloadable file, when you click it;
- that you scrolled to the bottom of a page, recorded once per page when you pass 90% of it.
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 date and time;
- the address requested, with its query string, and the website it was requested from;
- the response's status and content type;
- the referring address;
- the browser's user-agent string;
- the country and the network (its autonomous system number) that CloudFront derives from your IP address.
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.