Crate wgsl_minifier

source ·
Expand description

§WGSL Minifier

A small tool built on top of Naga that makes WGSL shaders smaller by performing simple dead code elimination, stripping names of non-exported functions and local variables, and removing as much whitespace as possible.


To minify your WGSL shader, simply run the following:

cargo install wgsl-minifier
wgsl-minifier path/to/your/shader.wgsl path/to/minified/output.wgsl

§As a library

To use this crate as a library, for example in a game engine or larger preprocessor, two calls must be made. The first strips identifiers to smaller ones where possible. The second removes unnecessary whitespace, commas, and parentheses in a source string:

let mut module = /* your source here, or */ naga::Module::default();

// Now minify!
wgsl_minifier::minify_module(&mut module);

// Write to WGSL string
let mut validator = naga::valid::Validator::new(
let info = validator.validate(&module).unwrap();
let output = naga::back::wgsl::write_string(&module, &info, naga::back::wgsl::WriterFlags::empty()).unwrap();

// Minify string
let output = wgsl_minifier::minify_wgsl_source(&output);


  • Performs minification on a naga module, changing any names or identifiers to smaller ones.
  • Removes all the characters it can in some wgsl sourcecode without joining any keywords or identifiers together.