How to plot photo location from exif on a map
- Step 1Use the original camera file, not a shared copy — Work from the file straight off the phone or camera. Photos re-saved by Instagram, WhatsApp, Twitter/X, or Facebook have already had EXIF stripped on upload, so they will report no GPS even if the original was geotagged. AirDrop, email-as-attachment, and SD-card copies preserve EXIF; screenshots never had it.
- Step 2Drop the JPEG or TIFF onto the tool — The tool accepts a single image file.
piexifjsonly parses JPEG and TIFF EXIF, so use those formats — HEIC, PNG, and WebP will not return coordinates here (see the edge cases). Free tier allows one file up to 10 MB. - Step 3Let the EXIF parse run in your browser — The tool reads the
GPSsub-IFD, takes tags 1–4 (latitude ref, latitude triplet, longitude ref, longitude triplet), and converts each degrees/minutes/seconds rational pair into decimal degrees with the hemisphere sign applied (S/Wnegate). No bytes are uploaded. - Step 4Read the map marker — or the no-GPS notice — If
hasGpsis true, a Leaflet/OpenStreetMap map renders at zoom 13 with a marker at the coordinates; click the marker to see the latitude and longitude to five decimal places. If no valid triplet was found, you get No GPS data found in EXIF. - Step 5Judge whether the location is sensitive — Zoom 13 shows the neighbourhood; the underlying coordinates are precise. Decide whether the pin reveals something you do not want public — your home, a workplace, a clinic, a friend's address — before the photo goes anywhere.
- Step 6Strip the GPS if needed, then re-check — If the location is sensitive, run the photo through the EXIF Scrubber to remove the GPS (and other) metadata, then drop the scrubbed copy back here to confirm it now reports No GPS data found in EXIF.
What the previewer reads, returns, and shows
The tool's full contract. It is a read-only viewer — it never modifies your file.
| Aspect | Behaviour | Notes |
|---|---|---|
| Input | One image file (JPEG or TIFF EXIF) | piexifjs parses JPEG/TIFF only; single file, not a batch |
| EXIF fields used | GPS IFD tags 1–4 only (lat ref, lat, lon ref, lon) | Altitude, bearing, GPS timestamp, and date are NOT decoded or shown |
| Output object | { hasGps, lat, lon } as JSON | lat/lon are decimal degrees; hasGps is true only when both are finite |
| Map render | Leaflet on OpenStreetMap tiles, fixed zoom 13 | Scroll-wheel zoom is off; marker popup shows coords to 5 decimals |
| No-GPS result | No GPS data found in EXIF notice | Shown when the GPS triplet is missing or under three rationals |
| File modification | None | Read-only; use the EXIF Scrubber to actually remove GPS |
Free vs paid file limits for the Security family
Limits apply to the single image you drop. The previewer is single-file regardless of tier (no batch).
| Tier | Max file size | Files at once | Typical fit |
|---|---|---|---|
| Free | 10 MB | 1 | Full-res phone and most DSLR JPEGs |
| Pro | 100 MB | Schema is single-file for this tool | Large TIFFs / scanned originals |
| Pro-media | 500 MB | Single-file for this tool | Oversized panoramas / medium-format scans |
| Developer | 2 GB | Single-file for this tool | Anything you would realistically hand a viewer |
Cookbook
Concrete walk-throughs for the most common privacy-preview situations. Coordinates shown are landmarks, not real personal locations.
A marketplace listing photo that points at your front door
You are about to post a couch for sale and the photo was taken in your living room with an iPhone. iOS geotags camera photos by default, so the JPEG carries your home coordinates. Drop it here first.
Input: IMG_4821.JPG (straight from Photos -> export unmodified original)
Result:
{
"hasGps": true,
"lat": 40.74220,
"lon": -73.98910
}
Map: marker drops on your block at zoom 13.
Action: run it through /image-tools/exif-scrubber, then
re-preview -> "No GPS data found in EXIF" -> safe to post.Confirming a downloaded social photo is already clean
Someone sent you an image they saved from Instagram and you want to know if it still carries a location. Platforms strip EXIF on upload, so the expected answer is no GPS.
Input: instagram_save.jpg
Result:
{
"hasGps": false
}
UI: "No GPS data found in EXIF.
Either this photo was never geotagged, or GPS was
already stripped."
Interpretation: Instagram removed the EXIF on upload.
The original poster's file may still be geotagged.A southern-hemisphere photo to verify the sign handling
A photo taken in Sydney should map below the equator. The previewer applies the GPSLatitudeRef / GPSLongitudeRef hemisphere flags, so a 'S' ref produces a negative latitude.
Stored EXIF GPS IFD:
GPSLatitudeRef = "S"
GPSLatitude = [33,1] [52,1] [4080,1000] (33 52' 4.08")
GPSLongitudeRef = "E"
GPSLongitude = [151,1] [12,1] [36000,1000]
Decoded:
{
"hasGps": true,
"lat": -33.86780,
"lon": 151.21000
}
Map: marker lands on Sydney Harbour, not the North Atlantic.Before/after a scrub, in one workflow
The cleanest way to prove the EXIF Scrubber worked is to preview before and after. This is the standard privacy loop.
Step 1 preview original -> hasGps: true, marker shown Step 2 /image-tools/exif-scrubber -> downloads stripped copy Step 3 preview the stripped copy -> "No GPS data found in EXIF" If step 3 still shows a marker, you scrubbed the wrong copy (or re-exported the geotagged original by mistake).
A screenshot of a photo carries no location
Screenshots are freshly rendered images with no camera EXIF, so they never carry the original's GPS. This trips people who screenshot a photo to 'share it safely' but actually just lose the EXIF either way.
Input: Screenshot 2026-06-13.png
Result: png is not parsed by piexifjs for EXIF GPS here ->
"No GPS data found in EXIF"
Takeaway: a screenshot has no GPS, but it is also not the
original -- to audit the real photo, preview the camera file.Edge cases and what actually happens
Photo has no GPS because the camera never wrote it
By designIf Location Services were off for the Camera app, or the camera has no GPS module, the JPEG simply has no GPS IFD. The tool returns hasGps: false and shows No GPS data found in EXIF. This is the correct, geotag-clean state — nothing is wrong with the file or the tool.
Image was downloaded from Instagram, X, WhatsApp or Facebook
Stripped upstreamThese platforms remove EXIF on upload for privacy and storage reasons. A copy saved from them reports no GPS even when the original was heavily geotagged. To audit the real location, you must obtain the original camera file — the platform copy has nothing left to read.
HEIC file from a recent iPhone
Unsupported formatpiexifjs parses JPEG and TIFF EXIF, not HEIC/HEIF. A .heic file will not yield coordinates here. Convert it to JPEG first (an image converter does this without re-geotagging), then preview the JPEG.
PNG or WebP image
Unsupported formatPNG and WebP do not carry GPS the way camera JPEGs do, and the previewer's piexifjs path targets JPEG/TIFF. Expect No GPS data found in EXIF. Use the original JPEG/TIFF if you need a location read.
GPS tags present but the latitude/longitude triplet is incomplete
No location dataDecoding needs a full degrees/minutes/seconds triplet (three rational pairs) for both latitude and longitude. If a camera wrote partial or malformed GPS tags, the decimal conversion yields NaN, hasGps is false, and you see No GPS data found in EXIF rather than a wrong pin.
File larger than your tier's limit
413 rejectedFree tier caps a single image at 10 MB. A larger TIFF or panorama exceeds it and is rejected before parsing. Most phone/DSLR JPEGs are well under 10 MB; upgrade to Pro (100 MB) or higher for oversized originals.
You expected to read coordinates without loading the map
Not availableWhen GPS is present the tool renders the Leaflet/OpenStreetMap map and a marker; the coordinates appear in the marker popup (five decimals). There is no separate 'coordinates only, no tiles' mode — the map loads whenever a location is found. The tile requests reveal only the map area to OSM, never your file.
Coordinates land in the ocean or somewhere implausible
Check the sourceA pin in the Gulf of Guinea (near 0,0) usually means a zeroed or corrupt GPS field rather than a real null-island photo. Coordinates can also be deliberately faked by editing EXIF. Treat a surprising location as a prompt to verify against the image content, not as ground truth.
Map tiles fail to load on a locked-down network
Tiles blockedThe map needs OpenStreetMap's tile CDN over HTTPS. On a network that blocks third-party tile servers the marker may sit on a blank canvas. The EXIF parse and the coordinate decode still happened locally — the gap is only the visual basemap.
Frequently asked questions
Does my photo get uploaded anywhere?
No. piexifjs reads the EXIF and Leaflet renders the map entirely in your browser. The only network traffic is OpenStreetMap fetching the map tiles for the area around the coordinates — your photo's bytes never leave your device, and the tile server never sees your file.
Which file formats can it read GPS from?
JPEG and TIFF, because the tool uses piexifjs, which parses those formats. HEIC, PNG, and WebP will not return coordinates. For a HEIC photo, convert it to JPEG first and then preview the JPEG.
Why does my photo show 'No GPS data found in EXIF'?
Three common reasons: Location Services were off for the Camera when the shot was taken; the file is a copy that a social platform stripped EXIF from on upload; or it is a screenshot, which never had camera EXIF. It can also mean the GPS was already removed by a scrubber — which is the goal if you ran one.
Does it show altitude, compass direction, or the time the photo was taken?
No. The previewer decodes only latitude and longitude (from GPS IFD tags 1–4) and returns {hasGps, lat, lon}. Altitude, GPS bearing/direction, and the GPS timestamp are not parsed or displayed. It is a location-on-a-map tool, not a full metadata dump.
How precise is the location?
The map renders at zoom 13 (neighbourhood scale), but the underlying coordinates are full precision and the marker popup shows them to five decimal places — roughly metre-level. For a privacy decision, assume the location is precise enough to identify a specific building.
Can I view several photos' locations at once?
No. The tool previews one photo at a time and shows a single marker. There is no multi-pin or batch mode. Preview each file individually.
It found my home — how do I remove the location?
Run the photo through the EXIF Scrubber, which strips GPS (and other metadata) and gives you a clean copy to share. Then drop the scrubbed copy back here to confirm it reports no GPS.
Can GPS coordinates in EXIF be faked?
Yes. EXIF GPS values are just bytes and can be written or altered by editing tools. The previewer reports what is stored, not whether it is true. If location accuracy matters, corroborate with the image content rather than trusting the metadata alone.
Does the map zoom in further if I scroll?
Scroll-wheel zoom is disabled on this map, and it opens at zoom 13. The marker pinpoints the exact coordinates regardless of the basemap zoom, and the popup gives you the numbers.
Is there a file-size limit?
Yes — the Security family's free tier caps a single image at 10 MB. Pro raises it to 100 MB, Pro-media to 500 MB, and Developer to 2 GB. Almost all camera JPEGs fit comfortably in the free 10 MB.
What else can I check about a suspicious file here?
Pair this with the Magic-Byte Validator to confirm the file is really a JPEG and not a renamed file, and the Hex Header Inspector to look at the raw bytes. The Entropy Analyzer flags whether a file is compressed or possibly hiding data.
Is this the same as Google Photos' map view?
No — it is the privacy-preserving opposite. Google Photos uploads your image and reads its location server-side; this tool reads the same coordinates locally and renders them on OpenStreetMap without sending the file anywhere. See the EXIF GPS Viewer vs Google Photos comparison.
Privacy first
Every JAD Security operation runs entirely in your browser. Files, passwords, and PGP private keys never leave your device — verified by zero outbound network requests during processing.