Unreal ships one generic bulk editor, the Property Matrix, and it is switched off for Material Instances on purpose. In UE 5.8 the Content Browser builds its “Edit Selection in Property Matrix” entry behind a flag, then clears that flag if any selected asset is a UMaterialInstanceConstant, UMaterialFunction or UMaterialFunctionInstance. The comment in AssetFileContextMenu.cpp explains that materials require very special handling because of their dependencies with the rendering thread.
So bulk parameter work on Material Instances is done one asset at a time. This plugin does the round trip instead.
Export writes one row per Material Instance and one column per parameter, covering scalars, vectors, textures and static switches. A blank cell means that instance inherits the value from its parent. A filled cell is an override. The PARENT_DEFAULTS rows show what the blanks resolve to, and the import ignores them.
Import without -Apply writes nothing and reports exactly which assets and which parameters would change. That is the step worth spending a minute on. Import with -Apply writes a JSON journal before it touches the first package, and a Revert run against that journal puts everything back as it was.
MaterialSheet.Run -Export -Paths=/Game/Materials -Sheet=D:/sheets/props.csv
MaterialSheet.Run -Import -Sheet=D:/sheets/props.csv
MaterialSheet.Run -Import -Sheet=D:/sheets/props.csv -Apply
For a headless or CI run, use the commandlet form rather than the console command, because a headless editor does not surface a console command’s requested exit code as the process exit code.
UE 5.8, editor plugin, Windows 64 bit. Regular price is $14.99 and it is $10.49 until 9 September.
AI disclosure: this plugin was written with AI assistance, and so was this post.