Let's share how we use the copy and import feature to organize our images.

I am 100% impressed with how DT allows me to import and organize my images to make my life easier. I thought I would share my approach and encourage others to share their approaches as this may help people appreciate how good the DAM capabilities of DT are.

Here is my approach. Drive (x) is the second harddrive on my laptop used for data storage. I am currently on holidays in Morocco so I use the job code “Morocco”. The base directory naming pattern places the images on the x drive in the designated folder and uses the exif data to create a year folder if it does not already exist. Then the sub directory naming pattern creates a subfolder based on date with the job code in the subfolders name. This makes it really easy to find my Moroccan holiday photos from my visit in 2024.

I just wished I had used this system years ago. Others might have even better recommendations.


I use it in a similar way, but have the rule for the subfolder in the sub-directory naming pattern: $(EXIF_YEAR)/$(EXIF_YEAR)-$(EXIF_MONTH)-$(EXIF_DAY).
I do not like the jobcode, as I would have to import several “jobs” after each other and I typically apply tags after importing the images.

1 Like

For some people such as yourself the jobcode may not be useful if you shoot multiple subjects per day, but it can be useful for identifying a special event such as a wedding, holiday etc for some people like myself. So with my Moroccan holiday shots it is easy to find them because I know the year and the sub-folders are identified with date and jobcode. I would also tag all these images with the keyword (tag) Morocco.


By the time I get to darktable, my images are already at their proper place.
So I don’t use “Copy and import” at all (just “Add to library”).


This add to library option is a great feature for those who already have a system of importing in place. I am just impressed with how DT’s Copy and import function has improved my importing without using another program. Previously I had used Adobe’s LR and I find this a better system.

I actually also did this several years and had a script that would pull photos from the SD card and put them into the right folder based on exiv data. However, since this functionality is now in darktable, I completely switched to it. I think it also largely depends how you see darktable. In my workflow I use it both as a tool to keep my photos sorted and to postprocess them, however, I think others use it primarily to postprocess and keep them in some order using other tools.

Yes - I think there are different styles how to organize the photos. I know many people sort into folders based on occasions/jobs.

I think that encoding exif(year,month,day_hour,minute,second)_jobcode in the filename is more useful than just in the folder.

1 Like

Now there is an idea I hadn’t thought of, but I can see changing the file name to include jobcode and maybe exif year would be handy for me. I would still want to put them in my described folder structure but changing the file name is something I hadn’t really thought about before. However, in the camera I sometimes can give a file name there that is logical such as NZ for my recent trip to NZ.

EDIT: just tried it that that worked well renaming the files with jobcode included.

That’s exactly the case for me. While I can work with the searching filtering features, I have issues with entering and editing titles and captions, and attaching keywords, so I use digikam for that.

I’m not saying digikam is better for this, just that this combination suits me, as I started with just Digikam, a “few” years ago, and don’t want to spend the time “retraining” on darktable for those features.

I copy all new files from various SD cards to daily directories. Critically, I do not delete SD cards ever, so the program needs to skip already-imported images.

My wife’s and my cell phone use the app PhotoSync to copy photos and DNGs to our NAS at night, and I copy/import them from there into the daily directories as well.

Digikam does this import/skip flawlessly. Lightroom and Capture One can do it as well, if you have the patience to wait ten minutes while they enumerate every image on the SD card, and painstakingly and slowly compare them to your library. Digikam does this in seconds. My peers at the photo club use photo mechanic for this purpose, a preposterously expensive program considering the Digikam can do it so easily.

Alas, Darktable AFAIK can not skip already-imported images, which is why I use Digikam instead. Ever since I got a Mac a year ago, however, Digikam has gotten terribly slow, and sometimes fails to start altogether. It also reliably kernel-panics macOS when writing to my external drive through a third party NTFS driver. Pure joy. So I’m currently slightly less than perfectly happy with that setup.

From there, however, I develop my images to JPEGs, which go into my home/photos directory, sorted roughly by year and event. This part of the workflow works and flows well, and the dumb directory structure is easy to use with any number of tools, including the file manager or Digikam. But I don’t need or use the raw developer at that stage.

