Jeffrey’s “People Support” Lightroom Plugin

This plugin for Adobe Lightroom adds features related to people in your photos:

Automatic tagging of friends at Facebook (when used in conjunction with my Upload-to-Facebook plugin).
Know the ages of people in a photo at the time it was taken.

As the photo above illustrates, the age-at-time-of-photo feature is of particular interest to parents.

This plugin works in Lightroom Classic, and older versions as far back as Lightroom 4 (though some features depend on the version of Lightroom).

In Lightroom CC/6 and later, additional support is built in for Lightroom's Facial-recognition feature.

The same download works for both Windows and Mac. See the box to the upper right for the download link (in orange) and installation instructions.

Table of Contents

      Create and Assign Keywords for Each Person
      Associate a Birthday and other data with Each Person Keyword
      Facebook Tagging
   Usage: Tagging At Facebook
   Filtering The List of People
   Usage: Viewing Ages
   Accessing People and Their Ages Elsewhere
   Version History


The plugin involves two phases of setup:

1. Create a Keyword for each person, and assign it as appropriate to each photo the person is in.
2. Use the plugin to associate extra data, such as a birthday and/or a Facebook account, with each keyword.

1) Create and Assign Keywords for Each Person

This is most easily done in Lightroom CC/6 with its Facial Recognition feature, though you can do it by hand as well. The benefit to using facial recognition, besides automation, is that the name is associated with a specific location within the image, making later friend-tagging at Facebook possible.

How you organize your People keywords is up to you, and like most aspects of Lightroom workflow, it's a personal decision. If you've not thought about it yet, here are two organizational examples for consideration:

example 1

example 2

You can create keywords via Facial Recognition, or manually via the + icon highlighted in red above.

In both examples the people-related keywords have been organized under a master parent keyword; I find it convenient to keep them segregated that way. In the right-side example, the parent keyword is named with a leading hyphen (-PEOPLE-) so that Lightroom will sort it to the top of the list, which I find helpful.

If you'd find it convenient to have family names sorted together, you'll want the family name to appear first in the keyword. Unfortunately, keywords may not contain commas, so a keyword like Friedl, Jeffrey is not possible. In the right-side example above I went with a format like Friedl/Jeffrey, but depending on taste you might prefer a format along the lines of FRIEDL Jeffrey or perhaps Friedl - Jeffrey.

Personally, I use the style shown in the right-side example.

Note that you can always edit your keywords to change the presentation of names later, and/or how they're organized; it's not something set in stone the first time you do it.

2) Associate a Birthday (and other data) with Each Person Keyword

Invoke the plugin's people-management dialog via

      File > Plugin Extras > Open People-Support Dialog

to get a dialog like this:

If a birthday has been associated with a keyword, the current age (or a bullet point; more on that later) is shown next to the name. If a Facebook account has been associated with the user, a subtle Facebook logo appears next to the name.

Because I've organized all my people keywords under a master base keyword, I'll go ahead and select that (see highlighted button above) to omit the clutter of non-people keywords from this dialog…

In Lightroom CC/6 and later, the little asterisk highlighted in red above appears. Clicking on it reports on any People keywords lying outside the chosen Parent. It's probably a good idea to check this every so often, in case a stray Person keyword had gotten created elsewhere.

Click on a keyword to bring up the ability to add a birthday and other data. Here's my entry for Anthony's great grandmother, who passed away some years back:

(Update Oct 2018: the dialog now includes a Nickname field, which can be referenced in the {People} token via the nicknames modifier).

Because she's passed away, I've chosen to enabled the don't display current age option, which is why she has a dot beside her name in the list instead of her current age beside her name.

The notes section allows you to keep track of things like family relationships, other names the person might have used, etc.

(I don't intend to have the plugin try to keep relationship data itself, because that can be a can of worms.)

Facebook Tagging

(Update Aug 2018 — changes at Facebook likely broke this feature forever)

If you'd like to automatically tag people in photos uploaded to Facebook via my Export to Facebook plugin, associate each Lightroom person with their Facebook account with this plugin.

Associating a person with their Facebook account is done by pasting the URL of their Facebook Profile page into the plugin dialog that the Link Person to Facebook Account button (seen in the screenshot above) brings up.

For a walkthrough, see this blog post about the process.

Usage: Tagging At Facebook

With LrCC/6 and later, during each Publish or Export operation with my Upload-to-Facebook plugin, people in your photos will be automatically tagged at Facebook if all of the following apply:

  1. The Remove Person Info option is turned off for the Publish/Export operation. It's within Lightroom's standard Metadata section of the Publish/Export dialog:

  2. Lightroom knows the specific location within the image of the person's face. (That is, the face has been identified and confirmed via facial recognition, or manually drawn with Lightroom's Draw Face Region feature.)

  3. The person has had a Facebook account associated with their keyword, as described above.

If you want to inhibit tagging at Facebook for a particular upload, just enable the Remove Person Info option.

Filtering The List of People

If you have many Person keywords, the filter box above the list can help track down specific keywords quickly.

For example, to bring up a specific name so that you can edit the person's data, just type the name into the filter field and their data will pop right up.

The keyword name and any personal notes you've added are subject to the search term you type. In addition, the following special terms are recognized:

+fb Limit the list to keywords with Facebook accounts associated with them.
-fb Limit the list to keywords without an associated Facebook account.
+bd Limit the list to keywords with birthdays associated with them.
-bd Limit the list to keywords without an associated birthday.
! Limit the list to keywords applied to the currently-selected images.

For example, to make sure you've got Facebook accounts for all the people in the currently-selected photos, use the term ! -fb. If any keywords remain showing, they are in the current selection but are missing Facebook accounts.

Usage: Viewing Ages

If you have a photo (or photos) selected that include People keywords, invoke

      File > Plugin Extras > View Ages for Photo

