Darktable manages your digital negatives in a database, lets you view them through a zoomable lighttable and enables you to develop raw images and enhance them.

Features

  • Non-destructive editing throughout the complete workflow, your original images are never modified.
  • Take advantage of the real power of raw: All darktable core functions operate on 4x32-bit floating point pixel buffers, enabling SSE instructions for speedups.
  • GPU accelerated image processing: many image opertions are lightning fast thanks to OpenCL support (runtime detection and enabling).
  • Professional color management: darktable is fully color managed, supporting automatic display profile detection on most systems, including built-in ICC profile support for sRGB, Adobe RGB, XYZ and linear RGB color spaces.
  • Cross platform: darktable runs on Linux, macOS / macports, BSD, Windows and Solaris 11 / GNOME.
  • Filtering and sorting: search your image collections by tags, image rating (stars), color labels and many more, use flexible database queries on all metadata of your images.
  • Image formats: darktable can import a variety of standard, raw and high dynamic range image formats (e.g. JPEG, CR2, NEF, HDR, PFM, RAF ... ).
  • Zero-latency, zoomable user interface: through multi-level software caches darktable provides a fluid experience.
  • Tethered shooting: support for instrumentation of your camera with live view for some camera brands.
  • Speaks your language: darktable currently comes with 21 translations: Albanian, Catalan, Czech, Danish, Dutch, French, German, Greek, Hebrew, Hungarian, Italian, Japanese, Polish, Portuguese (Brazilian and Portuguese), Russian, Slovak, Slovenian, Spanish, Swedish, Ukrainian.
  • Powerful export system supports G+ and Facebook webalbums, flickr upload, disk storage, 1:1 copy, email attachments and can generate a simple html-based web gallery. darktable allows you to export to low dynamic range (JPEG, PNG, TIFF), 16-bit (PPM, TIFF), or linear high dynamic range (PFM, EXR) images.
  • Never lose your image development settings darktable uses both XMP sidecar files as well as its fast database for saving metadata and processing settings. All Exif data is read and written using libexiv2.
  • Automate repetitive tasks: Many aspects of darktable can be scripted in Lua.

Modules

Darktable contains several image operation modules. Many modules support powerful blending operators offering blend functionality that works on the incoming image information and the output of the current module or be used with drawn masks.

Basic image operations:

  • Contrast, brightness, saturation: Quickly tune your image using this simple module.
  • Shadows and highlights: Improve images by lightening shadows and darkening highlights. Read Ulrich's blog post on this.
  • Crop and rotate: This module is used to crop, rotate and correct the perspective of your image. It also includes many helpful guidelines that assist you using the tools (e.g. rule of thirds or golden ratio).
  • Base curve: darktable comes with general enhanced basecurve presets for several models that are automatically applied to raw images for better colors and contrast.
  • Exposure controls: Tweak the image exposure either by using the sliders in the module or dragging the histogram around.
  • Demosaic: You have the choice between several demosaicing methods when editing raw files.
  • Highlight reconstruction: This module tries to reconstruct color information that is usually clipped due to information not being complete in all channels.
  • White balance: A module offering three ways to set the white balance. You can set tint and temperature or you define the value of each channel. The module offers predefined white balance settings as well. Or just pick a neutral region in the image to balance for that.
  • Invert: A module inverting colors based on the color of film material.

Tone image operations:

  • Fill light: This module allows the local modification of the exposure based on pixel lightness.
  • Levels: This module offers the well-known levels adjustment tools to set black, grey and white points.
  • Tone curve: This module is a classical tool in digital photography. You can change the lightness by dragging the line up or down. darktable lets you separately control the L, a and b channel. Read in Ulrich's blog post how to make use of this feature.
  • Zone system: This module changes the lightness of your image. It is based on the Ansel Adams system. It allows to modify the lightness of a zone taking into account the effect on the adjacent zones. It divides the lightness in a user-defined number of zones.
  • Local contrast: This module can be used to boost details in the image.
  • Two different tone mapping modules: These modules allow to recreate some contrast for HDR images.

