Jeffrey’s “Bag-o-Goodies” Lightroom Plugin

This plugin is a collection of various small Lightroom tools that don't merit their own plugin.

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

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.

Tool Overview

As of version 20161116.9, the plugin contains these tools, available via the File > Plugin Extras menu:

•  Find Next Photo Group — identify and group related photos (exposure bracketing, panoramas, high-speed burst, etc.).
Compare Photo Times — how far apart in time were two photos taken?
Compare Two Collections/Folders — which photos are shared between two folders/collections, and which are unique to one or the other?
•  Mark Selected Publish Collections As Up To Date — any Modified Photos to Republish in selected publish collections are moved back to Published Photos.
•  Publish All in Selected Service — publish all collections in the currently-selected Publish Service.
•  Delete Cached Previews for Selected Photos — clears out cached previews that the Library Module has made for the selected photos.
•  Write Data Field... — lets you update metadata fields with other data from the photo.
•  Publish At... — lets you schedule publish collections to be published later in the day.

Find Next Photo Group

This tool helps identify the following types of logically-grouped photos:

  • High-speed burst
  • Exposure-bracketed shots
  • Aperture-bracketed shots
  • Panorama-component shots

It makes its best guess based upon capture-time and exposure-settings metadata.

Once a potential group has been identified, the plugin selects them and offers the option to apply an appropriate keyword (high-speed burst, exposure stack, etc.) and makes it easy to group them into a stack.

Here's an example of the plugin identifying the high-speed burst that was used to create the wigglegram on this page...

At this point I dismiss the dialog and while doing so optionally have the plugin apply a high-speed burst keyword to each photo. The photos remain selected, so if I want them grouped into a stack, I merely tap the Command-G keyboard shortcut and it's done. (Sadly, Lightroom's plugin infrastructure doesn't allow a plugin to stack photos. 🙁 )

Again invoking this tool, the plugin searches for the next group starting just after the selected photos.

Because the plugin starts searching after the currently-selected photos, one must make sure to deselect all photos before doing the first search of any particular group of photos. The keyboard shortcut to deselect all photo sis Command/Control-D.

Compare Photo Times

This simple tool displays the time difference between two photos. For example, it shows that on my first bicycle ride to the sea it took 8 hours 11 minutes to get there:

The tool is invoked via File > Plugin Extras > Compare Photo Times. If more than two photos are selected when it's invoked, the first and last photos are chosen.

If your camera somehow saves the capture time with sub-second accuracy, and if Lightroom actually reads that data and makes it available to the plugin, the capture time is reported appropriately. For example, this unlucky cyclocross racer:

Slow Motion
I bet it felt a lot longer than 6/10th of a second

Some thought has gone into how to display things nicely. The hours and minutes and am/pm are in bold, with the seconds not in bold so that they don't clutter a quick glance. If times are indeed recorded with sub-second accuracy, the fractional part of the seconds is shown in a smaller font to further reduce the at-a-glance clutter.

(12-hour time notation is used in English and Spanish installs of Lightroom; 24-hour time notation is used otherwise.)

A lot goes on behind the scenes to make sure the duration is presented accurately. A duration of 367 days might be 1 year 1 day or 1 year 2 days depending on whether a leap day fell in between, for example.

There's one other wrinkle to mention, illustrated here with an example showing both the earliest and the most-recent photos of my son to appear on my blog:

This example highlights a problem with photo dates: the photo-data standard doesn't allow the timezone to be encoded along with the time, a moronic decision that creates all kinds of problems in dealing with dates.

In the example above, the final bit of the difference between the two photos would indeed be 2 hours 18 minutes if the two photo times (3:45pm and 6:05pm) were in the same timezone, but one is US Pacific Standard and the other is Japan Standard, so without understanding timezones the span between the two is off by the difference in timezones (in this case, by 17 hours).

So, to handle this properly, the plugin can take timezones into account if they're set for each photo with my Geoencoding-Support plugin. Here's the same example photos with timezone support enabled:

Notice that the duration is now shorter (by the 17 hours difference between the two timezones) and so is now correct. Also, the timezone is indicated lightly next to each time, as the offset from UTC (the modern version of GMT).

If a photo doesn't have a timezone associated with it with my Geoencoding-Support plugin, the timezone currently set for the computer is used.

Compare Two Collections/Folders

This feature shows what photos are shared between two collections (or a collection and a folder), and which are unique to one or the other.

If two collections (or a collection and a folder) are selected when invoked, they'll be compared. Otherwise, you'll be prompted for which to compare.