(which personally I've mapped to shift-option-command-P on my system) and you'll get a report like this:

Within each photo, people are listed from youngest to oldest.

When first preparing this documentation, I thought it might be less distracting to not use my own family data, so I planned to use Elvis's family. I gave up on the idea mostly because I could find only one copyright-free photo of Elvis to use in my examples. That ended up taking me on a slight tangent, and, well, since I got this far I may as well share the screenshot I'd made:

Accessing People and Their Ages Elsewhere

Names and ages of folks tagged in photos can be accessed via the special {People} template token that many of my plugins support, such as for image titles and captions upon export, or in Twitter-tweet text.

Using the photo at the top of this page as an example, a bare {People} token by itself turns into text along the lines of:

Anthony Friedl (3 days old) and Jeffrey Friedl (36.5 years old)

So you might enter something like the following for a Caption template in one of my export plugins:

People in this photo: {People}

To see this result:

People in this photo: Anthony Friedl (3 days old) and Jeffrey Friedl (36.5 years old)

One problem with this approach is if there are no people in the photo (that is, if the photo has no keywords associated with it that this plugin has a birthday associated with), that last example would end up becoming:

People in this photo:

which is not very good.

This problem is easily solved if we dive into the various options for the {People} token. It's an extremely powerful token but with that power comes what might be a bit confusing at first.

Token Options

Using options to the {People} token, you can have only certain people shown, display or not display their names and/or ages, update the order that people are shown, and more.

Choosing People with People Selectors

If you want to include only specific people, you can list them separated by commas in the token, like in this example that lists two people:

{People=Anthony Friedl, Fumie Friedl}

If this were applied to the sample photo of me and Anthony, I would be excluded from the result because I'm not in the list. (My wife Fumie wouldn't be suddenly added to the output, of course, because she's not tagged in the photo to begin with.)

Explicitly listing names is one way to select people for inclusion. (In this documentation, selectors are shown like this to help keep things clear.)

If you don't select anyone, then everyone is included, but if you select anyone, only those people you select are included.

You can use wildcard patterns (similar to *.txt filename patterns) in addition to explicitly listing names. The selector * matches every name, so {People=*} is the same as {People}.

If I want to include only people with the last name Friedl or Matsunaka, I'd use:

{People=* Friedl,* Matsunaka}

You can also select people based upon their age. The reason for this will be apparent soon, but first an example. To include only people less than 20 years old:

{People=< 20}

or, to include people less than 20 years old and folks 80 years old or older:

{People=< 20, >= 80}

The comparison is on their age in years as we normally think it… someone is 20 on the day they turn twenty years old, and remains 20 for a full year. So a selector like > 20 gets people 21 and over, while >= 20 gets folks 20 and over.

This age-based selection is powerful because the plugin also allows you to specify with each selector whether a selected person' age is shown, and if so, how.

What To Show For Each Person

The default presentation for a person is to show their name followed by their age in a reasonably-human way (older people just get the age in years, but babies get it in days and/or months). But you can change this on a per-person or per-class basis by following the people selector with a backslash and then a people-info format.

For example, to display just the name (and no age) for everyone, use * as the selector to match every name, and use %N — that's the code for just the name — as the format:

{People= *\%N}

As you can see, the format follows its selector, separated by a backslash.

With the photo of me and my son at the top of this page, a template of

People in this photo: {People=*\%N}


People in this photo: Anthony Friedl and Jeffrey Friedl

The default format code to show the full name and age is %F, so that means {People} is the same as {People=*\%F}.

If you want to include the name and age for kids 10 and under and folks over 90, but include just the name for anyone else, use this:

{People=<= 10\%F,>90\%F,*\%N}

It's that trailing *\%N that includes the name for anyone not selected by the other two rules. If it were omitted, folks between 10 and 90 wouldn't be included in the result (which would be fine if that's what you want).

People-Info Format Codes

The format given after the backslash can be more than just %F or %N, though those are the most useful. You can actually include most any text, with the following codes recognized therein:

%NThe name of the person (the keyword text itself)
%SSmart age — the age presented in a human way… like 22.3 years old for those older than two years old, and months and/or days for those younger.
%sSimple smart age — the age presented in a more simple human way… like 22, 4, 18 months, 3 weeks, …
%FFull info, the same as %N (%S), which is the name and the smart age. (This is the default format if none given.)
%fSimple full info, the same as %N (%s), which is the name and the simple smart age.
%YThe age of the person in years as an integer. (The day before their 15th birthday, %Y is still 14.)
%MThe month component of the person's age, as an integer. (Two months after any birthday, %M is 2.)
%DThe day component of a person's age, as an integer. (If someone is 17 years 3 months 22 days old, then %D is 22.)
%1YThe age of the person in years, to one decimal point (47½ becomes 47.5). Normal rounding rules don't quite apply: the day before the 32nd birthday would normally round to 32.0, but sorry, it's not your birthday quite yet, so %1Y remains 31.9.
%2YLike %1Y but to two decimal places.
%%A percent symbol.

So, the token

{People= >70\%N at the ripe old age of %Y, <5\%N at the tender age of %S, *\%N}

includes three people selectors, each with their own format.

Here's what would be produced if that token were used with this next four-generation photo:

Anthony Friedl at the tender age of 8 months one day old, Fumie Friedl, Eiko Matsunaka, and Kine Imai at the ripe old age of 79

To change the format used for everyone, just apply it with a * selector. To apply the format %N (%s) to everyone:

{People=*\%N (%s)}

which with the previous photo produces:

Friedl/Anthony (8 months), Friedl/Fumie (27), Matsunaka/Eiko (51), and Imai/Kine (79)

(The token {People=*\%f} would produce the same result, because the code %f is a shorthand for %N (%s).)

The Age of People Before They're Born

Formatting described above sort of breaks down when a photo is from before someone's birth, such as in an ultrasound scan. If the data of the photo is prior to the registered birthday, the plugin will replace the format with something that is hopefully appropriate.

Overall Modifiers, Etc.

The {People} tag can accept various overall modifiers after the list of people selectors, separated by semicolons. For example, update the previous example so that folks are presented in an oldest-age-first order:

{People=*\%N (%s);oldest first}

This would have the previous photo result in:

Imai/Kine (79), Matsunaka/Eiko (51), Friedl/Fumie (27), and Friedl/Anthony (8 months)

Note that even if you don't have a format, you do need the = after People, so the previous example with the default format is:

{People=;oldest first}

(Note the ungainly =;)

The following modifiers are available. You can include as many as you need, separated by semicolons:

  • nicknames
    For each person, use the registered nickname (if any) instead of the text from the keyword.

  • youngest first
    Order people by age, youngest first. This is the default sort.

  • oldest first
    Order people by age, oldest first.

  • sort by name
    Put people in alphabetical order by name.

  • separate by ""
    Separate multiple names by the given text, instead of the default English-language list treatment. For example, to have names separated by a comma and a space, use separate by ", "

  • if blank use "text…"
    If it turns out that the photo has no people (or, at least none that are selected) the {People} token should produce the given text instead of nothing. Consider this template pattern for a photo caption:

    People in this photo: {People=;if blank use "none"}

    In this example, no people selectors are given (the semicolon for the modifier comes immediately after the equal sign), so it remains at the default of *\%F.

  • prefix "text…"
    If the photo does have people (that are selected), prefix the list of names/ages with the given text. If there end up being no people selected, this modifier is ignored.

    A better way to present the previous caption example would be:

    {People= ;prefix "People in this photo: "}

    If there are no people, nothing results, but if there are people, the list of names and ages is prefixed by People in this photo: .

  • suffix "text…"
    Like the prefix above, but the text is appended rather than prepended.

  • swap around "character"
    This special modifier changes how names are presented, and is intended to ameliorate the last-name-first hack of having your name keywords like Friedl/Jeffrey rather than Jeffrey Friedl:

    {People= ;swap around "/"}

    This would leave names that don't have a / character alone, but names like Friedl/Jeffrey that do would have what comes before the / swapped with what comes after, replaced by a space: Jeffrey Friedl

    Note that if you use the sort by name modifier, the sorting happens before the swapping. That keeps the sort via family name.

  • swap around "character" rejoin with "text.."
    This is like the prior modifier, except you can specify what should be used to rejoin what has been swapped, instead of the single space that the prior modifier uses. I'm not quite sure how this would be used, but I include it for completeness. A silly example might be:

    {People= ;swap around "/" rejoin with " of the family "}

    which turns Friedl/Jeffrey into Jeffrey of the family Friedl. May be useful for British royalty.

Modifiers can be combined, as in this example:

{People= < 10 \%f,*\%N ;prefix "In this photo: ";swap around "/";oldest first}


This plugin is distributed as “donationware”. I have chosen to make it available for free — everyone can use it forever, without cost of any kind — but unless registered, its functionality is somewhat reduced after six weeks.

Registration is done via PayPal, and if you choose to register, it costs the minimum 1-cent PayPal fee; any amount you'd like to add beyond PayPal's sliding fees as a gift to me is completely optional, and completely appreciated.

Note: a Lightroom major upgrade, such as from Lr6 to Lr7 (or the equivalent under the hood for the Lightroom Classic subscription) de-registers the plugin in the upgraded version, so if you want to maintain registration, a new ($0.01 if you like) registration code is needed in the upgraded version. It makes for a hassle every couple of years, I know. Sorry. See this note for details.

For details on plugin registration and on how I came into this hobby of Lightroom plugin development, see my Plugin Registration page.

Version History
( Update Log via RSS )


Added 'separated by' to the People token.

Added the ImageViewDirection and ImageViewBearing tokens.

Reworked the Keywords token to better accept filters.

working around 'constant table overflow' error


Added the PF filter to turn typographic fractions into plain-ASCII fractions.


Updates for Lr10

Added the SpeedKnots token.

Worked around an "unknown key captureTime" error.

Added the {PlusCode} and {GeoHash} tokens.

Work around a Windows bug related to canceling out of the registration dialog.

Some of the filename-related tokens could be incorrect in rare situations.

Added some extra debug logging to note whether the plugin is enabled.


Added the LensInfo template token.

Updated the Exposure token to allow customization.

More token work: added {Urls}, and updated {ISO} and {Copyright} to allow customization.

Added the {RelativeFolder} token.


Fixed the SST1 and SST2 tokens.


Updated the PublishCollectionName token (and CollectionNames and CollectionFullNames) to remove the MIRROR: prefix from the name that mirrored collections within my Collection Publisher plugin automatically get.


Fixed a problem with the SpeedKPH token.

Added TempC and TempF to the template tokens that my plugins understand.

Added the TempC and TempF tokens.

Updated the keyword-related tokens to accept standard filters.

Work around a bug that sometimes causes plugins to be disabled when starting Lightroom via clicking on a catalog file.

Fix an "Unknown key: captureTime" crash.

Added the GPSCoords token.

Fixed a problem related to template tokens and photos without capture times.

Added functions uc(), ucFirst(), lc(), and lcFirst() to the LUA token.


Added the PEOPLE variable to the LUA token.


Updates for Lr8 (Lightroom Classic CC Version 8).

Added the special PP() function to the {LUA} token.

Try to work around a Lightroom bug related to photo timezones and how Lightroom handles accessing plugin data.

Added hierarchical options to the Keywords token.


Added the Nickname field to the per-person dialog, and added the 'nicknames' modifier to the {People} token.

Added the SST1, SST2, and SS3 tokens to the template tokens that the plugin understands.


Clicking on the version number in the Plugin Manager now copies version info to the clipboard

Updated the PublishCollectionName token to allow numeric arguments along the lines of the CollectionName token.

Added the folowing template tokens: {home}, {desktop}, {temp}, {pictures}, {documents}, IptcDateTaken

Added the 'PCH' variable to the {LUA} tag.


Fixed a bug when 'Token Examples' invoked in certain situations.

Updated the Keywords token, and added the KWf function to the {LUA} token.

Added the {NonSmartCollectionNames} and {NonSmartCollectionFullNames} tokens to the data templates that my plugins understand.

Added a bunch of token filters: F2D F2S F2X B2D B2S B2X S2X A2D A2S A2X


Oops, more Lr7 stuff.


Updates for Lr7.

Better handle some character-encoding issues related to template tokens.

Allow the "If Exists" feature of Templat Tokens to work with the PluginProperty token.

Update registration support to handle a stupid bug at PayPal that PayPal refuses to fix )-:


Added the "Open People-Support Dialog (Keywords in Selected Photos)..." plugin-extras command.

Fixed a bug introuded the other day in template tokens, related to Windows filenames.


Added the Newline template token.

Enhanced the FolderName token

Added the "only if it has a value" feature to template tokens.


Added "Sort Selected Photos By Age..." to the Plugin-Extras menu. The concept has potential, but it's quite kludgy now.

Allowed 'A' to be the Windows shortcut for "View &Ages for Photo...".


Better support for multiple FB accounts.


Fix to the Russian-language support for the People Support plugin.


Added the following tokens to the templates that my plugins understand: FileModYYYY, FileModYY, FileModMM, FileModDD, FileModHH, FileModMIN, FileModSS, FileYYYY, FileYY, FileMM, FileDD, FileHH, FileMIN, FileSS.

Fixed a bug with the keyword tables in the LUA token.

Added Weekday, Wday, weekday, and wday to the list of template tokens that my plugins understand.

Switch the log-sending mechanism to https.

Added "ISO8601Date" to the template tokens that my plugins understand.

Added the following tokens to the template tokens that my plugins understand: Artworks, ArtworkTitle, ArtworkCopyright, ArtworkSource, ArtworkCreator, ArtworkDateCreated, ArtworkInventoryNum


Better support for linking Facebook business pages.


Added Russian-langauge support for the People-Support {People} tag; see the new section of the plugin manager.

Make use of photo timezone data (added and maintained via my Geoencoding Support plugin when considering photo times.

Try to avoid yet another place where Lightroom gets hung because it can't handle certain kinds of dialogs at the same time.


Better support for linking to Facebook pages that are private.

Fixed a display error when editing a linked Facebook page for a person.


Add a note to the Facebook-linking stuff that reauthenticating to Facebook via my Facebook plugin can perhaps fix "not a Facebook profile url" errors.

Added ChildOf and DescendantOf filters to the {Keywords} and {KeywordsAll} template tokens that my plugins understand.

Fixed how custom {People} formatting works with people keywords that have no birthday associated with them.


I finally understand what causes the blank-dialog problem that some Windows users have reported... it seems that too many keywords overwhelms Lightroom's dialog system, and after some indeterminate amount of keyword data, dialog elements become blank, even in Lightroom system dialogs.

I've submitted a bug report to Adobe.

To hopefully mitigate the issue for some folks, I've changed the "select a base keyword" button so that it exits the people-support dialog first, freeing up space in Lightroom's dialog system. If you then select a base keyword, perhaps the newly-reduced number of keywords the dialog tries to display is under the "too much" limit.


Update to the Facebook-linking stuff... hopeful works in more situations now.


Figured out how to make the Facebook-linking stuff work again. You have to have been authenticated to Facebook with my export-to-Facebook plugin for it to work.

Put back the "Include on Export" option because those issues are fixed in Lr6.1.

20150529.10 Still more ways to figure out a person's FB id from their FB page url.
20150528.9 Try new ways to figure out a person's FB id from their FB page url.
20150509.8 New Italian translations courtesy of Davide Voltolini.

In LrCC/6, the "Show only People keywords" option is now augmented by a note about how many non-people keywords are hidden (or would be hidden), to perhaps explain why the list is blank.


Big update for Lightroom 6/CC.

Added support for Facebook: you can associate a Facebook account with a Person keyword, so that when you send photos to Facebook with my export-to-Facebook plugin, photos that have had faces recognized in Lightoom will be properly tagged at Facebook. For details, see "Automatic Face Tagging Now Supported in my Upload-to-Facebook Plugin for Lightroom".

Removed the stuff related to the Keyword's underlying "Include on Export" option, because that option seems to be completely ignored for People keywords. Rather, the publish/export option "Remove Person Info" seems to completely control the inclusion/exclusion of any People keyword. This seems like a bug to me, but until I get to the bottom of it I worry its inclusion here cold be misleading.

Added a filter for quickly finding name, or finding keywords that do/don't have a birthday, or are/aren't associated with a Facebook account.


In the POODLE-vunerability dialog, display a raw URL of a page on my site that discusses the issue, so that folks can be independently sure that the dialog is indeed from me and not malware.


Updated some of the translations, especially French (thanks to Pierre-Nicolas Rigal!)


Added some debug logging to track down a dialog-display error.


Added some progress scopes to the preparation of the "Manage People Keywords" dialog, because it can take a while if someone has a lot of keywords.

Fixed some of the translations. Respect the user's locale setting for numbers ("2.5 years" might become "2,5 Jarhe".

In the view-age dialog, added the person's birthday as a tooltip for their name.

20150126.1 Initial public release

All 35 comments so far, oldest first...

Great new plugin. I thought about this functionality myself some weeks and now you already made it available. Thank you very much and reading my thoughts;)

I just used it and recognized a minor translation(?) issue: “XXX (8 Tage alt) und YYY (34.9 Jahre old)”
The age in the first brackets (8 days old) was properly translated into German, whereas the second age in years seems to be English (old).

Oops, thanks, I’ll look into that. —Jeffrey

— comment by Thomas on January 28th, 2015 at 7:35am JST (6 years, 9 months ago) comment permalink

Hi Jeffrey

Is there an option to use synonyms keyword?

I explain my case  :
I use the following hierarchical keywords PEOPLE (not included on export) > John Doe (synonym John)

“John Doe” is not included on export but synonym “John” is included on export

when exporting photos on public sites like Flickr I just want to mention first name and not the full name, would that be possible?

I’m not quite sure how that would work, which is just as well because a plugin doesn’t have access to synonym info. I’ll put some thought into how to handle something like this… —Jeffrey

— comment by f1oren on February 10th, 2015 at 12:13am JST (6 years, 9 months ago) comment permalink

I thought I would try this after upgrading to CC, but I can’t get it to work on my machine.
If I try to select a Base Keyword, it scans my keywords then gives a blank Choose parent key word window.
Also, if I select a tagged person from my keyword list, it doesn’t do anything. I dont get any extra info to the right of the names list as you do in your screenshots, basically I have no way to enter a birthday.

Not a complaint, far from it, just wanted to give you the feedback.
Running Windows 7 64bit on a ‘fairly’ new i7 with 16Gb Ram with the latest Lightroom CC.

I’ve had one other report of this “blank window” problem, and at first I thought it might be just a strangeness in the user’s system, but suddenly I wonder whether it’s related to the specific keywords in your catalog. Perhaps make a copy of your catalog (of the *.lrcat file), then in that copy remove all the photos (remove from the database; do not delete from disk!!) and then exit Lightroom and send me a ZIP’d version of that copied catalog. I’d then test it on my system… —Jeffrey

— comment by Danny on May 1st, 2015 at 6:55am JST (6 years, 6 months ago) comment permalink

Jeffrey, when I bring up the Plugin Extras > Open People-Support Dialog and select a keyword, the keyword changes to a green colour, but, it never shows any additional options to enter the age information. It has the keyword list on a dark grey background on the left, but it doesn’t show anything on the right hand side of the dialog box.

This is using the new release version of lightroom and the latest version of your plugin on a windows 8 machine.

I’m getting some reports like this, but have never heard of anything like it in all these year; I still don’t have a handle on the problem, sorry. )-: —Jeffrey

