Gimp
gimp.org Windows, Mac OS, LinuxA 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.
- Homepage: gimp.org
- GitHub: github.com/GNOME/gimp
- Web info: web-check.xyz/results/gimp.org
Gimp Source Code
Author
Description
Read-only mirror of https://gitlab.gnome.org/GNOME/gimp
Homepage
https://gitlab.gnome.org/GNOME/gimpLicense
NOASSERTION
Created
03 Jun 12
Last Updated
30 Nov 24
Latest version
soc-2012-unified-transform-before-gsoc
Primary Language
C
Size
740,132 KB
Stars
4,985
Forks
686
Watchers
4,985
Language Usage
Star History
Top Contributors
- @mitchfoo (13789)
- @ell-gh (1905)
- @cmyk-student (615)
- @muks (599)
- @yosh (530)
- @filmsi (448)
- @yurchor (439)
- @piotrdrag (413)
- @Wormnest (400)
- @prokoudine (378)
- @hodefoting (349)
- @alexiade (327)
- @brunvonlope (311)
- @haaninjo (290)
- @drawoc (247)
- @jordimas (231)
- @bootchk (205)
- @Rodhos (196)
- @tml1024 (195)
- @rentaclaus (190)
- @simon-budig (185)
- @EkaterinePapava (160)
- @nielsdg (157)
- @MichaelMure (149)
- @lumingzh (138)
- @hugok79 (121)
- @sveinki (117)
- @dmtrs32 (104)
- @nphilipp (100)
- @Alan01 (88)
Recent Commits
- Alx Sa (08 Nov 24)
pdb, operations, tool: Replace GimpContext with GeglColor... in gimp:offset filter. Since gimp:offset is now an NDE filter, always loading the background color from context causes the color to change each time the filter is redrawn. This is inconsistent behavior. This patch replaces the GimpContext parameter with GeglColor, and updates gimp_drawable_offset and related functions to set the color directly. The libgimp version loads the background color from context and passes it on since the API is now frozen.
- Alx Sa (29 Nov 24)
app/core: Fix importing LAB colors in ASE palettes Resolves #12478 There was existing code to scale the Lightness value of LAB colors by 100 to match the 0.0 - 100.0 range used in babl. However, it was not actually running because the `color_space` value was not being properly cleaned before the comparison.
- Cheng-Chia Tseng (27 Nov 24)
Update Chinese (Taiwan) translation
- Alx Sa (26 Nov 24)
app/xcf: Don't override channel opacity on XCF load When loading channels, the alpha value is stored separately from the RGB value as "opacity". After the switch to GeglColor, we were overriding the opacity values by always using "R'G'B" format, so the loaded opacity was always reset to 100%. This patch pulls the opacity value before setting the color, then restores the opacity afterwards.
- Alx Sa (26 Nov 24)
libgimpwidgets: Ellipsize GimpColorSelect color profile labels Similar to 42300d9d, we want to prevent overly long color profile labels from stretching out dialogues with GimpColorSelect too far. This patch adds gtk_label_set_ellipsize () to both the color profile and simulation profile labels, and adds them to a grid instead of letting them free-flow.
- Bruno (24 Nov 24)
build/linux: GTK_THEME code on AppImage is uneeded Assuming that this var is needed seemed to be a error on my side. GIMP can use the system theme out of the box in to my tests on Manjaro and Ubuntu.
- Bruno (24 Nov 24)
build/linux: Drop LIBGL_DRIVERS_PATH for upcoming unstable AppImage mesa 24.2, available on Debian testing, don't read this var anymore.
- Bruno (23 Nov 24)
build/linux: Do not bundle graphviz nor video drivers in stable AppImage They are not needed since the "Debug" menu is hidden.
- Bruno (23 Nov 24)
build/linux: Complete GJS bundling in AppImage
- Bruno (23 Nov 24)
build/linux: Move to edge appimagetool for static AppImage squashing The latest appimagetool inserts a runtime with static libfuse in the .appimage. It also makes the .appimage run way faster and slightly better compressed. Thanks for helping me with this, @samueru
- Bruno (15 Oct 24)
build/linux: Set LD interpreter but unset LD_LIBRARY_PATH on AppImage This avoids calling host libs, fixing the last pendency on !1440 desc. In other words, the AppImage now can be run, in thesis, in any distro. Thanks for helping me with this, @samueru
- Jehan (26 Nov 24)
Issue #12469: Setting language to Chinese (zh_CN) in the preferences makes GIMP crash. Make sure we always use the UTF-8 encoding, whichever the locale language.
- Rūdolfs Mazurs (26 Nov 24)
Update Latvian translation
- Alx Sa (26 Nov 24)
plug-ins: Read TIFF resolution correctly Resolves #12468 In a2458f15, we converted xres and yres to gdouble since gimp_image_get_resolution () requires doubles as arguments. However, TIFFGetField () expects a float, and returns incorrect values if a double is used as a parameter. This patch converts xres and yres back to gfloat, and makes new default_xres and default_yres variables as gdoubles to use with gimp_image_get_resolution ().
- Alx Sa (25 Nov 24)
themes: Define GimpSpinScale slider padding values We did not explicitly define the padding and margins for the slider text and "progress" areas, which allowed for system theme leaks. This patch defines these values and makes the sliders visually closer to 2.10's style.
- Rūdolfs Mazurs (25 Nov 24)
Update Latvian translation
- Rūdolfs Mazurs (25 Nov 24)
Update Latvian translation
- Bruno (23 Nov 24)
build/windows: Complete de3cf104 (regarding correct pyhton .exe) I forgot to set rules to cleaning a previous Inno install. And they need to be set since the previous .exe are from python3.11, not 3.12.
- Alx Sa (20 Nov 24)
dialogs: Restore focus to Layer Name in Layer dialogue In 2.10, the "Layer Name" field in the Layer dialogue was auto-focused (perhaps because it was the first field in the dialogue). This patch restores this behavior so users can type the name and press Enter/Return to continue their new layer workflow.
- Rupert (19 Nov 24)
plug-ins: avoid log-spamming by tiff plug-in * last log I checked had over 30.000 tiff msgs * limit tiff_io_warning() and tiff_io_error() to a max of 3 msgs
- Rupert (18 Nov 24)
plug-ins: avoid log-spamming by sgi plug-in last log I checked had ~12.000 'sgiGetRow...' msgs
- lloyd konneker (13 Nov 24)
Fix #12344 PDF export crash w stack smash on flatpak Fix overflowing RGB array on the stack. Revise comments to say painting opaque.
- Jehan (24 Nov 24)
Issue #10874: crash when freeing uninitialized string. Make sure the memory is 0-initialized because mapping->action_desc is not necessarily initialized to an actual action.
- Michael Natterer (24 Nov 24)
app: make sure pattern previews always have non-zero dimensions, even if the pattern has an insane aspect ratio.
- Jehan (03 Nov 24)
Issue #11822: fix double-free in edge cases of broken XCF. A patch was originally contributed by Andrzej Hunt in #11822 (cf. 0002-xcf-fix-channel-s-reference-counts.patch in the report). The diagnostic of the double PROP_SELECTION issue is right, but not the fix which was over-reffing, hence leaking channels and buffers, in the normal cases, just to avoid double-free in broken edge cases. The other issue is not possible though (unreffing the image's selection when encountering an error in xcf_load_channel()) because we explicitly check it it's the image mask AFAICS. I added a second test which was not double-freeing yet which deserves a bit of stderr messaging: when 2 different channels have PROP_SELECTION set. Relevant text from the commit message originally contributed by Andrzej Hunt is the following (diagnostic and ASAN output still of interest): ---------------- xcf_load_channel creates a new channel using gimp_channel_new. This channel has a floating reference (because GimpChannel is a subclass of GimpItem, and gimp_item_init uses g_object_force_floating()). Next, three different scenarios can occur: - xcf_load_channel_props does nothing, and we either return channel, OR in the error case we g_object_unref (channel) which frees channel. The returned channel is either silently dropped (in the case where it's already been set as the mask), or added to the image using gimp_image_add_channel if not (which sinks the floating reference). - xcf_load_channel_props encounters a single PROP_SELECTION. We create a selection using gimp_selection_new (which again has a floating reference), transfer ownership of the new selection to the image using gimp_image_take_mask(), free the old channel, and finally set channel to point to this new selection. Back in xcf_load_channel, IF we hit the error case, we call g_object_unref (channel), which frees the new selection - but we're still using it as the image's mask, meaning we could eventually hit a use-after-free whenever someone reads the mask. - xcf_load_channel_props encounters 2 PROP_SELECTION's. After the first PROP_SELECTION, channel is pointing to the image mask, which has reference count == 1 (as explained above). When we hit the second PROP_SELECTION: we create another new selection, followed by calling gimp_image_take_mask() again. gimp_image_take_mask() call g_object_unref() on the old mask, which frees it - but channel is still pointing to this mask. We then call g_object_unref() on channel, which is effectively a double-free. We fix this by making sure to always ref_sink whatever object is put into channel. gimp_image_take_mask also calls ref_sink, which means we'll now bump the refcount up to 2 when the channel is being used as the image's mask (and drop back to 1 if the mask is replaced, and down to 0 when channel is unref'd). See also ASAN output below from the 2x PROP_SELECTION scenario: ==6381==ERROR: AddressSanitizer: heap-use-after-free on address 0x6150000047d0 at pc 0x7fb5531ef31b bp 0x7ffe81e86cb0 sp 0x7ffe81e86ca8 READ of size 8 at 0x6150000047d0 thread T0 #0 0x7fb5531ef31a in g_type_check_instance_cast /home/ahunt/git/glib/_build/../gobject/gtype.c:4117:26 #1 0xb2346b in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1742:41 #2 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9 #3 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17 #4 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19 #5 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17 #6 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15 #7 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6 #8 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9 #9 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10 #10 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349) #11 0x4e0829 in _start /home/abuild/rpmbuild/BUILD/glibc-2.26/csu/../sysdeps/x86_64/start.S:120 0x6150000047d0 is located 336 bytes inside of 504-byte region [0x615000004680,0x615000004878) freed by thread T0 here: #0 0x5e8612 in free /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:127:3 #1 0x7fb552d9ce08 in g_free /home/ahunt/git/glib/_build/../glib/gmem.c:199:3 #2 0x7fb552dc7a6b in g_slice_free1 /home/ahunt/git/glib/_build/../glib/gslice.c:1183:7 #3 0x7fb5531e7b04 in g_type_free_instance /home/ahunt/git/glib/_build/../gobject/gtype.c:2008:5 #4 0x7fb5531bfe3a in g_object_unref /home/ahunt/git/glib/_build/../gobject/gobject.c:3604:11 #5 0xd4d4d4 in gimp_image_take_mask /home/ahunt/git/gimp/app/core/gimpimage.c:3267:5 #6 0xb23438 in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1739:13 #7 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9 #8 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17 #9 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19 #10 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17 #11 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15 #12 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6 #13 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9 #14 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10 #15 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349) previously allocated by thread T0 here: #0 0x5e887d in malloc /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/asan/asan_malloc_linux.cpp:145:3 #1 0x7fb552d9ccf2 in g_malloc /home/ahunt/git/glib/_build/../glib/gmem.c:106:13 #2 0x7fb552dc72e0 in g_slice_alloc /home/ahunt/git/glib/_build/../glib/gslice.c:1072:11 #3 0x7fb552dc78ae in g_slice_alloc0 /home/ahunt/git/glib/_build/../glib/gslice.c:1098:18 #4 0x7fb5531e6e0a in g_type_create_instance /home/ahunt/git/glib/_build/../gobject/gtype.c:1911:17 #5 0x7fb5531c215e in g_object_new_internal /home/ahunt/git/glib/_build/../gobject/gobject.c:1945:24 #6 0x7fb5531c1d1f in g_object_new_valist /home/ahunt/git/glib/_build/../gobject/gobject.c:2288:16 #7 0x7fb5531c0e8b in g_object_new /home/ahunt/git/glib/_build/../gobject/gobject.c:1788:12 #8 0xdb7260 in gimp_item_new /home/ahunt/git/gimp/app/core/gimpitem.c:722:10 #9 0xce1668 in gimp_drawable_new /home/ahunt/git/gimp/app/core/gimpdrawable.c:1067:14 #10 0xe283e9 in gimp_selection_new /home/ahunt/git/gimp/app/core/gimpselection.c:626:13 #11 0xb2342a in xcf_load_channel_props /home/ahunt/git/gimp/app/xcf/xcf-load.c:1735:15 #12 0xb1a3cc in xcf_load_channel /home/ahunt/git/gimp/app/xcf/xcf-load.c:2219:9 #13 0xb147eb in xcf_load_image /home/ahunt/git/gimp/app/xcf/xcf-load.c:653:17 #14 0xb121bb in xcf_load_stream /home/ahunt/git/gimp/app/xcf/xcf.c:305:19 #15 0x619ead in LLVMFuzzerTestOneInput /home/ahunt/git/gimp/app/fuzzers/xcf_fuzzer.c:50:17 #16 0x51d414 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:599:15 #17 0x507092 in fuzzer::RunOneTest(fuzzer::Fuzzer*, char const*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:323:6 #18 0x50d400 in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerDriver.cpp:856:9 #19 0x537452 in main /home/abuild/rpmbuild/BUILD/llvm-12.0.0.src/build/../projects/compiler-rt/lib/fuzzer/FuzzerMain.cpp:20:10 #20 0x7fb551e7c349 in __libc_start_main (/lib64/libc.so.6+0x24349) SUMMARY: AddressSanitizer: heap-use-after-free /home/ahunt/git/glib/_build/../gobject/gtype.c:4117:26 in g_type_check_instance_cast Shadow bytes around the buggy address: 0x0c2a7fff88a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c2a7fff88b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa 0x0c2a7fff88c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2a7fff88d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2a7fff88e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd =>0x0c2a7fff88f0: fd fd fd fd fd fd fd fd fd fd[fd]fd fd fd fd fd 0x0c2a7fff8900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fa 0x0c2a7fff8910: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c2a7fff8920: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2a7fff8930: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd 0x0c2a7fff8940: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb Shadow gap: cc ==6381==ABORTING ( crash-c35bcae86d35ce7d0cd8ffcb41a470f37354e018 )
- Bruno (24 Nov 24)
gitlab-ci: Fix untested commit that broke CI b9f81e1c broke CI because it is a CI-related change but not tested on CI. Despite https://developer.gimp.org/core/maintainer/giving-developer-right/ not making previous CI test mandatory, it is reasonable to do, even the infra being sick. That is not the first time our CI got broken by lack of testing.
- Anders Jonsson (24 Nov 24)
themes: fix System theme color for ink tool nib Like in #11964 for Default theme, the nib handle for the ink tool is invisible on the System theme. Fix this by adjusting the solution in a4f9e7e89a for use with the System theme.
- Jehan (24 Nov 24)
Issue #12433: do not show the unsupported fonts message on startup. It seems any installation will have a lot of them (mostly because of bitmap fonts which are now unsupported by Pango) and the message startles people who believe there is something broken with GIMP. Let's just not show this message on stable release builds, yet still keep it on stable development builds (and all unstable builds, even releases), because it is informative and keep us aware of this limitation (which we hope to someday get rid of, i.e. get back support of bitmap fonts, as well as any font format!).
- Jehan (24 Nov 24)
gitlab-ci: add a more explicit error message when existing at the `git diff` CI test.
- Jehan (24 Nov 24)
pdb: sync enums.pl generated file with source. My commit 0b792c22a4 was a beginner mistake as pdb/enums.pl is a generated file. I also need to fix the source otherwise `git diff` will always differe when generating the file. Our CI in particular verifies that `git diff` is always empty so this was breaking our gimp-debian-x64 CI job.
Gimp Website
Website
GIMP - GNU Image Manipulation Program
GIMP - The GNU Image Manipulation Program: The Free and Open Source Image Editor
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address 151.101.65.91
- Location San Francisco, California, United States of America, NA
- ISP Fastly Inc.
- ASN AS54113
Associated Countries
- US
- FI
Saftey Score
Website marked as safe
100%
Blacklist Check
www.gimp.org was found on 0 blacklists
- ThreatLog
- OpenPhish
- PhishTank
- Phishing.Database
- PhishStats
- URLhaus
- RPiList Not Serious
- AntiSocial Blacklist
- PhishFeed
- NABP Not Recommended Sites
- Spam404
- CRDF
- Artists Against 419
- CERT Polska
- PetScams
- Suspicious Hosting IP
- Phishunt
- CoinBlockerLists
- MetaMask EthPhishing
- EtherScamDB
- EtherAddressLookup
- ViriBack C2 Tracker
- Bambenek Consulting
- Badbitcoin
- SecureReload Phishing List
- Fake Website Buster
- TweetFeed
- CryptoScamDB
- StopGunScams
- ThreatFox
- PhishFort
Website Preview
Gimp Docker
Container Info
Gimp
[GIMP](https://www.gimp.org/) is a free and open-source raster graphics editor used for image manipulation (retouching) and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. It is extensible by means of plugins, and scriptable.
DockerHub Metrics
- Pull Count 8,714
- Stars 4
- Date Created 08 Dec 23
- Last Updated 2 months ago
View on DockerHub
linuxserver/gimpRun Command
docker run -d \ -p 3000:3000/tcp \ -p 3001:3001/tcp \ -e PUID=${PUID} \ -e PGID=${PGID} \ -e TZ=${TZ} \ -v /volume1/docker/gimp/config:/config \ --restart=unless-stopped \ linuxserver/gimp:latest
Compose File
version: 3.8 services: gimp: image: linuxserver/gimp:latest ports: - 3000:3000:tcp - 3001:3001:tcp environment: PUID: 1024 PGID: 100 TZ: Europe/Amsterdam volumes: - /volume1/docker/gimp/config:/config restart: unless-stopped
Environment Variables
- Var Name Default
- PUID 1024
- PGID 100
- TZ Europe/Amsterdam
Port List
- 3000:3000/tcp
- 3001:3001/tcp
Volume Mounting
- /volume1/docker/gimp/config /config
Permissions
- read ✅ Yes
- write ✅ Yes
- admin ✅ Yes
Gimp Reviews
More Image Editors
-
A free, open source, professional vector graphics editor. It is a powerful tool for creating illustrations, icons, logos, diagrams, maps, and web graphics.
-
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 web-based image editor, with a modern UI. Also offers premium/paid features, such as AI-powered generation, touchup and editing
Not Open Source -
A powerful raw photo processing system and editor, for non-destructive editing of raw digital photos
-
A free online image editor, for both raster and vector graphics, with a very wide range of supported formats
Not Open Source -
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 photography workflow application (similar to Adbobe Lightroom) Includes a non-destructive raw developer for raw images and managing digital negatives.
About the Data: Gimp
API
You can access Gimp's data programmatically via our API.
Simply make a GET
request to:
https://api.awesome-privacy.xyz/creativity/image-editors/gimp
The REST API is free, no-auth and CORS-enabled. To learn more, view the Swagger Docs or read the API Usage Guide.
About the Data
Beyond the user-submitted YAML you see above, we also augment each listing with additional data dynamically fetched from several sources. To learn more about where the rest of data included in this page comes from, and how it is computed, see the About the Data section of our About page.
Share Gimp
Help your friends compare Image Editors, and pick privacy-respecting software and services.
Share Gimp and Awesome Privacy with your network!