You set your camera to RAW+JPEG for a reason. The RAW file gives you the latitude to push exposure and recover highlights in post. The JPEG gives you a ready-to-send preview for the client, a quick social-media export, or a reference image for the album designer who does not want to touch a 45-megapixel CR3. Both frames matter. Both need the same rating. And if your culling tool treats them as two separate files, you are doing the work twice.
That duplication is not a minor annoyance. On a 1,500-frame wedding, RAW+JPEG means 3,000 visible files in your file browser. In Lightroom, every frame appears twice. In most file-based culling tools, you swipe through duplicates, rate one, miss the other, and end up with half a shoot that has a rating and half that does not. The JPEG you sent the client at midnight has five stars. The RAW you open to edit in the morning shows zero. You re-rate it. You have just doubled your culling time for no reason.
CullKit reviews RAW+JPEG pairs as a single frame. One thumbnail in the grid. One image in the culling session. One swipe, one tap, one star rating. Behind the scenes, a single XMP sidecar named after the RAW file applies the rating to both the RAW and the JPEG simultaneously. When you open the folder in Lightroom or Capture One, both files carry the same metadata. You cull once. You rate once. The pair stays a pair.
What are RAW+JPEG pairs and why do photographers shoot them?
RAW+JPEG pairs are two image files created from a single exposure. The camera writes the full sensor data to the RAW file (Canon CR3, Nikon NEF, Sony ARW, Fuji RAF) and simultaneously writes a processed, compressed JPEG using the camera’s picture style, white balance, and tone curve as a starting point. The two files share the same base filename, the same capture time, and the same frame number. Your camera produces IMG_4521.CR3 and IMG_4521.JPG from one shutter press.
Photographers shoot RAW+JPEG for several practical reasons. Wedding photographers send JPEG previews to couples within hours of the ceremony while retaining the RAWs for final edits. Sports photographers wire JPEGs to the picture desk at halftime and deliver RAWs for magazine features the next day. Portrait photographers use the JPEG as a quick client-proofing file and the RAW for retouching the selections. Travel photographers with limited laptop storage edit the JPEG first and only process the RAW when a frame earns a spot in the portfolio. In every case, the JPEG is not a throwaway. It is a parallel deliverable.
The problem is that every RAW editor, every file browser, and almost every culling tool treats the RAW and JPEG as independent files. They sit next to each other in the folder. They appear as separate thumbnails in the grid. You rate one. The other stays unrated. Multiply that by a thousand exposures, and you have created a metadata mess where half your files carry a rating and the other half do not. The pair, which your camera created as two renderings of one frame, has become two separate jobs.
How does CullKit detect and group RAW+JPEG pairs?
CullKit identifies photo pairs by matching the base filename. When it scans a folder, it looks for files that share the same stem (the filename minus the extension) and groups any RAW+JPEG combination as a single reviewable item. DSC_4521.ARW and DSC_4521.JPG become one entry in the grid. You see a single thumbnail, a single rating badge, and a single colour-label dot. When you swipe left to reject or tap a 3-star rating, CullKit writes the decision to one XMP sidecar named after the RAW file: DSC_4521.ARW.xmp.
The pairing logic handles the common naming conventions from every major camera brand:
- Canon:
IMG_4521.CR3+IMG_4521.JPG; straightforward matching, common across 5D, R5, R6, and 1D bodies - Nikon:
DSC_4521.NEF+DSC_4521.JPG; consistent base stem, the default on Z6, Z7, Z8, and D850 - Sony:
DSC04521.ARW+DSC04521.JPG; the four-digit frame counter format used by A7 and A9 series cameras - Fujifilm:
DSCF4521.RAF+DSCF4521.JPG; the X-T and GFX series convention - Panasonic:
P1004521.RW2+P1004521.JPG; Lumix bodies following the standard base-name pattern - Olympus/OM System:
P5214521.ORF+P5214521.JPG; the OM-D and PEN naming convention
In all of these cases, the RAW and JPEG share the same filename stem and CullKit recognises the pair automatically. You do not configure anything. You do not enable a pairing setting. You open the folder and the 3,000 files on disk become the 1,500 exposures you actually shot.
What happens behind the frames: the shared XMP sidecar
When you rate a RAW+JPEG pair, CullKit writes the metadata to a single XMP sidecar named after the RAW file. The sidecar sits in the same folder as both the RAW and the JPEG. If your folder contains DSC_4521.NEF and DSC_4521.JPG, CullKit creates DSC_4521.NEF.xmp. The rating, colour label, reject flag, and any keywords you assign all go into that one small text file, typically under two kilobytes.
This is the Lightroom and Capture One convention for paired files. Both applications read the sidecar named after the RAW file and apply its metadata to both the RAW and the JPEG. When you import the folder into Lightroom, DSC_4521.NEF shows a 4-star rating from the sidecar, and DSC_4521.JPG shows the same 4-star rating from the same sidecar. The pair stays synchronised because the metadata lives in one file that both read.
This shared-sidecar design has two practical advantages. First, it prevents metadata drift. You cannot accidentally rate the RAW 4 stars and the JPEG 3 stars because both read from the same XMP source. Second, it keeps your sidecar count manageable. A 1,500-exposure shoot produces 1,500 sidecar files, not 3,000. Your folder is cleaner, your NAS backup is faster, and your archive is easier to navigate.
Does this work the same way on a NAS, an external SSD, and a local folder?
Yes. The pairing logic and shared-sidecar behaviour are identical across all three storage backends.
On a Synology NAS, connect over the Synology Photos API or mount the photo share over SMB. CullKit scans the folder, identifies pairs, and writes one XMP sidecar per exposure directly to the NAS file system. Both the RAW and the JPEG already live on the NAS, and the sidecar lands alongside them. When you open Lightroom on your Mac and synchronise the folder, both formats carry the rating.
On a QNAP, TrueNAS, or UGREEN NAS, mount the SMB share with the NAS IP address and credentials. The folder structure, file naming, and XMP behaviour are identical to a local drive. The only variable is network speed, and a 2 KB sidecar writes in a fraction of a second even over Wi-Fi. See our QNAP, TrueNAS, and UGREEN guide for the per-vendor SMB setup steps.
On an external SSD or local folder, the flow is the same but faster. Plug the SSD into your iPad or open the folder on your Mac. CullKit reads the folder directly, pairs the files, and writes sidecars to the same directory. No network latency, no SMB authentication. The sidecars travel with the folder when you copy it to another drive.
In every case, the rating you apply appears on both the RAW and the JPEG in Lightroom, Capture One, and Darktable. The storage backend does not affect the metadata output; only the connection speed and setup steps differ.
What if my camera uses different naming patterns for RAW and JPEG?
Some Sony bodies write RAW and JPEG files with different base names in certain modes. The most common variant is DSC4521.ARW for RAW and _DSC4521.JPG for the JPEG, where the JPEG gains an underscore prefix. This breaks the base-filename matching that pairing depends on, because DSC4521 and _DSC4521 are not the same stem.
In this case, CullKit cannot automatically pair the files because the naming convention gives no reliable way to match them. The camera has produced two files with different roots, and no metadata field explicitly says “these two files are a pair.” You have two practical workarounds.
The first and simplest is to filter your culling session to RAW files only. CullKit’s folder filter lets you show only RAW formats in the grid and culling session. You swipe through the RAWs, assign ratings, and the XMP sidecars land alongside the RAW files. When Lightroom imports the folder, it applies each sidecar’s rating to the corresponding JPEG automatically, because Lightroom’s own pairing logic matches by base filename and falls back to capture-time comparison when naming diverges. You rate the RAW. Lightroom applies the rating to the JPEG. You never see the duplicates.
The second workaround is to change your camera’s naming convention. On most Sony bodies, the File Settings → File Number and File Name menus let you remove the underscore prefix for JPEGs or switch to a consistent sRGB naming scheme. This is a one-time settings change that eliminates the mismatch for every future shoot. If you shoot an A7 IV or newer body, the DSC prefix is configurable and you can make RAW and JPEG bases identical.
How do the ratings get into Lightroom and Capture One?
The handoff from CullKit to your desktop editor works the same way as any XMP sidecar workflow. CullKit writes the sidecar file to the folder. Your editor reads it.
In Lightroom Classic, if the folder is not yet in your catalogue, open the Import dialog, point it at the folder, and Lightroom reads every sidecar before generating previews. Your 4-star selects and rejected frames appear flagged on the import grid before you click Import. If the folder is already in your catalogue (you imported it last week, then did a culling pass today), select the folder in the Folders panel, right-click, and choose Synchronize Folder. Lightroom reloads the sidecars and updates the ratings. Both the RAW and the JPEG receive the rating from the shared sidecar.
In Capture One, the same logic applies with one extra step for existing sessions. On a fresh import, Capture One reads sidecars and applies ratings automatically. For images already inside a session or catalogue, use Metadata → Load Metadata to reload the sidecars. As with Lightroom, the single sidecar feeds both the RAW and the JPEG.
In Darktable, select the folder in the lighttable view and run the Synchronize command. Darktable reads every sidecar in the folder and matches them by base filename. Both the RAW and JPEG inherit the metadata from the shared sidecar.
The key point: the XMP standard, the shared-sidecar convention, and the editor behaviour are all consistent across tools because they follow the same Adobe-defined convention. CullKit does not introduce a proprietary pairing format. It follows the convention that Lightroom, Capture One, and Darktable already use. Your paired files stay paired from camera to cull to edit.
How do I cull RAW+JPEG pairs on an iPhone or iPad?
The pairing behaviour works identically on iOS and macOS. On an iPhone or iPad, connect to your NAS over Wi-Fi, plug in an external SSD via USB-C, or open a local folder. CullKit scans the folder and groups pairs automatically. The culling interface shows one frame per exposure, full-screen, with swipe gestures for reject and keep actions. The quick-access bar at the bottom of the screen lets you assign a star rating with a single tap.
After the culling pass, the XMP sidecars are written to the source folder. If you have been culling over SMB from a NAS, the sidecars land directly on the NAS file system. If you have been culling from an external SSD plugged into the iPad, the sidecars write to the SSD and travel with it when you plug it into your Mac. There is no export step, no sync service, and no additional import dialog. The sidecar is the only artefact, and it is already in the right folder.
For large RAW+JPEG shoots, an iPad with a USB-C connection to a fast SSD is the fastest mobile culling setup. The SSD delivers local-drive read speed for the RAW previews, and the 2 KB sidecar writes are instantaneous. You can cull a 1,500-exposure wedding (3,000 files on disk, 1,500 frames in CullKit) in 45 minutes on an iPad Pro and arrive at your desk with the cull already finished. The Lightroom import that follows takes five minutes and skips the rating pass entirely.
Why do most tools split pairs into separate frames?
The underlying cause is technical: most file browsers and photo managers do not implement base-filename pairing logic because the logic varies by camera brand and because treating every file as independent is simpler to code. A file browser shows every file in a directory. A DAM shows every image format it recognises. Neither asks “do these two files represent one exposure?” because the answer depends on the camera’s naming convention and there is no standard EXIF field that explicitly says “paired with file X.”
Lightroom and Capture One do implement pairing at the catalogue level, but their pairing applies inside the catalogue. The folder on disk still shows two files. The import dialog still lists both. The pairing is a view-level convenience, not a file-system reduction.
CullKit implements pairing at the grid and culling-session level, which means you never see the duplicates at all. The 3,000 files on your NAS produce a 1,500-item grid in CullKit. You cull 1,500 exposures, not 3,000 files. This is a difference in design philosophy: CullKit is built for the culling pass specifically, not for a generic file-browsing task that happens to support ratings. The pairing logic is part of the culling workflow because the culling workflow is the only reason the app exists.
Does pairing work with HEIC, DNG, or video files alongside RAW?
The pairing logic currently applies to RAW+JPEG combinations where the JPEG side uses the standard .jpg or .jpeg extension. HEIC files, DNG raw files, and video files are not currently included in the automatic pairing logic.
For HEIC+RAW pairs from an iPhone or an Apple camera, the pairing behaviour depends on how the files are named. Apple’s iPhone RAW capture (ProRAW) produces a single DNG file that contains both the RAW data and an embedded JPEG preview, so there is no pair to worry about: you have one file. If you have separate HEIC and RAW files from a third-party camera app, CullKit treats them as independent items.
For DNG files, pairing is generally not needed because most DNG workflows do not produce a separate JPEG alongside the DNG. If your camera or conversion tool writes a DNG and a JPEG with the same base name, CullKit will detect the pair following the same filename-matching rule.
For video files shot alongside stills, common for hybrid shooters covering both photo and video, CullKit does not pair video with a RAW because the two serve entirely different purposes. The video culling path is separate from the photo culling path, and a video file is never a substitute for the JPEG half of a RAW+JPEG pair.
What if I want a different rating on the JPEG than the RAW?
This is a legitimate edge case. A photographer might rate the RAW 5 stars for their own portfolio edit but rate the JPEG 3 stars because the camera’s JPEG rendering is flat and the frame only shines after post-processing. The shared-sidecar convention makes this impossible: one sidecar, one rating, applied to both.
The solution depends on where the rating difference matters. If you need different star ratings for the RAW and JPEG, cull in two passes. First, rate the entire shoot for the RAW perspective. Then, in Lightroom or Capture One, filter to JPEG files only and adjust the ratings manually for the frames where the JPEG quality diverges from the RAW promise. This is a manual step, but it is a rare one: in practice, most photographers find that a frame worth keeping as a RAW is worth keeping as a JPEG, and the single rating serves both purposes.
If you routinely need different ratings for RAW and JPEG, consider shooting RAW-only and generating JPEGs on export from your editor. This eliminates the in-camera JPEG entirely and gives you full control over the JPEG rendering and the rating. It is a workflow change, not a tool change, but it addresses the root cause.
Troubleshooting RAW+JPEG pair culling
“CullKit shows duplicates for my RAW+JPEG pairs.” The most common cause is a naming mismatch where the camera produces differently-named bases for RAW and JPEG. If your Sony body writes DSC4521.ARW and _DSC4521.JPG, the leading underscore on the JPEG breaks the match. Filter your culling session to RAW files only and let Lightroom handle the JPEG sidecar application on import. Alternatively, check your camera’s File Name settings for an option to use a consistent base name.
“I rated the RAW but the JPEG shows zero stars in Lightroom.” Two things to check. First, confirm the XMP sidecar exists in the folder alongside the RAW file and has the correct filename (DSC_4521.NEF.xmp rather than DSC_4521.xmp without the RAW extension). Second, in Lightroom, select the JPEG and run Metadata → Read Metadata from File. If the JPEG was imported before the sidecar was written, Lightroom may still hold the original metadata. A manual reload fixes this.
“I see ratings on the JPEG but not the RAW.” This can happen if you rated the JPEG file in a different tool that wrote an embedded rating into the JPEG’s EXIF header. CullKit writes ratings via XMP sidecars, not embedded JPEG metadata, so the rating path matters. The fix is to ensure your culling tool writes XMP sidecars named after the RAW file, and to synchronise the folder in Lightroom so it reads the sidecar metadata for both files.
“My Canon writes IMG_4521.CR3 and IMG_4521.JPG but they do not pair.” If the folder contains multiple files with the same base name in different formats (e.g., an additional .THM thumbnail file from a Canon cinema body), CullKit still pairs the RAW and JPEG and ignores the third file. The grid shows one frame. If the pair fails, check that both files share the exact same base name including case; some transfer workflows rename files inconsistently.
“The iPad shows a single frame but the Mac shows two.” This indicates a pairing discrepancy between the iOS and macOS versions. Ensure both devices are running the latest CullKit version from the App Store. If the folder is on a NAS, the sidecars written on one device are visible to the other; the XMP file is the same regardless of which device wrote it.
“My sidecar count is still double the shoot count.” If you see two sidecars per exposure (e.g., both DSC_4521.ARW.xmp and DSC_4521.JPG.xmp), another tool wrote the second one. CullKit produces only one sidecar per pair, named after the RAW file. Find the extra sidecars, check their modification timestamps, and identify which tool created them. Remove the JPEG-named duplicates; they are redundant and can cause merge conflicts in some editors.
CullKit and RAW+JPEG pairing
CullKit’s RAW+JPEG pairing is part of a broader culling workflow built for photographers who shoot in volume. Every pairing, rating, colour label, and keyword you assign in a culling session is written to a standard XMP sidecar alongside your RAW file. Both file formats read it. Your editor inherits it. The pair stays a pair.
CullKit is an independent product. It is not affiliated with or endorsed by Canon, Nikon, Sony, Fujifilm, Panasonic, Olympus/OM System, Adobe (Lightroom), Capture One, or Darktable. It writes standard XMP sidecars that any XMP-compliant editor reads. Compatibility claims only.
Related reading
- XMP Sidecar Workflow: From Cull to Lightroom in One Step: the full metadata handoff from culling app to desktop editor, with per-tool synchronise steps.
- Get Your Culls into Lightroom Without Re-Importing: the import workflow that puts pre-rated selects straight into the catalogue.
- How to Cull and Rate Photos for Capture One: the Capture One variant of the same XMP-to-session pipeline.
Start culling RAW+JPEG pairs as single frames
CullKit is available on iPhone, iPad, and Mac. Browse is free. Connect to your NAS, mount an SMB share, plug in an external SSD, or open a local folder and explore your library. The Pro tier (7-day free trial, then monthly or yearly) unlocks culling, star ratings, colour labels, XMP sidecar writing, and RAW+JPEG pair handling.
Open a RAW+JPEG shoot folder, watch the 3,000 files collapse into 1,500 frames, and run your first culling pass in a single sitting. When you open Lightroom afterwards, your ratings are already on both formats.
Download CullKit on the App Store
CullKit is an independent product. It is not affiliated with or endorsed by Canon, Nikon, Sony, Fujifilm, Panasonic, Olympus, Adobe (Lightroom), Capture One, or Darktable. Compatibility claims only.