— comment by Steve on May 5th, 2015 at 1:13am JST (6 years, 6 months ago) comment permalink

Just tried this hoping to get some of the tagging taken care of when uploading to Facebook, but none of the tags seemed to carry over. Does this plugin (and the jf Facebook export plugin) not work when uploading to a page?

I’d expect that they work, but there could be Facebook permission issues for the specific page/people(?) Perhaps try one that should tag a few people, and send the plugin log with specifics. —Jeffrey

— comment by Andrew on May 12th, 2015 at 1:05pm JST (6 years, 6 months ago) comment permalink

Hello Jeffrey,

Thank you for another great plugin!
I’ve already tried the automatic tagging of people on Facebook, and it works flawlessly on one of my machines.
On a different PC, I tried to add a Facebook URL to a person keyword – and got the error message “doesn’t seem to be a facebook url”. I *also* got this message for people that I previously managed to add when re-entering the exact same url.
I’m logged in at Facebook in Chrome – my default browser.

Do you maybe have any idea what might cause this issue? Am I doing anything wrong or missing something?

Thanks in advance for your help!

I think (hope) that it’s just Facebook being flaky. It also now doesn’t work for my own FB url (which of course used to work). I’m hoping it’ll just all start to work again soon… —Jeffrey

— comment by Christian Denk on May 24th, 2015 at 8:54pm JST (6 years, 5 months ago) comment permalink

