IPTC/XMP metadata writing
RaceTagger can embed race numbers, participant names, and event information directly into your photo files as industry-standard IPTC and XMP metadata. This means the data travels with the photo β searchable in Lightroom, Photo Mechanic, and any DAM system.
RaceTagger embeds race numbers, driver/team names and event data directly into a photo's
IPTC/XMP metadata (Keywords, Caption/Description, Title, Person Shown, Credit, Copyright,
Location, Contact Info, and more), so the data is searchable in Lightroom, Photo Mechanic,
Bridge, Capture One and any other tool that reads those standards. All writing goes through
a single bundled ExifTool binary β there is no external install to manage. Two entry
points exist: the lightweight write that happens as part of normal processing/corrections
(race number, team, driver keywords), and IPTC Pro β a richer profile (credits, contact
info, location, rights, per-participant Person Shown) configured on a preset or account
default and applied in one batch pass from the Results screen. Per-pilot caption/keyword
templates (the [[ ... ]] repeat-block syntax) are covered on the
[[multi-pilot-captions]] page, not here.

How to use it
- 1On the results page, if the active preset has an IPTC profile configured (iptc_metadata on the preset, or anβ¦: account-level default template), the π IPTC Pro button appears.
- 2Click it to open the IPTC Pro panel: review/edit Credits, Creator, Event & Caption, Location, Keywords, Person Shown and Rights fields (grouped in collapsible sections), choose Merge with existing keywords or Replace all keywords, and pick the scope β Matched files only or All files.
- 3Click IPTC Pro β Write N files to batch-write to the originals (JPEG in place, RAW to its .xmp sidecar):
- 4For exporting copies instead of writing originals, open the Export & IPTC modal and pick a mode: π Export to Folderβ¦: (copy to a destination, with optional βοΈ Rename Files using a pattern like {number}_{name}_{nationality}_{team}_{car_model}-{seq:2}, and optional subfolder organization) or π Write to Originals (same IPTC form, no copy β modifies source files in place, with a confirmation warning).
- 5In both modals, βοΈ Write Behavior controls two independent choices: how to handle a filename collision at theβ¦: destination (Auto-rename, Overwrite, Skip) and how to handle metadata already on the target image (Merge β keep fields this preset doesn't set β or Replace β clear all IPTC/XMP first, then write only this preset).
- 6An IPTC profile can be imported from an existing .xmp file (Photo Mechanic or standard format) via Import from XMPβ¦β¦: , and saved as the account-level default from Settings β IPTC Pro Defaults.
Limits and known behaviour
- RAW is never modified in place. For
nef,arw,cr2,cr3,orf,raw,rw2,dng, all metadata goes to a.xmpsidecar next to the RAW file (created by ExifTool if missing); JPEG and other formats are written directly. This is the only thing that differs between the two paths β the same fields, the same values, just a different destination and (for keywords) a different tag name (IPTC:Keywordson a JPEG vs XMPdc:subjectin a RAW sidecar). - Keyword append vs overwrite. The lightweight writer (
writeKeywordsToImage) supports both modes: append reads back what's already on the file/sidecar and skips case-insensitive duplicates; overwrite clears the field first, then writes the new set. IPTC Pro's keyword mode ("Merge with existing keywords" / "Replace all keywords") maps to the same append/overwrite distinction at thewriteFullMetadatalevel. A manual correction always writes in a single overwrite pass built from the union of all current (non-deleted) detections on the photo plus any visual-tag keywords (location, weather, scene, subjects, style, emotion) already embedded on the file β so correcting one detection on a multi-car photo does not wipe its siblings' keywords, and does not wipe the photographer's visual tags either (issue #167, fixed in app 1.1.11). - No
racetaggermarker keyword is written to delivered files. Keywords carry only the customer's race data (race number, team, driver, visual tags) β no tool-name literal. Files tagged by older app versions may still carry a leftover literalracetaggerkeyword; current code filters that value out wherever the keyword set is recomputed (visual-tag re-add on correction) rather than re-adding it. - IPTC:Keywords has a 64-character-per-value limit in some readers; the simplified
keyword path lowercases, strips special characters, replaces spaces with underscores and
truncates each token to 64 characters. Single-character tokens are dropped as noise,
except single digits (so a car numbered
#5still keeps5as a keyword). Person Shownnever falls back to writing names as keywords. It always usesXMP-iptcExt:PersonInImage, on both JPEG and RAW-sidecar paths β an earlier RAW-only path that replaceddc:subjectwith names (silently wiping race-number/team keywords) has been removed; RAW and JPEG now produce the same document for the same input (seetests/metadata/jpeg-raw-parity.test.ts).- Replace mode clears IPTC IIM
Allplus six XMP namespaces (XMP-iptcCore,XMP-iptcExt,XMP-photoshop,XMP-dc,XMP-plus,XMP-xmpRights) before writing β EXIF (camera data, GPS, exposure) is never touched, since it's hardware-recorded, not editorial data. For a RAW sidecar the merge/replace distinction doesn't apply: the sidecar is always regenerated fresh from exactly the fields supplied. - Full IPTC/XMP write only applies fields the caller actually supplied β an empty or absent field is left untouched in merge mode, not blanked.
- The filename-rename pattern (
{number},{name},{surname},{team},{car_model},{nationality},{event},{date}/{date:FORMAT},{seq}/{seq:N},{original}) only applies on Export to Folder β "Write to Originals" never renames files. writeSpecialInstructionsprefixes its value withRaceTagger:insideIPTC:SpecialInstructions(JPEG) /XMP-photoshop:Instructions(RAW sidecar), truncating to 256 characters total; it updates an existingRaceTagger:segment in place rather than duplicating it, and preserves any other content already in that field.- There is no strategy picker: the RAW-vs-JPEG destination choice is automatic and not user-selectable, and there is no "Both" mode.