Desktop App
The DJI Metadata Embedder desktop app is a Windows and macOS
front-end for the dji-embed command line: drop a folder of footage,
pick what to make, and watch the exact CLI command it runs in the strip
under the Run button — everything the app does, the terminal can do too.

Install
Windows: download the installer
(dji-metadata-embedder-setup-<version>.exe) from the
latest release
and run it — no admin rights needed. You get the desktop app in the Start
menu plus the full dji-embed command line in any terminal, with FFmpeg
and ExifTool bundled.
Already using winget? winget install CallMarcus.DJIMetadataEmbedder
installs the portable command line only — the desktop app ships with the
installer.
macOS (Apple Silicon, macOS 14+): download the signed, notarized DMG
(dji-metadata-embedder-<version>-macos-arm64.dmg) from the same page
and drag the app to Applications. FFmpeg and ExifTool come from Homebrew
(brew install ffmpeg exiftool) — the Setup screen confirms the app
found them. Full details in Installation.
The seven modes
Drop a folder (or a single .SRT/.MP4 file) into Source and the
likely mode is picked for you. The Mode strip offers:
- Flight map — one interactive map of every flight in the folder,
with playback. Needs videos with their
.SRTflight logs. A 3D terrain map toggle renders the flights draped over real terrain instead (writesflightmap-3d.html, so the flat map is never overwritten). An Airspace zones option overlays official zone data on either map (US FAA, plus ED-269 feeds where a country publishes one), fetched from the official sources and cached beside the map for reuse; on the 3D map, published ceilings become translucent volumes. - Photo map — your still photos pinned on a map, including a full 360° panorama viewer for drone panoramas.
- Embed telemetry — writes each flight log's GPS track into the video files themselves (as copies — originals are never touched).
- Convert telemetry — one flight log or video into GPX, KML, CSV, GeoJSON, CoT or a standalone web map, for Google Earth and mapping tools.
- Verify — checks embedded metadata, video/log pairing drift, or cross-checks the recorded time and place against the sun's position.
- 360° views — opens the panorama opening-view editor
(
dji-embed panoedit) on the folder: drag each 360° panorama to the view it should open with, and Save writes the GPano tags the photo map and Google Photos honour. By default oversized panoramas are shown downscaled so older graphics cards can display them (the files and the saved view are identical either way); an Edit at full resolution option turns that off for machines with a capable graphics card. - Setup — confirms FFmpeg and ExifTool are ready, and can install what's missing.

Each mode shows a small set of curated options — the full flag surface
stays on the command line. The strip under the Run
button always shows the exact dji-embed command those options build.
Maps preview inside the app
Finished maps open right in the app, panoramas included:

Inline preview uses Microsoft Edge WebView2 on Windows (preinstalled from Windows 11 on) and the system WKWebView on macOS (always present). Without a usable WebView the app quietly opens results in your browser instead — nothing is lost.

Privacy and stored state
Everything runs on your computer; nothing is uploaded, and there is no
telemetry. The app stores exactly three things locally in
%APPDATA%\DjiEmbed\state.json on Windows
(~/Library/Application Support/DjiEmbed/state.json on macOS): your
recent folders, the window size/position, and when it last looked for a
newer version (below). Delete that file to reset all three.
Looking for new versions
The one thing the app may do online is ask whether a newer version
exists, and only if you said yes. The first time it is due, a quiet
question appears at the bottom of the left column: Look for new versions
when the app starts? That is the same question dji-embed doctor asks
once in a terminal, and the answer is shared: Yes in the app is
dji-embed doctor --online, No is dji-embed doctor --offline, and
either command changes your mind later (there is no settings screen). With
a yes, at most once a day the app makes one request to pypi.org (the same
index pip uses) for the latest version number, nothing else; nothing
about you or your files is sent. If a newer version exists, one line
appears in the same spot, Version X.Y.Z is available, with a link to the
release page. The app never downloads or installs anything itself. No
network, or pypi.org unreachable, means no line at all, never an error.
Setting DJIEMBED_NO_UPDATE_CHECK=1 in the environment switches the
whole thing off regardless of the stored answer.
Beside it, helper.log keeps what the app's map and editor helpers
printed — the same lines the command line shows in its terminal, such as
how long each 360° view save took. It is capped at about half a megabyte
(one older rotation is kept as helper.log.1), never leaves your
machine, and exists so a problem report can quote real numbers — see
Troubleshooting.
Delete it freely.