I was really excited to find out about this plugin after only recently discovering facial recognition being introduced. Unfortunately, I’m also finding that I can’t associate my friend’s Facebook URLs/profile IDs to their person keyword. I’m wondering if the person above me is using the same version of the plugin on both machines – I can verify that I’m using the latest version listed in the change log as of this date.

Looking at the log for the plugin, it appears that it’s polling the Facebook Graph API with the full URL that I’m pasting into the plugin’s dialogue box (e.g. ‘’). I copied that URL into my browser to see what it returns and it just spits back out the URL as the ID, rather than what I expect should be some details about the profile. Well, it turns out that the Graph API is actually expecting either the human-friendly alphanumeric ID (e.g. ‘liz.lemon’) or the numeric ID:

Unsure when or how that changed (if at all) or if this was somehow introduced as a bug in the plugin itself, but it would seem that one way or another it’s not polling the Graph API with the correct information. Look forward to seeing this get fixed, either by having the plugin accept the raw ID (and not the full URL) or have it properly extract the ID from the profile URL.

The doc page you refer to is the one for when the ID is already known. The doc for what the plugin is using makes it clear that passing the full URL should work, and indeed it does “sometimes”. It comes and goes… the exact same URL that worked for me two weeks ago is no longer working. They just seem to be flaky. But based on what you wrote, I gave a try stripping off the main part of the URL to just check with the name, and found that seems to work (at the moment). So, I’ve just pushed a version of the plugin with that. Hopefully it continues to work! Thanks for the pointer. —Jeffrey

