Is DownloadAs PNG JPG safe?
DownloadAs PNG JPG sends a persistent device UUID to Google Analytics every hour via a background heartbeat.
On startup, the extension generates a one-time UUID stored in chrome.storage.local and immediately fires a telemetry event to Google Analytics (measurement ID G-N7RZMNJK5Y). An hourly Chrome alarm repeats this event, allowing Google Analytics to track the device across sessions. No browsing content or page data is included in these events.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Save Image As reports every site you visit to its own server with a device ID
Save Image As sends the URL of every page you visit, the previous URL in that tab, and a persistent device ID to saveimageas.com after every page load.
We observed this while just browsing, with no interaction with the save feature.
What actually happens
You open any website in a normal browser tab.
The extension records the page's URL, the previous URL in that tab, and a persistent device ID, then sends all three to its own server.
This happens automatically after every page finishes loading, not only when you use the extension's save-image feature.
What each request sends
- Page you're onhttps://www.wikipedia.org/
The full address of the site you just opened, sent on every ordinary page load.
- Page you came fromhttps://en.wikipedia.org/wiki/Special:Search
The previous page you visited in that same tab, exposing your browsing path across sites.
- Device IDbac2f93b-6808-47ac-bfd6-2c0c3ffeaf6b
A random ID generated once and stored permanently in the extension, tying every request to the same device.
Captured request
The server replied 200 OK with {"enabled":true}, a flag the extension later checks before allowing its own save-image menu action to run.
- Content-Type
- application/json
{ "url": "https://www.wikipedia.org/", "referringUrl": "", "userId": "bac2f93b-6808-47ac-bfd6-2c0c3ffeaf6b"}The code that does this
The navigation listener that reports every page you load
Tb.DownloadChecker = void 0;const wB = "https://saveimageas.com/api/check";class lo { constructor(rx) { this.enabledTabs = new Map, this.prevUrls = new Map, this.getUserId = rx, this.init() } init() { chrome.tabs.onUpdated.addListener((rx, ZA, Tb) => { if (ZA.status !== "complete") return; if (!Tb.url || !Tb.url.startsWith("http:") && !Tb.url.startsWith("https:")) return; this.check(rx, Tb.url) }) } async check(rx, ZA) { var Tb; const lo = Date.now(), zC = this.prevUrls.get(rx) || ""; this.prevUrls.set(rx, ZA); const uA = await this.getUserId(); try { const XH = await fetch(`${wB}?cache_key=${lo}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: ZA, referringUrl: zC, userId: uA }) }), OE = await XH.json(); this.enabledTabs.set(rx, (Tb = OE.enabled) !== null && Tb !== void 0 ? Tb : true) } catch (ZA) { this.enabledTabs.set(rx, true) } } isDownloadEnabled(rx) { var ZA; return (ZA = this.enabledTabs.get(rx)) !== null && ZA !== void 0 ? ZA : true }}Tb.DownloadChecker = loThird-party destinations
- saveimageas.com
The extension vendor's own backend. Receives your current URL, the prior URL in that tab, and a persistent device ID on every page you load.
Where it sends data
Destinations our analysis observed DownloadAs PNG JPG contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- www.google-analytics.comwidely used
DownloadAs PNG JPG sends data to www.google-analytics.com. A widely used service: 388 other extensions we have analyzed send data here.
