Try Now

XMP Sidecar Workflow: From Cull to Lightroom in One Step

By Ingo D ·

Every photographer who edits in Lightroom has seen them: tiny .xmp files sitting next to RAW files in the folder, one sidecar per frame. They appear after metadata edits, they get backed up alongside the originals, and they multiply with every culling pass. Most photographers never learn what is actually inside those files - or how much work an XMP sidecar can save them.

An XMP sidecar is not a temporary cache or a vestige of some legacy workflow. It is the universal handover format that lets you rate a photo in one app and have that rating appear automatically in another. Assign a 4-star rating in a culling tool and the sidecar records it. Open Lightroom and the 4-star rating is already there. One action, one result, no second step.

That is the XMP sidecar workflow: rate once, edit anywhere. It is the single biggest time-saver you can add to a photography workflow that spans multiple tools.

What is an XMP sidecar?

XMP stands for Extensible Metadata Platform, an open standard maintained by Adobe and published as ISO 16684-1. It is a way of recording metadata - star ratings, keywords, copyright information, colour labels, GPS coordinates, edit history - inside a file or alongside it.

For RAW files, the metadata is almost always stored as a separate sidecar rather than embedded inside the RAW itself. The reason is practical: most RAW formats are proprietary and undocumented (Canon CR3, Nikon NEF, Sony ARW), and writing metadata into a proprietary binary format risks corrupting the image. The sidecar keeps the metadata in a plain-text XML file with the same base filename and a .xmp extension: DSC_4521.NEF gets DSC_4521.NEF.xmp. The RAW stays untouched and the metadata travels alongside it.

This separation is also what makes sidecars portable. Copy the folder to a different drive, send it to a second shooter, archive it for five years - the metadata goes with the images because it is a file in the same directory. No catalogue database to migrate, no proprietary lock-in.

Here is what a real XMP sidecar looks like inside, reduced to the fields a culling workflow cares about:

<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
      xmlns:xmp="http://ns.adobe.com/xap/1.0/"
      xmp:Rating="4"
      xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      dc:subject="outdoor wedding ceremony" />
  </rdf:RDF>
</x:xmpmeta>

The critical field is xmp:Rating - a value from 0 (unrated) through 5 (five stars). That single integer is what makes the one-step workflow possible. When a culling tool writes a 4 to xmp:Rating, Lightroom reads a 4. The rating is the same rating. There is no conversion, no interpretation layer, no import dialog checkbox. It appears.

Pick and reject flags follow a similar path: rejected frames receive a rating of -1 or a dedicated reject marker depending on the tool. Lightroom and Capture One recognise both conventions, so a frame you swipe-reject in a culling app shows the black reject flag in the editor automatically.

How does a colour label travel through XMP?

Colour labels are a second metadata field that follows the same one-step logic. In Lightroom and Capture One, a colour label groups frames without changing their star rating: red for selects, yellow for second-choice, green for a specific lighting setup, blue for client delivery.

In XMP, the colour label is stored as xmp:Label:

<xmp:Label>Red</xmp:Label>

A tool that writes standard XMP maps the six colour slots - red, yellow, green, blue, purple, and none - to the corresponding XMP label value. Lightroom reads that field and applies the colour badge immediately. No manual matching. No ambiguity about “which red is Lightroom’s red.” The mapping is part of the standard.

Keywords and tags travel under the Dublin Core namespace (dc:subject) as a bag of text values. A frame tagged “ceremony” and “golden hour” in a culling app arrives in Lightroom with those keywords already in the Keywording panel. The metadata crosses the bridge in full, not just the star rating.

What happens when a shoot has RAW and JPEG pairs?

A common source of confusion in XMP workflows is dual-format shoots. Many photographers record RAW and JPEG simultaneously - RAW for the edit, JPEG for client previews. If every file got its own sidecar with its own rating, you would be rating the same shot twice. And one version might get a different rating than the other.

The XMP convention, and the convention Lightroom, Capture One, and Darktable all follow, is that RAW+JPEG pairs share a single sidecar. The sidecar is named after the RAW file (e.g., DSC_4521.NEF.xmp), and both the RAW and the corresponding JPEG inherit the metadata from that one file.

Most professional culling tools, including CullKit, detect the pair automatically and group them into one reviewable frame. You see one image in the culling interface, not two duplicates. You rate it once. The single sidecar applies to both.

If your camera names files inconsistently - some Sonys write DSC_4521.ARW for RAW and _DSC4521.JPG for the JPEG - the pairing logic may fail. In that case, enable a JPEG-only filter during the cull to review only the RAW frames, or rate both and accept a minor duplication. The sidecars will still read correctly in Lightroom; you simply did a bit of extra swiping.

How does Lightroom pick up XMP sidecars on import?