— comment by Marc Ebuña on May 27th, 2015 at 12:35pm JST (6 years, 5 months ago) comment permalink

Loving the convenience of the People Support plugin. I’ve been using your People Support and Facebook plugins (latest as of yesterday). Recently, when I try to add a person’s Facebook profile URL, I get an error message from People Support line 103(?) attempt to update nil value. I tried to disable, restart LR, and enable the plugin, but the problem remains. I also tried to disable, restart LR, and enable the jf Facebook plugin. Do you have any insight as to how to address this? I noticed prior to this happening that some people weren’t tagged when the post appeared on Facebook even though they had a profile URL and were tagged successfully through the plugin previously. Thanks!

Facebook removed the support that this feature required; I’ve got it working again as of version 20150704.11 of the plugin —Jeffrey

— comment by Jennifer L on June 23rd, 2015 at 5:42pm JST (6 years, 4 months ago) comment permalink

From one dad to another: I love the example for #1 – Pictures of daddy – 5 vs. baby – 1963… LOL… sounds like my collection. I’m glad once in a while my wife will take a picture of me with the kids to prove that I was around after all… 🙂 Great work, enjoy that baby!

— comment by Geoff Hudson on August 13th, 2015 at 10:46pm JST (6 years, 3 months ago) comment permalink

