Quick Filter problem with XMP/IPTC defect
Posted: Wed Aug 20, 2025 8:32 am
I'm encountering an obstacle and I'd appreciate it if anyone can suggest a workable way around it. There are some constraints, and XnViewMP doesn't seem to be updating some of its internal references as it should.
I need to update the metadata for several thousand image files. Because the information is beyond XnViewMP's capabilities, I will be using ExifTool in a script to access, update, and write the new information.
Here are the constraints:
1. The resulting metadata MUST be searchable by Quick Filter (Quick Search) in XnViewMP (I do not mean the advanced search Ctrl-F).
2. Quick Filter is incapable of searching XMP fields (even those XMP fields that have GUI elements. I find this hard to understand after so many years) and it will ONLY search IPTC fields.
3. I am writing the updated information to sidecar files to avoid touching the original image files
4. ExifTool does not write IPTC information to XMP sidecar files. Only XMP tags can be written to XMP sidecar files.
So right away, perhaps you can spot a problem: I have to get the information into IPTC for XnViewMP to be usable, but it's XMP only in the sidecar.
XnViewMP claims/seems to have some kind of syncronization between certain XMP and IPTC fields. As best as I can tell, this only partially works. Data appears to synchronize, but the IPTC is NOT immediately searchable.
In this example, I am using XMP:Instructions which maps to IPTC:SpecialInstructions
Here's how things play out, and they are the steps to reproduce what I think is a defect:
0. Metadata->Edit IPTC->Options->Mode: XMP, update or create IPTC-IIM
1. Place an XMP file next to a JPG file (x.jpg and x.jpg.xmp the example xmp file is shown at the end of the post)
2. Metadata->Update Catalog From Files
2b. Select in the browser the image that has the xmp file.
3. Metadata->Edit XMP (observe the data is visible in the Instructions field)
4. CANCEL Edit XMP
5. Metadata->Edit IPTC (observe the data is visible in the Special Instructions field)
6. CANCEL Edit IPTC
7. In Quick Filter, search for the data. (Type Visible)
You get no hits. The data is visible in the IPTC dialog, but it is NOT searchable.
It will not become searchable until you select a file, and do Metadata->Edit IPTC and WRITE.
So the data is properly imported. It's visible in XMP, and mapped and visible in IPTC, but it's not searchable. I think that's a defect. I think the IPTC version of the field should be searchable as soon as the data is imported if the options are set correctly, but it's not.
I have tried all four values of the Edit IPTC->Options->Mode setting, none resolve the problem.
Settings->Sidecar->Create or update XMP sidecar does not resolve the problem regardless of setting.
I'm aware I could write all the data into the subject or xmp:keywords, but I use subject for other things, and xmp:keywords is visible in the catalog filter and so is not appropriate. I am willing to use a field other than SpecialInstructions if it will work.
Not using sidecars and writing directly to the jpeg files also avoids the problem, but that's touching gigabytes of original files, so that approach is off the table for a variety of reasons.
Does anyone know a way around this? Individual actions for thousands of files is not a workable solution.
From an application standpoint, I think the best thing is for Quick Filter to finally search XMP fields.
IPTC is to a great degree deprecated in general use. XMP should be the priority. But this has been requested for years.
The second best thing is to fix the synchronization problem I demonstrated above so the IPTC data is immediately searchable.
But if someone can suggest a viable workaround I can use, I'd be glad to hear it...
Thanks...
x.jpg.XMP file below the ------ line
-------
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.34'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
<photoshop:Instructions>Visible in IPTC but not searchable
</photoshop:Instructions>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>
I need to update the metadata for several thousand image files. Because the information is beyond XnViewMP's capabilities, I will be using ExifTool in a script to access, update, and write the new information.
Here are the constraints:
1. The resulting metadata MUST be searchable by Quick Filter (Quick Search) in XnViewMP (I do not mean the advanced search Ctrl-F).
2. Quick Filter is incapable of searching XMP fields (even those XMP fields that have GUI elements. I find this hard to understand after so many years) and it will ONLY search IPTC fields.
3. I am writing the updated information to sidecar files to avoid touching the original image files
4. ExifTool does not write IPTC information to XMP sidecar files. Only XMP tags can be written to XMP sidecar files.
So right away, perhaps you can spot a problem: I have to get the information into IPTC for XnViewMP to be usable, but it's XMP only in the sidecar.
XnViewMP claims/seems to have some kind of syncronization between certain XMP and IPTC fields. As best as I can tell, this only partially works. Data appears to synchronize, but the IPTC is NOT immediately searchable.
In this example, I am using XMP:Instructions which maps to IPTC:SpecialInstructions
Here's how things play out, and they are the steps to reproduce what I think is a defect:
0. Metadata->Edit IPTC->Options->Mode: XMP, update or create IPTC-IIM
1. Place an XMP file next to a JPG file (x.jpg and x.jpg.xmp the example xmp file is shown at the end of the post)
2. Metadata->Update Catalog From Files
2b. Select in the browser the image that has the xmp file.
3. Metadata->Edit XMP (observe the data is visible in the Instructions field)
4. CANCEL Edit XMP
5. Metadata->Edit IPTC (observe the data is visible in the Special Instructions field)
6. CANCEL Edit IPTC
7. In Quick Filter, search for the data. (Type Visible)
You get no hits. The data is visible in the IPTC dialog, but it is NOT searchable.
It will not become searchable until you select a file, and do Metadata->Edit IPTC and WRITE.
So the data is properly imported. It's visible in XMP, and mapped and visible in IPTC, but it's not searchable. I think that's a defect. I think the IPTC version of the field should be searchable as soon as the data is imported if the options are set correctly, but it's not.
I have tried all four values of the Edit IPTC->Options->Mode setting, none resolve the problem.
Settings->Sidecar->Create or update XMP sidecar does not resolve the problem regardless of setting.
I'm aware I could write all the data into the subject or xmp:keywords, but I use subject for other things, and xmp:keywords is visible in the catalog filter and so is not appropriate. I am willing to use a field other than SpecialInstructions if it will work.
Not using sidecars and writing directly to the jpeg files also avoids the problem, but that's touching gigabytes of original files, so that approach is off the table for a variety of reasons.
Does anyone know a way around this? Individual actions for thousands of files is not a workable solution.
From an application standpoint, I think the best thing is for Quick Filter to finally search XMP fields.
IPTC is to a great degree deprecated in general use. XMP should be the priority. But this has been requested for years.
The second best thing is to fix the synchronization problem I demonstrated above so the IPTC data is immediately searchable.
But if someone can suggest a viable workaround I can use, I'd be glad to hear it...
Thanks...
x.jpg.XMP file below the ------ line
-------
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 13.34'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
<photoshop:Instructions>Visible in IPTC but not searchable
</photoshop:Instructions>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>