Color image operations:

  • Velvia: The velvia module enhances the saturation in the image; it increases saturation on lower saturated pixels more than on high saturated pixels.
  • Channel mixer: This module is a powerful tool to manage channels. As entry, it manipulates red, green and blue channels. As output, it uses red, green, blue or grey or hue, saturation, lightness.
  • Color contrast
  • Color correction: This module can be used to modify the global saturation or to give a tint. Read Johannes' blog post.
  • Monochrome: This module is a quick way to convert an image to black and white. You can simulate a color filter in order to modify your conversion. The filter can be changed in size and color center.
  • Color zones: This module allows to selectively modify the colors in your image. It is highly versatile and allows every transformation possible in the LCh colorspace.
  • Color balance: Use lift/gamma/gain to change highlights, midtones and shadows.
  • Vibrance: For a detailed description read Henrik's blog post.
  • Color look up table: Apply styles or film emulations. You can also easily edit the changes done. For more information you can read this blog post
  • Input/output/display color profile management
  • A useful feature that displays pixels outside the dynamic range.

Correction modules:

  • Dithering: This helps with banding in smooth gradients in the final image.
  • Sharpen: This is a standard UnSharp Mask tool for sharpening the details of an image.
  • Equalizer: This versatile module can be used to achieve a variety of effects, such as bloom, denoising, and local contrast enhancement. It works in the wavelet domain, and parameters can be tuned for each frequency band separately.
  • Denoise (non-local means): Denoising with separated color / brightness smoothing.
  • Defringe: Remove color fringes on high contrast edges.
  • Haze removal: This module allows to remove the low contrast and color tint coming from haze and air pollution.
  • Denoise (bilateral filter): Another denoising module.
  • Liquify: Push image parts around, grow them, shrink them. More information can be found in this blog post
  • Perspective correction: A great module to automatically un-distort shots with straight lines. See our blog post for an introduction and examples.
  • Lens correction: lens defect correction using lensfun.
  • Spot removal: Spot removal allows you to correct a zone in your image by using another zone as model.
  • Profiled denoise: By measuring the typical noise of cameras at the different ISO levels darktable is able to remove a lot of it. Read this blog post for more information.
  • Raw denoise: Raw denoise allows you to perfom denoising on pre-demosaic data. It is ported from dcraw.
  • Hot pixels: This module allows you to visualize and correct stuck and hot pixels.
  • Chromatic aberrations: This module automatically detects and corrects chromatic aberrations.

Effects/artistic image postprocessing:

  • Watermark: The watermark module provides a way to render a vector-based overlay onto your image. Watermarks are standard SVG documents and can be designed using Inkscape. The SVG processor of darktable also substitutes strings within the SVG document which gives the opportunity to include image-dependent information in the watermark such as aperture, exposure time and other metadata.
  • Framing: This module allows you to add an artistic frame around an image.
  • Split toning: Original split toning method creates a two color linear toning effect where the shadows and highlights are represented by two different colors. darktable split toning module is more complex and offers more parameters to tweak the result.
  • Vignetting: This module is an artistic feature which creates vignetting (modification of the brightness/saturation at the borders).
  • Soften: This module is an artistic feature that creates the Orton effect also commonly known as softening the image. Michael Orton achieved such result on slide film by using 2 exposures of the same scene: one well exposed and one overexposed; then he used a technique to blend those into a final image where the overexposed image was blurred.
  • Grain: This module is an artistic feature which simulates the grain of a film.
  • Highpass: This module acts as highpass filter.
  • Lowpass: This module acts as lowpass filter. One use case is described in Ulrich's blog post.
  • Lowlight vision: Low light module allows to simulate human lowlight vision, thus providing the ability to make lowlight pictures look closer to reality. It can also be used to perform a day to night conversion.
  • Bloom: This module boost highlights and softly blooms them over the image.
  • Color mapping: Transfer colors from one image to another.
  • Colorize
  • Graduated density: This module aims at simulating a neutral density filter, in order to correct exposure and color in a progressive manner.

What's New

The Big Ones

The following is a summary of the main features added to darktable 4.8. Please see the user manual for more details of the individual changes (where available).

  • Introduced the color equalizer module to control hue/lightness/saturation based on colors. This is a (partial) scene-referred replacement for the legacy color zones module.
  • Two new modules have been introduced to support image composition.
  • Enlarge Canvas: As the name implies, this module can be used to add areas on the left, right, top or bottom of the image. The new area can be assigned a different color to help masking if necessary. The new areas can the be filled with the Retouch module by copying some other part of the image, using Liquify if the area is small or the new module overlay.
  • Overlay: This module can be used to add new content on the image by overlaying pixels from the current image or another image. The overlay content is defined by a drag-and-drop from the filmstrip to the Overlay module. This new content can be scaled, rotated and shifted horizontally or vertically. Using a mask, it can be used to fill an area created by the Enlarge Canvas or to add some new part into the image using masking. A common example is to overlay multiply pictures of a firework to create a bigger one.
  • Implemented a toggle switch for the darkroom mode, forcing the pixel-pipe processing to use the whole image data instead of just the area displayed. This allows the user to inspect processed data without errors introduced via internal scaling, and equals what we get by exporting in "high quality resampling" mode.