I’m posting my experience with the “blank windows” issue as others have been mentioning regarding this plugin, and how I “fixed” it.

I was following Jeffrey’s advice from a comment above, where he suggests making a copy of the library, removing the photos in that library copy, then zipping and sending it to him for analysis.

I did so, then reopened my original library and was about to take screenshots of the issues I was seeing to send along with the zip. But, it turns out the plugin began working fine at this point, displaying all the windows correctly, as pictured in the tutorials.

I wonder if the switching back and forth of the catalog copy and my original catalog somehow cleaned something up internally in the catalog to allow the plugin to work again.

It’s something to try at least, for those that are having similar problems.

— comment by Keith on October 13th, 2015 at 8:32pm JST (6 years ago) comment permalink

Hello Jeffrey,

in your description of the plugin you write that you have mapped the plugin extras -> view ages for current photo to a keyboard shortcut.
I know this is off-topic for this specific plugin, but how did you do this?

Thank you very much in advance for your reply!

Check out this article —Jeffrey

— comment by Christian Denk on November 4th, 2015 at 2:36pm JST (6 years ago) comment permalink

Hello Jeffrey,
thanks for your comment on my question for keyboard shortcuts.
On windows however, this doesn’t work.
Could you maybe set an “accelerator” for your plugin, or is this something that needs to be configured locally on my machine?

E.g. for your Geoencode Plugin, the “Geoencode” menu item in plugin extras has the “accelerator” “G”.

Thank you very much in advance for your reply!

It’s a real mess on Windows because the space of accelerator keys is shared among all features of all plugins worldwide. I went ahead and made “A” an accelerator for “View Ages for Photo…”, but that may well conflict with one of my other plugins (if you happen to use it) or someone else’s plugin (if you happen to use it) or plugins (if you happen to use them). —Jeffrey

— comment by Christian Denk on January 30th, 2016 at 4:45pm JST (5 years, 9 months ago) comment permalink

Is there a way to combine the People details with others such as Location or Date in the Image Caption template for Facebook. For example, if someone in the photo is not yet 18 years old, do not display the Location/Sublocation?

No, sorry. You give a great use-case example, but it’s not currently possible. —Jeffrey

— comment by Jennifer L on February 16th, 2016 at 3:20am JST (5 years, 8 months ago) comment permalink

I am split catalog on two: 1-RAW 2-Jpeg. Exported from the RAW catalog to Jpeg (catalogs have the same keywords and the same person), but there is no way to move the date of birth 🙁 Maybe we can somehow realize the import and export of data on persons under the plug-in?

Data import/export is definitely a desired feature and it’s on the todo list, but your use case is not a good (or at least common) example for it. I have a difficult time imagining a workflow for which your catalog setup makes sense (but I’ve been surprised many times at the creatives way folks use Lightroom)…. —Jeffrey

— comment by NewSky on February 25th, 2016 at 4:53am JST (5 years, 8 months ago) comment permalink

I use the English version of the program, but would like to receive information about the persons in Russian.
For example:

На фото: Персона (12 months) = На фото: Персона (12 месяцев)

months =месяцев
Is it possible? What do I need to do?

Unfortunately, Lightroom doesn’t offer Russian translations, so the best I can suggest is to add your translations to the translation file for whatever language you run Lightroom in. If that’s English, the file is “TranslatedStrings_en.txt” in the plugin, which by default is almost empty (it has just one line). But if you look at the others, you’ll see lines like “"$$$/Age/2Y_3M_4D=^2 ans, ^3 mois et ^4 jours"”. Copy the lines from one of the other translation files into “TranslatedStrings_en.txt” and then update the text from whatever language it was to Russian. If you then send a copy I’ll include it in the plugin as “TranslatedStrings_ru.txt”, which Lightroom will unfortunately ignore, but users wanting it can then just copy it over “TranslatedStrings_en.txt”. They’d have to perform the copy after each upgrade, unfortunately, but at least it’d be possible. —Jeffrey

Update: as of version 20160313.16, I’ve added Russian-language support. See the new language section in the Plugin Dialog. —Jeffrey

— comment by NewSky on March 8th, 2016 at 8:51pm JST (5 years, 8 months ago) comment permalink

Thank you very much for the support of the Russian language! (On some nuances i wrote in a letter). I have a question. Is there at least some option to obtain data on persons in the image and make them into photo (JPG) WITHOUT the export process? For example by means of a plugin “LR/Transporter” Similarly: {pluginField[info.regex.lightroom.export.gps,map]}? (Best variant) or via Exiftool and plugin “Run Any Command” (not the best variant, because as after the need to re-read the metadata for all of altered photos). But the most remarkable thing is if the plugin “People Support” would have the tool data records on persons own (without export to new pictures, namely data entry into existing photos). Sorry for my English, I use Google translator

The easiest thing would be to use the write field feature of my Bag of Goodies plugin to fill in a standard metadata field (e.g. caption, title, etc.) with the text you want. If you want that text to be part of the original master (and the original master is a JPEG), you can just invoke “Metadata > Save Metadata To Files”. If you want the text to be included on the photo as a watermark or caption, the Lr/Mogrify plugin should be able to do that for you. —Jeffrey

— comment by NewSky on March 22nd, 2016 at 3:20am JST (5 years, 7 months ago) comment permalink

Hi Jeffery,

