Skip to main content

Documentation Index

Fetch the complete documentation index at: https://photocli.com/llms.txt

Use this file to discover all available pages before exploring further.

photo-cli info scans photos in a folder, extracts each photo’s EXIF date taken and GPS coordinates, optionally resolves those coordinates to a human-readable address through a reverse geocode provider, and writes all the data to a CSV file. No files are copied or modified. The resulting CSV can be opened in any spreadsheet application or imported directly into Google My Maps or Google Earth for interactive location exploration.

Synopsis

photo-cli info [options]

Use cases

  • Audit your photo collection to see which photos are missing dates or GPS data.
  • Build a spreadsheet of photo locations and dates for personal records.
  • Import photo coordinates into Google My Maps to visualize where your photos were taken on an interactive map.
  • Import into Google Earth Desktop and export as KMZ/KML for use in Google Earth Web.

Arguments

Required

--output, -o
string
required
File system path where the CSV report will be written. Include the file name and .csv extension — for example, photo-info.csv.

Optional

--input, -i
string
File system path to read photos from. Defaults to the current working directory. No files in this path are modified.
--all-folders, -a
boolean
Scan all subfolders recursively. Without this flag only the top-level input folder is scanned. No extra value required — pass the flag alone.
--no-taken-date, -t
enum
Action to take when a photo has no EXIF date taken.
NameValue
Continue (default)0
PreventProcess1
--no-coordinate, -c
enum
Action to take when a photo has no GPS coordinate.
NameValue
Continue (default)0
PreventProcess1
--invalid-format, -x
enum
Action to take when a file cannot be parsed as a valid photo format.
NameValue
Continue (default)0
PreventProcess1
--missing-reverse-geocode, -z
enum
Action to take when any photo has missing reverse geocode information.
NameValue
Continue (default)0
PreventProcess1
--reverse-geocode, -e
enum
Third-party provider used to resolve GPS coordinates into a human-readable address. See reverse geocoding overview for provider setup and API key details.
NameValue
Disabled (default)0
BigDataCloud1
OpenStreetMapFoundation2
GoogleMaps3
LocationIq5
--openstreetmap-properties, -r
string
Space-separated OpenStreetMap address property names used to build the address string. Required when --reverse-geocode is OpenStreetMapFoundation or LocationIq. Example: country city town suburb.
--bigdatacloud-levels, -u
string
Space-separated BigDataCloud admin level numbers. Required when --reverse-geocode is BigDataCloud.
--bigdatacloud-key, -b
string
API key for BigDataCloud. Also configurable via the PHOTO_CLI_BIG_DATA_CLOUD_API_KEY environment variable.
--googlemaps-types, -m
string
Space-separated Google Maps address component types. Required when --reverse-geocode is GoogleMaps.
--googlemaps-key, -k
string
API key for Google Maps. Also configurable via the PHOTO_CLI_GOOGLE_MAPS_API_KEY environment variable.
--locationiq-key, -q
string
API key for LocationIq. Also configurable via the PHOTO_CLI_LOCATIONIQ_API_KEY environment variable.
--has-paid-license, -h
boolean
Bypass the free-tier rate limit when using LocationIq with a paid license.
--language, -l
string
Language/culture value to get localized address results from the reverse geocode provider. See your provider’s documentation for supported values.

Example

photo-cli info \
  --all-folders \
  --output photo-info.csv \
  --reverse-geocode OpenStreetMapFoundation \
  --openstreetmap-properties country city town suburb \
  --no-taken-date Continue \
  --no-coordinate Continue

Console output

Searching photos: finished. 17 photos found.
Parsing photo exif information: finished.
Reverse Geocoding: finished.
Writing csv report: finished.
- 15 photos has taken date and coordinate.
- 1 photos has taken date but no coordinate.
- 1 photos has no taken date and coordinate.

CSV output columns

The output CSV contains one row per photo with the following columns:
ColumnDescription
PhotoPathAbsolute path to the source photo file
PhotoNewPathEmpty for info — only populated by copy
PhotoDateTakenEXIF date and time the photo was taken
ReverseGeocodeFormattedHuman-readable address built from the configured provider and properties
LatitudeGPS latitude extracted from EXIF
LongitudeGPS longitude extracted from EXIF
PhotoTakenYearYear component of the taken date
PhotoTakenMonthMonth component of the taken date
PhotoTakenDayDay component of the taken date
PhotoTakenHourHour component of the taken date
PhotoTakenMinuteMinute component of the taken date
PhotoTakenSecondsSeconds component of the taken date
Address1Address8Individual address components returned by the reverse geocode provider

Google Maps and Google Earth integration

The CSV output from photo-cli info (or photo-cli copy) can be imported directly into Google’s mapping tools to visualize your photo locations on an interactive map. Google My Maps
  1. Open Google My Maps and create a new map.
  2. On a layer, click Import and upload your CSV file.
  3. Select Latitude and Longitude as the location columns, and choose a column such as ReverseGeocodeFormatted as the marker title.
You can add multiple layers — for example, one per year or per trip. Google Earth Desktop
  1. Install Google Earth Desktop.
  2. From the File menu, choose Import and select your CSV file.
  3. Map the latitude/longitude columns when prompted.
Google Earth Web Google Earth Web does not support direct CSV import. Instead, import your CSV into Google Earth Desktop first, then save the result as a KMZ or KML file. You can then create a project in Google Earth Web and add the KML file to it.