DarkTable
darktable.orgWindows, Mac OS, LinuxA photography workflow application (similar to Adbobe Lightroom) Includes a non-destructive raw developer for raw images and managing digital negatives.
- Homepage:darktable.org
- GitHub:github.com/darktable-org/darktable
- Web info:web-check.xyz/check/darktable.org
DarkTable Source Code
Author
Description
darktable is an open source photography workflow application and raw developer
Homepage
https://www.darktable.orgRepository
- LicenseGPL-3.0
- Created21 Mar 12
- Primary languageC
- Size1,361,925 KB
- Stars13,253
- Forks1,464
- Watchers13,253
Top Contributors
@TurboGit (9781)
@hanatos (3946)
@houz (2480)
@LebedevRI (2430)
@jenshannoschwalm (2092)
@hean01 (2030)
@victoryforce (1979)
@upegelow (1937)
@AlicVB (1386)
@ralfbrown (1373)
@dterrahe (1076)
@pmjdebruijn (1047)
@aurelienpierre (926)
@pedrocr (863)
@dtorop (711)
@boucman (701)
@jpellegrini (599)
@phweyland (558)
@MRIG (488)
@kmilos (439)
@johnny-bit (430)
@zisoft (412)
@parafin (380)
@elstoc (367)
@andriiryzhkov (366)
@jcsogo (318)
@Nilvus (307)
@rawfiner (305)
@EdgarLux (295)
@MStraeten (289)
@lebmich (268)
@bieber (266)
@wpferguson (246)
@Arecsu (219)
@edgomez (215)
@kofa73 (214)
@cryptomilk (207)
@levitte (196)
@Mark-64 (191)
@rabauke (181)
@schenlap (169)
@edgardoh (155)
@peterbud (143)
@masterpiga (105)
@flannelhead (105)
@da-phil (105)
@dumbbell (94)
@oliviertoulouse (89)
@piratenpanda (83)
@shinoryo1216 (79)
@prokoudine (76)
@bruceg (67)
@matjazjeran (63)
@HSUfineprint (63)
@christte (63)
@timur-davletshin (61)
@bartokk (58)
@tatica (56)
@moy (55)
@mazhe (53)
@josepvm (49)
@mlq (48)
@matt-maguire (48)
@pryds (46)
@jandren (45)
@bluesceada (44)
@rtmongold (42)
@jcrc (42)
@vertama (41)
@jakubfi (41)
@cytrinox (39)
@dependabot[bot] (39)
@GrahamByrnes (34)
@codingdave (34)
@mpaglia0 (34)
@serkan-maker (33)
@hlecleme (32)
@lhietal (29)
@HansBull (29)
@BathoryPeter (29)
@sbraitbart (28)
@bgodole (26)
@guitorri (25)
@franz (25)
@mepi0011 (25)
@richardwonka (24)
@sgotti (24)
@Solarer (23)
@mmardegan (22)
@esq4 (22)
@paolodepetrillo (21)
@tony2001 (21)
@leclercj (21)
@sams96 (21)
@VictorLamoine (19)
@wgoetz (18)
@oexler (18)
@pestasoft (17)
@cthbleachbit (17)
@MarcusGama (17)
Recent Commits
Victor Forsiuk(07 Oct 26)
Fix broken NULL check
Victor Forsiuk(09 Oct 26)
Ukrainian translation update
Pascal Obry(09 Oct 26)
Merge pull request #22545 from jenshannoschwalm/laplacian_highlights_opencl Fix various OpenCL laplacian hightlight bugs
Hanno Schwalm(09 Oct 26)
Make sure we use only one OpenCL sampler per kernel **rusticl: wrong results when one image is read with two samplers (CLK_ADDRESS_NONE and CLK_ADDRESS_CLAMP_TO_EDGE) in the same kernel** Observed in darktable's `interpolate_and_mask` kernel (data/kernels/basic.cl), PR https://github.com/darktable-org/darktable/pull/22545 Samplers (data/kernels/common.h): ```c constant sampler_t sampleri = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST; constant sampler_t samplerA = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST; ``` Kernel pattern (single-channel float image `input`, all coordinates in range): ```c const float center = fmax(0.0f, read_imagef(input, samplerA, (int2)(j, i)).x); ... const float north = read_imagef(input, sampleri, (int2)(j, i - 1)).x; // same image, other sampler // south / west / east / diagonals likewise ``` - Reading `center` with `samplerA` and the neighbours with `sampleri` gives visible artefacts (inf values in the output). - Reading `center` with `sampleri` gives correct results. - Reading everything with `samplerA` (neighbours are guarded by explicit border checks) also gives correct results. - The same kernel is correct on ROCm. hanno checked: image dimensions match the NDRange, and all read coordinates are in range. Expected: identical results for in-range reads regardless of the address mode. Environment: <rusticl version, Mesa version, GPU, OS>
Hanno Schwalm(09 Oct 26)
Fix two OpenCL laplacian hightlight bugs 1. The initial temp buffer requires full image size 2. Fixed bogus wb and clip parameter 3. Use proper float/float4 data while reading from images 4. Use OpenCL mix() instruction and better maths precision for the box blur. 5. Upscale clipping mask before remosaic 6. visible artifacts on rusticl in highlighted areas required special care!
Jamal(08 Oct 26)
po: update Azerbaijani translation
Pascal Obry(09 Oct 26)
Merge branch 'upstream-flexi-prepare' of https://github.com/masterpiga/darktable
Pascal Obry(08 Oct 26)
src/tests/integration: Update sub-module.
Pascal Obry(08 Oct 26)
Merge pull request #22516 from MaykThewessen/codex/fix-pq-hlg-transfer Fix PQ luminance scaling and HLG display conversion
piratenpanda(08 Oct 26)
spektrafilm: fix GCC 15 -Wstringop-overread in _auto_paper_entry Hoist the loop-invariant target_print check out of the loop. GCC 15 at -O3 inlines _auto_paper_entry() into gui_update(), where the film entry can be NULL, and warns about strcmp on that path despite the guard. Fixes #22538 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01TqtF7u5cHLdfiBm2NNb985
Pascal Obry(08 Oct 26)
Merge pull request #22537 from piratenpanda/spektrafilm_opencl_fixes spektrafilm: opencl fixes
Hanno Schwalm(08 Oct 26)
Report module output OpenCL vs CPU diff statistics Introduce the cli option --opencl-diffstat A complementary debug/analyze option reporting some minimal statistics about OpenCL vs CPU processed output of each module.
Pascal Obry(08 Oct 26)
Merge pull request #22540 from victoryforce/translations-261008 Translations update: en@truecase and Ukrainian
Daniele Pighin(08 Oct 26)
RELEASE_NOTES.md: pre-flexi bugfixes and small UX improvements.
Victor Forsiuk(08 Oct 26)
Ukrainian translation update
piratenpanda(08 Oct 26)
spektrafilm: OpenCL cleanup for wide blurs Two fixes for Gaussian blurs at large sigma, found with --opencl-diffstat (#22533) on a 45 MP export. Evaluate the YVV recursion as an increment, v = w1 + (B*(x - w1) + B2*(w2 - w1) + B3*(w3 - w1)), on both the CPU and the device, using B1 = 1 - B - B2 - B3. In the direct form the DC gain is B / (1 - B1 - B2 - B3), and with B around 2e-6 at sigma 126 the float rounding of the four coefficients swung it with sigma (0.965 at 100, 0.836 at 135, 1.087 at 150). The incremental form has unit gain whatever the coefficients round to, and the large B1/B2 terms no longer cancel every step. Decimate the wide DIR coupler blurs. With the inhibitor spread widened, the correction field is blurred at 50-250 px, where float32 YVV takes in only a few bits of each sample: a one-ulp input difference moves its output by around 1e-3, and the correction enters the log exposure directly, so film and paper contrast turned that into max_abs_diff of 1.3e-2 to 5e-2 between CPU and device. From sigma 16 up the field is now box-averaged down by k = floor(sigma / 8), blurred with the exact kernel at the reduced sigma (at most 48 taps on k^2 fewer pixels) and interpolated back bilinearly, the reduced sigma discounting the variance the box and the interpolation add. The block grid sits on absolute image coordinates so tiles agree. CPU (sf_blur_plane3_wide) and device (spektrafilm_wide_down, gauss_row/ col_4c, spektrafilm_wide_up) run the same operations in the same order, with fma pinned, host-built reciprocals instead of device division, and a CPU loop structure -ffast-math cannot reorder; the CPU path matches a strict transliteration of the kernels bit for bit. Measured with --opencl-diffstat, Portra 400, couplers at maximum: spread before after tail 400 um, weight 1 2.7e-2 1.6e-6 tail 200 um (sigma <= 126) 1.3e-2 1.7e-6 core 60 um at sigma 62 / 99 7.0e-3 / 1.3e-5 / 3.1e-2 3.3e-5 no spread (control) 1.5e-6 1.5e-6 Blurs above SF_GAUSS_EXACT_MAX_SIGMA change slightly, towards the requested Gaussian. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01P44nsSAzW3NY2znvV3yFRf
Victor Forsiuk(08 Oct 26)
en@truecase update
piratenpanda(08 Oct 26)
spektrafilm: finish each pass of a cascaded YVV blur on the device A Gaussian wider than SF_GAUSS_MAX_IIR_SIGMA runs as ceil((sigma/150)^2) Young-van Vliet passes. At diffusion size 4 on a 45 MP export that is about 100 passes per bloom component, all enqueued without a sync, and the runtime submits them as one job. On amdgpu that job outlives the compute ring's lockup timeout: the ring is reset, the context is marked guilty and Rusticl aborts the process. Wait for the device after every pass of a cascade so each submission holds a single row/column pass. Single-pass blurs are unchanged. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01P44nsSAzW3NY2znvV3yFRf
Daniele Pighin(04 Oct 26)
develop: move history compress and truncate out of the history module The history module's compress and truncate buttons ran the whole operation inside libs/history.c. Move it to dt_dev_history_truncate in develop.c, unchanged, so that other darkroom code can compress the history of the image being developed too. The history module now calls it.
Daniele Pighin(04 Oct 26)
masks: cancel the shape being drawn with Escape A shape being added could only be abandoned with a right-click on the canvas. Escape now cancels it too, leaving the module's mask in edit mode, as a right-click does. The check runs ahead of the shortcut lookup, so it wins over a user binding of Escape while a shape is being drawn and leaves that binding alone the rest of the time.
Daniele Pighin(04 Oct 26)
masks: draw shapes on the canvas with a contrasting edge Shape outlines were drawn as a dark line under a lighter one in the guide overlay's color. The dark shade is black at full contrast and vanishes over a dark picture. Draw the line in the overlay color over an edge in white or black, whichever contrasts with that color, so one of the two stays visible whatever lies underneath. A border's dashes are edged one by one, a clone source swaps the two tones so it stays apart from the shape it copies to, and a hovered or selected shape is heavier as well as more opaque. The overlay contrast setting still sets how far the two tones stand apart.
Daniele Pighin(04 Oct 26)
ras2vect: give vectorized path points a nonzero feather An AI object's outline is vectorized into path points with a feather of exactly 0. The feather control scales a path's feather by the ratio of new to old value, and _path_modify_property treats an old value of 0 as "nothing to scale", so such a path could never be feathered at all. Seed the feather with 0.0005, as path.c does for points it creates itself.
Daniele Pighin(04 Oct 26)
develop: do not dereference freed modules in the chroma cache dev->chroma.temperature and dev->chroma.adaptation are raw module pointers, written by temperature.c and channelmixerrgb.c, and only cleared by dt_dev_reset_chroma. That function first calls dt_dev_clear_chroma_troubles, which dereferences both. try_enter resets chroma on every darkroom entry, by which time the modules of the previous image are freed, so opening an image after leaving the darkroom could crash in dt_iop_set_module_trouble_message. dt_iop_cleanup_module now clears a pointer to the module it frees, and dt_dev_clear_chroma_troubles ignores a module that is no longer in dev->iop, since the cache is written from too many places to rely on the first alone.
Mayk Thewessen(07 Oct 26)
tests: Cover HDR input with sRGB gamut clipping The HDR CLI matrix exercised unbound input conversion but not the separate gamut-clipping path. Add independent PQ and HLG cases for Rec2020 and P3, using encoded stimuli with highlights above reference white and near-black samples. Decode the actual PNG samples with the NumPy reference, clip in linear sRGB, and compare the rendered output. Optional OpenCL cases require confirmed GPU execution with no lost events rather than CPU fallback. The HLG clipping checks reject the legacy input decoder. This provides numeric coverage for the HLG behavior behind integration test 0109.
Pascal Obry(07 Oct 26)
Update darktable.pot for translators.
piratenpanda(07 Oct 26)
spektrafilm: default print gamma to 1.0 The reference applies the paper curves at gamma_factor 1.0. Default print_contrast to that, and drop the 1.1 the scene-referred default preset carried, so new images print on the paper as profiled. The params layout is unchanged; existing edits keep their stored value. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01PUcQsmsKTfK2SRKVobpXPs
Pascal Obry(07 Oct 26)
src/tests/integration: Update sub-module.
Mayk Thewessen(06 Oct 26)
color: Simplify HDR transfer branching Skip ICC shaper lookups in the HDR colorin kernels and share the RGB result and return path in the OpenCL transfer helpers. Use explicit branches in the CPU tone-curve helper and clarify the profile switch and multi-line JPEG XL conditions.
Mayk Thewessen(05 Oct 26)
RELEASE_NOTES.md: Document PQ and HLG brightness correction
Mayk Thewessen(05 Oct 26)
color: Fix PQ luminance scaling and HLG display conversion Decode and encode built-in HDR profiles at an RGB boundary with a shared CPU/OpenCL transfer implementation. Use 203 nit reference white for PQ and the RGB-dependent HLG OOTF for the nominal 1000 nit display. Keep the gamut matrix and LittleCMS conversion linear to avoid applying a second transfer. Preserve structured HDR signaling for PNG and JPEG XL imports, and add independent transfer and CLI reference tests. Include the shared header in OpenCL installation and cache invalidation. Fixes #20562
DarkTable Security
DarkTable Website
Website
darktable
darktable is an open source photography workflow application and raw developer
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address65.108.31.59
- Hostnametron.pixls.us
- LocationHelsinki,Uusimaa,Finland,EU
- ISPHetzner Online GmbH
- ASNAS24940
Associated Countries
FR
FI
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
Blacklist Check
www.darktable.org was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
DarkTable Docker
Container Info
Darktable
[darktable](https://www.darktable.org/) is an open source photography workflow application and raw developer. A virtual lighttable and darkroom for photographers. It 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.
View on DockerHub
linuxserver/darktable:latestRun Command
docker run -d \
-p 3000:3000/tcp \
-p 3001:3001/tcp \
-e PUID=${PUID} \
-e PGID=${PGID} \
-e TZ=${TZ} \
-v /srv/lsio/darktable/config:/config \
--restart=unless-stopped \
linuxserver/darktable:latestCompose File
version: 3.8
services:
darktable:
image: "linuxserver/darktable:latest"
ports:
- "3000:3000/tcp"
- "3001:3001/tcp"
environment:
PUID: 1000
PGID: 1000
TZ: Etc/UTC
volumes:
- "/srv/lsio/darktable/config:/config"
restart: unless-stoppedEnvironment Variables
- Var NameDefault
- PUID1000
- PGID1000
- TZEtc/UTC
Port List
- 3000:3000/tcp
- 3001:3001/tcp
Volume Mounting
- Container PathHost Bind
- /config/srv/lsio/darktable/config
DarkTable Reviews
More Image Editors
A free, open source, cross-platform image editor. GIMP is a powerful tool for photo retouching, image composition, and image authoring. It is highly customizable, and supports a wide range of file formats.
A free, open source, professional vector graphics editor. It is a powerful tool for creating illustrations, icons, logos, diagrams, maps, and web graphics.
Digital painting application. Free and open source (backed by KDE), with cross-platform support, Krita is popular among both professional and amateur artists due to it's comprehensive feature set, and intuitive UI
A more advanced take on Microsoft Paint. Suitable for basic image editing, with support for basic layers, unlimited undo/redo, and extendable via plugins
A free online image editor, for both raster and vector graphics, with a very wide range of supported formats
Not Open SourceA free web-based image editor, with a modern UI. Also offers premium/paid features, such as AI-powered generation, touchup and editing
Not Open SourceA powerful raw photo processing system and editor, for non-destructive editing of raw digital photos
About the Data: DarkTable
Change History
- Added
Edit DarkTable Data
You can edit DarkTable's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access DarkTable's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/darktableThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share DarkTable
Help your friends compare Image Editors, and pick privacy-respecting software and services.
Share DarkTable and Awesome Privacy with your network!