Love your stuff! I’ve been using a dot (period) as the delimiting character (Example: Jackson.Joe.Jr)
What would the expected results of multiple delimiters?
{People= ;swap around “.”}

Hope you & yours are doing well!

Dunwoody, GA, USA

Only the first delimiter is recognized, so your example will come out as “Joe.Jr Jackson”. I didn’t contemplate this situation where one wants “1/2/3” to become “2 3 1”. I’m not sure how to solve it… maybe enter the name as “Jackson. Joe (Jr)”, which then becomes “Joe (Jr) Jackson”? —Jeffrey

— comment by Joe Jackson on August 27th, 2016 at 3:56pm JST (5 years, 2 months ago) comment permalink

I’m pretty sure the answer is no, but is there any way to target the LR caption fields? I think your plugins only work on export?


You can do it with this, which I just added for you. —Jeffrey

— comment by Rob on August 28th, 2016 at 9:52pm JST (5 years, 2 months ago) comment permalink


I just wanted to say thank you for adding the ability to apply face/age data directly into metadata fields of the “master”images in the LR catalog, (vs only being able to apply that info to exports). If I understand correctly, this can now be done by using the Faces plugin along with the “Write Data Field” feature of your “Bag-o-Goodies” plugin. In my opinion being able to apply face/age data to caption, description or other fields to the “master” images is tremendous!


— comment by Caleb on October 20th, 2016 at 4:06am JST (5 years ago) comment permalink

Can I use plug-in “People Support” together with the plugin “LR/Transporter”? I would like to add data about the persons directly in the original photos (without exports, without the creation of new photos).
[quote]You can access the metadata fields of 3rd party applications by using the ‘pluginField’ token and passing in the plugin’s ID and the field ID. You should contact the plugin’s vendor for this information.


For exemple: It works great. I’d like to add existing photos this data:
{People=*\%N (%s);prefix “На фото: “;oldest first} Место съёмки: {Country}, {Province}, {City}, {Location}. {D2}
Sorry for my english. I use Google translator

You can’t do this directly because the data kept by the plugin is complex, not a simple text field. However, you can use the ““Write Field” feature of my Bag-o-Goodies plugin to populate a standard field (such as “Caption”) this way. —Jeffrey

— comment by NewSky on October 24th, 2016 at 2:25am JST (5 years ago) comment permalink

Jeffrey! “Write Field” feature of Bag-o-Goodies This is what you need! Perfectly! Conveniently! Many thanks!
Sorry for my english. I use Google translator

— comment by NewSky on October 29th, 2016 at 3:55am JST (5 years ago) comment permalink

Hi Jeffrey,

I recently started using your People Support plugin with LR6. However, I use two separate machines- a laptop when I am in the field or traveling and my main workstation for doing serious editing when I am back home. I would like to be able to share/exchange the mapping of people keywords to facebook urls between the two machines. The main reason I started using this plugin is so that when I am in the field, I can easily post to facebook from LR with people already tagged. However, when I return home and import my laptop’s catalog into my workstation’s catalog, I lose all the people-fb associations that I laboriously setup. And visa versa, if I setup new people-facebook associations on my workstation I need to be able to migrate them to my laptop so I have them the next time I am out in the field. Is there any way to support this important (at least to me) workflow?

Best regards and thanks for all of the plugins you provide. I use about 6 of them that I could not do without.

Dave (from CT)

Unfortunately, there’s no easy way to keep catalogs in sync this way. The association is kept in the catalog, but is not part of the catalog import/export. The best I can suggest is to keep a list of names and FB urls that you add to your laptop, then re-add them to your desktop when you get home. )-: —Jeffrey

— comment by David on February 11th, 2017 at 7:17am JST (4 years, 9 months ago) comment permalink

Jeffrey, Facebook has released a feature for parents that want to be able to tag children, without creating a whole different account for them. It’s the “scrapbook feature”. Because your people tagging plugin requires people in the db to have an independent Profile URL, I don’t seem to be able to use this. Ideas? Photos of my daughter are easily a big chunk of what I upload to Facebook.

Scrapbook Info

As far as I can tell, Facebook doesn’t expose this to third-party apps. The word “scrapbook” does not appear at all in the docs. —Jeffrey

— comment by Anna H on February 20th, 2017 at 4:58pm JST (4 years, 8 months ago) comment permalink

Is there a way to sort a collection by the age of the persons in the photo? For example, I have two boys and would love to see how they looked when they were the same age. Obviously this wouldn’t work when they are in the same photo, but for photos with a single person this could be interesting.

I added something to the new version that I just released. It’ll create a new collection and you’ll have to manually set the sort order in that collection to “custom” (Lightroom doesn’t allow plugins to set the sort order). You’ll find the new feature in the “File > Plugin Extras” menu, and you’ll almost certainly find it frustrating because the moment you have all the photos sorted by age, you want to see the age right away as you move among the photos. Lightroom just doesn’t give enough UI power to plugins to solve this easily. )-: —Jeffrey

— comment by Chris on May 9th, 2017 at 7:14pm JST (4 years, 6 months ago) comment permalink

Wow Jeffrey! Thanks! I appreciate the difficulty with this and your effort! I just tried it and it works great! The perspective of seeing my children at the same age is quite interesting. Cheers!

— comment by Chris on May 20th, 2017 at 6:30pm JST (4 years, 5 months ago) comment permalink

I installed your Metadata Wrangler Plugin in LR6.14 on an iMac and can see it in the Plugin Manager etc. In the Export splash screen, I can see that Enable box is checked. I selected “Remove All Metadata” from the Preset drop-down and hit export the renamed photo as jpeg into a folder on the desktop. When I open the jpeg image in Photoshop, my copy right info is still there! I thought that selecting “Remove All Metadata” would have stripped all that info from the exported photo.

It definitely should have removed it all. Could it be that Photoshop is re-adding it, as some kind of template that’s applied upon image opening? You can inspect the raw image with my online Exif viewer. If the data is indeed not being removed, perhaps send a plugin log after an export, along with info about what remained. —Jeffrey

