brotli(1) -- brotli, unbrotli - compress or decompress files


brotli [OPTION|FILE]...

unbrotli is equivalent to brotli --decompress


brotli is a generic-purpose lossless compression algorithm that compresses data using a combination of a modern variant of the LZ77 algorithm, Huffman coding and 2-nd order context modeling, with a compression ratio comparable to the best currently available general-purpose compression methods. It is similar in speed with deflate but offers more dense compression.

brotli command line syntax similar to gzip (1) and zstd (1). Unlike gzip (1), source files are preserved by default. It is possible to remove them after processing by using the --rm option.

Arguments that look like “--name” or “--name=value” are options. Every option has a short form “-x” or “-x value”. Multiple short form options could be coalesced:

  • --decompress --stdout --suffix=.b” works the same as
  • -d -s -S .b” and
  • -dsS .b

brotli has 3 operation modes:

  • default mode is compression;
  • --decompress option activates decompression mode;
  • --test option switches to integrity test mode; this option is equivalent to “--decompress --stdout” except that the decompressed data is discarded instead of being written to standard output.

Every non-option argument is a file entry. If no files are given or file is “-”, brotli reads from standard input. All arguments after “--” are file entries.

Unless --stdout or --output is specified, files are written to a new file whose name is derived from the source file name:

  • when compressing, a suffix is appended to the source filename to get the target filename
  • when decompressing, a suffix is removed from the source filename to get the target filename

Default suffix is .br, but it could be specified with --suffix option.

Conflicting or duplicate options are not allowed.


  • -#: compression level (0-9); bigger values cause denser, but slower compression
  • -c, --stdout: write on standard output
  • -d, --decompress: decompress mode
  • -f, --force: force output file overwrite
  • -h, --help: display this help and exit
  • -j, --rm: remove source file(s); gzip (1)-like behaviour
  • -k, --keep: keep source file(s); zstd (1)-like behaviour
  • -n, --no-copy-stat: do not copy source file(s) attributes
  • -o FILE, --output=FILE output file; valid only if there is a single input entry
  • -q NUM, --quality=NUM: compression level (0-11); bigger values cause denser, but slower compression
  • -t, --test: test file integrity mode
  • -v, --verbose: increase output verbosity
  • -w NUM, --lgwin=NUM: set LZ77 window size (0, 10-24) (default: 24); window size is (2**NUM - 16); 0 lets compressor decide over the optimal value; bigger windows size improve density; decoder might require up to window size memory to operate
  • -D FILE, --dictionary=FILE: use FILE as raw (LZ77) dictionary; same dictionary MUST be used both for compression and decompression
  • -S SUF, --suffix=SUF: output file suffix (default: .br)
  • -V, --version: display version and exit
  • -Z, --best: use best compression level (default); same as “-q 11


brotli file format is defined in RFC 7932.

brotli is open-sourced under the MIT License.

Mailing list:!forum/brotli


Report bugs at: