Skip to the policy

← PDF to PNG converter

Privacy Policy

Last updated:

This Privacy Policy explains what information PDF to PNG (“we”, “us”, “our”) collects, how we use it, and who we share it with. It replaces every earlier version of our privacy policy, including the one hosted on Google Docs.

What this policy covers

Three things, together called the “Services”:

Our principles

The short version

Information you give us directly

There are no accounts, no purchases, no payments and no newsletters. You give us information only when you choose to:

The feedback form and the survey are Google Forms. The extensions open them as plain links with nothing added to the address: of this, a form receives only what you type into it, and nothing if you close it (Google, like any site, also sees the connection itself: your IP address and, if you are signed in to Google, your account). Google hosts the forms under its own privacy policy. Reviews on the Chrome Web Store are public and follow Google's rules.

What the extensions do with your files, on your device

PDF to PNG

PDF to PNG reads a PDF only when you ask it to:

To read the PDF shown in a tab, the extension runs a small script inside that tab. The script takes the PDF from the copy your browser already holds or, when there is none, downloads it again from the site that serves it, the same way the tab did. The side panel then draws the pages, and each PNG is saved through Chrome's downloads. The PDF is kept in memory only while the side panel shows it; nothing of it is written to the extension's storage.

Two permissions are asked for only when they are needed:

On your device, PDF to PNG stores your settings (the output width, whether batches are saved as separate files or one ZIP, which tips you have seen), the state of its rating prompt, the running totals described under the events, your analytics answer, the install id described below, PostHog's own working data, and, for the current browser session only, a note of how the side panel was opened in each window.

Save Image as PDF

Save Image as PDF reads an image only when you ask it to:

With an image it may also read the image's alternative text, the file name the site gives it, and the title of the page, which names the PDF when the image's address has no usable name.

To get an image you right-clicked or dragged in from a page, the extension downloads it from the site that serves it, from your browser, using the image's own address. No server of ours is involved. The PDF is written on your device by the extension's own code and saved through Chrome's downloads.

