uncrustify1
C, c++, c#, d, java and pawn source code beautifier
Usage
uncrustify [OPTIONS]
[FILES]
Overview
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
Options
Basic Options:
-cCFG-
Use the config file CFG, or defaults if CFG is set to '-'.
If not specified, uncrustify will use$UNCRUSTIFY_CONFIGor$HOME/.uncrustify.cfg.
-fFILE-
Process the single file FILE, sending output to stdout or the file specified with
-o.
-oFILE-
Redirect output to FILE.
Use with-f,--update-config,--update-config-with-doc,--universalindent.
-
--check -
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.
-FFILE-
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.
--prefixPFX-
Prepend PFX to the output filename path.
This cannot be combined with-f,--replace, or--no-backup.
--suffixSFX-
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.
-
--frag -
Assume the input is a code fragment and the first line is properly indented.
-
--replace -
Replace source files (creates a backup).
This cannot be combined with-f,--prefix, or--suffix.
-
--no-backup -
Replace files, no backup. Useful if files are under source control
This cannot be combined with-f,--prefix, or--suffix.
-
--if-changed -
Write to stdout (or create output FILE) only if a change was detected.
-
--mtime -
Preserve mtime on replaced files.
-
-l -
Language override: C, CPP, D, CS, JAVA, PAWN, VALA, OC, OC+
-
-t -
Load a file with types (usually not needed)
-
-q -
Quiet mode - no output on stderr (
-Lwill override)
Config/Help Options:
-
-h -? --help --usage -
Print this message and exit
-
--version -
Print the version and exit
-
--count-options -
Print the number of available options and exit
-
--show-config -
Print out option documentation and exit
-
--update-config -
Output a new config file.
-
--update-config-with-doc -
Output a new config file with embedded usage comments.
-
--universalindent -
Output a config file for Universal Indent GUI.
-
--detect -
Detects the config from a source file. Use with '-f FILE'. Detection is currently fairly limited.
-
--tracking space:FILE -
Prepare space tracking information for debugging.
-
--tracking nl:FILE -
Prepare newline tracking information for debugging.
-
--tracking start:FILE -
Prepare start of statement tracking information for debugging. Cannot be used with the -o option.
Debug Options:
-
-p FILE -
Dump debug info into FILE, or to stdout if FILE is set to '-'.
Must be used in combination with '-f FILE'.
-
-ds FILE --dump-steps FILE -
Dump parsing info at various moments of the formatting process.
This creates a series of files named 'FILE_nnn.log', each
corresponding to a formatting step in uncrustify.
The file 'FILE_000.log' lists the formatting options in use.
Must be used in combination with '-f FILE'.
-LSEV-
Set the log severity (see log_levels.h)
-
-s -
Show the log severity in the logs
--decodeFLAG-
Print FLAG as text and exit
Examples
- 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]")
Notes
Use comments containing ' *INDENT-OFF*' and ' *INDENT-ON*' to disable processing of parts of the source file.
Releases
9 releases since Debian 5.0 (Lenny); the text changed 7 times.
--check since Debian 9 (Stretch);
--count-options since Debian 11 (Bullseye);
--detect since Debian 6.0 (Squeeze);
--dump-steps since Debian 13 (Trixie);
--frag since Debian 7 (Wheezy);
--if-changed since Arch Linux 2026-11-01;
--tracking since Arch Linux 2026-11-01;
-ds since Debian 13 (Trixie);
-p since Debian 11 (Bullseye).