TEN TIPS FOR MORE EFFICIENTLY CAPTIONING PHOTOS


My Captioning Tips
Thoroughly captioning photos is critical! Caption information (when using the word caption information, I am referring to all metadata associated with a photo and relating to its content, e.g., the headline, description, people on the photo, event, location, city, country, scene, genre, subject code, photographer, credit, source) conveys vital information about who is doing what, when, where, and why on a given photo. Solid caption information help users of a photo to

  • find the photo, and
  • put the content of the photo into context.

Without caption information, photos will never get found, much less get used or published, and what is even more relevant, viewers will draw their conclusions about a photo’s content. So why forego the benefits of good captioning?

It takes time to write good caption information. Still, the payoff is significant: A recent study funded by the National Press Photographers Association in the United States showed that “the longer or better developed a caption, the more likely the associated photo will receive attention.”

If you have captioned photos under time pressure, you know how tedious that process is. Preparation, combined with a good workflow and supporting tools, is key. I am relying on Photo Mechanic’s code and variable replacement functionalities, combined with the GNU Emacs text editor for preparing data. During my tenure as a photographer, I have found the following ten tips being highly valuable to make my photo captioning process most efficient and effective.

Tip 1: Avoid entering redundant information

Use code replacement and variables functionalities of Photo Mechanic whenever possible. Enter information in the most specific field and reference that field, using variables in other fields.

Example: Enter the event title “2022 French Open” in the event field and reference it in the headline by writing “{event} – Day Fifteen”. Use, for example, “© {credit}” in the copyright field.

Tip 2: Use an easy-to-locate key as a code replacement delimiter

Configure as code replacement delimiter a character that is easy to access on your keyboard (avoiding, by all means, the use of Shift, Ctrl, etc.) and that is not used in caption data.

Example: On a Swiss-German keyboard, I use the “$” character, which is located next to the return key. In a US keyboard, using the “=” would be appropriate.

Tip 3: Pre-populate IPTC data fields and save them as a snapshot

Pre-populate your IPTC data fields using code replacement stubs and variables. Save each typical set of IPTC data as a snapshot using the lightning functionality of Photo Mechanics. Use a naming convention to identify each collection of IPTC data saved.

Example: For captioning action images in tennis, I pre-populate the description/caption field with “$P#2$ plays $A$ to $P#2$ during the ? round match on day ? of the {event} at {location} on {dow}, {monthname} {day}, {year} in {city}, {country}”, where “$P$” is a stub used to code replace player names (e.g., “Pbb#2” would be set-up to reference “Belinda Bencic of Switzerland”, “Pbb” referencing “Belinda Bencic” without here nationality), $A$ is a stub used to core replace what action the player is performing (e.g., “Apf” replacing to “plays a forehand” or “Aps” replacing to “servers”). I use question marks for information that needs editing but for which using code replacements does not make any sense.

Tip 4: Use a sensible naming scheme for code replacement files and snapshots

Pre-populated data is only relevant if you can locate it when needed. Therefore, use a consistent naming scheme for identifying code replacement files (and the location where you store them) and snapshots.

Example: I rely on using the two first levels of the IPTC subject code structure. I store code replacement information (e.g., key player names and action codes) in a file named “cr-spo-tennis.txt”. I store event-specific information in “cr-spo-tennis-wimbledon.txt”. I save generic code replacements in “cr-gen.txt”. Depending on the photos I caption, I pre-configure the relevant (and only the relevant ones) code replacement files in “Set code replacement”.

I use the same approach for naming IPTC data stubs, i.e., naming the most generic one “gen”, an action-specific one for tennis “spo-tennis-action”, a player reaction as “spo-tennis-reaction”,

Tip 5: Use multi-column code-replacement files

Use multiple columns per replacement code to define variations of the given information and reference the different columns using the “#” followed by the column number.

Example: I encode people using two to five different columns such that

  • Column 0 contains the replacement code, e.g., “Pib”, “Pbapl”
  • Column 1 contains the full name, e.g., “Ivan Bencic”, “Pablo Laso”
  • Column 2 contains the full name, including the nationality or affiliation, e.g., “Ivan Bencic of Switzerland”, “Pablo Laso of Real Madrid Baloncesto”
  • Column 3 contains the full name and their role, e.g., “Belinda Bencic’s father Ivan Bencic”, “Coach Pablo Laso”
  • Column 4 contains the full name, role, and nationality of affiliation, e.g., “Father Ivan Bencic of Swiss Belinda Bencic”, “Real Madrid Baloncesto’s coach Pablo Laso”

Tip 6: Use reverse mapping to get the country code and other information right

Use code replacements to ensure that value in less prominent or obvious fields is always correct.

Example: Prepare a code-replacement file mapping country names to ISO country codes (you may download one here). Enter “${country}$” in the “ISO Country Code” field. Similarly, create a file (or add these codes to “cr-gen.txt”) that maps event names to categories, subcategories, subject codes, etc., and enter the respective code replacement codes in those fields. For example, I encode

  • Column 0 – Event name, e.g., “E2022 Roland Garros”
  • Column 1 – Subject Code, e.g., “15065000 Tennis” (using IPTC convention)
  • Column 2 – Category, e.g., “spo”
  • Column 3 – Category, e.g. , “tennis”

