Effective date: 3 September 2026 · Applies to: the FreeProxy VPN desktop application for Windows (v2.0.5) and the FreeProxy VPN browser extension (v1.2.0)
This document is written to be checkable rather than reassuring. Every statement below can be verified against the source in this repository, and where something is disclosed to a third party, it is named — including the case where that happens over your real IP address before any tunnel exists.
There is no account, no sign-up, no subscription, no telemetry, no crash reporter, no analytics and no update check. This project operates no server of any kind, so there is nothing for the developer to collect, and no database in which anything about you could exist. The app runs entirely on your own machine. It writes a local diagnostic log, which never leaves that machine. Four categories of third-party host are contacted, for reasons listed in §4, and one of those happens over your real IP.
Nothing. Not an identifier, not a timestamp, not a country, not a crash report, not a count of installations. This is not a policy choice that could be reversed by a settings change — there is no endpoint to send anything to.
If you open a GitHub issue you will be giving the developer whatever you choose to put in it. That is the only channel that exists, and it is entirely in your hands.
%ProgramData%\freeproxy-vpn\logs\freeproxy-<date>.log, plain text, seven days
kept and older files deleted. You can open it from the app.
It exists so that the claims this project makes can be checked on your own machine instead of taken on trust. It records what the app did:
- the
torrcit wrote, and Tor's own bootstrap phases and percentages - the registry keys, firewall rules, DNS pins and services it changed, by name
- per browser, what was attempted and what a read-back afterwards actually found
- the exit country it read back through the circuit, and the coordinates handed to the extension
- the split-tunnel domains you type, when you apply them — those are a setting the app acted on, so they are recorded like any other
It does not record your browsing history, the sites you visit, the pages you load, DNS queries you make, or the content of any traffic. The app never sees them: Tor resolves and carries them, and the app only ever writes a config file and reads a control port.
Nothing in this file is transmitted anywhere. If you attach it to a bug report, read it first — it is yours, and it is legible on purpose.
Everything the app writes is under %ProgramData%\freeproxy-vpn\. The JSON files
it keeps there, and what is in each:
| File | Holds |
|---|---|
settings.json |
your chosen country, the kill-switch state and your split-tunnel list, plus the full-tunnel switch |
geo-restore.json |
what each browser's and Windows' location settings were before the connection, so a disconnect — or a crash — puts back the real value instead of guessing at a default |
ext-restore.json |
the same idea for the extension: what each browser had before the app touched it |
exit-cache.json, relay-index.json |
Tor's relay list and an index over it — public data about relays, nothing about you |
restart-pending.json |
whether the one post-install restart is still owed |
boot-pending.json, boot-result.json |
whether the post-restart pass is still owed, and what it found in each browser |
browser-intro-shown.json |
whether the first-run browser card has been shown |
browser-setup\delivery.json |
which extension build was offered to browsers, and on which local port |
Your country, kill switch and split-tunnel list are kept between runs, on
purpose. An earlier version held them in memory only, and that was a fault: a
split-tunnel list you had typed was gone at the next start while the
ProxyOverride it produced was still on the machine — two halves that could not
be reconciled because one was never written down — and a kill switch that
silently reset itself to off is worse than one that persists. They are plain
text.
Two other things live in that directory and are not about you: ext-key.pem, the
key this machine signs its own local copy of the extension with, and the app
window's own Chromium profile (Cache, Local Storage and the rest) — the window
is a local page, so there is nothing browsed in it to record.
The directory is locked down to SYSTEM and administrators at every start, because it is also where the Tor binaries and the scripts the app runs elevated live; the app says in the log whether that read back clean. Uninstalling deletes the whole directory.
In chrome.storage.local, per browser: the connected country code, its
coordinates and an accuracy figure, the connection state, and the list of
origins that were handed a position — that last one exists solely so the next
country switch knows whose site storage to clear. No browsing history, no page
content, no destinations.
None of these belongs to this project. They are listed with the route each one is reached over, because that determines what it can see.
| Host | Asked for | Route | What it can therefore see |
|---|---|---|---|
onionoo.torproject.org |
the Tor relay directory — which countries have usable exits | your normal connection, before any tunnel exists | your real IP, and that it is asking for a relay list |
free.freeipapi.com, ipwho.is, get.geojs.io, api.ipbase.com — tried in that order, first answer wins |
an approximate position for your own IP, to draw the idle "you are here" ring | your normal connection, while disconnected | your real IP, which is exactly what it is being asked about |
ipleak.net, get.geojs.io, api.country.is, ipinfo.io |
"what IP do you see?", to confirm the exit country | through the Tor circuit | the exit relay's IP, not yours |
aka.ms |
Microsoft's Visual C++ redistributable, only if the bundled copy is missing | your normal connection, at install | your real IP, once, at install |
The second row is the one that matters most, so it is not buried. To centre the globe on where you are before you connect, the app asks a third party where your IP is. That host learns your IP — it has to, that is the question. If none of the four answers, the app draws nothing rather than guessing. If you would rather no one were asked, stay disconnected and simply do not open the idle globe view, or connect first: once the tunnel is up, every subsequent lookup goes through it.
No identifier of any kind is attached to these requests. The app sets no cookie of
its own and sends no User-Agent it composed to identify itself. Each host has
its own terms and its own privacy policy, over which this project has no control.
Five other http(s):// strings exist in the source and are not requests:
clients2.google.com and edge.microsoft.com are store update URLs written
into a policy value; www.googleapis.com appears only in the code that removes
a certificate an earlier build created; www.google.com and
schemas.microsoft.com are XML namespace identifiers. Grep the source and you
will find them — that is why they are accounted for here.
Your traffic is carried by three volunteer-operated relays. This project does not own, operate, fund, choose or control any of them, and cannot see what they see.
Two consequences worth being plain about:
- Tor encrypts between relays, not to the destination. If a site is on plain HTTP, the exit relay can read that traffic. Tor does not fix that and neither does this app.
- Your ISP can see that you are using Tor, unless a bridge happens to work. Bridge mode exists in the app and is a measured maybe, not a guarantee.
The Tor Project has its own privacy policy at https://www.torproject.org/privacy-policy/.
The extension asks for proxy, storage, tabs, notifications, cookies,
browsingData, history, alarms and <all_urls>. Because that is a broad
set, each one is accounted for individually in the README under
Every permission it asks for.
The two that deserve stating here:
<all_urls>lets the extension inject its geolocation shim into every page and frame atdocument_start. It reads no page content, and it issues nofetch,XMLHttpRequestor beacon of any kind — the only socket it opens isws://127.0.0.1:8080, to the app on your own machine.browsingData+cookies+history. When you switch country while connected, the extension deletes everyUULEcookie by name and then clears map sites only: their cache and site storage, their history entries one URL at a time, and cookies only on domains that are nothing but a map. It also clears the site storage of the origins that had been handed the country you are leaving. Nothing browser-wide is touched — you stay signed in, and the rest of your history stays where it is. Maps are why the step exists: a map remembers a position in its own URL, in a cookie and in its cache, so without this a switch would keep showing the country you left. The detail is in What a switch wipes, and why. A disconnect removes theUULEcookie and nothing else.
Nothing removed this way is copied, read or sent anywhere first. It is deleted.
The app requires elevation for four machine-wide things Windows will not let an
ordinary process do: writing DNS servers onto every network adapter, adding
firewall rules, blocking IPv6, and writing extension policy under HKLM. It asks
once, at install. Elevation is not used to read your files, enumerate your
software, or inspect anything unrelated to those four jobs.
Stated because a privacy policy that only lists its wins is not much use.
Connecting closes your IP address, your DNS queries, navigator.geolocation in
14 browsers, and the Windows location service. It does not close:
- your system timezone — a site can read it, and it will not match your exit
- your browser's language and
Accept-Languageheader - canvas, font, WebGL and audio fingerprinting — this is not Tor Browser and does not attempt Tor Browser's job
- any account you are already signed into. A service you are logged into knows where you live because you told it, not because it looked
- the Windows location provider itself, which has no supported spoofing route. The app withholds the position instead of faking it, and says so in the UI rather than pretending
Uninstalling reverts every system change by name, not by reboot: the proxy, the DNS pins, the IPv6 and DNS firewall rules, the location service, the extension policy in all four of its registry forms, the scheduled tasks, and the log and state directories.
One asymmetry, disclosed because it can surprise you: the app does not snapshot a proxy you had configured beforehand. It deletes what it wrote rather than restoring what was there, so if you were using a proxy of your own before installing, you will need to set it again.
This software is not directed at children and collects nothing from anyone, including children.
Material changes will be made in this file with a new effective date, in a commit you can read. Because no contact information is collected, there is no way to notify you directly — the commit history is the notification.
- Developer: Zero-Asif (Asifuzzaman Asif)
- Repository: https://github.com/Zero-Asif/FreeVPN-PC-App
- Report a privacy problem: https://github.com/Zero-Asif/FreeVPN-PC-App/issues
If you find a statement in this document that the source does not support, that is a defect and it will be corrected. Please say which file disagrees with which paragraph.
Every claim above was written against the code in this repository. The list
of hosts in §4 was produced by reading every http(s):// literal in main.js
and lib/*.js and classifying each one, which is why §4 ends by accounting for
the five that are not requests.