With respect you are mistaken in this aspect of DT. I am traveling at the moment and not deleting images from my SD card and in the blink of an eye DT differentiates the new images and shows only them for import. I am not trying to talk you out of digicam which is an established part of your workflow.

Initially I only used DT for editing, but eventually I came to appreciate the copy and import function. I suspect the developers have also improved this recently. I prefer it in DT compared to how I worked with Lightroom for importing. I am not knocking digicam but I am glad I can import and edit in a single program. I mainly edit raw files and then discard the OOC Jpegs.

1 Like

@g-man thanks for your suggestion about including jobcode in the file name. I have now implemented it and its a simple but brilliant improvement in my workflow.

Perfect, thank you!

Is that a new feature? I wonder how I could have missed that. Perhaps I just didn’t stumble over it during the evolution of my import process.

@bastibe I am unsure when it became a feature. Maybe you looked once in an earlier version and it wasn’t there. It is critical for any importing and that was why I once used LR, but now I am so happy I can do it in DT.

I find “copy & import” to be perfectly streamlined for my use. I have these settings:

Screenshot 2024-05-22 at 10.58.31

Screenshot 2024-05-22 at 10.58.21

Darktable creates a folder for each year based on exif data, the each import batch gets the import date and jobcode. At one point years ago I used separate folders for each day of shooting, but I found that to be too fragmented when importing photos from a multi day trip in one go.

This means I can put my SD card in the reader, go to Copy & import, enter a jobcode, and DT handles the rest. No need to worry about folders ever. And if I have photos on the card that are already imported, they are ignored.

I think this has been there “forever”. I have used darktable for about ten years and I can not remember having to do anything else.

1 Like

It had the option to import images a long time but the copy&import was overhauled at some point - I don’t recall when it was exactly (with 3.x maybe?). Before that, it was pretty much unusable for me and I used an external script because of that reason. I’m not that sure what the actual issue was back then, I think it was not straight forward to copy photos into the correct folder structure I wanted.
It is possible I ignored the changes a long time before switching to copy&import, as the script solution just worked. I switched maybe 2 or 3 years ago…

Might have been 3.6 then: darktable 3.6.0 released | darktable in 2021.

yes, that is plausible! I could start an old version in a VM to see how it looked in 3.5 and what feature I was missing back then…

1 Like

Just like @rvietor all structural organization happens before any image editor gets to see my images.

My archival numbering system predates darktable by almost two decades and even the structure on digital media stems from the past millenium. It has lived through many image editors and even more cameras and works both in a private and professional context.

I have a self written ingester that copies files into directories with shot date (from exif) and camera. All imports get checksummed to avoid duplicates. That alone has saved me so much trouble

I then manually add information to the name on those directories. If I feel like splitting up a day of photos into multiple sections, this is what I will do. Yes, it is manual work but in the end it helps so much in finding the right pictures in the archive. The extra time spent instead of going full auto mode is well worth the convenience later on. Avoid technical debt.

Once that is done the dirs get an archival number attached, files renamed accordingly and both xmp and pp3 files written with basic metadata. Now every file in itself has a short and unique name across all my archive and is ready for being edited.

And this is how a path to a file will look like in the end:


Some redundancies in that path but they make every level human-navigable.

If I would start with a blank slate today? No idea how I would approach that. It’s been a long and winding road to where my system is now and there is no need to change or rethink it. =)

PS: If anyone feels my post is too off-topic due to not using darktable copy/import: sorry. Myself has learned a lot about image organization from exactly such outside-the-box comments on other fora and/or applications. A few tools have been mentioned already: photomechanic, photosync, digikam, …


Many of us have well established systems , but for those starting with a blank slate or looking for some new improved system DT has good options now. Your reply is not off topic because such a system could easily be implemented in the DT copy and import module.

@hpbirkeland I like your file renaming structure with jobcode, sequence, file extension. I am going to try that with todays imports from my Moroccan travels.