

FrameTags
FrameTags is a PySide6 desktop utility that allows photographers to apply metadata to large photo sets in bulk. In version 1, users can select directories, scan with optional recursive traversal, choose metadata fields to apply, preview changes before writing, and apply metadata...
Cost / License
- Free
- Open Source (MIT)
Platforms
- Windows
Features
- Batch processing
FrameTags News & Activities
Recent activities
arbopa added FrameTags as alternative to BasicUtils Pic2Map
arbopa added FrameTags as alternative to AnyEXIF | Photo EXIF Editor and Viewer.
arbopa added FrameTags as alternative to Photos Exif Editor
arbopa added FrameTags as alternative to Nero AI Photo Tagger
arbopa added FrameTags as alternative to Better File Attributes
arbopa added FrameTags as alternative to Exif Eraser
arbopa added FrameTags as alternative to ExifToolGUI- niksavc liked FrameTags
FrameTags information
What is FrameTags?
FrameTags is a PySide6 desktop utility that allows photographers to apply metadata to large photo sets in bulk. In version 1, users can select directories, scan with optional recursive traversal, choose metadata fields to apply, preview changes before writing, and apply metadata writes through ExifTool. It also allows saving, loading, updating, and deleting presets. The tool only reads and writes metadata, not editing image pixels.
Supported formats include RAW (.cr2, .nef, .arw, .dng, .orf, .raf) and standard image (.jpg, .jpeg, .tif, .tiff, .png), with PNG metadata support depending on ExifTool capabilities and file metadata blocks. It supports various metadata fields, including Artist, Copyright, Credit, Source, Creator Email, Creator Website, Usage Terms/License, Location Name, City, State/Province, Country, GPS Latitude, GPS Longitude, Caption/Description, Headline, and Keywords.
FrameTags uses a registry in app/metadata_fields.py to separate UI fields from raw metadata tags. UI controls bind to normalized internal keys, and mapping to Exif/IPTC/XMP tag targets is centralized in field definitions and app/metadata_mapper.py. The change-set datamodel is shared by preview and apply functions, making the app extensible for future workflows.
Write behavior options include overwrite, write if empty, and append non-duplicate keywords. RAW handling is strategy-based, with embedded for JPEG/TIFF and sidecar-aware strategies for RAW formats. Presets are stored in data/presets.json, and only selected fields with values are persisted.
Before applying metadata changes, a preview is required. The preview process includes scanning candidate files, reading existing metadata through ExifTool, comparing against selected field values and write mode, building per-file change sets, and showing only files that would change.
The number of "Changed Fields" in preview refers to fields whose value would change on the file. A checked field is not counted if the existing value matches the entered value.
General settings are saved in data/settings.json, including last selected preset, last used directories, recurse option, write mode, RAW sidecar preference, and window geometry.






