Jeffrey’s “Folder Watch” Lightroom Plugin

This plugin for Adobe Lightroom Classic is a feature-rich alternative (or supplement) to Lightroom's built-in tethering and Auto Import, and also attempts to make up for Lightroom's lack of an auto-export facility. It allows you to run a continuous scan of select folders on your hard disk in the background, automatically importing new images in place, or first moving/renaming if you like.

It can scan an individual folder, a list of folders, or whole trees of folders.

It also allows for automatic processing of imported images, and also automatic export, creating a fully-automatic end-to-end processing system.

As a special case to enhance Lightroom's built-in tethering, it can apply special processing to images that have been recently added to Lightroom.

This plugin works in Lightroom Classic, and older versions as far back as Lightroom 4 (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.

Configuration and Use

The plugin is configured in the Plugin Manager:
The dialog shown is as of version 20180503.126; the current version of the plugin is 20231011.164.

When the Enable Scan checkbox is checked, the scan runs continuously, even after the Plugin Manager has been dismissed.

Scan-Related Configuration Items

Folders to watch  —  A comma-separated list of folders the plugin should scan for new images. Non-absolute folders are relative to the catalog folder.

See the Common Scenarios section for guidance here.

Also watch subfolders  —  If checked, the scan also descends into all subfolders of the folders listed.

Frequency to check  —  The scan takes some of your computer's resources, so it's not prudent to have it scanning nonstop; this indicates how long a pause should be made between scans.

New images only  —  If checked, images found in the first scan are not imported. This is perhaps useful when tethering and are interested only in new images going forward.

Ignore suspected duplicates  —  Ignores (does not import) new files that have the same filename, byte size, and pixel dimensions as a photo already in the catalog. (If a catalog photo is currently offline, that is, its master file is not currently available, then the byte-size comparison is not included in the decision.)

Filenames to consider  —  Lets you include or exclude filenames that match a filename pattern like *.jpg.

Special rules for when the provided pattern includes a slash: in this case, the pattern is matched against the full path of the file being considered. To exclude files in a sub-folder named junk, for example, select exclude names matching pattern and enter a pattern of /junk/. To exclude files in any folder that has junk in its name, use a pattern of junk*/ or /*junk.

(The special rules about folder patterns make sense only when Also watch subfolders is turned on.)

File size to consider  —  A sanity check to avoid too-big or too-small images.

File unmodified for  —  If the plugin were to try to import a file as it was being written to disk, Lightroom would get only a partial file, resulting in errors. To help avoid this, the plugin waits until the image file hasn't been updated for some time, in hopes that doing so will ensure the write has fully completed.

Read-only images only  —  Enabling this has the plugin ignore writeable files, considering only read-only files. The lock image feature on some cameras can result in a read-only file on disk.

Special tether support  —  This special option is explained below.

Pre-Import Configuration Items   

Just before a file is imported, you can have the plugin move it to a target folder, and rename it as well. You can also have a command executed on the file prior to import.


If you enable the file-move option, the plugin moves images it finds into a folder you specify.

In specifying the target folder, you can use many preset template tokens, though most that refer to photo metadata are not available. However, tokens that refer to the capture time of the image, such as {YYYY}, are available.

You can also use tokens that refer to the master image file (in this context, the file to be moved/renamed, prior to move/rename and import), such as {FileYYYY} for the file's creation year, or {FolderName} for the name of the folder that the file to be imported was found in.

In writing the target-folder template, sub-folders can be separated by either kind of slash (forward or backward).

Optionally, you can then append the name of the watched folder (test2 in the screenshot example above) to come up with the final target folder. (This is the same as using {FolderName} at the end of the move-to path, or at the beginning of the rename-to path.)

For example, if you have the plugin watch folders named Main Shooter, Sub Shooter 1, and Sub Shooter 2, enabling this option would have images moved to the appropriate sub-folder (Main Shooter, Sub Shooter 1, or Sub Shooter 2) of the destination folder you specified.

Additionally, you can have the plugin preserve any folder structure found under the watched folder, replicating it within whatever target folder the above steps resulted in.


The rename to field also accepts preset template tokens: tokens accepted are the same as those mentioned in Moving above.

For example, a rename to value of {YYYY}-{DD}-{MM}/{Filename} has new images moved to a subfolder (of the target folder computed by prior steps) based on the image capture time.

Or, you might use a rename to value of {yyyy}{dd}{mm}-{hh}{min}{ss}-{Filename} to prefix the current date/time to the image filename, and then place it within the move-to folder.

You can use either kind of slash (forward or back) to separate sub-folder names.

The plugin always ensures that the file extension remains the same across any move or rename, so you don't have to worry whether you specify a file extension in the rename to field.

You can specify that filenames should be rewritten to a sequence by including ### in the filename, using as many # as you want digits in the sequence. For example, you might use photo#### to have your files named photo0001.jpg, photo0002.DNG, etc. (the file extension will be maintained from the original file on a per-image basis). It's a pretty smart sequencing system, and always picks up from the filename with the highest number in the # location.

The plugin will never overwrite a previously-existing file; conflicts that arise are resolved via renaming as with photo-2.jpg, photo-3.jpg, etc.

Running a Command

Finally, prior to import into Lightroom you can have a command-line program executed. This command uses only the special {Filename} token; other tokens are not supported. It's recommended in the command line to surround {Filename} with quotes.

If the command execution encounters an error, a message window is displayed, but importing continues.

Import-Related Configuration Items   

Play system sound  —  Plays the selected system sound after an image has been imported.

Show splash dialog  —  If you want to be alerted when an image is auto-imported, enabling this has a small dialog pop up for a few seconds. This can be useful particularly when Switch to photo is enabled and you intend to be using Lightroom interactively, to avoid keystrokes suddenly going to the new photo.

Apply develop preset  —  A develop preset you've previously saved can be automatically applied.

Apply metadata preset  —  Same with a metadata preset.

Add keyword  —  A keyword can be automatically added.

Set star rating  —  You can set the star rating.

Set color label  —  And the color-label text (which can be one of the defaults like red, or anything else you like). Once you've got something typed in the text field, the checkbox can be checked.

Set title  —  The image title can be set. You can use template tokens for dynamic text, e.g. Copyright {YYYY}.

Set caption  —  The image caption can be set, here also with template tokens.

Switch to photo  —  If enabled, upon each import Lightroom will switch to the Library view for the new photo's folder, and the new photo will be selected.

If you happen to be typing something into Lightroom when this suddenly happens, what you type will be taken as keyboard-shortcut commands for Library, which could be very bad, so enable the Show splash dialog option if you'll be using Lightroom interactively while the scan runs in the background. The splash dialog kills the keyboard input, giving you a few free seconds to realize what's happening and to stop typing.

Build Smart Preview  —  The Smart Preview can be made automatically.

Add to standard collection  —  Newly-imported photos can be added to one of your library's collections. This can be useful for many things, including automatically sending imported images to the web or your iPad via Lightroom mobile.

Add to Publish collection  —  Newly-imported photos can be added to a Publish collection.

Publish this collection  —  A specific publish collection can be automatically published with each new import, or, optionally via the also publish other collections in its Publish Service checkbox, all collections within the publish service are published.

This option is distinct from the Add to Publish collection because that option works only with non-Smart publish collections, but you may well have a smart collection that you want to publish automatically.

You can choose any publish service for each of the last two options. Choosing an uploader service (such as to Flickr, PicasaWeb (G+), or Tumblr, among many others) can allow for automated from-camera-to-the-web processing.

Alternatively, for local output (or to Dropbox, network disk, etc.), perhaps consider my Folder Publisher and Collection Publisher plugins. Publish Services from other developers should work fine too.

Special Tether Support  —  this option is discussed below.

Advanced Flexability: Execute Your Custom Lua Script

Those with the technical ability to program computer code in the Lua language can tap into that flexibility to perform custom actions as each photo is imported.

Your Lua script, which must be in a *.lua file, is executed within a simple environment that includes the variable photo, which is the LrPhoto object representing the newly-imported photo. The script can access information about that photo, and if it wishes to make changes to the photo can return a function that makes those changes. If such a function is returned by your script, the plugin will then execute it when Lightroom allows catalog updates.

As a simple example, here's a script that sets the star rating of newly-imported photos to 3 only if they currently have no star rating:

if not photo:getRawMetadata('rating') then
   return function()
             photo:setRawMetadata('rating', 3)

The simple environment in which the Lua script is run includes the basics from the standard Lua environment (e.g. the string and table libraries), and also some namespaces provided by the Lua SDK, such as LrDate and LrPathUtils.

It also includes the function log(), which dumps its arguments to the plugin log (see the upper-right section of the plugin manager), and printf(), which is a standard formatted print to the plugin log.

Note: Lightroom uses Lua version 5.1.

Special Support for Lightroom's Tethering

This plugin main purpose is as a replacement for Lightroom's integrated tethering support, because Lightroom's tethering offers very little in the way of advanced workflow support.

As such, the plugin's main purpose is to find image files that have not yet been added to the current Lightroom catalog, import them into the catalog, then apply the various workflow support features selected by the user, such as setting a develop preset or adding to a publish collection. In this context, it's presumed that one uses some third-party solution to get the image files to appear on your disk, such as third-party tethering software, Dropbox or the like, an FTP server, or even an Eye-Fi memory card.

However, the plugin does offer a way to work with Lightroom's integrated tethering support, to perform the aforementioned apply the various workflow support features selected by the user step on files that found their way into Lightroom apart from the plugin (presumably via tethering) since the plugin started its scan.

To use this special support, have the plugin watch the same folder that Lightroom's tethering support is depositing files, and turn on the

Enable the Upon Import of a New Image processing for all relevant newly-added images

option in the plugin. Then start the plugin scan, and then start your tethering.

When you start the plugin scan, the plugin will first take the time to note what images under the watched folders are already in Lightroom. Since they're in there before the scan and tethering starts, the plugin knows not to touch them later. (If the plugin didn't ignore pre-existing Lightroom photos in this way, it would apply all the after-import processing to all the images, every time, which could lead to disaster.)

Then the plugin will scan the folders as often as you've told it. If you're using Lightroom's tethering, new files that the plugin comes across will likely already be in Lightroom (having been imported by the tethering unit at the same time it created the image file), but it's perhaps important to remember that any time the plugin finds a file that is not already in Lightroom, it'll import it into Lightroom and perform the after-import steps.

Anyway, what'll happen if you're using tethering is that the plugin will find the new file is already in Lightroom. It'll check against the list of photos it made when it started its scan, and realize that indeed the photo is new since the scan started, and because this special tethering-support option has been enabled in the plugin, the plugin will go ahead and apply the after-import selections such as applying a develop preset or adding to a publish collection.

This is the only situation in which the plugin processes an image that it didn't itself import.

In this scenario, an image can exist be added to Lightroom by the tethering unit and sit there for some time before the plugin gets around to the after-import processing. How long depends on the frequency to check setting, how much scanning the plugin has to do (few files or logs?), and the timing of the tethering with respect to the scan.

Common Scenarios

The plugin can scan folders that are not part of your Lightroom catalog, folders that are part of your Lightroom catalog, or both. It can move/rename files or not, as you see fit. People use the features of this plugin in all kinds of crazy combination, but here are there common scenarios to consider:

  1. Using a drop-off folder outside of Lightroom

    If you have a third-party application depositing files to a drop-off folder (or a drop-off folder that's getting new image files somehow, such as a Dropbox folder being fed externally), you can watch that folder with this plugin, and use the plugin's file-moving options to shuffle the files into a folder that Lightroom knows about. The plugin will then add the image to Lightroom.

    In this scenario, the drop-off folder is generally empty except for when a fresh file has been deposited but not yet processed by the plugin. This is the most efficient scenario.

  2. Feeding a Lightroom folder with a third-party application

    This scenario is similar to the one above, except the folder that new image files are deposited into (via the third-party app, Dropbox, etc.) is already a folder that Lightroom knows about. In this case, you'd probably not want to use the plugin's move/rename options, but just have the plugin scan a folder that Lightroom knows about, adding new files to the Lightroom catalog in place.

    In this scenario, the plugin is acting like an automatic (and richly-featured) Synchronize Folder replacement.

    Because files are not shuffled out of the watched folder, this scenario can become inefficient as the number of images in the watched folder becomes large. One does not generally want to apply this scenario to the entire Lightroom folder hierarchy, or any hierarchy with more than a few thousand photos, because the scan time could get inconveniently long.

  3. Feeding a Lightroom folder via Lightroom's tethering or auto-import features

    This scenario is similar to the second one in that the plugin watches a folder that Lightroom already knows about, but it differs from the other scenarios in that it can work with photos that are added to Lightroom via Lightroom's tethering or auto-import features. Normally, this plugin completely ignores any image that it doesn't add to Lightroom itself.

    This special scenario is available only when explicitly enabled via the option described in the section on tethering. In this scenario, files found during the scan to have been added to Lightroom (by something other than the plugin) since the plugin's scan started are not ignored, but instead get the after-import processing configured in the plugin.

    This can be useful with tethering to do additional processing that Lightroom's tethering doesn't allow, such as adding a photo to a collection or exporting via Publish.

    This scenario is more resource-intensive than the scenario above, so you probably don't want to apply it to a folder with more than a few thousand images (though trial and error will show you if/when things begin to bog down).

The three scenarios are not mutually exclusive... it's possible to have them all apply at the same time (though such a need would be quite esoteric, I'd think). Anyway, they're just common use cases; once you learn what the plugin can do, you can apply it to your needs as you see fit.

Note that regardless of the scenario, there's a special case built in to the scanning: any subfolder named picasaoriginals is ignored. Such folders are a byproduct of Google's old Picasa software.


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 Lr10 to Lr11 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 )


CachedImagePreviewsFile token.

Upgraded to the embedded copy of ExifTool to version 12.67.


Try harder to grok the "create date" from a video being renamed prior to import.


Ensure that the auto-delete-empty-folders feature can't delete special folders like Desktop.


Added the ability to play a system sound upon import.

Added the ability to execute a command on a file prior to import.

Expanded the Lightroom namespaces available to the post-import Lua script.


Upgraded to the embedded copy of ExifTool to version 12.42.


Properly handle when the scanned folder is a disk root.

Removed a bunch of debug logging that was slowing down the LUA token.Newline


Added the WEEKNUM token, along with DAYNUM, weeknum, and daynum.

Whack-a-mole with PayPal's random changes.


Warn when PayPal seems to have given a bogus code in the web-confirmation page.


Properly handle when the previously-selected keyword is no longer available in the catalog.


Added support for GPR files.

Fixed that the Province template token did not respect the plugin-specific geo-privacy settings.

Fixed an issue with the {Newline} token, and added {Comma}, {Hyphen}, and {Space} for good measure.

Fixed a problem with filters on the {Keyword} token.


Added the ability to copy a file prior to import, in addition to the option to move that was already there.


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.


More develop-preset debug logging.


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

Added some debug logging dealing with applying a develop preset.


fixed a bug that happened when canceling out of the save-preset dialog.


Added the ability to import/export the plugin presets. Some settings hadn't properly been in the preset system; I think I've got them all in now.


More debug logging to track down a timeout error.


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

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

Added some extre debug logging related to changes in the watched folder.


Fixed a blank-screen problem found with some installs.


Added the {RelativeFolder} token.

Upgraded to the embedded copy of ExifTool to version 11.70.


Added the ability to import only images or videos, and the ability to have multiple filename patterns.

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.


The 20190805.139 update to work around develop-preset woes introduced a new bug; fixed it.

Respect the "ignore errors" option even for file-move errors.


Fixed the SST1 and SST2 tokens.


Work around a bug in Lightroom that saw the develop-preset selection forgotten with any develop-preset change.


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.


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.

Upgraded to the embedded copy of ExifTool to version 11.50.

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


Add the ability to clean up empty subfolders after having moved from them to the catalog.

Upgraded to the embedded copy of ExifTool to version 11.30.

Updated the keyword-related tokens to accept standard filters.


The auto-publish didn't publish unless some already-published photos had changes.

Added the PEOPLE variable to the LUA token.

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.


Added some extra debug logging to try to track down a problem.

Dropped support for Lr2 and Lr3. Too much hassele. They're a decade old.


Updates for Lr8 (Lightroom Classic CC Version 8).

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

Added hierarchical options to the Keywords token.

Added the 'nicknames' modifier to the {People} token.

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


Added a few more filename extensions to look for for whom support has been added to Lightroom since the last time I looked.


Added support for CR3 files.

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

Have the include/exclude pattern to apply to full paths (as opposed to just the leaf filename) if the pattern includes a slash.


Try to avoid having unexpectedly-long error messages create too-big a dialog.


Remove some debug logging that wasn't helping


Updated how the log is written, for better consistency.

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

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

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


Allow relative folders to be specified for watching (non-absolute paths are relative to the catalog)


Added the ability to execute a user script upon each import.

Re-fixed the "set star rating" stuff.

Revamped the UI.


Added the ability to have the plugin instigate a publish every scan, even if nothing new imported.

The "set star rating" stuff was unclear before.... the "none" meant "don't change" and not "no stars". Now things are clear whether you're changing nothing or setting zero stars.


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

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


Some more debug logging.


Added some debug logging to try to track down an error.

In the scan-status area, report on videos distinctly from images.


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 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.


Properly handle a raw+JPEG situation.

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


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


It was difficult to enter multiple watched folders after having browsed for the first one. It should be easier now (so long as none of the folder paths have commas in them).


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

Updated the pre-import move/rename to not allow the result to land within a folder tree being watched.

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


Added "Ignore suspected duplicates" option.

Enhanced the FolderName token


Added an option to keep scanning even when a folder doesn't currently exist.

Added the Newline template token.


Quiet the "preset no longer exists" warning after being presented once.


Switch the log-sending mechanism to https.

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


Added preset support.


Better support for network shares on Windows.

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

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

Try to avoid a race condition with how Lightroom starts up the plugin the very first time on a new install.

20160728.108 New graphics.
20160709.107 Maybe get around an issue with file-move specifications.
20160702.106 fixing a minor boo-boo introduced in the previous build

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.


Reworked the auto-publish stuff.

Added the {FilenameNumber} token to the templates that my plugins understand.

Don't complain if a file disappears somewhere between when a scan starts and when the plugin gets around to trying to import it.

Respect the "exclude names matching pattern" setting when considering sidecar files.


Try to work around an issue when moving files prior to import.


Added recognition for a few more video file extensions that Lightroom seems to now support. Importing video via a plugin could potentially be iffy, though, since I'm not sure that Lightroom's plugin structure supports video import in the same full way that Lightroom itself does. Not sure.

Added Russian-langauge support for the People-Support {People} tag.


Work around a bug in Lightroom on Windows that causes the Library Grid filter to be disabled when Folder Watch imports a photo. The plugin now grabs a copy of the filter settings just before import, then restores them just after.


Added the ability to use the photo-capture time when moving/renaming a file prior to import.


If there's an error in trying to import an image (e.g. because it's corrupt), you now have the option to pause processing and see the error, simply log the error, or ignore all import 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.


Added {SpeedKPH} and {SpeedMPH} to the list of template tokens supported by my plugins.

The {People} token wasn't working properly for some keywords without a registered birthday.


Allow the "Frequency to check" and "File unmodified for" values to be as low as 0.1 seconds. Not recommend for most folks, but might be useful for special needs.


Collections with very long names could cause the dialog to overflow the space Adobe allots for it.


Fixed the "SpecPeople:259: attemt to index al nil value" error.


When moving/renaming image files prior to import, look for sidecar files (e.g. XMP, audio, etc..., anything with the same filename except the extension) and move/rename them in parallel.

Added *.FFF files to the list that the plugin recognizes as image files.

Added the ability to keep a log of moved/imported files.


Allow folders with commas in their names to be watched.

Give the UI some love on Windows.


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.


Offer the ability to abort a scan if a file can't be imported.

Fix to the date_diff() function supported by the LUA template token.

Plugin could crash when first launched after a Lightroom upgrade.

20141220.90 Fixed a boo-boo introduced in the previous build
20141219.89 Registration was broken on Lr2
20141019.88 Windows Only: Add a one-time check for the POODLE security vulnerability, and alert the user if it exists.
20140923.87 Added the LrMD5, LrLocalization, LrSystemInfo, and LrMath packages to the {LUA} template token.
20140902.86 New build system
20140731.84 Registration fix for Lr5.6
20140729.83 Previous updates broke support on Lightroom 2

Note: if upgrading from a previous version, you may have to restart Lightroom to enable plugin the first time after the upgrade.

New support to process items already imported into Lightroom, to allow automatic processing/export of images brought in via Lightroom's built-in tethering.

Various bug fixes and lots of UI enhancements.


Add the ability to add to any collection upon import.

More Creative-Cloud support.

20140718.80 Using a {LUA} token in the file-renaming template caused a crash.

When moving an image from a watched folder, you can now preserve the name of the watched folder in the move destination, and also preserve in the move destination any folder structure that had been in the target folder hierarchy.

Plugin wasn't recognizing the existence of a re-created "folders to watch" target if the name didn't change.

Fixed an issue with Creative-Cloud revalidation.


Lr5.5 and later Creative-Cloud installs can now revalidate themselves if needed.

20140710.77 Sigh, had a bug in the Creative-Cloud support.

Now supports Lr5.5+ Creative-Cloud Installs.

20140704.75 Sigh, introduced an error for some folks with the rebuild the other day.
20140630.74 Build-system update

Added date_diff() and raw_time_diff() functions to the special {LUA} token understood by the plugin.


Added new tokens to the template language the plugin understands: LrVersion, LrVersionMajor, LrVersionMinor, LrVersionRevision, LrVersionBuild, Location, CatalogName, CatalogPath, OperatingSystem, OS

Added new token filters: NS and LO

20140423.71 Fix a location-related template-token bug introduced in a recent build.

Fixed a bug in the "smoother revalidation" stuff recently added.


The {Empty} template token wasn't working properly.

Make the revalidation process smoother, especially for folks using Lr5.4 and later.


Enabled the ability to import only files marked readonly in the file system, to target images that have been "locked/saved" in camera.

Enabled the ability to include/exclude specific filename patterns.


Disable the "enable" checkbox if a folder to scan hasn't yet been selected.


Fixed an "invalid option '%_' to 'format'" crash.

Turned off most debug logging if the "enhanced debug logging" option in the Plugin Manager is not enabled.


While writing the docs for the new file move/rename feature, I came up with a great(?) way to automatically do sequences. You can now rename to something like "photo-###" to have a sequence number filled in (in this case, a three-digit sequence number).


Fix a bug that would cause certain folder trees to be ignored in certain situations on OSX(!)

Added a move/rename feature.

Moved the status text next to the "enable" checkbox, and made the status text more clear and verbose. Added a countdown timer for the next scan.

20140121.63 Added more debug logging to track down why some scans don't seem to be happening.

Ignore corrupt develop presets instead of crashing due to them.


On OSX, don't consider files/folders whose name begins with a dot (which is the traditional Unix way to mark certain kinds of system-support files that should normally be hidden).

Wasn't properly skipping the "picasaoriginals" folder; is now.

20131112.60 Bumped up the maximum file size to import to 20 gig.

Fixed that plugin could fail to work when Lightroom started in "Select Catalog" mode.

UI was a bit cramped on Lr4 and earlier.

Add a warning note if a file is skipped because it's too new or dated in the future, just to alert you in case you didn't know. Could be useful if clocks are not synchronized between computers and/or cameras. Adjusted logic for determining these things.

20130926.58 Oops, fix a bug introduced in the previous update

The 'Template Examples' dialog had been broken. Deprecated 'Folder' and 'Path' tokens in preference to 'FolderName' and 'FolderPath' tokens.


Added the ability to use template tokens when specifying a a title to apply to an imported image, and also added the ability to set the caption in the same way.


Added the ability to add imported photos to a Publish collection.

Added the ability to have a specific keyword added to imported photos. Might be useful for creating smart collections.

Added the ability, upon new import, to launch a Publish operation on a specific publish collection or service.

Rejiggered the UI.

20130901.54 Added the ability to automatically build a Smart Preview upon import.
20130614.53 Added a bunch more debug logging to try to track down a problem
20130613.52 Better support for plugin revalidation.
20130611.51 Yet another Lr5 update
20130524.50 Apparently, a recent change broke things on Lr2, which some folks apparently still use.
20130501.49 Update for Lr5
20130416.48 Watch for PNG as well (Lr5+)
20130412.47 Build system update.
20130328.46 Fix for the registration system.
20130306.45 More tweaks
20130304.44 Tweaks for per-catalog setting handling.
20130303.43 In Lr4, the "restart on launch" setting is saved per catalog.
20130209.42 More build-system maintenance
20130206.41 Tweak for my registration system

Added the ability to apply Develop and Metadata presets upon import.

Now can have imported photos added to an “Imported by jf Folder Watch Plugin” collection.

Dialog was getting crowded, so split the watch control from the plugin info.

20120913.38 Fixed a end-of-scan "bad argument #2" bug.

The plugin normally won't try to import a file that has been modified in the last five seconds, but now that five-second threshold is exposed as a setting. Also, on Windows, it won't try to import a file it can't read (because a file being filled by another process disallows us to read it.)


Added min/max filesize settings, so that files outside that range are simply ignored.


Ignore any folder with "picasaoriginals" in it.

Added the ability (in Lr3+) to switch directly to an image when it's imported.

20120608.34 Fix an "attempt to perform arithmetic on field" error.

Update to handle the Mac App Store version of Lightroom.

Don't try to re-import master images that Lightroom has a problem with (because they are corrupt, for example) unless the file actually changes. Upon error, report the full path along with the error.


Better report fundamental master-image-file errors that Lightroom encounters.

Tweak for Lr4.1RC2.

Enhanced the send-log dialog to hopefully make reports more meaningful to me, yielding, I hope, the ability to respond more sensibly to more reports.

20120330.31 Update to handle 4.1RC
20120309.30 Had broken registrations in Lr2; Update to the debug logging to better track down timing issues that might arise.
20120304.29 More prep for Lr4.
20120216.28 Added some extra debug logging, and more work for Lr4. Also end a current scan early if "watch" is disabled.

More on the march toward Lr4, including upheaval in the code to handle Lightroom APIs being discontinued in Lr4.

20120114.26 More tweaks for Lr4b

Update for Lr4 beta: explain in the plugin manager that the plugin can't be registered in the beta.


Had issues with the registration button sometimes not showing.

When doing a plugin upgrade, offer the ability to flush all the old copies of the plugin.

Added a system-clock check and reports to the user if the system clock is more than a minute out of date. An incorrect system clock can cause problems with various kinds of communication and authentication with some of my plugins, so I've just gone ahead and added this to every plugin.

20111020.23 Now imports video as well (ones that Lightroom supports), and tidied up the list of image file extensions to try to import to better match what Lightroom understands.
20110714.22 The remote-filesystem-time-is-off detection wasn't working when there were multiple folders to scan.
20110525.21 Some windows folders couldn't be scanned... think I've got it fixed now.
20110520.20 You can now select multiple folders to scan.
20101017.19 The whole display was getting cut off at the right sometimes.
20100829.18 Made the revalidation process much simpler, doing away with the silly need for a revalidation file.
20100820.17 Discovered a bug in my plugin build system that caused horribly difficult-to-track-down errors in one plugin, so am pushing out rebuilt versions of all plugins just in case.

Added all kinds of enhanced folder-scan logging when Enhanced Logging is turned on, to try to track down some issues.

The plugin now tries to detect and adjust for a remote file system having a different clock than the host system.

Added code to allow plugin revalidation after having been locked due to a bad Lightroom serial number.

20100625.15 Yikes, shaking out some more build issues.
20100624.14 Discovered a nasty build bug; pushing a new version in case it affects this plugin.

This version can be registered in Lightroom 3. It can run in Lightroom 2 or Lightroom 3; it does not work in the Lr3 betas.

It uses my new registration system when run on Lightroom 3, which avoids some of the silly issues of the old one. Please take care to note the details on the registration page: use of this version (or later) of the plugin in Lightroom 3 requires a new registration code, even if you had registered some older version of the plugin.

20100516.12 Update for the Lr3 beta.

Completely changed how the one-click upgrade applies the newly-downloaded zip file, in the hopes that it'll work for more people. Rather than unzipping over the old copy, it now unzips to a temporary folder, then moves the old folder out of the way and the new folder into place. Prior versions' folders are now maintained (with the version number in the folder) in case you want to revert a version; you may want to clear them out from time to time. Of course, it won't take affect until you try to upgrade after having upgraded to or beyond this version.

Wholesale changes that attempt to honor the user's locale settings for numeric display (e.g. Europeans writing 3,14156 for pi). I've probably missed some spots, so let me know if you find some.

Fixed up some UI confusion that happened sometimes if the plugin was not enabled and there was no valid folder to scan. A few other small UI cleanups, and a fix that caused the plugin to abort sometimes in LR3b

20100111.10 Re-import a scanned file if it has changed (size or create/modification date). Thus, if you move a file out of the scanned tree from within Lightroom and later add another file with the same name, it'll get imported. I also now report only the number of files scanned each time; folders are not included in the scan count.
20091221.9 Added some heuristics to avoid importing a file that's still being written to disk. Modification times reported to the plugin are a bit imprecise, but if an image file seems to be less than a second old, it is not imported.
20091205.8 Minor internal debugging tweaks.
20091022.7 Added a first draft of some rudimentary support for Lightroom 3 Beta. See this important note about plugin support in Lightroom 3 Beta and Lightroom 3, including future plans for features and my registration system.

Enhanced the one-click upgrade stuff quite a bit, now detecting ahead of time when it will fail because the plugin is installed where Lightroom can't write (if Lightroom can't write to it, it can't update itself). I also added a progress bar, and now download in smaller chunks to avoid 'out of memory' errors on the larger plugins. Do remember that this new functionality becomes available after you upgrade to or past this version, when you then upgrade with it.

20090521.5 Fixed a "loadstring" error some users got.
20090511.4 Now it quietly ignores images that Lightroom can't process. The failure is noted in the plugin log. (It's on the to-do list to expose an "activity log" where this event might be more readily accessible.)
20090510.3 Added a link in the Plugin Manager to the plugin's update-log RSS feed.

Added a "show splash dialog" option to the "upon import of a new image..." configuration, so that you can be informed when the plugin imports a new image in the background for you. You can configure whether the splash is shown, and if so, for how long before it automatically disappears. I've not tested this too much, so I don't know what problems it might cause having a background task (the folder watch plugin) throw up a splash dialog. It seems to work okay, except...

.. if a splash dialog pops up while you're painting local corrections, it'll do bad things to the current brush stroke, such that after dismissing the splash dialog, you'll have to undo the brush stroke you were working on and redo it.

I also realized one other caution: when the plugin imports a photo for you, that import action is added to the undo stack. This happens whether the import is accompanied by a splash dialog, or if it's totally silent in the background. The worry this creates is that if the import happens just before you do a bunch of undos, you may unwittingly undo back past the import and not even notice. The only option I see around this problem is even worse: having the import pop up a warning dialog that it's about to clear the undo stack, and then actually have it clear the undo stack. So, if this is a practical worry for you, enable the splash screen.

I also fixed the home-page url, and the folder-to-watch edit box, which would sometimes show only a partial folder path on a OSX. The report of overall session imports is now red when something's been imported this session.

It also turns out that if you reload the plugin, Lightroom doesn't completely do away with the previous instance, so it was possible to have multiple versions of the plugin running and not even know it. It's a big hairy mess, but I think I've worked around it in this version. The plugin also refuses to scan if it's not enabled.

I also added an option to restart the watch when Lightroom is started, so that you can have it running all the time. Along with that is an option to throw up a splash screen during Launch if the plugin has been set to scan at launch. You can use this to remind yourself that the thing is running.


First public version. Pretty rough at this point. Currently, everything is controlled from the Plugin Manager, which is probably not the best UI. Pick your folder to watch, the frequency with which to check, then click the "watch!" checkbox to turn it on. You can then leave the Plugin Manager and, most likely, open the target folder in Grid Mode (perhaps sorting to most-recent first).

Some random notes:

  • The plugin infrastructure does not allow plugins to do anything with develop or metadata presets, so the imports are plain vanilla.
  • You almost certainly never want to point this at a slow disk, or if you do, have it check very infrequently. Lightroom can seem to lock up momentarily when attempting to access some disks.
  • In the Plugin Manager, while a folder is being watched, keep an eye on the time reported in the "Scan Status". It's okay if the first scan takes a while, but if subsequent scans take a long time, you'll want to scale back the check frequency. How long is "a long time" depends on your overall machine load and personal preferences.
  • Conversion to DNG not yet supported; I hope to add it soon.
  • A Lightroom plugin has only a limited ability to set image metadata, some of which I've incorporated (rating, label, and title). You may want to make use of a Smart Collection that keys off one of these. For example, have the plugin set the title of auto-imported images to "autoloaded", with a Smart Collection of all images with a title of "autoloaded". This way, you can change the title to something else once you've address a particular image. (It would make the most sense to use a special keyword for this, but Lightroom does not allow a plugin to set image keywords.). Note, though, that a Smart Collection can lag behind reality for a few seconds, so if you're interested in seeing the images ASAP, you'll want to leave the target folder open in Grid Mode.
  • The plugin does not yet ensure that an image file is complete before attempting to auto-import it. This means that images that are written slowly by less-than-smart applications may not be properly imported. (They won't be corrupted, just not imported properly the first time.) Please let me know if you run into problems along these lines.

The 30 most-recent comments (out of 194; see all), most recent last...

Hello Dan and Damian!
Seems I have the same problem like you! How did you remove the script? I have no access to the plugin-manager therefore I cannot install or uninstall this or any other scripts…! Also reinstall LR didn’t help. Any suggestions, is there a way to remove scripts manually?


If you think a plugin is breaking Lightroom upon load, move/rename/delete the plugin so that Lightroom won’t be able to see it, then start Lightroom. —Jeffrey

— comment by Andy on November 8th, 2019 at 12:53am JST (4 years, 8 months ago) comment permalink

I tried the Folder Watch Plugin with LR9 on MacOS Catalina and all I see in the Plugin Manager is a blank page.

Is ist a Problem with LR9?

Kind Regards Thomas

Are you sure that the plugin is enabled? (See the 2nd-from-bottom section of the dialog on the right) —Jeffrey

— comment by Thomas on November 10th, 2019 at 11:54pm JST (4 years, 8 months ago) comment permalink

Hi Jeffrey,

Do you already have a solution for the “?:0: attempt to perform arithmetic on a boolean value” error message? I saw there are more users with the same error.
I upgraded in the meanwhile to LR9 and now I cannot use the old versions anymore (not compatible with LR9) and the new version gives the errore message.
Best regards,


PS: I’m writing from Belgium

No update. I’ve reported it to Adobe, so hopefully they’ll fix it. —Jeffrey

— comment by Wijnants Mark on November 23rd, 2019 at 9:08am JST (4 years, 8 months ago) comment permalink

Hi Jeffrey!
Let me first thank you for all the work you’re doing for us all, it is really appreciated!
My friend and I are experiencing the same problem that is mentioned earlier; the plugin manager displays a blank page and when we reopen the manager “?:0: attempt to perform arithmetic on a boolean value” is displayed.

The problem exists on both mac OSX as windows.

Is there any way that I can download your previous versions? Maybe I could test some older releases in order to figure out what is wrong? Happy to help!


I’ve just pushed out version 20191126.144 that I think should fix this. Thanks for the report. —Jeffrey

— comment by Doran on November 24th, 2019 at 10:51pm JST (4 years, 8 months ago) comment permalink

Earlier versions don’t work, same as current version. Only solution for me is using an older LR version (2015 I think). Sad, was a great little tool!

It’s fixed now. Sorry for the hassles. It was difficult to track down because it worked fine for the vast majority of people, but now having discovered what was wrong, I don’t understand how it worked for anyone. Sometimes the bowels of Lightroom are a true mystery…. —Jeffrey

— comment by Andy on November 26th, 2019 at 3:39pm JST (4 years, 8 months ago) comment permalink

Hi Jeffrey,

Just to report that my problem (blank screen) is indeed solved with the latest version.
Thanks for all the good work that you’re doing for al these great plugins.

Best regards,


— comment by Mark Wijnants on November 26th, 2019 at 4:07pm JST (4 years, 8 months ago) comment permalink

Hi Jeffrey,

Thanks for the update, everything works fine!
Just a quick note: there is the option to restart scanning automatically after starting up LR. However, when I close and reopen LR, the option “Add to Publish collection:” resets to ‘none’. Which results in no auto publishing (to a folder on my drive).
Can you help me out?
I can’t reproduce this on my side; could you send a plugin log after encountering the reset to ‘none’? —Jeffrey

— comment by Doran on December 2nd, 2019 at 10:27pm JST (4 years, 8 months ago) comment permalink

Recently I keep getting an error message saying “LrPhoto:setPreset: must be called from within a withWriteAccessDo block”. It appears every 10-20 images. Any advise on how to correct this issue?

This is, unfortunately, something that a plugin has little control over. It’s fairly ridiculous, but the way Adobe built the plugin infrastructure makes it impossible for a plugin to know that it has permission to access the database. It can be “fairly certain” and therefore give it a try, but depending on the timing of other things within Lightroom and on your computer, you might get unlucky timing and in the end don’t have permission. That’s what you’re running into here, I think. It’s pretty rare that it doesn’t work (I can’t get it to not work, so it’s difficult for me to program around it), but maybe something about your catalog has fallen into some kind of trap, such that it’s happening more? It’s all just frustrating conjecture. We can only hope that it eventually goes away…. —Jeffrey

— comment by Tore on December 26th, 2019 at 11:06pm JST (4 years, 7 months ago) comment permalink

This is Gugu from South Africa. Thanks for this plugin. It took me a while to figure out how to auto export. Keep up the great work.

— comment by Gugulethu Sibiya on January 5th, 2020 at 6:36am JST (4 years, 6 months ago) comment permalink

Is it possible to export the settings. So I do not have to set everything up when reinstall Lightroom (on another computer)?

I’ve just pushed out a new version of the plugin that includes the ability to export the plugin presets, so use the preset system to create a preset for your settings, then export them from one computer and import on the other. —Jeffrey

— comment by Alban Fazliu on February 11th, 2020 at 1:02am JST (4 years, 5 months ago) comment permalink


I do not want to move the raw file I want to copy it. Is that possible with folder watch?

thank a lot


Sorry, no. —Jeffrey

— comment by Anonymous on March 10th, 2020 at 1:48am JST (4 years, 4 months ago) comment permalink

Hi Jeffrey,

folder watch works perfectly with LR ver.6.1
However, I upgraded to LR ver.8.2 for Nikon Z6 support and loading the plugin results in an error 🙁
Do you know where the error is?

Thank you very much in advance for your reply


Folder Watch should work with every version of Lightroom Classic since Lr4. If it’s not working for you, and you know you have the most-recent version of the plugin, then perhaps try downloading with a different browser. For some reason, some browsers seem to corrupt some downloads…. —Jeffrey

— comment by Marek Klusacek on March 13th, 2020 at 8:49am JST (4 years, 4 months ago) comment permalink

Hi Jeffrey!

I’m trying to set up folder watch in combination with a shootproof publish plugin. Any idea why folder watch does not recognize the shootproof as a publish service? Thanks in advance! Joost (NL)

Folder Watch can auto-publish a Publish Collection that already exists; could it be that you have loaded the Shotproof plugin, but haven’t yet created any Publish Collections in it? —Jeffrey

— comment by Joost on April 15th, 2020 at 3:27pm JST (4 years, 3 months ago) comment permalink

Just got it to work! You are epic 🙂 Hope you will continue support coming versions of lightroom 🙂
Thanks thanks thanks!

— comment by Joost on April 16th, 2020 at 1:39am JST (4 years, 3 months ago) comment permalink

Thanks Jeffrey for that plugin – very useful! The only thing that is really missing, is DNG-Konversion upon import. Any chance of seeing that soon?

No, sorry, Lightroom doesn’t allow for it. —Jeffrey

— comment by Jens on April 23rd, 2020 at 2:22pm JST (4 years, 3 months ago) comment permalink

Hi Jeff!

I don’t know if my comment was committed correctly. I just wanted to ask if there is a way to access LrTasks and LrApplication from a custom script that I run for each photo?

PS: I want to create virtual copies of each photo, process them and add them to the collection to be published.

No, there’s currently no way to do that. I suppose I could add a Lua hook, though. Let me give it some thought…. —Jeffrey

— comment by Younes on July 7th, 2020 at 4:47am JST (4 years ago) comment permalink

I have a folder with 25,000 subfolders. I had it set to monitor the parent folder as new subfolders are added often. When running the plugin it imeditalty goes into ‘not responding’. But looking at the library catalog on my computer, the file is growing in size, and write time is increasing.

I’m wondering why the software would run, but show as not responding? I have a Ryzen 3600 Cpu, and 32GB ram. Maybe have the option to increase some resources for computers that can handle the extra RAM or CPU usage?

Let me say up front that the plugin was not designed to watch 25,000 subfolders. Or even 25, really. Because of limits within Lightroom, it can’t access hooks in the operating system that would make watching that many subfolders feasable, so it has to do a blunt walk of all folders looking for something new. Each time. From scratch. I suspect the “not responding” is within Lightroom when the plugin asks it for a list of all folders. Lightroom probably wasn’t expecting to be asked in that situation either. —Jeffrey

— comment by Adam on September 22nd, 2020 at 6:03am JST (3 years, 10 months ago) comment permalink

I have a use case question. I’m considering to use the plugin to get Lightroom” into the loop” of managing/tuning image assets on my website. In this, I plan that an external app would sync assets into a folder watched by the plugin and already known in Lightroom. The main job of the plugin would be basically to do automated “Sync folder” as you mentioned in the docs. Changed or new images would be picked-up by a publish service and pushed back to the website in another step. With this setup, I expect to be able to use Lightroom to edit assets and pick-up new asset images which have not been published by this instance of Lightroom, but from another computer or another instance of such a setup. I think, and hope, this should work…hm… It is not clear to me though, what happens if a new version of an image will be imported which already exists in the catalog and has certain develop settings. I think, in this case, a new image will come in and that develop setting will be applied on top of it again which might lead to incorrect results. Would resetting develop settings before importing help? Is this possible in the plugin? – Thanks!

Folder watch looks for new image files, and adds them to the catalog when found. If that image already exists in the catalog via a different filename, then you’ll have two copies. (If you update the original image file in place, Lightroom should pick up the changes to the original image automatically.) If you’ve asked the plugin to apply develop settings to everything it imports, then of course it will do that. Generally speaking, Lightroom is designed to be used standalone, other than stuff synced among Lightroom devices via Adobe’s Creative Cloud, so if you want to use multiple Lightroom instances and have them cooperate via this plugin, it’s best to just give it a try to see whether it actually works for your needs. —Jeffrey

— comment by Vladimir on November 9th, 2020 at 4:56pm JST (3 years, 8 months ago) comment permalink

Trying to install latest version of Folder Watch (.152) without much success. I tried this after updating Mac to Big Sur. Is the plug in compatible with Big Sur. From Illinois.Thanks

I’ve had no other reports of problems related to Big Sur. Perhaps if you sent an email with specific details, I could help. —Jeffrey

— comment by Alvin Lane on November 29th, 2020 at 2:38am JST (3 years, 8 months ago) comment permalink

Hi Jeffry

Thank you for the plugin. One question: is there a possibility to trigger an export instead of a publishing service? Background: with export there is an option for post-processing where you can specify a photoshop droplet. With the publishing service, unfortunately, there is no such option.

What I actually want to do is take photos via tethering, import them LR and then mount them directly into a background using Photoshop.
An alternative way would be a Lua script call that does an export or directly calls the droplet.

I have also thought of “Run Any Command”, which I also have in use. Unfortunately, I can’t call Droplets so easily via CMD (under Windows 10). There must be a special syntax that I haven’t figured out yet. (I have also tried this with external tools (without LR).

So, the following options, one of them already solves my problem:
a) could you include the export function in your plugin?
b) could you send me a LUA script that triggers an export?
c) could you tell me a LUA-script which calls a Photoshop-droplet from LR
d) do you perhaps know the call syntax for a droplet from CMD?
e) may you have a completely different idea (via other plugins, etc.)?

Thanks a lot!

Figuring out the Droplet thing with Run Any Command will be your best bet, I think. I know people use Run Any Command to invoke droplets (though I must admit that I don’t know what a “droplet” is). Lightroom doesn’t allow for a plugin to invoke an Export Preset, unfortunately, so your initial idea is out right off the bat )-: —Jeffrey

— comment by Michael Bihn on April 6th, 2021 at 9:43pm JST (3 years, 3 months ago) comment permalink

   First, I want to say how fantastic your plugin is!)
It makes my workflow much much easier!
10 minutes after installing it, I just rushed to donate to you)
Thank you very much!
    But I have a question with one issue.
I am importing jpegs from my Toshiba wi-fi SDcard  then shooting, and files could not be moved from there – only copied.
    So then I turn my camera off (disconnect wifi connection between camera and computer), I can not work or even browse photos in Lightroom, and even more – it just freezes((
    Is there any solution? Or could you make an option in plugin to copy files, not to move them?

Hope to hear from you soon)
  Thank you for your work again!!

Sure, I’ve added it. —Jeffrey

— comment by Philip on April 21st, 2021 at 6:55pm JST (3 years, 3 months ago) comment permalink

Hello again!
Copy function makes me sing in the shower!))
Thank you very much!
But I have one issue) Then I shoot small jpegs, plugin shows an error and could not import copied files, because file size of jpegs on the sdcard differs from the file size of the copied to Mac ssd files. On sdcard file size is around 1,2-1,8Mb and on Mac ssd the same files are all not smaller than 2Mb. This happens because of different cluster size on sdcard and ssd, I guess?
So could you make FolderWatch to skip file size check, or some different solution, maybe?)
Thank you!
Philip, The FolderWatch Fan ))

The amount of space on the media might change, but the size of the image as reported to the OS should not change… the bytes of the image are the bytes of the image, and they all should be copied without change. Can you perhaps send a plugin log after encountering the error, and also send some screenshots showing the Finder view of the images on the card and on the SSD, and finally, maybe an image copied directly from the card and the same image copied directly from the SSD (which should be identical)….—Jeffrey

— comment by Philip on May 10th, 2021 at 11:44pm JST (3 years, 2 months ago) comment permalink

Hi Jeffrey,
Love the plugin. I’ve only used it a few times, admittedly, but for very specific purposes, for which there are few other alternatives, and the time it has saved has been immense to say the very least.

Here’s the situation I get:
Hundreds of images in either celluloid or print, spanning decades, with little or no sorting done; the person or persons providing these images ask that I scan, clean, blow up, and sort them, either with their minimal help or without, on a very tight schedule (a week to 2 weeks; often less). While I charge according to the rush, the time, the processing and the different levels of work, this gets to be very consuming, and these jobs come in twos and threes. The moving of items around the system, marking them and keywording were taking about half the time!

With your Plugin:
I now have a process to the whole thing, no matter what kind of images come in or get provided, I can now work in batches based on an initial pass by hand (1 day to 2), while scanning front and back so that I can sort them further at another stage.
With some of the AI in lightroom or other plugins, I can sort the images further by similar content, and remove the backside images, after adding the information to an outside border of each image. Any that don’t have info at the end get sent to Lightroom CC as their own album and the client then provides info that can help with the sorting. This is then added to the border.
Images that require cleanup are listen in an excel file, usually by a partner on another computer, using excel and lightroom together to only get a list. They also export SETTINGS etc that I then import into the main catalog, and another machine with a copy of it. From the third machine, I begin edits, or I use the interim time to continue scanning until all are scanned. The edits usually take the better part of a day, but both the originals are kept (in a subfolder for later) and the cleaned version (which replaces the original in the main folder). The catalog then gets all the images, by using your plugin to open a new collection of the originals that were sent for cleanup. This allows me to then show that to the clients in LR CC online.
This makes the whole process so much faster.
I’ll probably donate with each major job when they start again.
Thank you for the awesome plug.

— comment by Harley T Davis on May 12th, 2021 at 9:06am JST (3 years, 2 months ago) comment permalink


Thanks for the great plugin! This will allow me to import straight from a folder without having to move my files to another folder as required by LR Watched folder.

I do however experience a weird message, as it doesn’t import my photos, it says the picture is too new?

A__now = 644752589.58507
B__mod = 644759602
C__del = -7012.4149329662
D__slo = table:
| [“/Users/p2molvaer/Desktop/GoProBooth/GoProWifi”] = -0.000039458274841309
E__ago = -7012.4149329662
path = “/Users/user/Desktop/GoProBooth/GoProWifi/GOPR0110.JPG”

folder-watch#154 +391.5>115629 [x600002a5a408] @InitPlugin line 586: [/Users/user/Desktop/GoProBooth/GoProWifi/GOPR0110.JPG] too new (-7012.4149329662 sec), so skipping this time

folder-watch#154 +391.5>115629 [x600002a5a408] @InitPlugin line 570: in should_try_to_import()

My GoPro clock and Mac clock are correct, I’ve checked the metadata..

For whatever reason, the file system’s file-modification time of the image file is almost two hours in the future. I’m not sure how this might happen. Look to whatever software is creating the file. —Jeffrey

— comment by Per on June 7th, 2021 at 7:02pm JST (3 years, 1 month ago) comment permalink

Hi Jeffrey,
How do I auto import/export my pictures. I want to drop a photo into my “Incoming” folder, have it adjust the photo in a preset, and then spit it out automatically to my “”Outgoing” folder?
I have been dreaming of this solution for 12 years… PLEASE tell me this is possible! 🙂
Thank you! JT

Yup, that should be possible… just set up a Publish Service that dumps out the photo where you want, and have the plugin both add the photo to it, and initiate a publish operation. —Jeffrey

— comment by JT Michaelson on July 16th, 2021 at 6:01am JST (3 years ago) comment permalink

Hi – I’m seeing some errors from this plugin, generally when I start up Lightroom.

10/22/21 9:10:53 am - Error processing “/Users/nathanw/Pictures/Android phonecam/2021-10-17 17.13.48.jpg” - LrCatalog.getKeywordsByLocalId takes an array of numbers as its argument
10/22/21 9:10:46 am - Error processing “/Users/nathanw/Pictures/Android phonecam/2021-10-12 18.49.54.jpg” - LrCatalog.getKeywordsByLocalId takes an array of numbers as its argument
10/22/21 9:10:43 am - Error processing “/Users/nathanw/Pictures/Android phonecam/2021-10-13 16.31.40.jpg” - LrCatalog.getKeywordsByLocalId takes an array of numbers as its argument
[… dozens more similar errors elided.. ]

All of those files do exist.

Folder Watch Version 20210825.155
Lightroom Classic 10.4 release, Build 202108071231-af9219b9
MacOS 11.6.

Thanks, this was the plugin not handling well when the selected keyword was removed from the catalog (or a different catalog was loaded). I’ve pushed out a new version that should be more graceful. —Jeffrey

— comment by Nathan Williams on October 23rd, 2021 at 12:12am JST (2 years, 9 months ago) comment permalink


I have setup my phone to send new photos to a flat folder on my PC when it connects to WiFi so that I always have a backup and now I want to use you plugin to auto-import them into my catalog by copying them first into a subfolder with the date and then importing.

Basic setup was easy but when I fired it up it only imported some of the photos (for example, when I checked the 2021-11-01 folder, it had only 14 files which the original folder had 36 files for that date).

Am I doing something wrong?

I’m using Version 20211028.156 on LR11!

It’s difficult to guess what the problem might be without a log, but the first thing to suggest is to check all the options in the first part of the plugin (“What Folders to Check, and How”) to see what there might be excluding the files. If that doesn’t seem to explain it, please send a plugin log, taking care to note the full filename for one of the images that you expected to be imported, but which wasn’t. —Jeffrey

— comment by Ahmad Alnusif on November 2nd, 2021 at 2:53am JST (2 years, 9 months ago) comment permalink

Hi I am writing from Holly Springs, NC USA. Is there a way for this plugin to auto-create a destination folder based on “date taken” automatically as it watches a folder? For example, if an image file with date taken = 01JAN2022 is added to a watched folder have the plugin create a folder within the directory “2022” named “01JAN2022” and add all images to that folder? Thanks, looking forward to purchasing this plugin if I can get this worked out!

The plugin is free; there is no “purchasing”. 😉 Auto-creation of the destination is supported and covered in the docs here. —Jeffrey

— comment by Jonathan on January 15th, 2022 at 2:09am JST (2 years, 6 months ago) comment permalink

Love this plugin! I’m a travel photographer. Would be AMAZING if this could auto-organize images based on GPS Country or CountryCode, to save me manually adding that to directories:

For example: {YYYY}/{YYYY}-{DD}-{MM} {CountryCode}/{Filename}

Sadly, it’s not practically possible. The photo has to be in Lightroom before stuff like CountryCode can be filled in, but once something is in Lightroom, Lightroom doesn’t allow a plugin to move/rename it. —Jeffrey

— comment by Fred Astaire on April 4th, 2022 at 12:25pm JST (2 years, 3 months ago) comment permalink

Hi Jeffrey, I have a problem with your plugin running on LR11. When I try to scan my folders I have this popup:

Error processing “D:\ Myscanfolder\-\JPG”
AgImportSession.addOnePhotoToLibrary: failed to import photo

Any ideas?

Thanks for your excellent job.

It seems that you have a corrupt image file (or a file that’s not an image but the plugin thinks it is). When the plugin asks Lightroom to import it, Lightroom can’t. Is “D:\ Myscanfolder\-\JPG” the name of a folder? If the plugin is looking at a folder and trying to treat it like an image, that’s a problem, but in looking at the code, I don’t think it’s possible. —Jeffrey

— comment by Fernando on June 13th, 2022 at 12:05am JST (2 years, 1 month 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.

IMPORTANT:I'm mostly retired, so I don't check comments often anymore, sorry.

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

Subscribe without commenting