Skip to main content
    Back to Home

    What happens to your photo

    Last updated: September 24, 2026

    This page describes what the GeoTag.world code does, in plain words, and how you can check it yourself. The legal text is in the Privacy Policy.

    1. Your photo file stays in your browser

    The free tools (find location, EXIF viewer, privacy checker, remove GPS, remove EXIF, remove AI content credentials, and batch mode) read the file in your browser, change it in your browser's memory, and create the download in your browser. The site does not upload the photo file. The geotag editor works the same way: it writes the new coordinates into the file in your browser.

    Some requests still happen, because maps, accounts and payments need other services. These are the requests we found in the code. The one exception is the Android share fallback in section 5, where your phone itself may send a shared photo to us once. Apart from that, none of them carries the photo file.

    RequestWhen it happensWhat is sent
    Map tiles (OpenFreeMap)A photo with GPS is shown on the map, and the map in the geotag editor.Your IP address and the map area you look at. Not the photo.
    Place search (Geoapify)You type in the place search box in the geotag editor.The text you type. Not the photo.
    Address lookup (Geoapify)Geotag editor only: a photo with coordinates but no address is opened, you move the pin, or you press use my location.The latitude and longitude. Not the photo. The free tools do not do this lookup.
    Credit balance (/api/credits, GET)You are signed in. The site shows your balance in the menu and checks it before a geotag download.Nothing from the photo. The server knows who you are from your sign-in cookie.
    Credit charge (/api/credits, POST)After a paid geotag download finishes.The number of photos charged, for example 1. Not the file, not the file name.
    Save a result (/api/reveals, POST)You are signed in and press Save to history on the EXIF viewer result. If you are signed out and press Save my result, the same data stays in this browser (for up to 1 hour) and is saved to whichever account signs in first during that time.File name, latitude, longitude, camera make and model, and the date taken. Only shown when the photo has valid GPS. The address field exists in the API but the viewer does not fill it. Never the image.
    Saved results (/api/reveals, GET and DELETE)When you open or delete saved results.The ID of the result you delete.
    Account actions (/api/account/..., POST)When you open billing, cancel, reactivate, change plan or delete your account.The new plan when changing plan, otherwise nothing.
    Unsubscribe (/api/email/unsubscribe, POST)When you press Unsubscribe.The signed token from the link, which identifies your email.
    Sign-in session refresh (Supabase)You are signed in, or your browser holds a sign-in cookie, and you open a page that needs your account (the home page and account pages, not the public info pages).Your sign-in cookie. Not the photo.
    Android share fallback (POST /share-target)Only if you share a photo to the installed Android app and the app cannot start its background script (for example after an update, on a first launch, or with the script switched off).Your phone may send the shared photo to our server once. The server ignores it: the request is not read, saved or logged, and it immediately redirects you to the tool, which asks you to choose the photo again.
    Checkout (/api/polar/checkout, then Polar)You press buy on a plan or pack.Which plan or pack you chose. Polar then handles the payment page.
    Paywall note (/api/email/events, POST)You are signed in and close the credits window without buying.A label (paywall_dismissed) and how many credits you needed. Used for one price reminder email.
    Feedback (/api/feedback, POST)You send feedback, or answer the short question shown once to signed-in free users when they press download, before the file is made.Your message, your email address (required in the feedback form; your account email for the download question), the type of feedback, your browser user agent and the page you were on. Not the photo.
    Newsletter (Supabase, from your browser)You subscribe to the newsletter.Your email address.
    Sign up and sign in (Supabase)You create an account or sign in with email and password, or with Google.Your sign-in details. With Google, you are sent to Google to sign in.
    Analytics (Google, Microsoft Clarity)Only after you choose Accept all in the cookie banner.Page views and interactions, a random device ID and session ID, and your account ID if you are signed in. Photo coordinates and file names are not sent. Nothing loads before you choose.
    Service worker status (/sw-status.json)After the page loads in production, at most every 10 minutes.Nothing.
    View on Google Maps linkOnly if you click it. It opens Google Maps in a new tab.The coordinates are part of the address of that link.

    Your own computer also loads the site's pages, scripts and fonts from GeoTag.world (hosted on Vercel). The sample photo link ("No photo handy? Try a sample") downloads a sample from our site to your browser, not the other way round.

    2. Test it yourself

    Network test

    1. Open the Remove GPS from Photo page. Do this signed out, and choose Essential only in the cookie banner. Open DevTools (F12, or Cmd+Option+I on a Mac) and go to the Network tab.
    2. Tick Preserve log, then clear the list.
    3. Choose a photo. Use one that has GPS if you can, so you also see the map requests.
    4. Click Strip and let the clean copy download.
    5. Look at the Method column. You should see only GET. There should be no POST or PUT. Click any request and open the Payload or Request tab: GET requests have no body.
    6. Look at the Domain column. Expect geotag.world and, for a photo with GPS, tiles.openfreemap.org. Entries that start with blob: are your browser reading its own memory.

    Offline test

    1. Load the page and choose your photo. Wait until the result and the map are shown.
    2. In DevTools, Network tab, change the throttling menu from No throttling to Offline. Or switch off Wi-Fi.
    3. Click Strip. The clean copy should still download.
    4. Go back online and open the clean file in the EXIF viewer to confirm the GPS is gone.

    Go offline after the photo is shown. The map code is loaded only when a photo with GPS appears, so if you are already offline when you choose a photo that has GPS, that code cannot load and the page shows an error. A JPEG, PNG or WebP photo without GPS works offline from the start (HEIC and batch mode load extra code and need the network first).

    What we saw when we ran it

    On September 24, 2026, we ran both tests with an automated Chromium browser against a production build of this site's code on a local computer, signed out, with no cookie choice made. The photo was our sample photo (148,809 bytes, with GPS coordinates).

    • Every request was a GET. There were no POST or PUT requests and no request had a body, so no request carried the photo file. We also searched every request body for a piece of the photo's bytes and found none.
    • Hosts contacted: the site itself and tiles.openfreemap.org (11 map requests: style, icons, label fonts and tiles). No Google or Microsoft host was contacted, no Geoapify request was made, and no request went to a sign-in or database host.
    • The clean copy downloaded as geotagged-photo_clean.jpg (148,219 bytes). Reading it again found no GPS, and the picture data was unchanged.
    • With the network switched off after the photo and map had loaded, Strip still completed and gave the same 148,219-byte file. No new requests were made.
    • Switching off the network before choosing that GPS photo made the page show an error, as described above. A photo without GPS stripped and downloaded fine in that case.

    This shows what the free strip does in this setup. Signed-in features, payments and other browsers were not part of this run.

    3. Who processes what

    This matches the list in the Privacy Policy. We do not sell personal information.

    ProviderUsed forWhat it receives
    VercelHosts the website.Normal connection data such as IP address and request logs.
    SupabaseAccounts, credits, purchase and subscription records, saved results, newsletter list.What you give it when you sign up, buy or save.
    PolarPayments and subscriptions.Your email and an account reference at checkout. We do not see card details.
    GeoapifyPlace search and coordinate-to-address lookup in the geotag editor.Text you type, or coordinates.
    OpenFreeMapMap tiles for the interactive map.Your IP address and the map area you view.
    ResendSends our emails (purchase confirmations, follow-ups, reminders). Sent from our server, not from your browser.Your email address and the message.
    Google Analytics and Tag ManagerWebsite analytics. Only after Accept all.Usage data described in the Privacy Policy.
    Microsoft Clarity and Bing tagWebsite analytics, loaded through Tag Manager. Only after Accept all.Usage data described in the Privacy Policy.
    Feedback service (Heroku, feeder-node-1337)Stores feedback you submit.The feedback details listed above.

    4. What the free tools remove, and what they do not

    The free tools accept JPEG, PNG, WebP, AVIF and HEIC or HEIF. The older homepage uploader also takes GIF, BMP, TIFF and SVG, and RAW on paid plans. Your original file is not changed. You get a new file, and the name keeps the original name with _clean added. Batch mode does the same for each file and gives you one ZIP.

    FormatWhat happensOutput name
    JPEGEdited in place at the byte level. The EXIF and XMP block (APP1), the AI content credentials block (APP11) and the Photoshop and IPTC block (APP13) are dropped. The picture data is not decoded or recompressed. Extra data stored after the end of the picture (a motion photo video, a second image, an appended blob) is cut off. If the file structure is damaged and the end of the picture cannot be found reliably, nothing is cut and the privacy receipt marks the file Not fully clean. If the file turns out not to be a valid JPEG, it is redrawn on a canvas and saved as a new JPEG at quality 0.95.name_clean.jpg
    PNGDrawn onto a canvas and saved again as PNG. Only the pixels are carried over.name_clean.png
    WebPDrawn onto a canvas and saved again as WebP. The EXIF viewer cannot read WebP metadata, but the clean copy is still made this way.name_clean.webp
    AVIFYour browser must be able to decode it. It is drawn onto a canvas and saved as a JPEG at quality 0.95, so the result is a different format.name_clean.jpg
    HEIC and HEIFDecoded to a JPEG in your browser (a JavaScript decoder, with a WebAssembly fallback), then treated like a JPEG above. The result is a JPEG, not a HEIC, and the decode is a lossy step.name_clean.jpg

    Removed

    • EXIF: GPS position, camera, lens, date and time, and the embedded thumbnail.
    • XMP and IPTC or Photoshop data in JPEG files.
    • Extra data stored after the picture in JPEG files (motion photo video, a second image).
    • AI content credentials (C2PA) in JPEG files. For PNG and WebP, the code comments say the canvas redraw drops them as well. We did not test that.

    Not removed

    • The picture itself: faces, visible text, street signs, license plates, landmarks and shadows.
    • The file name, apart from _clean being added. Rename the file if the name reveals something.
    • Anything that is part of the pixels, such as a visible or invisible watermark. JPEG pixels are not touched at all.
    • In JPEG files, every segment other than APP1, APP11 and APP13 is copied as it is. That includes the colour profile and comment fields.
    • Copies of the photo that you already sent or posted somewhere.

    Because the JPEG orientation setting lives inside EXIF, it is removed with it, so a JPEG that relied on it may show turned after cleaning. We did not test this. The geotag editor is different: it adds or changes GPS and keeps the other existing EXIF, and it saves non-JPEG files as JPEG. Camera RAW files get a separate .xmp sidecar instead. For JPEG it also drops data stored after the picture (for example a motion photo video), because that data could still hold the old location.

    5. Installing Geotag on your phone

    You can add Geotag to your home screen. It is the same website, so photos are still read and cleaned in your browser. The small background script that makes installing possible does not save copies of our pages. When the installed app is active, shared photos are handled on your device.

    • Android with Chrome: after you install it, you can share a photo from your gallery to Geotag. The photo is held in a temporary store on your device (IndexedDB) until the page opens it, then deleted. If the page cannot open it (for example you are offline), it stays on your device until your next share, until you clear site data, or one hour, whichever comes first. That path does not send the photo to a server. If the app cannot start, your phone may still send the shared photo to our server once. The server ignores it and immediately redirects you to the tool, and the photo is not read, stored or logged. You are then asked to choose the photo again.
    • iPhone and iPad: Share, then Add to Home Screen works. iOS does not let websites receive shared photos, so on iOS you still choose the photo inside Geotag.

    6. Recent work and saved places stay on your device

    Geotag can remember your last jobs and the places you save, so you can pick up where you left off. Both live in your browser's storage on this device only. They are never sent to our servers, and they work whether or not you accept analytics.

    • Recent work stores, per job: the tool you used, the date, the number of photos, whether GPS was found or removed, and up to 3 file names (cut to 40 characters). It keeps the last 30 jobs. It never stores your photos, thumbnails, coordinates or addresses.
    • Saved places store a label you type (up to 40 characters) and its latitude and longitude. You can keep up to 20. They are used only to fill in a location in the geotag editor.
    • To clear them: use "Clear history" under Recent work, use Manage then Delete under Saved places, or clear this site's data in your browser settings. Clearing your browser data removes everything.
    • Pending photo stash: if you must sign in or check out in the middle of a job, the tool keeps the photo you were working on (the full photo bytes) plus your editor fields (coordinates, camera details, alt text and keywords) in your browser storage on this device, so you can continue afterwards. It is kept for up to 1 hour, then deleted, and it is deleted as soon as it has been restored. It is never sent to our servers.

    7. The privacy receipt

    After you clean a photo, or a whole batch with Strip all, you can download a privacy receipt. It is a single HTML file you can keep, send to a client, or print or save as PDF from your browser. It is built in your browser, on your device. No request is made to build it, and nothing about it is stored or sent to us. Our code makes no server call for it, and our automated test watches the network while it is built.

    What it contains

    • The date and time (local and UTC), the tool, the site version and the method used for each file format.
    • Per photo: the file name, the size before and after, and the SHA-256 fingerprint of the original and of the cleaned file.
    • Per photo, for GPS, camera and lens details, date and time, embedded thumbnail, IPTC and XMP, content credentials (C2PA), other EXIF fields and, for JPEG, extra data stored after the picture: whether each was found in the original, and whether it is still found when the cleaned file is read again. It uses the same reader (exifr) as the free EXIF viewer, plus its own check for WebP and PNG. The viewer cannot show WebP metadata.
    • A summary line, and a clear "Not fully clean" mark if anything is still in a cleaned file.

    It never contains the values: no coordinates, addresses, camera names or serial numbers. Only yes or no, and counts.

    What it does not prove

    • Anything in the picture itself, such as faces, signs or landmarks.
    • That the file name is safe to share.
    • Metadata in formats or fields the reader does not read. For AVIF and HEIC originals, content credentials are not checked. The clean copy is a JPEG, and that one is checked.
    • That nobody else holds a copy of the original.
    • That the receipt is genuine. It is not digitally signed and an HTML file can be edited, so treat it as a record, not a certificate.
    • Removal of content credentials (C2PA) from PNG and WebP files. We did not test it.

    To check for yourself, open the cleaned file in the free EXIF viewer.

    8. Changelog

    Dates are when each change was made.

    • 2026-09-24: Photo reading moved fully into the browser. The home page and upload tools read EXIF with code that runs in your browser, instead of sending the file to the old /api/read-exif route. That route still exists in the code but no page calls it.
    • 2026-09-24: Analytics now waits for your choice. Google Consent Mode starts as denied, and Tag Manager (and the Clarity and Bing tags inside it) load only after you choose Accept all. The Tag Manager noscript frame was removed because it would have contacted Google before any choice.
    • 2026-09-24: The Privacy Policy was updated to list Geoapify, OpenFreeMap and the feedback service.
    • 2026-09-23: Downloads of JPEG and HEIC photos now also remove AI content credentials (C2PA), IPTC and XMP. Before this, only the EXIF block was removed.
    • 2026-09-23: Added a badge that shows when a JPEG carries AI content credentials, and a dedicated page for removing them.
    What Happens to Your Photo | GeoTag.world