You'll then be shown a scrolling list of thumbnails indicating items shared between the two collections, or unique to one or the other. This is headed by a summery, which includes the ability to create a collection of just the shared/unique sets.

Mark Selected Publish Collections As Up To Date

This simple tool inspects all published photos in whatever Publish Collections are active at the time, and offers to moves any in Modified Photos to Republish back to Published Photos.

All selected collections must be within the same Publish Service.

The need for this kind of tool arises out of longstanding bugs in how Lightroom keeps track of what photos need to be republished. It's really frustrating for such basic bugs to remain year after year, but until Adobe fixes it, this tool might bring some relief to folks particularly hard it by the bug.

Publish All in Selected Service

If invoked while any publish collection is selected, all collections in the publish service are published, one by one. Progress is indicated in the status area in the upper left of the Library Module.

Delete Cached Previews for Selected Photos

This command allows you to clear out the various-sized preview images that Lightroom has squirreled away to make Lightroom interactive use feel snappier.

The two arrows show that the main command can be invoked in two ways, one to actually clear out the cached previews, and another to just report what would be done.

(Note: this is all completely unrelated to Lightroom's “Smart Previews”, which is an entirely different concept.)

By the way, if you just want to see the amount of space taken by previews, my Date Explorer plugin will tell you, as will my System Info plugin.

Write Data Field...

This tool lets you fill in certain metadata fields (Title, Caption, etc.) with other data from the photo, using the template tokens that my plugins understand.

In its most simple use, you can copy metadata from one field to another, but in more complex uses, you can craft complex captions by combining a variety of data on the fly.

The list of fields you can write to:

  • Caption
  • Category
  • Copy Name
  • Copyright Info URL
  • Copyright Owner
  • Copyright Status
  • Creator
  • Creator Address
  • Creator City
  • Creator Country
  • Creator E-Mail
  • Creator Job Title
  • Creator Phone
  • Creator State / Province
  • Creator Website
  • Credit Line
  • Description Writer
  • Event
  • Headline
  • Instructions
  • Intellectual Genre
  • IPTC Scene Code
  • IPTC Subject Code
  • Job Identifier
  • Postal Code
  • Rights Usage Terms
  • Source
  • Sublocation
  • Title

Publish At...

This tool lets you schedule collections to be published later in the evening or the next day. It's a simple thing.... merely pick a time at the top or bottom of an hour any time in the next day, and pick the collection or collections to be published. This might be useful to shift export bandwidth to the middle of the night, for example.

(There's certainly room for a more complex scheduling system, but this bag-o-goodies feature is simple.)

Lightroom must be running when the time comes around for the publish to happen. When that happens, a dialog is displayed for a short time to give you a chance (if you're in front of the computer) to abort it. Otherwise, each collection is published in turn.

When it's done, a dialog is shown (and remains until you dismiss it) saying that it's done, letting you know what time it finished and how long it took.

As part of the registration nagging, after the plugin's six-week trial period has passed, you can still use it if unregistered, but you can pick only one collection to publish, and the selection of target times becomes somewhat limited.


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 )


Updates to the data templates that my plugins understand: updated the Keywords token, added CollectionNames and CollectionFullNames tokens, and added a bunch of stuff (KWf, CN, CFN, CNf, CFNf) to the {LUA} token.

Better handling when the plugin is reloaded in the middle of a session.


Oops, more Lr7 stuff.


Updates for Lightroom 7


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

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

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


Added the {Exiftool=....} token, so now you can copy Exiftool fields from the master image file to a Lightroom data field.


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


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

Updated the {FolderName} token to allow {FolderName=1} (rather than requiring the plus as in {FolderName=+1})


Consolidated the "Clear Standard Previews for Selected Photos" item and the "Delete Cached Previews for Selected Photos" item into one. They essentially did the same thing... I apparently added one without having remembered that I'd added the other a few months prior. How scatterbrained can one be!? Anyway, it's now much better, offering the option to leave previews for offline photos, and to report on what would happen rather than actually doing it.


Added the IPTC "Event" field to the "Write Data Field" feature.

Upgraded to the embedded copy of ExifTool to version 10.55.


Added the Newline template token.

Enhanced the FolderName token.

Added "Sublocation" to the "Write Data Field" feature.

Upgraded to the embedded copy of ExifTool to version 10.50.


The "Find Next Group" now knows that a change in certain metadata means that photos can't be grouped: camera make/model, image dimensions, image format.


Better plugin-name reporting for the Publish At service.


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


Upgraded to the embedded copy of ExifTool to version 10.40.

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


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

Switch the log-sending mechanism to https.


Added a preset function to the write-data-field goodie.

Upgraded to the embedded copy of ExifTool to version 10.36.


Added "Publish At...

(Today is the 9-year anniversairy of my plugin stuff.)


Added "Clear Standard Previews for Selected Photos".

Upgraded to the embedded copy of ExifTool to version 10.26.


Cleaned up "Compare Photo Times" dialog on Windows. Not sure how it got dorked so badly.


Added "Write Data Field..." goodie.

Upgraded to the embedded copy of ExifTool to version 10.20.


Added hooks for Windows keyboard shortcuts.


Added "Compare Two Collections/Folders" goodie.

Added "Publish All in Selected Service" goodie.


Added the "Delete Cached Previews for Selected Photos" goodie.

20160328.2 Fix a display issue with in the mark-as-up-to-date dialog
20160201.1 Initial public release

All 4 comments so far, oldest first...


I use your Folder Publisher and Metadata Presets plugins already and I downloaded Bag of Goodies to try to solve a problem I created for myself. I used the IPTC Headline field to store each photo’s filename as of a date in 2016 before I renamed everything. I decided to move it from a standard field to a custom metadata field instead. I already have created a plugin of my own where I add 20+ custom metadata fields and a metadata panel to enter & edit those along with the standard metadata fields I care about.

Would there be an easy way to extend the tags/tokens you support in the Write Data Field part of Bag of Goodies to support custom fields? Since I created the fields I know their IDs so just allowing your plugin to support {com.xxtwnz.todo.PWWCamera} or {PWWCamera} another plugin’s IDs would then let me move data between the standard fields you already have a token for and my own custom fields.

I haven’t found any plugins that let me copy data from a standard metadata field to a custom field or the reverse. I did find one plug of John Ellis’ that allows one to make his plugin aware of another plugins custom fields so one could then search on those. Doing something like that would be great.

Please let me know if what I’m proposing is feasible with little effort or a big job.

Thanks so much or what you do to make LR do what it already should do.

You can refer to your custom fields via th PluginProperty token when writing a standard metadata field, but unfortunately, Lightroom doesn’t let one plugin update the data for another, so there’s no way to use my plugin to update your custom fields. )-: —Jeffrey

— comment by Philip on May 23rd, 2017 at 3:19am JST (7 months, 25 days ago) comment permalink

Is there any way to add the Event field (IPTC:Extension) into the Write Data Field drop down? Will you also be able to add it to the available tokens?

(Houston, TX, US)

Sure, I’ve just added it to the list of writable fields. It has long existed as a template token for reading. —Jeffrey

— comment by Joe on June 8th, 2017 at 2:35pm JST (7 months, 9 days ago) comment permalink

I was using this plugin till about a year ago. I had taken a personal time-off. I want to use the plug-ins to publish to Facebook and Google Photos. I was doing this easily from Aperture and later from Lightroom. I had subscribed to this Plug-in then, now I have tried to update all the available options. It doesnt seem to work. “Facebok Export Plugin Infor” – unable to Export, The section says upgrade to .402, while I have downloaded, the same does not install on its own. The zip files seems to be for Windows. I am operating a iMac, with the latest OS. Not sure how to proceed.

The automatic upgrade stuff in my plugins doesn’t always work smoothly, depending on your system, so in this case it’d be better to just delete all the old copies of the plugin from your machine (you won’t lose any data… none is kept in the plugin files), download and unzip a fresh copy. If you decided that you want the plugin to live on your system in a different place than it lived before, then re-point the Plugin Manager at the new location. There is only one download, and it’s used for both Win and Mac. —Jeffrey

— comment by Arvind Venkatraman on June 21st, 2017 at 2:06am JST (6 months, 26 days ago) comment permalink

I use the Write to Data field a lot. I write the Headline to Title and set to overwrite always. This is a great utility!

I use PhotoSupreme v3 as my DAM and when I go to PhotoSupreme and read metatadata data such as ISO, camera, f/stop, focal length are erased and don’t display in the program. I need to convert metadata to XMP in PhotoSupreme and then save to file (two steps).

Any reason your Write to Data field would cause this? No other change I make in LR has this same effect.

While not your issue, I also have to go through the same steps when processing RAW to jpg in CaptureOne.

The write-data-to-field feature never touches the image files (nor sidecar files like XMP)…. it’s just an update in Lightroom’s database. If you have Lightroom’s “auto-write XMP” feature turned on (which I generally recommend against), then of course most data changes in Lightroom result in data being written back to the file/sidecar, but that’s all Lightroom and so it should all be standard. Sounds like an issue with PhotoSupreme. —Jeffrey

— comment by Larry on October 19th, 2017 at 11:22am JST (2 months, 29 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