— comment by Raj on February 14th, 2018 at 8:53am JST (3 years, 8 months ago) comment permalink

Getting used to the plugin and really like it so far, except for one thing i’d expect to work differently. I’ve noticed that it exports always all persons and doesn’t care about the “Include on Export” status. Is that intended?

I’m using pseudonyms here, which i want to export and use in descriptions on social-media. So far this works. But i also tag real-names, which i don’t want to pop up anywhere else, so i flagged them as “not exportable” – but the people-token still lists them.

The other thing i would love to be able to, but i guess, it’s not that easy to do, is being able to use the People-token in actual metadata-fields in the lightroom-panel like title or caption, or the iptc-“person shown”. Maybe that’s doable with metadata-wrangler?

Thank you very much for your awesome work!

This plugin has nothing to do with whether keywords get exported, except it offers easier-to-deal-with access to the “include on export” flag for each keyword. If they’re marked to not include on export, Lightroom won’t include them, but if you’re using some plugin to communicate with social-media sites, it could be that the plugin is sending them as metadata alongside the image. —Jeffrey

— comment by Mike on April 17th, 2018 at 5:05am JST (3 years, 6 months ago) comment permalink

Hi Jeffrey,

is it somehow possible to export/access the database which contains the people information – especially the facebook-URLs and profile names? Many thanks in advance.

No, sorry, nothing like that has been built in, and considering that Facebook is next week dropping photo-upload support for apps like the plugin, it won’t be worth it to put more resources into Facebook-releated features. Sorry. —Jeffrey

— comment by Roberto on July 22nd, 2018 at 4:08am JST (3 years, 3 months ago) comment permalink

Hi Jeffrey,

I actually asked especially because Facebook dropped support.

Now that we have to tag people manually again (besides all the other actions your plugins automated before) I need to map peoples Facebook name to their real name as they may differ, because I always use real names for Lightroom tags.

I thought of making a Excel list of people data or sth. similar (crappy workaround but better than nothing). I also like to have access to all this data just in case someone finds a way to circumvent Facebook’s new policy or in case I leave LR and switch to another software.

As I have stored over 1000 people (about half of them linked to Facebook) in LR it would take a while to open every one of them, then manually copy the URL or name.

— comment by Roberto on September 9th, 2018 at 10:38pm JST (3 years, 2 months ago) comment permalink

Like f1oren, I’m interested in using First Name or Nickname instead of the full Last/First combo, especially since posting to Facebook is not supported by Facebook anymore. I’m looking at using Metadata Wrangler to rewrite the caption field so that it can be automatically read at Facebook Upload. Wondering if it might be possible to do a keyword replace of Last/First with a name I specify (either just a specific First name or nickname) in the exif data, but also be able to capture that replacement in the caption field? Or just the latter i.e. replacing name in caption without affecting the keyword in exif?

I’ve added a “Nickname” field to the People Support plugin’s dialog, and a “nicknames” modifier to the {People} tag. Hopefully that will help. —Jeffrey

— comment by Jen L. on October 2nd, 2018 at 5:01am JST (3 years ago) comment permalink

Thanks so much, Jeffrey! Tried it out and works well! For v2, might you consider a placeholder such as “first names” or “right names” (assuming the slashed keyword may also include middle names) displaying the text to the right of the “/” in the people keyword?

— comment by Jen L. on October 5th, 2018 at 12:42pm JST (3 years ago) comment permalink

Hi is possible to generate only first name with this plugin for people in export to Facebook

The plugin doesn’t know what format the names are in, so it can’t really automate it. But if you can do some programming, you can craft an appropriate LUA tag for your needs. —Jeffrey

— comment by Marcin on December 6th, 2018 at 8:33pm JST (2 years, 11 months ago) comment permalink

Hi Jeffrey,

Tank for all your work with LR.
I use yours plugin People support and Write Data Field. I would like to write the template “People” in the field Age cf Extension IPTC. I can’t find the field.
Moroever, I use the plugin “Search, replace and transfer” based on your code. Unfortunately, this field dosen’t exist !
Have you got another solution, please. ?

I’ve updated the Write Data Field feature of my Bag-o-Goodies plugin to let you write the “Age” metadata field. —Jeffrey

— comment by Cyrille on January 24th, 2019 at 10:12pm JST (2 years, 9 months ago) comment permalink

Hi Jeffrey

I have been using your plugins for years and love them! I am having an issue with the people token. I have had it set up for years in the folder watch and now it keeps giving me the error: GrokExif:16: bad argument #2 to ‘?’ (string expected, got table). I had it set up with People and the name simple age and the swap and oldest first and I just kept getting the error. I took it down all the way to just {People} and still get the same error. I pull up the people support manager and everything seems to be fine. The names and ages are still showing under the plugin extras. I have no idea why this changed and how to get it back. Thank you in advance

Please send a plugin log after encountering the error, and I’ll take a look. Thanks. —Jeffrey

— comment by Angela on May 21st, 2019 at 1:33pm JST (2 years, 5 months ago) comment permalink

I don’t know if you’d like to get feature requests/suggestions.
It would be a quite new thing for this plugin but being able to write all (facial) people tags to the description (ordered by position in the image) would be great. Do you think, this would be possible via any plugin?

It’s not impossible, but it’s not easy. The only way for a plugin to know where in the image a face tag is is to export a temporary copy of the image behind the scenes, then inspect its metadata. Too much trouble. )-: —Jeffrey

— comment by Roberto on June 8th, 2021 at 6:59am JST (4 months, 21 days ago) comment permalink
Leave a comment...

All comments are invisible to others until Jeffrey approves them.

Please mention what part of the world you're writing from, if you don't mind. It's always interesting to see where people are visiting from.

You can use basic HTML; be sure to close tags properly.

Subscribe without commenting