C, C++, C#, D, Java and Pawn source code formatter.


Format a single file

$ uncrustify -f [path/to/file.cpp] -o [path/to/output.cpp]

Read filenames from stdin, and take backups before writing output back to the original filepaths
$ find . -name "*.cpp" | uncrustify -F - --replace

Don't make backups (useful if files are under version control)
$ find . -name "*.cpp" | uncrustify -F - --no-backup

Use a custom configuration file and write the result to stdout
$ uncrustify -c [path/to/uncrustify.cfg] -f [path/to/file.cpp]

Explicitly set a configuration variable's value
$ uncrustify --set [option]=[value]

Generate a new configuration file
$ uncrustify --update-config -o [path/to/new.cfg]


uncrustify [OPTIONS] [FILES]


If no input files are specified, the input is read from stdin.
If reading from stdin, you should specify the language using -l.

If -F is used or files are specified on the command line, the output filename is PFX + "/" + filename + SFX.
Unless, of course, the options --replace or --no-backup are used.

When reading from stdin or doing a single file via the '-f' option, the output is dumped to stdout, unless redirected with -o FILE.

Errors are always dumped to stderr


Basic Options:

-c CFG

Use the config file CFG, or defaults if CFG is set to '-'.
If not specified, uncrustify will use $UNCRUSTIFY_CONFIG or $HOME/.uncrustify.cfg.


Process the single file FILE, sending output to stdout or the file specified with -o.


Redirect output to FILE.
Use with -f, --update-config, --update-config-with-doc, --universalindent.


Do not output the new text, instead verify that nothing changes when the file(s) are processed. The status of every file is printed to stderr. The exit code is EXIT_SUCCESS if there were no changes, EXIT_FAILURE otherwise.


Read files to process from FILE, one filename per line. If FILE is '-' then read filenames from standard input instead of a file.
You can create this file using something like 'find . -name "*.c" > list.txt'.
This cannot be combined with -f.

--prefix PFX

Prepend PFX to the output filename path.
This cannot be combined with -f, --replace, or --no-backup.

--suffix SFX

Append SFX to the output filename.
The default is '.uncrustify' if neither SFX or PFX are specified.
This cannot be combined with -f, --replace, or --no-backup.


Assume the input is a code fragment and the first line is properly indented.


Replace source files (creates a backup).
This cannot be combined with -f, --prefix, or --suffix.


Replace files, no backup. Useful if files are under source control
This cannot be combined with -f, --prefix, or --suffix.


Preserve mtime on replaced files.


Language override: C, CPP, D, CS, JAVA, PAWN, VALA, OC, OC+


Load a file with types (usually not needed)


Quiet mode - no output on stderr (-L will override)

Config/Help Options:

-h -? --help --usage

Print this message and exit


Print the version and exit


Print the number of available options and exit


Print out option documentation and exit


Output a new config file.


Output a new config file with embedded usage comments.


Output a config file for Universal Indent GUI.


Detects the config from a source file. Use with '-f FILE'. Detection is currently fairly limited.

Debug Options:


Dump debug info into FILE, or to stdout if FILE is set to '-'."
Must be used in combination with '-f FILE'."


Set the log severity (see log_levels.h)


Show the log severity in the logs

--decode FLAG

Print FLAG as text and exit


Read a D file from stdin, output to stdout.

cat foo.d | uncrustify -q -c my.cfg -l d

Process a file, output to stdout.

uncrustify -c my.cfg -d foo.d

Process a source tree, output to a different tree.

find src -name "*.[ch]" > files.txt
uncrustify -c my.cfg -F files.txt --prefix out

Process a source tree in‐place.

uncrustify -c my.cfg --no-backup $(find src -name "*.[ch]")


Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable processing of parts of the source file.


Use the issue tracker at <>


Copyright (C) 2006‐2014 Ben Gardner
Copyright (C) 2015, 2016 Guy Maurel


GNU GPL version 2 or later <>

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Written by Ben Gardner

Copied to clipboard