Photo GPS Location Viewer
Drop photos and see exactly where each one was taken on an interactive map. Reads EXIF GPS coordinates, altitude, bearing and camera data in your browser, then exports the whole set as GPX or CSV.
Your photos never leave this browser. EXIF parsing runs entirely on your device — no upload, no server, no copy kept. Only the map background tiles are fetched from OpenStreetMap, and those requests contain map coordinates only, never your files.
Drag to pan · scroll or use +/− to zoom · click a pin to select that photoMap data © OpenStreetMap contributors
How GPS coordinates are stored inside a photo
A geotagged photo carries a separate GPS IFD — an image file directory defined by the EXIF specification and pointed to by tag 0x8825 in the file's main TIFF header. It is a small table of numbered tags, and only a handful of them matter for locating the shot.
The surprise for most people is that the latitude is not one number. Tag GPSLatitude (0x0002) is three rationals — degrees, minutes and seconds — and each rational is itself a pair of 32-bit unsigned integers, a numerator and a denominator. All three values are unsigned, so nothing in them says which hemisphere you are in. That comes from a separate one-character tag, GPSLatitudeRef (0x0001), holding "N" or "S". Longitude works identically with GPSLongitude (0x0004) and GPSLongitudeRef (0x0003) holding "E" or "W".
Forgetting that sign rule is the single most common geotagging bug: a photo taken in Santiago or Sydney lands in the wrong hemisphere and the pin appears in the ocean, or in the mirror-image spot on the other side of the equator.
| Tag | ID | Type | What it holds |
|---|---|---|---|
| GPSLatitudeRef | 0x0001 | ASCII | N or S — the sign of the latitude |
| GPSLatitude | 0x0002 | 3 × rational | Degrees, minutes, seconds (unsigned) |
| GPSLongitudeRef | 0x0003 | ASCII | E or W — the sign of the longitude |
| GPSLongitude | 0x0004 | 3 × rational | Degrees, minutes, seconds (unsigned) |
| GPSAltitudeRef | 0x0005 | byte | 0 = above sea level, 1 = below |
| GPSAltitude | 0x0006 | rational | Metres, always positive; the ref gives the sign |
| GPSTimeStamp | 0x0007 | 3 × rational | Hour, minute, second in UTC — no timezone offset |
| GPSImgDirection | 0x0011 | rational | 0–359.99°, the compass bearing the lens faced |
| GPSDateStamp | 0x001D | ASCII | YYYY:MM:DD in UTC |
Note that GPSTimeStamp and GPSDateStamp are UTC straight from the satellites, while DateTimeOriginal in the main EXIF block is the camera's local wall clock with no timezone attached. Comparing the two is how forensic tools recover which timezone a photo was actually shot in.
How precise is a coordinate? Decimal places versus real distance
One degree of latitude is almost exactly 111,320 metres anywhere on Earth, because meridians are great circles. So every decimal place you add divides the uncertainty by ten. That gives a table you can read off directly when you are deciding how much of a coordinate is safe to publish.
| Decimals | Example | Latitude precision | Resolves to |
|---|---|---|---|
| 0 | 48 | 111 km | A large country or region |
| 1 | 48.8 | 11.1 km | A whole city |
| 2 | 48.85 | 1.11 km | A neighbourhood |
| 3 | 48.858 | 110 m | A city block |
| 4 | 48.8582 | 11 m | A building footprint |
| 5 | 48.85824 | 1.1 m | A doorway — which flat, which entrance |
| 6 | 48.858239 | 0.11 m | Finer than any consumer GPS can measure |
| 7 | 48.8582391 | 11 mm | Survey-grade RTK territory only |
Longitude behaves differently. A degree of longitude is 111,320 m only at the equator and shrinks by cos(latitude) as you move toward the poles: about 78.6 km per degree in Paris at 48.86°N, 71.7 km in Anchorage at 50°N of extra squeeze, and effectively zero at the pole itself. A single decimal place of longitude therefore covers less ground the further north or south you are.
None of this says anything about accuracy. A phone writing six decimals is claiming a 10-centimetre resolution while its actual fix is typically 3 to 10 metres outdoors with a clear sky, and can drift 50 m or more between buildings where the receiver is falling back on Wi-Fi and cell-tower positioning. Extra decimals are precision, not truth.
The privacy problem: what a photo gives away
At five decimal places a coordinate identifies a doorway. A photo of a pet on the living-room rug, uploaded as the original file, therefore publishes a home address to anyone who opens it in a metadata viewer — and it takes one click. The same pattern maps a child's school from a first-day photo, or a workplace from a desk shot. Photographers have been located from images posted anonymously, and holiday albums shared while still travelling advertise an empty house on precise dates.
The saving grace is that most social platforms re-encode uploads, which discards the EXIF block as a side effect of the resize. The risk lives in the paths that do not re-encode: files sent as “documents” or original-quality attachments, cloud-drive links, email attachments, AirDrop, and any site that serves back the file you gave it.
| Path | GPS survives? | Why |
|---|---|---|
| Instagram, Facebook, X, TikTok | No | Uploads are re-encoded and resized; EXIF is dropped from the delivered file (the platform still keeps what it read) |
| WhatsApp, Signal, Messenger (normal send) | No | Compressed for transport, metadata stripped |
| The same apps, sent as a document / file | Yes | Document mode is a byte-for-byte transfer — this is the most common accidental leak |
| Email attachment | Yes | Nothing in the mail path rewrites the image |
| Google Drive, Dropbox, iCloud link | Yes | Storage services hand back the original bytes |
| AirDrop / Nearby Share | Yes | Direct file copy unless you turn location off in the share sheet |
| Discord, Slack, Reddit | Usually no | Attachments are processed, but behaviour varies by client and file size |
| Your own website or a forum that hosts originals | Yes | Whatever you upload is exactly what visitors download |
Removing location before you share
- iOS / iPadOS: in Photos, select the images, tap Share, then Options at the top of the sheet and switch Location off. To wipe it from the library itself, use Share → Adjust Location → Revert, or Info → swipe the location row and remove it.
- Android: in Google Photos open the image, tap the info button, then Remove location. Some OEM galleries expose the same option as “Remove location data” in the share sheet. To stop it being written in the first place, turn off Save location (or “Location tags”) in the Camera app settings.
- Windows: right-click the file → Properties → Details tab → Remove Properties and Personal Information. Choose “Create a copy with all possible properties removed”, or tick just the GPS fields to strip those alone.
- macOS: Preview → Tools → Show Inspector → the GPS tab has a Remove Location Info button. In Photos, use Image → Location → Hide Location before exporting, and untick “Location Information” in the export dialog.
- Any platform, command line:
exiftool -gps:all= -xmp:geotag= photo.jpgremoves every GPS tag, including the XMP copies that some editors write alongside EXIF. - Quick and dirty: screenshotting a photo, or re-saving it as a PNG, produces a file with no capture metadata at all — at the cost of quality and of the tags you might want to keep.
Check, do not assume
“I turned location off” is worth verifying on the actual file you are about to send, because GPS can also live in an XMP sidecar block, in maker-note vendor tags, or in a duplicate the editor left behind. Drop the exported copy into the viewer above: if no pin appears, the coordinates really are gone.
Which file formats can carry GPS at all
EXIF is a TIFF-structured block, so it rides along in formats that reserve a container for it. Formats built for the web mostly do not, which is why a photo that lost its location may simply have been saved to the wrong format.
| Format | Carries GPS? | Where it lives |
|---|---|---|
| JPEG / JPG | Yes | APP1 marker segment holding the TIFF header and GPS IFD — the standard case |
| HEIC / HEIF | Yes | An Exif item inside the ISOBMFF box structure; the iPhone default |
| TIFF | Yes | Native — EXIF is literally TIFF directories |
| RAW (DNG, CR2/CR3, NEF, ARW, ORF, RAF) | Yes | Nearly all are TIFF derivatives; GPS arrives from the body's receiver or a paired phone |
| PNG | Rarely | An eXIf chunk was only standardised in 2017 and almost nothing writes it; exporting to PNG effectively strips location |
| WebP | Rarely | The RIFF container has an optional EXIF chunk, but conversion tools usually drop it |
| AVIF | Sometimes | Same ISOBMFF mechanism as HEIC, but encoders often omit it |
| GIF, BMP, SVG | No | No EXIF container in the format at all |
| Screenshots (PNG or HEIC) | No | Rendered by the OS from the display buffer — there is no camera and no fix to record |
What to do with the GPX and CSV exports
GPX is the interchange format the whole outdoor-mapping world already reads. Every located photo becomes a <wpt> waypoint carrying its coordinates, elevation, capture time and filename, wrapped in a GPX 1.1 document:
- Trip reconstruction: import the GPX into Google Earth, Gaia GPS, Komoot, Garmin BaseCamp, QGIS or Organic Maps and every shot from the trip appears as a labelled waypoint, in the order the timestamps put them.
- Geotagging the rest of a shoot: if your phone was in your pocket and your camera was not, the phone photos' waypoints give you the reference track for aligning DSLR frames by time.
- Fieldwork and surveys: CSV drops straight into a spreadsheet or a GIS layer, with decimal and DMS coordinates, altitude, bearing, capture time and camera in separate columns.
- Auditing before you publish: export the CSV of an album and scan the coordinate column for anything near home before the folder goes anywhere.
Both exports are generated in the page from data that never left your device, and the map background is the only thing fetched from the network — plain OpenStreetMap raster tiles, requested by tile coordinate.