Extract GPS Location from Video Metadata
Paste an MP4/MOV video's bytes (base64 or hex) and read the embedded GPS location — latitude, longitude, altitude, and a map link. Reads the QuickTime ©xyz atom and Apple's ISO 6709 location key. Runs entirely in your browser, no upload, no sign-up.
About this tool
Video GPS Metadata Extractor reads the GPS location that phones and cameras embed in an MP4 or MOV video's metadata and turns it into plain coordinates you can use: latitude, longitude, altitude (when present), and a ready-made map link. It parses the container's box tree directly in pure Rust — there is no ffmpeg, no external service, and nothing is uploaded. Everything runs locally in your browser as WebAssembly.
Two metadata layouts carry a video's location, and this tool reads both:
©xyzuser-data atom (inmoov/udta) — the classic QuickTime tag that iPhones and many Android phones write. Its value is an ISO 6709 string such as+37.7749-122.4194/.com.apple.quicktime.location.ISO6709— Apple's newer layout, where akeystable names each metadata item and the value sits in themeta/ilsttable.
Because only the metadata region matters, you don't have to paste the whole file.
A truncated head that reaches the moov box is enough — useful for large videos.
How to get the bytes
The page takes the file's bytes as base64 or hex, so you never upload the video itself. A quick way to produce them from a terminal:
# base64 of the first 256 KB (usually reaches moov on phone videos)
head -c 262144 clip.mov | base64
# or hex of the same head
head -c 262144 clip.mov | xxd -p
Paste the result, choose the matching Input encoding, and read the report.
Worked example
Paste the base64 of a San Francisco iPhone clip and you get:
GPS location found: 1
#1 ©xyz (udta)
ISO 6709 +37.7749-122.4194
Latitude 37.7749
Longitude -122.4194
Map https://www.openstreetmap.org/?mlat=37.7749&mlon=-122.4194#map=15/37.7749/-122.4194
Switch Output to JSON for a structured object with count and a
locations array (each entry has source, iso6709, latitude, longitude,
optional altitude, and map_url) — handy for scripting or feeding another tool.
Options
- Input encoding — whether the pasted bytes are base64 (standard or
URL-safe, padding optional) or hex (spaces,
:, and-separators are ignored). - Output — a readable report (default) or structured JSON.
Limits
- This reads the static location tag written once per file. It does not decode per-frame movement tracks such as GoPro's GPMF telemetry — that is a separate, proprietary binary stream.
- A valid video with no embedded location is reported as none found, not an error. Many videos are recorded with location tagging turned off.
- The bytes must reach the
moovbox. On some camerasmoovsits at the end of the file, so a short head may not contain it — paste more of the file, or the whole thing, if nothing is found.
FAQ
Is my video uploaded anywhere?
No. The tool is compiled to WebAssembly and runs entirely in your browser. You paste the file's bytes as base64 or hex, and the parsing happens on your device — nothing is sent to a server, so it is safe for private or unpublished footage.
Which videos actually contain a GPS tag?
Videos recorded on a phone or action camera with location services enabled. iPhone
.mov clips and many Android .mp4 clips write a QuickTime ©xyz location atom;
newer Apple files use the com.apple.quicktime.location.ISO6709 key. If location
tagging was off when recording, or the file was re-encoded by an editor or social
platform, the tag is usually stripped and the tool reports none found.
Do I have to paste the whole file?
Usually not. Only the moov/metadata region is parsed, so a truncated head of the
file that reaches the moov box is enough — e.g. head -c 262144 clip.mov | base64.
Some cameras place moov at the end of the file; if a short head finds nothing,
paste more of the file (or all of it).
What is the ISO 6709 string in the output?
ISO 6709 is the standard format QuickTime stores the coordinate in, e.g.
+37.7749-122.4194/ — signed decimal latitude then longitude, with an optional
altitude in metres and a trailing /. The tool shows this raw string alongside
the parsed latitude, longitude, and altitude so you can verify the source value.
Does it read GoPro or dashcam movement tracks?
No. This extracts the single static location tag written in the file's metadata. Continuous per-frame GPS — such as GoPro's GPMF telemetry track — is a separate proprietary binary stream and is not decoded here.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool video-gps-metadata-extractor "AAAAFGZ0eXBxdCAgAAACAHF0ICAAAAAubW9vdgAAACZ1ZHRhAAAAHql4eXoAEhXHKzM3Ljc3NDktMTIyLjQxOTQv"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/video-gps-metadata-extractor/?input=AAAAFGZ0eXBxdCAgAAACAHF0ICAAAAAubW9vdgAAACZ1ZHRhAAAAHql4eXoAEhXHKzM3Ljc3NDktMTIyLjQxOTQv&input_format=base64&output=reportMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
