Why your files never leave
This is not a marketing promise, it is a technical property you can check for yourself in thirty seconds.
When you drop a photo, the browser reads it with the FileReader API, which gives
access to the file's contents locally. Those bytes are handed to a
Web Worker, a
separate thread running inside your browser that does all the work on the information stored in
the file. The modified file is then handed back to you through a download link built in memory.
At no point does that path involve a network call. There is no server to send anything to: the site is a set of static files.
Those files still have to be served by someone, and the honest version of “no server” says so. They are hosted on Cloudflare, which terminates the HTTPS connection and therefore sees your IP address, the page you asked for, and the time you asked for it — the same thing every website you visit sees, and the least a host can know while still being able to answer you. Those request logs are kept briefly for operational purposes. What Cloudflare does not see, and cannot see, is your photo: it never becomes a request. No analytics product is enabled on this site, no cookie is set, and nothing is added to these pages between the build and your browser — there is a check in the repository that fetches the live site and fails if anything has been.
One thing on this page does reach outside, and only if you ask it to. Behind “Place it on a map” there is a map, and its pictures come from openstreetmap.org, who therefore learn your IP address and roughly which area you are looking at. They learn nothing about your photo — not its name, not its size, not the position stored in it. The map stays folded away until you click it, so if you never open it, nothing is ever requested. You can confirm all of this three ways:
-
Open the Network tab of your developer tools, then drop a photo and download
it. No request appears. Open the map and requests appear — to
tile.openstreetmap.org, and to nothing else. - Turn off your connection after the page has loaded, then use the tool. It works in full; only the map pictures are missing, and you can still type coordinates.
- Read the code. The repository is public under the MIT licence, and so is the build script.
Two details about the map we would rather write down than have you discover. Its requests carry
the name of this site — geotager.app — and nothing else: no page address, no file
name, no coordinates. OpenStreetMap ask that a site using their pictures say who it is, and
that is the smallest honest way to do it; every other request this site makes carries no name
at all. And the page is not allowed to ask your browser where you are: the site's own
headers switch that off, which is why there is no “use my location” button here.
How to use it
- Drop a photo on the pink bubble, paste it with Ctrl+V, or click to choose one.
- The location stored in the file appears immediately, if there is one.
- To change it, type or paste coordinates. To take it out, use “Remove the location”.
- Download. The original name is kept, with a suffix saying what was done.
Every file produced is read back before it is handed to you, by our reader and by a second one written by other people. If the location read back does not match the one you asked for, if a trace survives a removal, or if the two readers disagree, the operation is declared failed and your original file is handed back untouched. On a tool like this one, silent failure is the worst possible defect: it would have you publish a photo believing you had cleaned it.
We also check that the file handed back is identical to the original everywhere else than at the location itself, byte by byte. That is what lets us change a photo of several megabytes without ever decoding it: we do not promise it came through intact, we show it.
Longer walk-throughs, including what to do on a phone and how to check the result with another tool, live in the guides: changing a photo’s location, checking where a photo was taken, removing the location, and adding one to a photo that has none.
What the tool can do, and what it cannot do yet
| Format | Read | Change | Add | Remove |
|---|---|---|---|---|
| JPEG | yes | yes | yes | yes |
| HEIC, AVIF iPhone | yes | yes | yes | yes |
| PNG | yes | yes | yes | yes |
| WebP extended form | yes | yes | yes | yes |
| TIFF excluding camera raw | yes | yes | yes | yes |
| Videos (MOV, MP4) excluding a moving location | yes | yes | yes | yes |
These cells are the real state of the code, not a roadmap: each one is checked by a test that actually performs the operation on a real file of that format. A video keeps the location in several places at once, sometimes spelled out in words — all of them are now read, rewritten and removed together. But an action camera also records where it went second by second, all along the recording, among the images themselves; on such a file we can show you the location and will not touch it, because handing you a file you would believe was clean is worse than saying no.
Two limits depend on the file rather than the format, and the tool tells you about them before you act. Some images have nowhere to put a location: we can read them, not create one for them. And camera raw files — the ones photographers develop themselves — accept having a location removed, never having one added: they are irreplaceable originals, and we would rather not touch them.
On JPEG files, changing the location never re-encodes the image: the pixels are left alone and only the bytes of the location are touched. That is what sets this tool apart from services that run your photo through a canvas and lose quality on the way.
What GPS data in a photo actually is
Cameras and phones store a block of information inside the file, called EXIF. It holds the date, the device, the shooting settings and, if location was switched on, the position.
The position is not stored in decimal degrees but in degrees, minutes and seconds, together
with two fields giving the hemisphere: GPSLatitudeRef is “N” or “S”,
GPSLongitudeRef is “E” or “W”. A latitude of 43.9493° north is therefore written
43° 56′ 57.48″ with the reference “N”. Altitude is often added, along with a timestamp of the
satellite reading, which is not the same thing as the time of the photo.
What a geotag gives away
A geotagged photo holds a position accurate to a few metres. That is rarely a problem for a landscape; it becomes one in three very common situations.
- A for-sale or to-let listing. Photos of the inside of a home carry that home's address. Publishing the listing amounts to publishing the address, along with views of what is inside.
- A photo of a child. Taken in a garden or outside a school, it shows where the child lives or spends their days.
- A private sale. The photo of the item is taken at your home, and you send it to a stranger.
Social networks do not all behave the same way. Many strip the information on upload because they re-encode images, but that behaviour is neither guaranteed, nor contractual, nor consistent depending on whether you go through the app or the website. Messaging services that send a file “as a document” generally pass on the original as-is, stored information included. The safe rule is to clean before sending, rather than to count on the recipient — which apps remove a photo’s location goes through where that rule stops holding, and how to test your own path in two minutes.
Check for yourself, with another tool
Do not take our word for it. ExifTool is the reference in this field, free and offline; if you handle many files, or formats we cannot change yet, it will do better than us.
Read a file's location:
exiftool -gps:all -n photo.jpg
Check that nothing is left after a removal:
exiftool -a -G1 photo.jpg
Remove the location, or everything:
exiftool -gps:all= photo.jpg
exiftool -all= photo.jpg
For a video, remember the -ee option, without which locations stored in timed
tracks go unnoticed:
exiftool -a "-gps*" -ee video.mp4