Metadata Bridge (Phone to Desktop)¶
The short answer
Open the Metadata Bridge on your phone, pick one or more reference photos from your phone's library, and tap Send To Desktop. The phone uploads each photo's GPS, capture date, and IPTC fields (city, headline, caption, keywords, copyright, and more) to a temporary cloud slot and shows a 6-character transfer code. Enter that code on the desktop modal and apply the result to your selection, or save the first waypoint as a Location Preset.
The Metadata Bridge is separate from the Mobile GPS Field Logger.
The Logger records a continuous .gpx track for path-based matching across a
day of shooting. The Bridge captures a small set of discrete reference photos
for direct apply-to-selection workflows.
When to use the Metadata Bridge¶
- You shot stand-in photos on your phone at the same locations as your camera and want that GPS on the matching desktop photos.
- You walked through a venue or a small set of locations and want one reference per spot, not a full track.
- You want a phone capture's IPTC fields (city, headline, captions, copyright, keywords) carried straight onto the desktop photos.
- You want to save a location preset from somewhere you visited on your phone, without typing coordinates.
For full-day or path-style work (a hike, a wedding circuit, a city walk where every photo needs a unique GPS), use the Logger and the GPX matching flow. For a handful of discrete points, the Bridge is faster.
How the flow works¶
flowchart LR
D1[Desktop: open<br/>Metadata Bridge] --> D2[Show QR + 6-char<br/>code receiver]
D2 -->|scan QR| P1[Phone: opens<br/>?mode=bridge]
P1 --> P2[Pick reference<br/>photo from library]
P2 --> P3[Read EXIF + IPTC<br/>build waypoint]
P3 --> P4{More photos?}
P4 -->|yes| P2
P4 -->|no| P5[Send To Desktop]
P5 --> P6[Show 6-char<br/>transfer code]
P6 -->|enter code| D3[Desktop: receive<br/>payload]
D3 --> D4[Apply To Selection<br/>or Save As Preset]
Opening the Bridge on Your Phone¶
There are three ways to open the Bridge modal on your desktop, all of which land on the same screen:
Click the phone icon in the desktop header (next to the Logger button). This is the fastest path and opens the Bridge in Apply mode by default.
On a single-photo Location panel, click the Phone button next to Ref Photo. This pre-targets your active selection: the next phone capture you receive will be ready to apply directly to that photo.
Click Presets on the Location toolbar, then From phone... at the bottom of the dropdown. Opens the Bridge with Save As Preset as the primary action.
The Bridge surface on the phone is a dedicated route at ?mode=bridge. You
do not need to open the Logger first. The legacy ?mode=metadata and
?mode=logger&capture=photo URLs both still work as aliases, so any QR you
shared earlier will keep functioning.
On your phone¶
The mobile Bridge has one job: pick reference photos from your library and send their metadata. There is no live camera capture on this surface; for real-time GPS recording use the Logger.
Pick A Reference Photo¶
Tap the Pick A Reference Photo button. The OS photo picker opens. Select any image; the Bridge reads:
- GPS (latitude, longitude, altitude, heading) from the photo's EXIF.
- Capture date from
DateTimeOriginal. - IPTC fields: city, state, country, country code, sub-location, description, headline, credit, source, instructions, copyright, artist (creator), usage terms, title, scene code, keywords, subject codes.
Each pick becomes a waypoint in the Captured strip with a 256-pixel thumbnail and an IPTC badge marking it as a library-pick. You can pick up to 24 photos per send.
No GPS in the picked photo? The Bridge can still help.
If the picked image carries IPTC but no GPS, the Bridge falls back to a one-shot live fix from the phone's Geolocation API and attaches it to the waypoint. The IPTC fields ride along regardless. Allow location once when the browser asks.
Send To Desktop¶
Tap Send To Desktop. The phone POSTs the batch to a Cloudflare KV slot
and the TransferCodeDisplay takes over the screen
with a large 6-character code (formatted ABC-DEF for legibility). Enter
that code on the desktop modal.
Payload size limit
The server caps the request body at 2 MB. The phone budgets 1.8 MB client-side and silently re-compresses thumbnails (down to 50% then 30% quality) when needed. If you exceed the cap even after recompression, the Bridge surfaces an error; capture fewer photos or remove some, then try again. With thumbnails on, expect to fit ~6 captures per send; without thumbnails, many more.
Recovery banner¶
If you closed the Transfer Code Display before the desktop entered the code, the next time you open the Bridge surface you'll see a Last Sent Code banner at the top with the cached code, the count of waypoints in it, and an expiry hint. Tap Show to bring the full-screen code back, or Forget to clear it. Codes self-destruct on the server after 24 hours (or on first successful retrieval, whichever comes first), so the banner can also expire on its own.
On the desktop¶
After the phone reports a code, enter it in the Bridge modal. Three ways:
- Webcam scan: click Open Camera in the Scan Phone QR card. The desktop's webcam scans the QR your phone shows after Send.
- Type the code: enter the 6 characters in the Enter Code input and click Import. The dash is auto-inserted; case doesn't matter.
- Auto-claim: if the phone was opened from the desktop's QR code and you Send while the desktop modal is still open, the desktop pulls the payload automatically without you typing anything.
Once received, the modal switches to the Loaded view with the received waypoints, a Camera-Clock Offset control, and the action cards.
Camera-Clock Offset¶
If the phone's clock and the camera's clock are out of sync, you can apply
an offset (+1m 30s, -45s, 00:01:30, etc.) before matching. When a
photo is selected at the moment the payload arrives, the modal computes a
Use ±N chip from the difference between that photo's DateTimeOriginal
and the nearest waypoint timestamp. One click applies the suggestion.
Apply To Selection¶
With one or more photos selected, click Apply To Selection:
- If the payload has one waypoint, that waypoint applies to every selected photo.
- If the payload has multiple waypoints, each selected photo is matched to its nearest waypoint by capture timestamp (offset-adjusted).
The Apply Preview strip shows the per-photo match before you commit, and a summary line states "Will tag X / Y will overwrite existing GPS / Z can't be matched". Manual overrides are available; pick the waypoint for any photo yourself if the time-nearest match is wrong.
Customize Fields¶
When the payload carries IPTC content, a Customize Fields disclosure appears above the Apply Preview. By default every present field is checked (applied on Apply); untick any to exclude them from the write. GPS fields are not opt-out-able. They're the core of the Bridge.
The fields, in display order:
Capture date- The
DateTimeOriginalof the picked photo. City/State / Region/Country/Country code/Sub-location- IPTC location block. Useful when the source photo was taken in a different country or state and you want the desktop session to inherit that.
Description / caption/Headline/Title- Editorial copy. Often filled by camera apps or stock-agency presets.
Credit/Source/Special instructions- Stock-agency fields.
Copyright/Creator / artist/Usage terms- Rights block. Carry these across when a phone preset already had them.
Scene code/Keywords/Subject codes- Subject classification. Keywords are merged additively; existing keywords on the destination photo are preserved.
Save As Preset¶
Click Save As Preset to add the first waypoint to your Location
Presets. The preset name defaults to the reverse-geocoded place; if a preset
of that name already exists, the modal asks whether you want to Overwrite
the existing preset or Save As a new indexed name (e.g. Bartholomew
Trail (2)). Cancel keeps everything unchanged.
To save a different waypoint than the first one, delete the leading points on the phone before sending.
Preset templates carry IPTC too
When the first waypoint has IPTC fields, the saved preset captures them as a template. Re-applying that preset later writes both the GPS and the IPTC block (subject to the Customize Fields opt-outs you choose at apply time).
Privacy and lifetime¶
Transfers go through a Cloudflare KV store and are subject to two limits:
- 24-hour TTL. A code that is never claimed self-destructs after 24 hours.
- Single-use retrieval. The first successful claim deletes the payload. Re-using a code returns "already claimed"; generate a new one.
Codes are 6 characters drawn from an alphabet that omits ambiguous glyphs
(no 0 / O, no 1 / I / l). Thumbnails attached to waypoints are
stored as small JPEGs inside the payload and never persist beyond that
single retrieval.
The phone's Bridge surface keeps a local cache of the last sent code (in IndexedDB) so you can re-display it from the recovery banner. That cache expires on the same 24-hour clock; Forget clears it immediately.
Pairing the Bridge with other tools¶
- Bridge + Apply To Selection is the fastest way to backfill GPS on a small batch (1 to 10 photos) when you walked the locations on your phone.
- Bridge + Save As Preset is the fastest way to capture a new permanent location (a recurring studio, a regular shoot spot) without typing coordinates, and it can also seed the preset's IPTC block.
- For continuous tracks (a long walk, a hike, a multi-hour event with many photos to tag at once), use the Mobile GPS Field Logger and the GPX matching flow on the Location tab.
Transfer Code Display¶
After the phone sends, the screen flips to a full-bleed display of the
6-character code. The presentation is intentionally austere: large monospace
type on a dark workspace background, "DONE" button to dismiss. The code is
shown formatted ABC-DEF for legibility but is sent and entered without the
dash.
If you accidentally tap Done before entering the code on the desktop, the recovery banner described above will resurrect it on the next Bridge open within 24 hours.