# Can I delete all materials of all objects in a scene quickly?

Is there a quick way to delete all materials in the scene? I have a scene containing 20+ materials and all linked to objects. I'd like to remove all the materials from my blender file.

Yes, you can. Easy way would be:

1. Select all objects, keep one active, remove all materials on it by pressing the "-" button on the right-hand side of material slot list;
2. Then, from the drop-down list (below it), choose Copy Material to Others. Save the file.

All unused material data will be removed after saving. You cannot see them anymore after reopening.

• I never knew such a thing ever existed. Found the button, done and gone. – ikel Feb 19 '14 at 4:53
• This answer just saved me Two thousand, nine hundred and sixty five mouseclicks. You sir, are a legend. – Jachym Michal Nov 20 '19 at 20:15
• @JachymMichal Glad to help sir. It's 2.8 now, and we still have to do this kinda quick and dirty trick... T_T – Leon Cheung Nov 21 '19 at 2:51
• I have no materials assigned, and reopening the file doesn't remove any of them – stackers Jan 3 '20 at 19:10

to delete all materials:

import bpy
for material in bpy.data.materials:
material.user_clear()
bpy.data.materials.remove(material)

• You don't need ; in python tho – Sibbs Gambling Jan 15 '18 at 13:19
• Would it be an easy update to make your script remove the material slots too? – Pieter De Bie Dec 4 '20 at 5:46

There's an addon Material Utils, which ships with Blender.

Enable it in the User Preferences > Addons, select all objects A, hit Q over 3D View and chose Remove Material Slots:

It currently works on the active object only, despite the tooltip stating it would work for multiple objects. Here's a scripted solution for all selected, editable (non-linked) objects:

import bpy

for ob in bpy.context.selected_editable_objects:
ob.active_material_index = 0
for i in range(len(ob.material_slots)):
bpy.ops.object.material_slot_remove({'object': ob})

• According to the tooltip: "Remove all material slots from active objects", so a Copy Material to Others operation is still needed. Btw, you are supposed to suggest a coding way, I bet. :P – Leon Cheung Feb 19 '14 at 8:05
• Interesting, it says objects, but seems to work on the active object only. I should either fix the tooltip or add an option to chose what to delete (slots of active object, selected objects, scene objects, all). – CodeManX Feb 19 '14 at 8:13
• Yeah, This is the CoDEmanX I know of. XD – Leon Cheung Feb 19 '14 at 8:23
• Added a scripted solution to really remove all slots of all selected objects :) – CodeManX Feb 19 '14 at 8:27
• I'm working on the Material Utils addon and it looks like it currently fails for a lot of scenarios? I wonder how slot cleanup should behave, I could let it remove all empty slots (but they can actually be assigned without material!), or only slots with materials not used by the object, or a mix of both... Won't work for text objects however, they don't seem to expose the materials :( – CodeManX Feb 23 '14 at 1:39

just had to solve this problem too. The other answers here didnt work for me. My solution:

1. Select all of the objects you want to remove materials from.
2. In Object Mode, Join them (menu: Object/Join or shortcut: ctrl + 'j').
3. Remove the material(s) in the materials panel by pressing the '-' button.
4. In Edit Mode, select all ('a'), press 'p' and separate (by loose parts in my case) to get your individual objects back.
• I'd use this if and only if none of the original objects had loose parts, or shared the same origin, or had meaningful names (mesh or object). – batFINGER Oct 21 '17 at 12:04
• This might not work as expected for mesh objects containing several meshes, like e.g. monkey. After your procedure there will be monkey and 2 eyes objects. Answers shown here still work for this situation – Mr Zak Oct 21 '17 at 12:28
• above critiques accepted :o) – tinyMind Oct 21 '17 at 17:30