Free · Open source · No ads

Every photo, exactly where and when it happened.

GeoTag Camera is an Android camera that stamps the GPS location, address and time onto each photo, and signs the photo on the phone so anyone can later check it hasn't been edited. I built it for surveyors, inspectors, students and NGO teams who need proof, not clutter.

No ads. No paywall. I know, it's suspicious.

Version 1.4.0 · Android 8.0 or newer · GPL-3.0-or-later

  • No ads
  • No tracking
  • No Google Play services
  • Works offline
  • Built in India

Why this exists

Most geotagging apps get the basics wrong

Every app I tried wanted something before it let me take a photo. A video ad before the camera opened. A subscription to remove a stamp field I didn't want. Permissions that have nothing to do with a camera. And the moment there was no signal, half of it stopped working, which is exactly where field work happens.

So I wrote my own and published the code. It does one job: a photo that shows where and when it was taken, that you can check later.

1. Frame it

The stamp is drawn live on the viewfinder by the same code that burns it into the photo, so what you frame is what you get.

2. Shoot it

Location, address and time go onto the image and into its EXIF data. The photo is hashed and signed on the phone and saved to your normal gallery.

3. Prove it

Anyone with the app can verify the photo later, offline. Export the locations or build a PDF site report when the job is done.

Screens

What it looks like

What's inside

Everything a proof-of-location photo needs

A compact stamp, signed at capture

Place, address with Plus Code, coordinates, date and time with GMT offset, plus accuracy, altitude and bearing if you want them. Every line stays on one line, so the Bar stamp covers about a sixth of a portrait photo. Or pick the small Minimal label.

A map drawn on the phone

The stamp map comes from OpenStreetMap, rendered on the device with MapLibre and OpenFreeMap tiles. No API key, no account. Places you've shot in stay available offline, and you can save a 2 to 30 km area before a trip.

Works without signal

Capturing, stamping, signing and verifying need no connection. With no signal the stamp uses the nearest address already cached on the phone, and the Plus Code is always worked out on the device. No GPS fix yet? The photo waits for one instead of being lost.

Projects for each site or job

Pick a project under the viewfinder and photos go into it. Filter the gallery by project, move photos between projects, rename or archive them. Deleting a project never deletes photos.

A note and your own text on the stamp

A sticky note such as "Pole 12, north wall" is burned into every photo until you change it. A fixed custom line holds a contract number or an inspector's name.

Export to CSV, KML or GeoJSON

Export a project, a selection or everything, with time, place, note and each photo's SHA-256. CSV opens in Excel and Sheets, KML in Google Earth, GeoJSON in QGIS and ArcGIS.

A PDF site report

A cover with an overview map of numbered photo locations and an index, then two photos per page with time, place, coordinates, note and a fresh verification result for each file.

Verify any photo

The proof travels inside the file, so the app can check a photo someone else sent you, on any phone, offline. The result shows the signing key's fingerprint and whether it is your own phone's key.

Import your photos back

Reinstalled the app or moved to a new phone? Gallery, Import photos re-adds GeoTag Camera photos already in your gallery to the in-app list. The proofs are inside the files, so they still verify.

A camera that fits your phone

Zoom presets from the real lenses, a flash button only when there is a flash, and the phone maker's Night, HDR and Portrait modes when it offers them. 4:3, 16:9, 1:1 or Full, and the saved photo matches the frame on screen.

Your organisation on the stamp

Add your college, company or project name and logo, and a hand-drawn signature inside the stamp. Professional mode can make the signature required. None of it is behind a paywall.

No ads, no trackers, no Google

No ad SDKs, no analytics, no crash reporters, no account. Location comes from Android's own location services, so the app runs on phones without Google Play services.

How verification works

What the signature proves, and what it doesn't

  1. The stamp is burned in and the photo is saved as a JPEG.
  2. The image data is hashed with SHA-256. Metadata segments are left out, so the proof can be written into the file without changing the hash.
  3. The hash, latitude, longitude and time are signed with an ECDSA P-256 key created on your phone in the Android Keystore. The private key can't be exported.
  4. The hash, signature and public key are embedded in the photo's EXIF and XMP, so the proof goes wherever the file goes.

Verifying recomputes the hash, checks the signature against the embedded key, and checks the photo's EXIF location and time against what was signed. No network, no account.

A "verified" result tells you

  • The pixels, including the burned-in stamp, haven't changed since signing.
  • The EXIF latitude, longitude and capture time still match what was signed.
  • Which key signed it, as a short fingerprint you can compare with one the photographer gives you.

It does not tell you

  • Who took the photo. The key isn't tied to a person; someone can strip the proof and re-sign an edit with their own key. That's what the fingerprint is for.
  • That the GPS or the clock were right. A spoofed fix is stamped like any other.
  • Anything about other metadata such as altitude or camera details, which isn't signed.

Messaging apps that recompress photos change the pixels, so the copy no longer verifies even though nobody tampered with it. Send the original file when it matters. The full details are in the README.

Who it's for

Two setups, picked on first launch

The app asks once which one fits you. You can switch in Settings any time, and nothing is locked in either mode.

Field

Students, NGO and field staff

You're recording a well, a school or a road in a village with no signal, or submitting fieldwork for a report. You want it quick and you can't pay for basics.

  • Simple stamp with place, address, coordinates and time
  • Fewer settings on screen
  • Optional signature, notes and projects when you need them

Professional

Surveyors and inspectors

You need a photo that shows it was taken on site, at that time, and a report the client accepts at the end of the job.

  • Altitude, accuracy and bearing on the stamp
  • Required signature before a photo is saved
  • Every setting visible, plus exports and PDF reports

