PDFixel Extension Logo
PDFixel Extension

Privacy Policy

Last updated:

This policy covers the PDFixel browser extension. The PDFixel web app at pdfixel.app is a separate product with a separate policy — read that one here. The two are not interchangeable: they store different things in different places, and this page describes only the extension.

The short version

Your files never leave your device. Every tool — compression, conversion, merging, splitting, text recognition, background removal, the canvas editor — runs entirely inside your browser using local code.

The extension makes network requests to exactly one host, live.dodopayments.com, and only to check a Pro licence key. If you have no licence key stored, the extension makes no network requests at all.

There is no analytics, no telemetry, no crash reporting and no usage tracking of any kind.

1. Your files

Files you open, drag in or right-click are processed on your device and are never uploaded. There is no server to upload them to: the extension has no backend.

Some things are saved locally, in your browser’s IndexedDB storage, and only because you asked for them to be:

  • Projects and file data you save in the workspace
  • Undo history for the canvas editor
  • Export records and the task list, so you can see what you did
  • Presets you create yourself
  • An error log, kept locally to help diagnose a problem you report

All of it stays in your browser profile. Clearing your browsing data or uninstalling the extension removes it. Nothing is synced, backed up or transmitted.

2. Image metadata is always removed

Every image the extension writes is built from decoded pixels, so EXIF, GPS coordinates, IPTC, XMP and ICC colour profiles are discarded every time.

This is not a setting you can turn off, because there is no code path that preserves them. If you send someone a photo processed here, it carries no location data and no camera information. Files that arrive with location data are flagged when you add them, so you know what you are working with.

3. What leaves your device, and it is one thing

Only a Pro licence check. Three requests to live.dodopayments.com, our payment provider:

WhenWhat is sent
You activate a keyThe licence key, and a device label
Every 3 minutes while the window is open and visibleThe licence key and the activation id
You press DeactivateThe licence key and the activation id

The device label is not an identifier. It is one of six fixed words — Windows, Mac, Linux, Chromebook, Android, iPhone — guessed from the operating system name your browser already tells every website you visit, and you can overwrite it with anything before activating. No hardware id, no serial number, no canvas fingerprint, nothing that identifies the machine.

What is never sent: a file, a filename, a page, an image, a document count, or anything about what you were doing.

The 3-minute check pauses completely while the tab is not visible, so a window left open overnight does not poll.

4. What is stored, and where

Local to this browser

Settings — your preferences and any presets you saved.

Your Pro licence record, if you have one. This holds the licence key, the activation id, the device label you chose, the dates it was activated and last confirmed, and the product name and customer email that Dodo returned so the panel can show you which key is active.

Please note: this is stored in ordinary extension storage, which is not encrypted. It is readable from your browser’s developer tools and by anyone with access to your computer profile. It has to be stored to re-check the licence, but if you share a machine, that is worth knowing.

The daily counter, if you are on the free tier: today’s date, and one short hash per document counted.

Synced by Chrome — this one leaves your machine

The daily counter is also written to chrome.storage.sync. When you have Chrome sync switched on, that means it is uploaded to Google’s servers, along with the rest of your synced browser data.

We say this plainly because it is the only thing about the free tier that leaves your device. It does not come to us and we never receive it. What travels is a date and up to 10 eight-character hashes, nothing else. The reason it is there: the free allowance should follow you rather than reset on each machine you use.

A cookie on ext.pdfixel.app

One cookie, pzk_usage, holding the same daily counter. It exists because extension storage is wiped on uninstall, and without it the free allowance could be reset by reinstalling.

It is scoped to the path /__pdfixel_quota, which nothing on our site serves. That is deliberate: a cookie scoped to / would be attached to every request when you visit the site, handing our server a usage counter on each page load. Scoped this way it exists in your browser, is readable by the extension, and is never sent anywhere. It is host-only, so it is not sent to any subdomain either, and it expires after 2 days.

5. How documents are counted, without knowing what they are

The free tier allows 10 documents a day. To count them without recording what they were, each document is reduced to an eight-character one-way hash of its name, size and modification date.

The hash cannot be reversed into a filename. Nothing reads a byte of the file’s contents. All the count needs to answer is “have I seen this one before”, which a hash does.

6. Text recognition runs on your device

The language model ships inside the extension. Scanning a document for text loads that local model and reads the image in your browser. No image and no recognised text is sent anywhere.

7. Permissions, and what each is actually for

PermissionWhy
storageYour settings, presets, licence record and daily counter
cookiesWriting the one counter cookie described above. No network request is made — chrome.cookies.set writes straight to the browser’s cookie jar
contextMenusAdds one “Compress this image” entry to the right-click menu on images
offscreenA background service worker cannot use a canvas. The right-click flow needs one to re-encode the image
downloadsSaves the result of that right-click flow, with the save dialog shown so you choose where it goes
live.dodopayments.comThe three licence endpoints above
test.dodopayments.comDodo’s test environment, used during development. Unused in the published build
ext.pdfixel.appRequired before a cookie may be written on that host. Nothing is fetched from it, and no page on it is read
<all_urls>Optional and off by default. Only used to fetch an image you right-clicked, because reading an image from another site is subject to browser CORS rules. Enable it in Settings if you want that, and revoke it there.

The extension never reads, modifies or injects a script into any page you visit. Every tool in the main window works with no page access at all, because files you open or drag in are already yours to read.

8. Payments

Purchases are handled by Dodo Payments, our Merchant of Record. Your card details go to Dodo and never touch us or the extension. Dodo’s own privacy policy governs what they collect at checkout.

The extension never opens a payment form itself — pressing an upgrade button opens Dodo’s hosted checkout in a new tab, the same as clicking any link.

9. Children

The extension is not directed at children under 13 and collects no personal information from anyone.

10. Changes

If this policy changes materially, the date at the top changes and the updated version appears here before the change takes effect in a published version of the extension.

11. Contact

Questions about this policy, or a request about data held about you: extension support.