Skip to content

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 desktop Metadata Bridge modal in light mode, titled "Metadata Bridge / Phone to Desktop", showing the eyebrow "Receive From Phone" and headline "Bring Photo Metadata Across", a large QR code labeled "Scan to open the Bridge on your phone" pointing at /app.html?mode=bridge, the URL underneath in monospace, a divider reading "Or hand it off after the phone sends", and two cards beneath: "Scan Phone QR" with an Open Camera button, and "Enter Code" with an ABC-DEF placeholder input and an orange Import button. The desktop Metadata Bridge modal in dark mode, titled "Metadata Bridge / Phone to Desktop", showing the eyebrow "Receive From Phone" and headline "Bring Photo Metadata Across", a large QR code labeled "Scan to open the Bridge on your phone" pointing at /app.html?mode=bridge, the URL underneath in monospace, a divider reading "Or hand it off after the phone sends", and two cards beneath: "Scan Phone QR" with an Open Camera button, and "Enter Code" with an ABC-DEF placeholder input and an orange Import button.
The desktop Metadata Bridge modal. Scan the QR with your phone to open the Bridge surface there, or take the handoff after the phone sends with Open Camera (scans the phone's transfer QR with your laptop webcam) or Enter Code (type the 6-character code by hand).

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.

The mobile Metadata Bridge surface on a 390x844 viewport, dark workspace, with the eyebrow "PHONE → DESKTOP" in muted orange above the italic headline "METADATA BRIDGE", a one-line subtitle "Send a phone photo's GPS, capture date, and IPTC fields to your desktop session.", and a single full-width orange CTA "PICK A REFERENCE PHOTO" with the caption "Reads GPS, capture date, location, captions and keywords from the file's metadata." beneath it. A close X button sits in the top-right corner.
The empty Bridge surface on a phone. One CTA, no clutter; tap it to open the system photo picker.

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.

The mobile Metadata Bridge with one captured reference photo. The Captured strip shows a thumbnail of an outdoor sample photo with an orange "IPTC" badge in its top-left and a circular X delete button in its top-right, a "12:58 PM" timestamp underneath, and a heading "CAPTURED (1)" with a "CLEAR ALL" tertiary action. Below the strip is a full-width orange "SEND TO DESKTOP" button. The "PICK A REFERENCE PHOTO" CTA remains above for adding more.
One reference photo captured. The IPTC badge means the waypoint also carries city, headline, caption, keywords, and any other fields the source file had. Tap a thumbnail's X to remove a single capture, or Clear All to throw the whole batch away.

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 DateTimeOriginal of 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.