I thought that objects used as a target in a modifier had their user count incremented but apparently not.
I'd use a script for that :
You can loop through all objects and all their modifiers and check what objects are linked to modifier fields. The following script will deselect all objects and select only objects that appear inside the target field of a modifier.
# Deselect all objects
for obj in (o for o in bpy.data.objects if hasattr(o, "modifiers")):
# Loop through all objects that actually support modifiers
for mod in obj.modifiers:
# Loop through all modifier(s) of that object
for attr in dir(mod):
# Loop through all attributes of that modifier
target = getattr(mod, attr)
# Get the value of that attribute field
if isinstance(target, bpy.types.Object) and target is not None:
# Filter in only attributes that link to an Object
How to run a script in blender
On some instances object fields retain their object link even when the linked object is not actually used.
Example : On the boolean modifier, if you first use an Object as a target, then set the type to Collection, the link to the Object still remains. If you switch back to the Object type, you see that the target is still filled in. You'd have to add in special use cases for that in the script if that behaviour bothers you.