Try this. Save beforehand in case something goes wrong. ```py import bpy for ob in bpy.data.objects: for slot in ob.material_slots: try: name = slot.material.node_tree.nodes['Image Texture'].image.name except Exception: continue name = name[:-6] if name not in bpy.data.materials: slot.material.name = name else: slot.material = bpy.data.materials[name] ``` Afterwards, you can use File > Clean Up > Unused Data Blocks to remove the extra unused materials.