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.
5 Answers
Yes, you can. Easy way would be:
- Select all objects, keep one active, remove all materials on it by pressing the "-" button on the right-hand side of material slot list;
- 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.
- 27,718
- 11
- 89
- 161
-
I never knew such a thing ever existed. Found the button, done and gone. – ikel Feb 19 '14 at 04:53
-
1This 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
-
1@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 02:51
-
1I have no materials assigned, and reopening the file doesn't remove any of them – stackers Jan 03 '20 at 19:10
to delete all materials:
import bpy
for material in bpy.data.materials:
material.user_clear()
bpy.data.materials.remove(material)
-
1
-
Would it be an easy update to make your script remove the material slots too? – Pieter De Bie Dec 04 '20 at 05: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})
- 29,298
- 3
- 89
- 128
-
1According 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 08:05
-
1Interesting, 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 08:13
-
4
-
3Added a scripted solution to really remove all slots of all selected objects :) – CodeManX Feb 19 '14 at 08: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 01:39
-
this should be the right answer. I have over 100 materials in a generated object, using current best answer will be a nightmare... – KuN Jun 18 '17 at 01:30
Here is an updated version of reflog's answer. This removes all materials programatically.
for material in bpy.data.materials:
bpy.data.materials.remove(material, do_unlink=True)
I was getting errors when using material.user_clear(), and read that it's something that shouldn't be done anymore. The above works flawlessly in the current version of Blender (3.0.0 at the time of writing).
- 121
- 3
just had to solve this problem too. The other answers here didnt work for me. My solution:
- Select all of the objects you want to remove materials from.
- In Object Mode, Join them (menu: Object/Join or shortcut: ctrl + 'j').
- Remove the material(s) in the materials panel by pressing the '-' button.
- In Edit Mode, select all ('a'), press 'p' and separate (by loose parts in my case) to get your individual objects back.
- 101
- 1
- 2
- 9
-
3I'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
-
1This 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
-