Privacy

Your photos stay on your phone

I didn't build a server, so there's nothing for me to collect. These are the only times the app touches the network, and the privacy policy has the details.

  • No ads, analytics or trackers. No account, no cloud sync, no automatic crash reports.
  • Location only while the camera is open. Never in the background.
  • Map tiles from OpenFreeMap, for the area around you, cached on the phone. You can turn the map off.
  • Weather is off by default. If you turn it on, your position is rounded to about 1 km before it goes to Open-Meteo.
  • Addresses come from your phone's own geocoder, which on phones with Google services is usually Google's.
  • Kept out of cloud backups. Delete all data wipes the app's records; your gallery photos stay yours.

Questions

Frequently asked

Is GeoTag Camera really free, with no ads or subscriptions?

Yes. It's open source under the GPL, version 3 or later, and every feature works without paying. There are no ads and no trackers in the app, and there won't be.

Does it work without an internet connection?

Yes. Taking, stamping, signing and verifying photos need no connection. Addresses come from your phone's built-in geocoder, which usually needs the network, so I cache them on the phone: out of signal, the stamp uses the nearest address already looked up, and the Plus Code is always worked out on the device. The map works offline for places you've already shot in, and you can save a whole area before a trip.

What data does it collect?

None. Nothing is sent to me, because I didn't build a server. Location is only used while the camera screen is visible. The stamp map downloads OpenStreetMap tiles for your area from OpenFreeMap (no account, no key) and keeps them on the phone. The weather chip is off by default; if you turn it on, your position is rounded to about 1 km before it goes to Open-Meteo. Address lookup uses your phone's own geocoder, which on phones with Google services is usually Google's. App data is kept out of cloud backups and device transfers.

Do I need Google Play services?

No. Since 1.4.0 the app gets your location from Android's own location services, so it runs on phones without Google, including de-Googled ones. Without a geocoder on the phone the stamp still shows coordinates and the Plus Code.

How does the tamper-evident photo feature work?

Every photo's image data is hashed with SHA-256 and signed together with the capture latitude, longitude and time, using a private key created on your phone in the Android Keystore. The hash, signature and public key are embedded in the photo, so the app can later check that the pixels, including the burned-in stamp, and the signed location and time haven't changed. It doesn't prove who took the photo or that the GPS was right, and re-compressing the photo breaks the check.

Can I verify a photo that someone else sent me?

Yes. The proof travels inside the photo, so anyone with the app can verify it on any phone, offline. The result shows a short fingerprint of the signing key and whether it is your own phone's key, so you can compare it with the fingerprint the sender gives you. Ask for the original file: messaging apps often recompress photos.

Which APK should I download?

Most phones want the arm64-v8a APK. Older 32-bit phones need armeabi-v7a, Chromebooks and emulators x86_64. If you're not sure, the universal APK works everywhere but is bigger. The download page has a table and the SHA-256 checks.

Why won't 1.4.0 install over my older version?

Versions up to 1.3.0 were signed with a development key and 1.4.0 uses the project's permanent key, so Android treats them as different apps. Uninstall the old version first, then install 1.4.0. Your photos stay in the gallery and still verify, and Gallery, Import photos re-adds them to the in-app list. Later updates install in place.

Is it on F-Droid or Google Play?

Not yet. The F-Droid and IzzyOnDroid listings are in progress, and the download page will link them once they're live. Until then, install the signed APK from GitHub, or let Obtainium keep it updated from there. A Play Store release may come later.

How do I add GPS location and time to photos on Android?

Install GeoTag Camera, allow camera and location, wait for Location locked, and take the photo. The place, address, coordinates, date and time (and a small map) are burned into the image, and the same location and time are written to the photo's EXIF data. Photos are saved to your gallery in Pictures/GeoTagCamera.

Is GeoTag Camera an alternative to GPS Map Camera or Timestamp Camera?

Yes, for the same job: a camera that puts location, address, map and time on the photo. The differences are that GeoTag Camera is free and open source with no ads, subscriptions or trackers, works without Google Play services, keeps its map available offline, and signs every photo so edits can be detected later.

Can I export photo locations to Excel, Google Earth or QGIS?

Yes. In the gallery, choose a project or select photos, then Export locations: CSV opens in Excel and Google Sheets, KML in Google Earth, and GeoJSON in QGIS or ArcGIS. You can also build a PDF site report with an overview map.

Who is it built for?

College students documenting fieldwork, land and infrastructure surveyors, inspectors, NGO and government field staff, and anyone who needs to show exactly where and when a photo was taken. The Field and Professional setups cover the two ends of that range.

Can I put my college or organisation's name on the stamp?

Yes, with a logo, a fixed custom line such as a contract number, and a hand-drawn signature. None of it is behind a paywall.

Take a photo that can prove itself.

Version 1.4.0 for Android 8.0 and newer. Free, open source, no account.

What's next

Where it's going

I maintain this on my own time. 1.4.0 is the first full release after three previews; the changelog has every change. These are the things I'm working towards, roughly in order.

New in 1.4.0

  • Projects
  • Notes and custom text on the stamp
  • CSV, KML and GeoJSON export
  • PDF site reports
  • Import photos
  • No Google Play services

Next

  • Quick-capture shortcut
  • Batch mode with numbered notes
  • Proof pack: photos, manifest and signatures in one zip
  • Verify a photo on the web, without the app
  • Before and after pairing
  • Hindi and Bengali

Later

  • Video geotagging
  • Track log, distance and area
  • Voice notes
  • Home screen widget
  • Biometric app lock
  • Local backup and restore
  • Material You colours