The darktable-cli binary starts the command line interface variant of darktable which allows images to be exported.

This variant does not open any display – it works in pure console mode without launching a GUI. This mode is particularly useful for servers running background jobs.

darktable-cli can be called with the following command line parameters:

darktable-cli [<input file or folder>]
              [<xmp file>]
              <output file or folder>
              [--width <max width>]
              [--height <max height>]
              [--hq <0|1|true|false>]
              [--upscale <0|1|true|false>]
              [--style <style name>]
              [--apply-custom-presets <0|1|false|true>]
              [--out-ext <extension>]
              [--import <file or dir>]
              [--icc-type <type>]
              [--icc-file <file>]
              [--icc-intent <intent>]
              [--help [option]]
              [--core <darktable options>]

The user must supply an input filename and an output filename. All other parameters are optional.

<input file or folder>
The name of the input file or folder (containing images) to be exported. If you wish to process multiple images or multiple folders use the --import option instead.
<xmp file>
The optional name of an XMP sidecar file containing the history stack data to be applied during export. If this option is not provided darktable will search for an XMP file that belongs to the given input file(s).
<output file or folder>
The name of the output file or destination folder. The export file format is derived from the file extension or from the --out-ext option. You can also use a number of variables in the output filename. For obvious reasons this parameter is mandatory if you use the program on an image folder containing multiple images. If you specify output folder it is recommended that you also specify the file format with --out-ext.
--width <max width>
Limit the width of the exported image to the given number of pixels.
--height <max height>
Limit the height of the exported image to the given number of pixels.
--hq <0|1|true|false>
Define whether to use high quality resampling during export (see the export module reference for more details). Defaults to true.
--upscale <0|1|true|false>
Define whether allow upscaling during export. Defaults to false.
--style <style name>
Specify the name of a style to be applied during export. If a style is specified, the path to the darktable configuration directory must also be specified (i.e. --core --configdir ~/.config/darktable). By default no style is applied.
The specified style overwrites the history stack instead of being appended to it.
--apply-custom-presets <0|1|false|true>
Whether to load data.db which contains presets and styles. Disabling this option allows you to run multiple instances of darktable-cli at the cost of being unable to use the --style option. Defaults to true.
--out-ext <extension>
Set the export file format to use derived from the extension (jpg, tif, jxl). If specified takes precedence over <output file>. By default this is extracted from <output file>. Defaults to jpg if <output folder> is specified. Note: the extension used in the export filename is predetermined by the export format and not adjustable.
--import <file or dir>
Specify input file or folder, can be used multiple times. This option cannot be combined with <input file or folder>.
--icc-type <type>
Specify the ICC profile type, which is the same as specifying the “output profile” in the output color profile module. Defaults to “image specified”. Use --help icc-type to obtain a list of the supported types. See the output color profile module reference for a more detailed description of the available options.
--icc-file <file>
Specify the ICC profile filename. Defaults to an empty filename.
--icc-intent <intent>
Specify the rendering intent. Defaults to “image specified”. Use --help icc-intent to obtain a list of the supported intents. See rendering intent for a more detailed description of the available options.
Enables verbose output.
--help [option]
Prints usage and exits. If option is specified, additionally prints usage for the given option.
--core <darktable options>
All command line parameters following --core are passed to the darktable core and handled as standard parameters. See the darktable binary section for a detailed description.

🔗export options

Export options for darktable are defined as configuration items, set from within the export module. There are two ways to alter this configuration when using darktable-cli, as described below.

🔗use the export module

The darktable-cli command will use the last format configuration used in the export module, when run in interactive (gui) mode. You may therefore manually set your desired format options in the darktable gui and then run darktable-cli to export your files.

🔗pass options on the command-line

You can set any export format configuration option using the following syntax:

    --core --conf plugins/imageio/format/<FORMAT>/<OPTION>=<VALUE>

where <FORMAT> is the name of the desired output format and <OPTION> is any configuration option for that format.

An option set in this way will not be permanently stored but will be used just for this run of darktable-cli.

The following sections describe the configuration options/values that are available for each export format:


The compression quality (5 - 100)

🔗j2k (jpg2000)

The format of the output
  • 0: J2K
  • 1: jp2
The compression quality (5 - 100)
The DCP mode
  • 0: Cinema2K, 24 FPS
  • 1: Cinema2K, 48 FPS
  • 2: Cinema4K, 24 FPS

🔗exr (OpenEXR)

The bit depth (16 or 32)
The compression type
  • 0: uncompressed
  • 1: RLE
  • 2: ZIPS
  • 3: ZIP
  • 4: PIZ
  • 5: PXR24
  • 6: B44
  • 7: DWAA
  • 8: DWAB


The title of the pdf (any character)
The size of the pdf (a4, a3, letter, legal)
the paper orientation of the pdf
  • 0: portrait
  • 1: landscape
The empty space around the pdf; format: size (a number) + unit; examples: 10 mm, 1 inch
The resolution in dots per inch inside the pdf (1 - 5000)
Whether to rotate the pdf (0 or 1)
Whether to embed an icc profile (0 or 1)
The bit depth (8 or 16)
Whether to compress the pdf (0 or 1)
The mode to put the images in the pdf
  • 0: normal: just put the images into the pdf
  • 1: draft: images are replaced with boxes
  • 2: debug: only show the outlines and bounding boxen


No options provided.


The bit depth (8 or 16)
The compression level (0 - 9)


No options provided.


The bit depth (8, 16, 32)
The compression type
  • 0: uncompressed
  • 1: deflate
  • 2: deflate with predictor
The compression level (0 - 9)
B&W or color image
  • 0: write rgb colors
  • 1: write grayscale


The compression type
  • 0: lossy
  • 1: lossless
the compression quality (5 - 100)
The preferred way to manage the compression
  • 0: default
  • 1: picture: digital picture, like portrait, inner shot
  • 2: photo: outdoor photograph, with natural lighting
  • 3: graphic: discrete tone image (graph, map-tile etc)


No options provided.


The bit depth (8, 16, 32)


The bit depth (8, 10, 12, 16, 32)
Boolean whether the (16 bit) pixel type is unsigned integer or floating point
  • 0: unsigned integer
  • 1: floating point
Integer (4-100): the quality of the image, roughly corresponding to JPEG quality (100 is lossless)
Boolean whether to encode using the original color profile or the internal XYB one
  • 0: internal
  • 1: original
Integer between 1-9. Effort with which to encode output; higher is slower (default is 7)
Integer between 0-4. Higher value favors decoding speed vs quality (default is 0)