Scroll to navigation



benchmark_xl - benchmark_xl


benchmark_xl [OPTIONS...]


benchmark_xl v0.9.0 [AVX2,SSE4,SSSE3,Unknown]


File or file pattern matching input files.


Comma separated list of image codec descriptions to benchmark.



Prints size and distortion for each image. Not safe for concurrent benchmark runs.



When print_details is used, print as CSV.


Extra metrics to be computed. Only displayed with --print_details or --print_details_csv. Comma-separated list of NAME:COMMAND pairs; COMMAND is invoked with the original image as the first argument, the decompressed image as a second argument, and the name of the file where to write the metric value (as a single floating point number) as the third argument.



Prints codec-specific stats. Not safe for concurrent benchmark runs.



Prints distance percentiles for the corpus. Not safe for concurrent benchmark runs.



If true, doesn't print error messages on compression or decompression errors. Errors counts are still visible in the 'Errors' column of the result table. Please note that depending depending on the JXL build settings, error messages and asserts from within the codec may be printed irrespective of this flag anyway, use release build to ensure no messages.



Saves the compressed files for each input image and each codec.



Saves the decompressed files as PNG for each input image and each codec.


Extension (starting with dot) to use for saving output images.


defaults to sRGB.


Intended viewing intensity target in nits. Defaults to 255 for SDR images, 4000 for HDR images (when the input image uses PQ or HLG transfer function)


Color encoding hints for the input images to encoder. Comma separated key=value pairs. The key color_space indicates ColorEncoding (see ParseDescription; e.g. RGB_D65_SRG_Rel_709) for input images without color encoding (such as PNM)


If nonzero, store the given bit depth in the JPEG XL file metadata (1-32), instead of using the bit depth from the original input image.


If nonzero, multiplies linear sRGB by this and clamps to 255



Saves the heatmap images.


If greater than zero, use this as the good threshold for creating heatmap images.


If greater than zero, use this as the bad threshold for creating heatmap images.



Creates an html report with original and compressed images.



Base64-encode the images in the HTML report rather than use external file names. May cause very large HTML data size.



Show the compressed image as decompressed to --output_extension.



Add heatmaps to the image comparisons.



Adds formatting around ASCII table to render correctly in Markdown based interfaces



Print extra columns in the table


Url prefix to serve original images from in the html report.


If not empty, save compressed and decompressed images here.


The number of threads for concurrent benchmarking. Defaults to 1 thread per CPU core (if negative).


The number of extra threads per task. Defaults to occupy cores (if negative).


How many times to encode (>1 for more precise measurements). Defaults to 1.


How many times to decode (>1 for more precise measurements). Defaults to 1.


Directory to put samples from input images.


How many sample areas to take.


How big areas to sample from the input.


smallest p norm for pooling butteraugli values



Show activity dots per completed file during benchmark.



If true, doesn't compute distance metrics, only compression and decompression speed and size. Distance numbers shown in the table are invalid.



If true, only decodes, and the input files must be compressed with a compatible format for the given codec(s). Only measures decompression speed and sizes, and can only use a single set of compatible decoders. Distance numbers and compression speeds shown in the table are invalid.


Converts input and output of codec to this file type (default: png).


If not empty, converts input and output of codec to this colorspace.



Whether stdin and stdout of custom codec should be shown.


Multiplier for weighting HF artefacts more than features being smoothed out. 1.0 means no HF asymmetry. 0.3 is a good value to start exploring for asymmetry.


Multiplier for the difference in X channel in Butteraugli.


Bias border pixels during quantization by this ratio.



If true, AC strategy will be used.



Enable quantized progressive mode for AC.



Enable progressive mode for AC.


Enable progressive mode for DC.


Enable(1)/disable(0) noise generation.


Enable(1)/disable(0) dots generation.


Enable(1)/disable(0) patch dictionary.



Print out debug info for tortoise mode AQ loop.


If not empty, saves debug images for each input image and each codec that provides it to this directory.


Custom base quantization tables.


Starting quality for quality-to-target search


Minimum quality for quality-to-target search


Maximum quality for quality-to-target search


Minimum distance for quality-to-target search


Maximum distance for quality-to-target search


Percentage value, if quality-to-target search result relative error is within this, search stops.


If last quality change in quality-to-target search is within this value, search stops.


Slope of first extrapolation step in quality-to-target search.


Maximum search steps in quality-to-target search.


default AVIF chroma subsampling (default: 444).

-h, --help

Prints this help message. All options are shown above.


This manual page was written by Mathieu Malaterre <> for the Debian GNU/Linux system (but may be used by others).

June 2023 benchmark_xl 0.9.0~git20230623.689da0f