Access to one image site. The extension declares optional access to all sites (the *://*/* pattern) because it cannot know in advance which site will serve an image, but it never asks for that at install, and most images download without it. When a site does not let extensions read its images, the extension shows a page, or a row in its side panel, that names that one site, with a preview of the image loaded from that site (except in Incognito windows). Only when you press Allow does it ask Chrome for access to that one host (for example images.example.com). The access stays, so you are not asked again, until you remove it in Chrome's settings for the extension. It is used only to download the images you choose from that site.

On your device, Save Image as PDF stores:

Both extensions

Your files, what is in them, and their file names never leave your device through the extensions. Removing an extension from Chrome deletes everything it stored on your device.

What the extensions send: usage analytics

Both extensions share the same analytics code and send usage events to PostHog, our analytics service provider, on its EU cloud (eu.i.posthog.com). Apart from the sites you ask them to read a PDF or an image from, the forms, store pages and pages of this website you open yourself, and the welcome page PDF to PNG opens once after you install it (see The welcome page), PostHog is the only place the extensions send anything.

The region check, before any answer

Every time an extension page opens (the side panel, and Save Image as PDF's permission and problem pages), it asks PostHog which consent group applies to you. PostHog works out your country from the IP address of that request. The request carries your IP address, the address of the extension page that asked (such as chrome-extension://…/sidepanel.html) and, unless you have rejected analytics, the extension's install id (as both its user id and its device id). After a Reject it carries neither. No usage event is sent until there is an answer, yours or the automatic one below. If PostHog does not answer within five seconds, the extension guesses on your device from your browser's time zone: European time zones, and time zones that name no country such as UTC, get the banner; Russian time zones count as a Reject; all others count as an Accept.

The answer, yours or the automatic one, is stored in the extension and is final: the banner is not shown again, even if you travel. The extensions' banner says "We use cookies for analytics."; the extensions set no cookies, and keep their state in the extension's own storage on your device.

What an event contains

Each event has a name, a few properties of its own, and the standard technical properties PostHog adds to every event: your browser and its version, your operating system and its version, the device type, the full user-agent string, the browser's language, the screen and window size, your time zone and the version of PostHog's code. Events sent by an extension's own pages also carry random session and window ids that change with each browsing session (not after a Reject); Save Image as PDF's events queued by its background worker carry none. We add which extension sent the event and its version. Events sent by an extension page also carry that page's own address inside the extension (such as chrome-extension://…/sidepanel.html), never the address of a website.

PDF to PNG: every event it sends

panel_opened
The side panel opened: how it was opened (for example the toolbar icon or the right-click menu, and which menu), whether a PDF was found in the tab, and whether Chrome gave the extension access to the tab.
tab_detect_result
What the extension found when it looked at the tab, as a category (for example a PDF, no PDF, or a page Chrome does not let extensions read), how many frames of the page it could look into, and yes or no answers such as whether a local PDF is waiting for Chrome's file access switch. Never the address of the page.
tab_autoload_result
Whether reading the PDF from the tab worked, as a category; the file size; whether it came from the browser's cache, the network or a local file; and categories of the site's answer (for example "404" or "5xx", and whether it may be cached).
permission_requested
You answered Chrome's question for an optional permission: which one (access to the PDF's site, or downloads) and whether you allowed it. Never the name of the site.
file_settings_opened
You pressed the button that opens Chrome's settings for the extension, to allow access to PDFs on your computer. Nothing else.
pdf_loaded
A PDF opened: the number of pages, the file size, how it was opened (from the tab, the file picker, drag and drop, or paste), whether a file you opened yourself has a different name from the PDF in the tab (yes or no, never the names), and how many password attempts it took (a number, never the password).
pdf_load_failed
A PDF could not be opened: the reason as a category (damaged, password protected, too large, or unknown) and the file size.
png_saved
A page was saved as a PNG: the page number, the number of pages, the width in pixels and the width setting, the size of the PNG, and how many pages you have saved from this PDF.
png_save_failed
Saving a page failed: the reason as a category, and the width.
selection_changed
You changed which pages are selected: how (clicking pages, the page range field, or Select all), how many are selected, and the number of pages.
batch_save_clicked
You started saving several pages: how many of how many, all or selected, separate files or one ZIP, the width, and which button started it.
batch_save_completed
A batch finished: how many pages and files, how long it took, how many pages failed, and whether it finished, partly finished or was stopped.
batch_save_failed
A batch failed: the reason as a category, how many pages, how many were already saved, and the width.
batch_save_cancelled
You cancelled a batch: how many pages, and how many were already saved.
batch_delivery_switched
You switched a batch between separate files and one ZIP.
batch_folder_opened
You opened the downloads folder after a batch. Nothing else.
rating_link_opened
You clicked a star in the rating prompt: the number of stars, and how many saves you have made so far.
rating_dismissed
You closed the rating prompt: how many saves you have made so far.
consent_response
You answered the analytics banner: Accept or Reject.

Every PDF to PNG event also carries five running totals the extension keeps on your device: how many times its side panel has opened, how many PDFs opened and how many failed to open, and how many saves worked and how many failed (a batch of pages counts as one save).

Save Image as PDF: every event it sends

menu_used
You chose "Save image as PDF" from the right-click menu: what a right-click does in your settings (download, collect, or collect and show), whether it opened the side panel, and whether it fell in the early period when a right-click opens the panel to show you around.
pdf_saved
A PDF was saved: the number of pages, the page size (image size, A4 or Letter), whether it came from a right-click or the side panel, whether any image had to be redrawn (anything but a plain JPEG), and whether any image had transparency.
save_failed
A save stopped: the step where it stopped (download, decode, drawing, embedding, layout, saving or collecting), which problem page you were shown, and whether it started from a right-click, the side panel or the permission page.
collection_changed
The side panel's collection gained or lost an image: the number of images in it.
host_permission
You answered Chrome's question for access to an image site: whether you allowed it. Never the name of the site.
panel_intake
Images came into the side panel: whether they were dropped, dragged from a page, pasted, or chosen with the file picker.
panel_opened
The side panel opened: after a right-click, from the toolbar icon, or because of the "Collect & show" setting.
rating_link_opened
You clicked a star in the rating prompt: the number of stars, and how many PDFs you have saved so far.
rating_dismissed
You closed the rating prompt: how many PDFs you have saved so far.
consent_response
You answered the analytics banner: Accept or Reject.

PostHog's code adds two events of its own: $opt_in, when analytics are turned on, and $feature_flag_called, which records the answers of the region check. Heatmaps are switched on in our PostHog project, so the extension pages also send $$heatmap events: where you clicked and moved the mouse on the extension's own pages, and the window size.

Never in any event: your files or anything in them, file names, page text, images, passwords, or the address or title of any web page, PDF or image, or the name of any site. The extensions record no page views and make no session recordings, and apart from the heatmaps above they do not record clicks automatically.

The install id

Each extension creates a random identifier for itself, the install id, and stores it on your device. If you accept, or analytics are on by default where you are, events carry this id, and PostHog keeps a profile for it built from its events. The id is not linked to your name, your email address or your Google account, and the two extensions do not share one. Removing and reinstalling an extension gives it a new id.

If you Reject

Events are still sent, but without the install id and without any cookie. PostHog counts them with a hash of your IP address and browser details, mixed with a value that changes every day, so PostHog cannot join events from different days into one visitor, and no location is added to them. Two exceptions, both in PDF to PNG: its events still carry the running totals described under the events, which are read from your device, so a sequence of them could be matched up by those numbers; and a PDF to PNG side panel that was already open in another window when you pressed Reject keeps sending with the install id until it is closed.

Errors

Save Image as PDF sends no error reports: when a save fails it sends only the save_failed event above. PDF to PNG hands errors it catches (for example a PDF that cannot be opened) to PostHog's error reporting. A report holds the error's type and message and the places in the extension's code where it happened, and nothing from your files.

Location

PostHog receives your IP address with every request, as any server you connect to does, and uses it to find your country for the region check. The IP address itself is not stored: our project discards it. Before discarding it, PostHog looks up your country from it, and only the country (with its continent) is kept with the events of people whose analytics are on: region, city, postal code and coordinates are removed before anything is stored. Events sent after a Reject carry no location. Every event also carries your browser's time zone.

The website pdf-to-png.app

Your files

The PDF to PNG and PNG to PDF converters work like the extensions: your browser reads your files and makes the images or the PDF on your device. Nothing is uploaded. The website is a set of static files, and there is no server of ours that could receive a file. The PDF to PNG page remembers, in your browser's local storage, whether you prefer batches as separate files or one ZIP; that preference stays in your browser.

Hosting

The website is hosted by Netlify. Like any web host, Netlify receives your IP address and the details of each request (the address of the page, your browser, and the page that linked to it) in order to deliver the pages.

Analytics on the website

The website uses the same PostHog project and the same consent groups as the extensions. In the banner regions it shows a banner that reads "We use cookies to understand how you use the site and improve it. Your files never leave your device regardless of your choice.", with Accept and Reject.

Before you answer, the website makes the same region check, which carries your IP address, a random id created by the page and details of the page you are on, and it may download PostHog's settings and code from PostHog's servers. No event is sent, nothing is recorded, and no cookie is set.

When your analytics are on, the website records:

Website events carry the same standard technical properties as the extensions' events, plus the website's version. While your analytics are on, they also carry a random id kept in a cookie (see Cookies and storage), and PostHog keeps a profile for that id, as it does for an install id. The website also sends heatmap data (where you click and move the mouse) and measurements of how fast its pages load. Clicks that had no visible effect are not recorded.

Session recording

Session recording is switched on for the website and is not sampled, so any visit with analytics on can be recorded. A recording is a reconstruction of the page as you saw it, not a video of your screen: the layout of the page and the text on it, mouse movements, clicks, scrolling and the window size, plus the messages the page writes to the browser's developer console. Recording never runs before you answer, and never after a Reject.

What is hidden from recordings:

Cookies and storage

There are no advertising cookies and no other analytics on the website.

The welcome page

Right after you install PDF to PNG, the extension opens pdf-to-png.app/install/ once. That page shows no banner and sends one event, extension_installed: it records that the page was opened, with a fixed note that the install came from the Chrome Web Store. It carries the standard properties and no cookie or stored identifier, and PostHog counts it the same way as events sent after a Reject. The page turns off automatic click recording, page views, heatmaps, performance measurements and session recording. The page loads its font from Google Fonts, so Google receives your IP address and browser details, and it loads PostHog's code from PostHog's servers.

How we use information

We do not use any of it for advertising, we do not sell it, we do not combine it with other information about you, and we do not use it to determine creditworthiness or for lending.

Chrome Web Store User Data Policy

The use of information collected by the PDF to PNG and Save Image as PDF extensions complies with the Chrome Web Store User Data Policy, including its Limited Use requirements. In practice:

When we share information

Service providers: these are all of them

If a service is not on this list, the Services do not use it.

  1. PostHog: analytics for both extensions and the website, on PostHog's EU cloud. See PostHog's privacy policy.
  2. Netlify: hosts the website.
  3. Google: Google Forms for the feedback form and the removal survey, Google Fonts on the welcome page, and the Chrome Web Store, where you install the extensions and can leave a review. See Google's privacy policy.

We may disclose information if the law requires it, or where it is reasonably necessary to protect the rights, property or safety of our users, the public, or us.

Business transfers

If the Services ever change hands, information they collected will be transferred only after we have asked for your explicit consent. Nothing stored on your device is ours to transfer.

At your request

We may share your information with someone else if you ask us to.

Where the law requires us to state one, our legal grounds are:

Your choices and rights

In the extensions

On the website

Access, correction and deletion

You can ask us what we hold about you, and ask us to correct or delete it, by writing to arto@pdf-to-png.app. The install id and the website's id are random and not linked to your name, so to find your data we need that id; write to us and we will explain how to look it up. Events sent after a Reject carry no id we could look up, so they cannot be found or deleted one by one.

If you are in the European Economic Area, the United Kingdom or another place with similar laws, you may also object to or restrict our processing and withdraw your consent, and you can complain to your data protection authority. We encourage you to contact us first, so we can resolve your concern quickly.

International transfers

PostHog keeps our analytics on its EU cloud. Netlify and Google may process data in the United States and other countries, under their own safeguards for international transfers.

Security

The most effective protection we have is not holding your files at all: there are no uploads and no accounts. The analytics data lives with PostHog, protected by its security measures and by access limited to us. No internet transmission is completely secure, and we cannot guarantee against every unauthorized attempt to access information.

Children

The Services are not directed at children under 13, or under 16 where the EU GDPR sets that age, and we do not knowingly collect personal information from them. If you believe a child's information is in our analytics, write to us and we will delete what we can find.

Data retention

Third-party links and services

The Services link to other sites, including the Chrome Web Store, Google Forms, and the privacy policies named above. Those sites follow their own privacy policies, not this one.

Changes to this policy

We will post any changes on this page and update the date at the top.

Questions about this policy

Questions, requests, or anything on this page that looks wrong: arto@pdf-to-png.app.