Photos in place

Drop photos onto the map at the spot they were taken. Captions, thumbnails, lightbox, lazy-loaded sharing. No "upload a gallery" step — every photo carries its own location.

How it positions a photo

When you upload a JPEG / HEIC / PNG to a trip, the system reads the file's EXIF GPS tag if one is present. That's the photo's location on the map.

If there's no EXIF GPS (e.g. the file came from a screenshot or got stripped during a re-export), the photo snaps to the GPS point in your trip whose timestamp is closest to the photo's EXIF capture time. So a photo with a known time but no GPS still lands at roughly the right place.

Messaging-app fallback (WhatsApp, Signal)

WhatsApp and Signal strip EXIF metadata when forwarding images, but they embed the capture time in the filename:

App Filename pattern Extracted time
WhatsApp (iOS) WhatsApp Image 2026-05-01 at 14.35.26.jpeg 2026-05-01 14:35:26
WhatsApp (Android) IMG-20260501-WA0001.jpg 2026-05-01 (date only)
Signal signal-2026-05-01-14-35-26.jpg 2026-05-01 14:35:26
Camera roll 20260501_143526.jpg 2026-05-01 14:35:26

When a photo has no EXIF timestamp, the upload handler parses the original filename for these patterns. If it finds a date (and optionally a time), it uses that timestamp to match the photo to the closest GPS point — same mechanism as EXIF-timed photos.

Android WhatsApp filenames carry only the date, not the exact time, so the photo lands at the first GPS point of that day rather than the exact minute. You can drag it to the right spot after upload.

If neither EXIF nor filename yield a timestamp, the photo lands at the trip's latest known position with a small "photo time unknown" indicator that you can drag to the right spot in the trip detail.

Placement map preview

The "Place photo on map" modal in trip admin shows the full trip route — including any recent GPS data that hasn't been snap-to-roads matched yet. This way you see today's walk even if the route hasn't been processed, and can place the photo at the right spot along the live route.

Edited photos: borrow EXIF from the original

When you crop, filter, or re-export a photo in any mobile editor, the EXIF block is almost always stripped — including GPS and the original capture time. The edited photo then lands with no location, and filename time hints don't help if the photo was re-shared later (e.g. WhatsApp send-back from your camera roll — the filename reflects the send time, not the capture time).

The fix: open the photo in trip admin and click 📎 Use original for EXIF. A small drop area appears. Drop the unedited original photo there. The server reads its EXIF GPS and capture time in memory, applies them to the edited photo, and discards the original immediately — it's never written to disk and doesn't count against your storage quota.

If the original has GPS, the photo is placed exactly where it was taken (location_source: "exif_donor"). If the original only has a capture time but no GPS (rare), the system falls back to matching that time against your trip's GPS stream within a 1-hour window (location_source: "time_donor"). If neither GPS nor time is present in the original either, you'll get a friendly error message and can fall back to dragging the photo onto the map manually.

On the public map

Each photo shows as a gold-bordered thumbnail circle on the map. Click it → lightbox opens with full-resolution image + caption. Arrow keys navigate to the previous/next photo in the trip.

Photos are lazy-loaded — only the thumbs in the current viewport download eagerly; full-size images load only on lightbox open.

Captions

Markdown-lite supported: **bold**, *italic*, line breaks. Per-photo captions show in the lightbox and in social previews when sharing the photo URL directly (each photo gets its own shareable URL with proper Open Graph metadata).

Plan limits

Plan Photos per org Storage
Light 10 100 MB
Traveler 100 1 GB
Nomad 500 5 GB

Each upload is capped at 5 MB (Light) / 10 MB (Traveler) / 15 MB (Nomad). HEIC files are accepted; the server transcodes them to JPEG so the public map works in every browser.

Privacy

Photos respect the trip's visibility setting. A private trip's photos require the trip password to load. Photos inside a privacy zone are not shown on the public map (the photo file remains in your admin so you don't lose it, just hidden from the public view).

EXIF metadata other than GPS + capture time is stripped on upload — camera make/model, owner name, etc. won't leak.

Sharing a single photo

Each photo has a URL like app.whereistereza.com/o/yourname/{hash}/{trip-id}?photo={id}. Pasting that URL anywhere expands to a card with the photo as the preview image and the caption as the title.


Need help? Contact support · Where Is Tereza?