Performance Improvements

  • Rewrote the clustering code in map view for dramatically faster performance on large collections (mapping should now be usable with more than one million geotagged images selected).

Other Changes

  • Changed the sort order of tags to a natural and case-insensitive order.
  • Added Apple Keychain password storage backend for macOS devices.
  • Collect module sorting has been integrated into the module's header instead of a preference. All collections can now be sorted easily by a single click on the sort button.
  • Removed "unrestricted" mode from darktable's preferences resources for safety. This setting has been proved to be unsafe in many cases. It can still be enabled via the resource file if needed.
  • Added buttons next to the snapshots to allow restoring it as the new history. Also, the snapshots are now supporting drawn masks. It is possible to visualize the difference between the main darkroom view and a snapshot with different masking for example.
  • Using Right-Click on color label icons (bottom toolbar of lighttable) it is possible to add a description to color labels. This is an handy way of remembering the color label usage in the workflow.
  • Removed the AI options in color calibration module because of mediocre quality.
  • It is now possible to import images in-place in a GVfs mount on GNU/Linux.
  • Added a dashed outline of the currently selected area in the print view.
  • Added a few more EXIF fields to the image information module: White balance, exposure program, flash and metering mode. These get filled automatically for new imports. For existing photos, please perform a "refresh EXIF" on the selected images.
  • Added Windows credential manager password storage backend.
  • Added mask blending to the highlights reconstruction module. The generated raster mask holds the amount of reconstructed data and can be used with all algorithms.
  • Color picker positions are defined by image coordinates instead of output. They will stay at the same location, whatever distorting modules are used.
  • The history autosaving might be disabled because of slow drives, this is now done per image instead of globally.
  • Added support for DNG files requiring the CameraCalibration tags for correct white balancing. (Some google pixel cameras for example). Requires re-reading exif metadata.
  • Improved efficiency of the quick access panel by allowing modules to be reset and presets to be applied without opening the full module.
  • Added more controls by default to further reduce the need to leave the panel while editing.
  • Added more collection types and filters for flash, white balance, exposure program, metering mode and image grouping.
  • Removed the old image grouping collection type and filter, which gave confusing results.
  • Added support for CMYK profiled histogram.
  • The map view can now be scrolled with the arrow keys (left/right/up/down) in small steps and in combination with Ctrl in bigger steps.

Bug Fixes

  • Fixed copying of multiple instances to ensure the proper order is applied when pasting to a new image.
  • Fixed raw chromatic aberration on Clang based systems.
  • Fixed backthumb crawler for deleted history. We make sure that the crawler is aware of a deleted history and so will regenerate the thumbs as expected.
  • Fixed drawn masks visualizing in darkroom after pixelpipe module have changed. The drawn masks will now be properly adjusted if there is new distortion on the pipe, for example. This was not the case until one was editing the mask.
  • Fixed memleak while importing avif images.
  • Fixed mask blending for sraw images while in IOP_CS_RAW colorspace.
  • Fixed OpenCL device locking for modules calling dt_dev_pixelpipe_process().
  • Fixed the UI becoming unresponsive due to very large history.
  • Fixed UCS colorspace maths, avoiding div-by-zero and out-of-gamut errors.
  • Fixed a number of issues with guided filter blending and internal mask distortions.
  • Fixed some issues related to cropping module and output/export dimensions.
  • Fixed export processing when high quality is disabled and upscale is set.
  • Fixed camera mounting when GPhoto2 internally reports a single attached camera multiple times.
  • Fixed a issue preventing export to recent Piwigo's version.
  • Fixed many stability issues for better overall robustness.

Lua

API Version

  • API version is now 9.3.0

Bug Fixes

Add action support for Lua

Other Lua changes

  • Upgraded internal Lua to 5.4.6
  • Added duplicate_image_with_history function to darktable.database
  • button widget - added halign member to horizontally position the label
  • button widget - added image member to use an image as the button label
  • button widget - added image_align to horizontally position the image
  • box widget - added expand member to control cells being expanded to fill the width of the box
  • box widget - added fill member to control if the widgets fill the cell
  • box widget - added padding member to control padding size of the cells
  • added active_preset member to darktable.gui.libs to get the lib's active preset name