Lightroom reads XMP sidecars at import time by default. When you open the Import dialog and point it at a folder, Lightroom scans for .xmp files alongside each image before generating previews. Ratings, labels, flags, and keywords are read and applied to the catalogue entry immediately. You see the star rating on the thumbnail before you click Import.

This is where the “one step” becomes real. The culling pass you did - on an iPad on the train, on an iPhone while waiting for a client, on a Mac on the sofa - that pass produced XMP sidecars. Lightroom reads them. Your selects are marked. You never open the rating panel, never click a star, never touch P or X in the Library module for those frames. The decision you made in the culling tool is the decision Lightroom sees.

If the folder is already in your catalogue - you imported a shoot last week, then did a second culling pass today - use Library → Synchronize Folder or select the images and run Metadata → Read Metadata from Files. Lightroom reloads the sidecars and updates the entries. The rating you set an hour ago on your iPad overwrites the one you set last week at your desk, instantly.

Does this work with Capture One and Darktable?

Yes. The XMP standard is not Adobe-only. Capture One reads XMP sidecars natively on import and when you reload metadata. Darktable, the open-source RAW developer, reads XMP sidecars as its primary metadata interchange format - and writes them back. The workflow is editor-agnostic because the sidecar is editor-agnostic.

The one caveat: Capture One handles external metadata changes differently from Lightroom. While Lightroom detects sidecar changes when you synchronise a folder, Capture One requires an explicit Metadata → Load Metadata command for images already in a session or catalogue. This is a one-time menu item, but worth remembering: if you re-rate frames in your culling tool after importing them into Capture One, you must reload. The “one step” is still one step - you just need to know which menu triggers it.

What is the difference between a sidecar and a Lightroom catalogue?

A Lightroom catalogue is a database. It stores every rating, edit, collection, and virtual copy for every image you have imported. The catalogue lives wherever you put it - by default, inside your Pictures folder on Mac or Documents on Windows. It does not live in the shoot folder. It does not travel with the images.

This is why photographers who work across multiple machines, or who archive shoots to a NAS and edit on a laptop, sometimes open an old shoot to find the ratings gone. The catalogue was on the other computer. The RAW files are intact, but the ratings stayed behind.

XMP sidecars solve this. They live in the shoot folder, not in a database file somewhere else. Archive the folder to a NAS, copy it to an external drive, send it to a retoucher - the sidecars go with it. When you open that folder on a different Mac five years later, Lightroom reads the sidecars and your ratings reappear. You are not dependent on a specific catalogue file. You are dependent on a documented, open file format.

Can I cull on my iPad and see the ratings in Lightroom on my Mac?

This is the most practical version of the one-step XMP workflow, and it is the one most photographers discover by accident. You have a shoot folder on your NAS. You open a culling app on your iPad during your commute. You swipe through 800 frames, flag the rejects, star-rate the keepers. You arrive at your desk, open Lightroom on your Mac, synchronise the folder - and every rating you made on the iPad is already there.

There is no sync service involved. The iPad wrote XMP sidecars to the NAS folder over SMB. The Mac reads XMP sidecars from the same NAS folder over SMB. The sidecar is the sync. The file system is the transport. As long as both devices can reach the same folder - whether over a local network, a VPN, or a shared network drive - the metadata flows.

The same pattern works for any device combination: iPhone cull to Mac edit, iPad cull to Capture One on a desktop, or a single-Mac workflow where one app rates and another edits. The XMP file in the folder is the universal intermediary.

Is an XMP sidecar workflow faster than culling in Lightroom directly?

For most photographers, yes - and the gap widens as the shoot grows. Here is why.

Culling in Lightroom requires importing everything first. A 1,000-frame RAW shoot takes 5–10 minutes just for import and preview generation. Then the culling pass itself takes 30–45 minutes at 2–4 seconds per frame. Total: roughly an hour, all at your desk.

With an XMP sidecar workflow, the culling pass happens on any device, anywhere. An iPad culling session over SMB takes the same 30–45 minutes for the rating pass, but it can happen on a train, on a sofa, or in a cafe. The Lightroom session that follows is a quick import of the already-rated folder - 5 minutes. No culling pass needed inside Lightroom at all.

The time saving is not in the culling speed itself - frame-by-frame decisions take as long as they take. The saving is in removing the import-first bottleneck and moving the cull away from your editing desk. You do the slowest, least creative part of the workflow when and where it suits you. Lightroom receives the result.

How does XMP handle metadata from different tools on the same file?

XMP is designed for multiple editors to coexist. Each tool writes its metadata under its own namespace - Adobe tools use the xmp namespace, Darktable uses its own extensions, and so on. A sidecar can carry an xmp:Rating from one app and a darktable:colorlabels from another, and neither overwrites the other. Lightroom reads only the namespaces it recognises. Darktable reads its own. The sidecar acts as a shared record rather than a single-tool lock-in file.

