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.

This page is a complete reference for all command-line arguments accepted by photo-cli. Each entry lists the short flag, the long flag, which commands accept it, and the full set of accepted values. Arguments marked REQUIRED must be supplied for the command to run; all others are optional.
-i / --inputApplies to: copy, archive, info (optional); address (required)File system path to read photos from. If you omit this argument for copy, archive, and info, photo-cli uses the current working directory. The source path is never modified.
-o / --outputApplies to: copy, archive, info (required for all three)File system path to write output. For copy and archive, photo-cli creates a new organized folder hierarchy at this location with renamed files. For info, this is the path where the CSV report is written. The folder is created automatically if it does not exist.
-f / --process-type — REQUIRED for copyControls whether photo-cli uses the original folder hierarchy or flattens photos into a single grouped folder.
ValueName
1Single
2SubFoldersPreserveFolderHierarchy
3FlattenAllSubFolders

-g / --group-byApplies to: copy (cannot be combined with SubFoldersPreserveFolderHierarchy)Groups photos into subfolders by their EXIF data.
ValueName
1YearMonthDay
2YearMonth
3Year
4Address
5AddressFlat
6AddressHierarchy

-a / --folder-appendApplies to: copy with SubFoldersPreserveFolderHierarchy. Must be combined with --folder-append-location.Appends a date or address token to the original folder name.
ValueName
1FirstYearMonthDay
2FirstYearMonth
3FirstYear
4DayRange
5MatchingMinimumAddress

-p / --folder-append-locationApplies to: copy. Required when --folder-append is used.Controls whether the appended token appears before or after the original folder name.
ValueName
1Prefix
2Suffix
-s / --naming-style — REQUIRED for copyThe naming strategy applied to each copied photo file.
ValueName
1Numeric
2Day
3DateTimeWithMinutes
4DateTimeWithSeconds
5Address
6DayAddress
7DateTimeWithMinutesAddress
8DateTimeWithSecondsAddress
9AddressDay
10AddressDateTimeWithMinutes
11AddressDateTimeWithSeconds

-n / --number-style — REQUIRED for copyThe numbering strategy used for the Numeric naming style and for disambiguating photos that would otherwise share the same output name.
ValueName
1AllNamesAreSameLength
2PaddingZeroCharacter
3OnlySequentialNumbers
-y / --album-typeApplies to: archiveWhether to link archived photos to an album.
ValueName
0NoAlbumLinking (default)
1Individual
2DateRange

-a / --album-nameApplies to: archiveName for a new album to create and link the currently archiving photos to. Use with --album-type set to Individual or DateRange.
-p / --update-albumApplies to: archiveExisting album ID to link the currently archiving photos to. Use with --album-type set to Individual or DateRange.
-s / --auto-reverse-geocode-albumApplies to: archiveAutomatically create or update albums for each reverse geocode property level. No additional value needed.
-f / --delete-on-sourceApplies to: archiveDelete source photo files, companion files, and empty directories after a successful archive. No additional value needed.
-t / --no-taken-dateAction to take when a photo has no EXIF taken date. Default is Continue (0).For copy:
ValueName
0Continue (default)
1PreventProcess
2DontCopyToOutput
3InSubFolder
4AppendToEndOrderByFileName
5InsertToBeginningOrderByFileName
For archive and info:
ValueName
0Continue (default)
1PreventProcess

-c / --no-coordinateAction to take when a photo has no GPS coordinates. Default is Continue (0).For copy:
ValueName
0Continue
1PreventProcess
2DontCopyToOutput
3InSubFolder
For archive and info:
ValueName
0Continue
1PreventProcess

-x / --invalid-formatAction to take when a file cannot be parsed as a valid photo format. Default is Continue (0).For copy:
ValueName
0Continue (default)
1PreventProcess
2DontCopyToOutput
3InSubFolder
For archive and info:
ValueName
0Continue (default)
1PreventProcess

-z / --missing-reverse-geocodeApplies to: archive, copy, infoAction to take when any photo has missing reverse geocode information. Default is Continue (0).
ValueName
0Continue (default)
1PreventProcess

-w / --expected-day-rangeApplies to: archive, copyMaximum expected day difference between the earliest and latest photo taken dates. If exceeded, the process stops.
-e / --reverse-geocodeApplies to: copy, archive, info (optional); address (required)The third-party provider to use for resolving GPS coordinates into human-readable addresses.
ValueName
0Disabled
1BigDataCloud
2OpenStreetMapFoundation
3GoogleMaps
5LocationIq

-b / --bigdatacloud-keyAPI key for BigDataCloud. Alternatively, set the environment variable PHOTO_CLI_BIG_DATA_CLOUD_API_KEY.
-u / --bigdatacloud-levelsRequired when BigDataCloud is the selected provider. Space-separated integer admin level values that determine which address components to include. Run photo-cli address against a photo to see the full response and identify the levels you need.
-k / --googlemaps-keyAPI key for Google Maps. Alternatively, set the environment variable PHOTO_CLI_GOOGLE_MAPS_API_KEY.
-m / --googlemaps-typesRequired when GoogleMaps is the selected provider. Space-separated Google Maps address type names. Run photo-cli address against a photo to see the full response.
-r / --openstreetmap-propertiesRequired when OpenStreetMapFoundation or LocationIq is the selected provider. Space-separated OpenStreetMap property names. Run photo-cli address against a photo to see the full response.
-q / --locationiq-keyAPI key for LocationIq. Alternatively, set the environment variable PHOTO_CLI_LOCATIONIQ_API_KEY.
-h / --has-paid-licensePass this flag to bypass the free-tier rate limit when you have a paid LocationIq license. No additional value is needed.
-l / --languageApplies to: archive, copy, info, addressLanguage/culture value to get localized address results from the reverse geocode provider.
-d / --dry-runApplies to: copy, archiveSimulates the full process without writing any files to the output folder. The CSV report is still generated so you can review what would happen. No additional value is needed.
-v / --verifyApplies to: copyAfter copying, verifies that each photo was transferred without corruption by comparing file hashes between source and destination. No additional value is needed.
-a / --all-foldersApplies to: infoScans all subfolders recursively instead of only the top-level input folder.
-t / --type — REQUIRED for addressControls how much of the reverse geocode response is returned.
ValueName
0AllAvailableProperties
1SelectedProperties
2FullResponse
-t / --typeThe type of listing to display from the archive database.
ValueName
0Summary (default)
1Albums
2PhotosByAlbumId
3PhotosByAlbumName
4PhotosByExactDate
5PhotosByDateRange

-n / --idAlbum ID to filter photos when using list type PhotosByAlbumId.
-a / --nameAlbum name to filter photos when using list type PhotosByAlbumName.
-y / --yearYear to filter photos when using list type PhotosByExactDate.
-m / --monthMonth to filter photos when using list type PhotosByExactDate.
-d / --dayDay to filter photos when using list type PhotosByExactDate.
-s / --start-dateStart date (inclusive) in yyyy-MM-dd format for PhotosByDateRange.
-e / --end-dateEnd date (inclusive) in yyyy-MM-dd format for PhotosByDateRange.
-r / --rawOutput photo paths as plain text instead of opening them in the default viewer. No additional value needed.
-i / --inputPath to the archive folder containing the photo-cli.sqlite3 database. Defaults to the current working directory.