and add the following codes in the respective fields “IPTC Subject Code: $E{event}$”, “Category: $E{event}#2$”, Supp Cat 1: $E{event}#3$”

Tip 7: Use GNU Emacs editor to transform player rosters into code replacement files

GNU Emacs is a very powerful editor, although from the pre-GUI era. I highly recommend anyone to learn the essential keystrokes (see example in the table below) and use it to transform a given player roster into a code replacement file.

Key sequence Command
ESC t Swap two words, e.g., transform “Peter Pan” into “Pan Peter”
CTRL-space Select text
CTRL-k Delete selected text (or up to the end of the line) and save the deleted text
ESC d Delete next work
CTRL-y Recall the last deleted text
CTRL-y / ESC y Recall second to last deleted text
CTRL-s Search
ESC % Search and replace text
CTRL-x ( chr.seq. CTRL-x ) Save character sequence to be replayed later
CTRL-x e Replay saved character sequence
CTRL-u 100 CTRL-x e Repeat replay of saved character sequence 100 times
CTRL-x u Undo previous change
CTRL-a / CTRL-e Go to start / end of line
ESC < / ESC > Go to start / end of document
ESC c / ESC u /ESC l Capitalize / uppercase / lowercase next word
ESC u Uppercase next word
CTRL-2 / CTRL-1 Split / Unsplit window
CTRL-x b Switch to a different buffer
CTRL-x f Open a new file (previously opened files remain in different buffers)
CTRL-x s Save document
CTRL-x c Exit editor

Example: Consider the following roster file

** Court Philippee CHATRIER ** Start at 11h00
Caroline WOZNIACKI (DEN) vs. Veronika KUDERMETOVA (RUS) Yannick HANFMANN (GER) vs. Rafael NADAL (ESP) Novak DJOKOVIC (SRB) vs. Hubert HURKACZ (POL) Serena WILLIAMS (USA) vs. Vitalia DIATCHENKO (RUS)

Using the following code sequences transforms the roster file into the following code replacement file

  1. CTRL-< CTRL-k CTRL-k (remove title line)
  2. ESC % _ vs._ RET CTRL-q CTRL-j RET ! (separate games into two lines)
  3. CTRL-< CTRL-x ( P ESC c EST c CTRL-k EST b EST b CTRL-k CTRL-y CTRL-q TAB CTRL -y of CTRL-a CTRL-n CTRL-x ) (record editing of the line
  4. CTRL-u 7 CTRL-x e (do the same for all other lines)
  5. Add shortcodes for each player and add their nationality

Resulting code replacement file

Pcw   Caroline Wozniacki      Caroline Wozniacki of Denmark
Pyk   Veronika Kudermeptova   Veronika Kudermeptova of Russia
Pyh   Yannick Hanfmann        Yannick Hanfmann of Germany
Prn   Rafael Nadal            Rafael Nadal of Spain
Pnd   Novak Djokovic          Novak Djokovic of Serbia
hhP   Hubert Hurkacz          Hubert Hurkacz of Poland
Psw   Serena Williams         Serena Williams of the United States of America
Pvd   Vitalia Diatchenko      Vitalia Diatchenko of Russia

Tip 8: Don’t reinvent the wheel

Many great caption writers exist, especially at large photo agencies, like GettyImages, AP, AFP, or Reuters. Look at how they write captions, especially what wording they use.

Example: One of my favorite tennis photographers Clive Brunskill of GettyImages, captioned a photo as “Fans of Rafael Nadal hold up messages of support in the stands during the Men’s Singles Final match between Rafael Nadal of Spain and Casper Ruud of Norway on Day 15 of The 2022 French Open at Roland Garros on June 05, 2022 in Paris, France”, which I reused in an adapted way to my need.

Tip 9: Use an AI translation engine if your writing language is not your mother language

Use a translation engine, like www.deepl.com or translate.google.com and/or dictionaries like www.dict.cc to ensure that you use the most appropriate terms, especially keywords, if you are writing captions in a language that is not your mother tongue.

Example: I want to write in the caption the text “Der Schiedsrichter ermaht $Pnd$ zum zweiten Mal”, I use www.deepl.com to translate this text into “The referee warns $Pnd$ for the second time”.

Tip 10: Re-read captioned photos

Typos are quickly made. Re-read entered information after having captioned all photos and corrected typos. You may want to use the “Find and Replace” function to ensure that the typos are fixed in all photos captioned, mainly if you have used the “Copy” function when entering and editing caption data.

Example: I entered “2022 Roland Garos” instead of “2022 Roland Garros” as the event name. Using “Find and Replace” ensured that the error was corrected in the event field and all fields that were populated using the “{event}” variable.

Claude Diderich is working as freelance professional sports photographer. He likes to freeze the action. His preferred sports are tennis, alpine ski, and athletics. Claude Diderich has covered numerous national as well as international sports events, including the 1998 Nagano, the 2002 Salt Lake City, and the 2006 Torino Olympic games. In 2015 he covered the Australian Open tennis tournament, in 2016 the Rio Olympic Games, and in 2018, 2019, andd 2023 the Roland Garros tennis tournament. His work has been published in Swiss and foreign publications. His photos are distributed by the Swiss photo agency freshfocus. Claude is a member of the International Sports Press Association (AIPS).