This is why the XMP workflow does not create conflicts when you alternate between tools. Rate in a culling app, edit in Lightroom, add keywords in a DAM - each writes to its own namespace in the same sidecar, and each reads what it needs.

What an XMP sidecar does not do

An XMP sidecar carries metadata: ratings, labels, flags, keywords, copyright, GPS coordinates, and in some editors, edit history. It does not carry image data. It does not contain a preview of your edit, a crop rectangle, or an exposure adjustment that a different RAW developer can apply. Those adjustments are editor-specific and stored in the editor’s own catalogue or session file - Lightroom catalogue entries, Capture One settings files, or Darktable database records.

The sidecar is the bridge for triage, not for finishing. A star rating and a colour label cross the bridge. Your Lightroom tone curve, graduated filter, and spot-removal do not. The distinction matters: the XMP workflow is about getting the cull done cleanly before the edit, not about moving a half-finished edit between applications.

A note on CullKit and XMP

CullKit is a dedicated culling and rating app for iPhone, iPad, and Mac that writes standard XMP sidecars. Every star rating, reject flag, colour label, and keyword you assign in a culling session is written to a sidecar alongside the RAW file on your storage - NAS, SMB share, external SSD, or local folder. Nothing is uploaded or sent to a cloud. The sidecars land directly on your own storage.

CullKit is an independent product. It is not affiliated with or endorsed by Adobe (Lightroom), Capture One, or Darktable. It writes standard XMP sidecars that any XMP-compliant editor reads. Compatibility claims only.

Unlike a general-purpose file browser or a DAM that happens to offer a rating panel, CullKit is built for the one task of speed-culling: full-screen swipe review on iOS, keyboard-driven rating on Mac, auto-advance, undo/rewind, crash recovery, and RAW+JPEG pairing. It handles the first pass so your editor handles the rest. The XMP sidecar is the bridge.

Troubleshooting XMP sidecars

“My sidecars disappeared after import.” Lightroom has a catalogue setting to automatically write changes to XMP, but it does not delete sidecars. More commonly, the folder was moved or renamed and the sidecars were left behind - they are separate files and do not automatically follow unless you use a file manager that moves them with the RAWs. Always select the folder including hidden files if you see .xmp files in one location but not the other.

“Ratings show in Lightroom but not in Finder or Windows Explorer.” Operating system file browsers do not read XMP sidecars. The only way to see a rating in Finder is if the image format supports embedded metadata (JPEG, HEIC, DNG) and the rating was embedded in the file itself. For proprietary RAW formats, the rating lives in the sidecar and is invisible until an XMP-aware application reads it.

“My camera records a rating in-camera and it overrides my XMP rating.” Some cameras - Canon EOS bodies, recent Nikons - write an in-camera rating to a maker-note field inside the RAW. Lightroom usually prioritises XMP over maker-note data, but if a conflict appears, check the Metadata panel for a “Rating” versus “Label” discrepancy and manually resolve it once.

“Sidecar shows rating=0 but I am sure I rated it 4.” The XMP field is xmp:Rating with a capital R. Some tools incorrectly write xmp:rating (lower-case r) and Lightroom ignores it. The XMP specification requires the capital. Open the sidecar in a text editor and verify the case if ratings are inconsistently missing across a batch.

“My NAS feels slow during sidecar writes.” XMP sidecars are tiny text files - typically under 2 KB. If writes feel sluggish, the bottleneck is network latency, not file size. A wired connection to the NAS or a 5 GHz Wi-Fi access point resolves this. Alternatively, cull on a local copy of the folder and copy the sidecars back - they are minuscule, and a batch copy takes seconds.

“Lightroom is not reading my sidecars at all.” If Lightroom ignores the XMP files entirely, open Catalog Settings and check the Metadata tab. The option “Automatically write changes into XMP” controls writing, not reading, but if the catalogue is set to a read-only state or if the sidecars are in the wrong folder, Lightroom will skip them. Run Metadata → Read Metadata from Files as a targeted re-read. If that fails, open one sidecar in a text editor: a malformed file (truncated XML, unclosed tags) will be silently ignored by every XMP reader.

Try the XMP sidecar workflow

CullKit is available on iPhone, iPad, and Mac. Browse is free - connect to your NAS, SMB share, external SSD, or local folder and explore your library. The Pro tier (7-day free trial, then monthly or yearly) unlocks culling, star ratings, colour labels, keywords, and XMP sidecar writing.

There is also a built-in demo mode with sample data, so you can try the full culling-to-XMP workflow before pointing it at your own photos. Rate a few frames in demo mode, find the XMP sidecars the demo creates, and open one in a text editor to see the metadata you just generated.

Download CullKit on the App Store


CullKit is an independent product. It is not affiliated with or endorsed by Adobe (Lightroom), Capture One, or Darktable. Compatibility claims only.

← Back to all posts