It has certainly been a long time coming and a lot of hard work, but Krita 5 is here at last! I can say with a measure of pride (and a whole helping of relief for the development team) that 5.0 is up there among the largest and most significant updates that Krita has ever seen, affecting and improving almost every aspect of the program in a variety of ways, big and small. And of course, there’s a ton of cool new features that we can’t wait for our community of artists to start working with, but before we dig into the details…
We have fully rewritten Krita’s handling of resources like brush presets, gradients, palettes and more. Before we had a fragile system of models, where we should have been using a proper database, and thus, we are now using an SQLite database as the core of our resource handling. This fixes many bugs with tagging and loading resources as well as a handful of UI problems. It also makes our resource system faster and leaner. Because we are now not loading all resources at once, Krita will now start up quicker, and take up less working memory (from our tests, Krita 5.0 took up 200 mb less RAM!).
Krita’s resource folder used to be hardcoded. Not anymore! You can now configure which folder is the resource folder and where the cache is located. Those of us who’d like to have their resource folder on a USB stick will now be able to do so.
As well, we now support more resource libraries. We already had our own resource bundle format, but now we also support photoshop layer style libraries and brush libraries. Documents can now also be seen as a place to store resources, and though we only use it for palettes right now, we hope to extend this in the future.
This new manager allows you to mass-tag brushes as well as delete and undelete resources at will (Krita will deactivate these). It comes with nice little UI features, like a tagging widget that shows all the current tags on a resource in one quick glance.
This allows tagging and searching amongst layer styles, as well as sharing them, or loading several layer styles at once from a downloaded ASL file.
Gradients are an excellent way to quickly setup the main color swatches of your image, for example, a quick linear gradient for the horizon, or several radial gradients for light sources. However, if you used subtle gradients, you would sometimes see banding, caused by there being too few colors available in 8 bit images for a smooth gradient. We have implemented dithering for gradients in 8 bit images, which involves using a blue noise pattern to create a little bit of offset in the boundary between colors. This way, even 8 bit images which don’t always have enough colors to trick the human eye that something is smooth, can have the illusion of smoothness in these gradients.
There was a Libre Graphics Meeting talk discussing the technical details.
But not only the 8 bit images got love. For images in 16 and 32 bit, the gradients Krita generates will now be able to use the full scale available. Furthermore, we’ve made it possible to store wide gamut and unbounded colors using SVG 1.1 icc-color definitions, meaning that you can now have radial gradients that contain rec2020 green, or whites that would only be possible in HDR images, bringing the conveniences of the gradient tool to people who work in these higher bit depths. We hope to support CSS 4 color definitions for the stop gradients when it’s draft has been completed.
Comparison of gradients with and without dither, with an extra set of examples with increased contrast to display the difference.
They are now more cohesive, compact and convenient, with small options left and right to make creating gradients easier than before.
With the fast float plugin, the speed of color management improves drastically, especially with 32bit float. This is enabled by default. Color management via LittleCMS enables us to display colors accurately, and is also necessary for professional features like soft proofing and color model support, and is always applied to Krita’s view of the image.
With the pixel brush now capable of lightness and gradient mapped brush tips, the color smudge engine was to follow. This required a full rewrite of how the engine works, and often requested features like separation of color rate and color smudge have been added into the mix as well, plus optimization improvements!
MyPaint’s brush engine is known for it’s interesting experiments in how to think of brushes. Krita had some support for it in the distant past, but we had to remove that plugin. Now, Ashwin has created a new integration of this engine, allowing for MyPaint 1.2 brushes to be loaded into Krita and used for your artworks.
Deif Lou has added a variety of new modes for the texture option. Hard Mix, Color Dodge, Color Burn, Overlay, Height, Linear Height and more will now be available for all engines supporting them, and the Hard Mix Softer mode is also available for the Masked Brush blending. These are accessed through the brush editor with pixel engine brushes. Go to Texture group > Pattern > Options tab. The new modes have been added to the Texturing Mode drop-down.
Our Timeline Docker has a new look and a variety of improvements. We’ve removed the old Animation Docker and moved its core functionality directly onto the Timeline. Also, animations can be paused at any time, pinning layers has been made easier, playback range automatically adapts as key frames are added, and a number of other changes have been made to improve visual clarity and the overall feel of navigation, transport and editing. (MR 311 MR 317)
Like the Timeline Docker, Krita’s Curves Docker has also been updated with an emphasis on improving the overall look and feel of navigation and editing. Value key frames are now easier to edit thanks to the improved mouse controls with axis snapping, and a box for reading and writing the specific value of the selected key frame. The visibility of individual channels can be hidden or soloed. And, new navigation options like zoomable scrollbars as well as “fit to curve” and “fit to channel” buttons make it much easier to move around the new, dynamic graph view.
Krita 5’s now supports Clone Frames, a much requested feature that allows animators to reuse the exact same key frame at multiple times throughout their animation. Clone frames are great for building looping animations and finding clever other ways to save yourself time while animating. Just remember that editing one clone edits them all!
What good is a shiny Curves Docker without some new things to animate? Along with layer opacity, Krita 5 also brings the ability to animate the position, rotation, scale and shear of any layer through animated Transform Masks. Sometimes referred to as “tweening” in other software, this feature should help with animations that are difficult or inconvenient to do through drawing alone. With animated transform masks, moving a walking figure as shown in the video will be a piece of cake.
Community contributor “KnowZero” has iterated on Scott Petrovic‘s feature which allows for importing videos and animated images as Krita animations. This improved importer can be used with an existing document or to create a new document, works with a wider range of formats, and also decreases disk overhead. It’s great for studying and rotoscoping! Thank you both!
Another useful patch from “KnowZero” allows animated images to set configuration options while exporting, just like their video counterparts. This should make it much easier to work with animated image formats.
Animation export paths are now stored directly in each Krita document and settings like render FPS are automatically set to match your timeline setting.
It’s now possible to crop only the contents of the current frame by setting “Applies to: Frame” in the Tool Options menu while the Crop Tool is active.
There’s a toggle for applying a filter on all selected frames, or just a single one.
Another feature request. The composition docker allows for storing the state of visibility in the layer docker, while this new feature is a bit of convenience for animators to render the current animation with a given stored composition. Useful for situations where you only need a few layers rendered.
We’ve added a new “AutoKey Blank” mode. This mode should help speed up your animation workflow by creating a new blank key frame each time draw on an empty frame. You can find this setting by clicking on the arrow next to the AutoKey button within the Timeline’s settings menu.
For those of you who organize your key frames with color labels, Krita now has an action for selecting the previous or next key frame of the same color. This can be found by searching for “matching” in Krita’s “Keyboard Shortcuts” configuration menu.
We’ve also made a lot of changes to how our animation system works under the hood that will hopefully add up to further improved stability and cache reliability for Krita animators.
We’ve put together an updated animation workspace that takes advantage of our more space-efficient dockers.
Krita’s new storyboard docker has a lot of options for exporting your boards, including the ability to use SVG file data to specify a completely custom layout. This advanced feature means that, with a little work, storyboards that you make in Krita can always be made to fit your project’s needs or match existing storyboard paper.
Our icons were last refreshed for 2.9, and over the years a few hiccups had emerged. Timothée Giet was hired to give the icon set a good scrubbing, and the UI overall had all sorts of little tweaks done by Raghavendra Kamath, Pedro Reis, Scott Petrovic, Tom Tom, Simon Repp, Paul Franz, Andrei Rudenko, Daniel (Sxnic), and Alvin Wong.
You now have the option to make the brush editor detach to its own window, or stay as a pop-up from the toolbar. A detached brush editor can be great for brush creators that make frequent tweaks to their brushes and want to see the result. No more having to constantly show the brush editor every time you want to make a change.
This makes it so the view controls hide in the overview docker when not in use, giving the maximum room to the overview itself.
Krita’s looks can be modified with both theme and widget style. You could already choose the theme, but now it’s also possible to change the widget style on the fly, allowing users to switch between all widget styles available for your platform.
Locking dockers is helpful for those with sensitive tablet stylii, as sometimes a subtle stroke can undock a docker.
This was mid-grey to give an unbiased understanding of the color, but it can now be turned off for extra consistency.
This avif is a frame from Cosmos Laundromat, encoded in rec 2100 pq. Krita opens files like these as 32bit float linear images, making them ready to be used with the LUT docker.
Heif and Avif are the new formats being used by mobile phone cameras, with Avif in particular being slated as a new image format for websites. Krita now supports loading and saving for both RGB and monochrome, 8 bit, 10 bit and 12 bit to these two file formats. Color space encoding is full supported, including the HDR options such as Rec 2100 PQ and Rec 2100 HLG. The official binaries will also ship rav1e and dav1d for speedy encoding and decoding of Avif.
Many improvements have come to the venerable tiff plugin: It now supports signed integer formats (as opposed to only unsigned), floating point formats and premultiplied alpha. The UI has been improved with the fax option removed. There is also a patch in the works for 5.1 to get support for Photoshop style tiffs, which should greatly improve interoperability.
We’ve now got a plugin based on the official libwebp codec. Where before the webp options were limited to compression, this new plugin contains all possible configuration options available to libwebp. Including the presets!
A feature request granted, Krita can now save to KRZ, which is a KRA file with the preview removed and compression added. This is useful for archiving.
Sachin Jindal added the option to crop and resize an image before export. When exporting images, you’ll often want to crop and resize them before export. Many an artist has however made the mistake of accidentally saving over their working file with their export file. With the new advanced export, you can avoid this problem. This can be accessed from the File > Export Advanced main menu option.
Another community contributor, Nabil Maghfur Usman, has added a brand new 2 Point Perspective assistant. This assistant keeps vanishing points reasonably spaced and on the horizon line, draws a grid to help visualize perspective distortion, and is great for adding solidity and depth to your drawings.
The two-point and vanishing point assistants are designed so their previews and areas you can snap to draw over the whole image. With limit area, two extra handles are added so you can limit the area in which the assistant is effective, which is very useful for comic pages.
Our transform tool preview is now composited into the layer stack. Before, Krita’s transform preview was always hovering above all the layers in the canvas, meaning that you could not see if something aligned correctly, or what the effect would be with blending modes and filters applied.
With in-stack transform, the blending modes and overlapping layers are composited on top of the transform preview. This was a feature funded by the Blender Institute.
Where before rotated rectangles and ellipses required an additional transform after the fact, you can now directly draw them with their tools, using Ctrl+Alt during drawing.
Ellipses and rectangles can now be rotated as you draw them.
As per tradition, another update to the pop-up palette, courtesy of Mathias Wein and Alan North. Maximum brush presets are increased from 30 to 45, pop up size can be configured, as well as the visibility of the color history and rotation rings and other navigation options. Furthermore, it was already possible to switch between the simple triangle and wide gamut selector since 3.0, but only as a hidden option. Now this toggle and other features have gotten their own section in the user settings.
Previous versions of Krita allowed briefly switching to the line tool by holding ‘V’ and would switch back when released. Thanks to Tom tom, it is now possible to configure similar actions in the Canvas Input Settings for Ellipse, Rectangle, Move, Fill, Gradient, Measure and several of the selection tools.
Much like the frame crop, you can now also crop the canvas alone with the crop tool, which will leave the layers and the frames alone.
This was done to distinguish it from the color selection dockers.
Colors can new be dragged and dropped from the Palette Docker to the canvas or Layers Docker. While dropping a color onto the canvas causes the selected area to be filled that that color, dropping a color onto the Layers Docker will create a new Fill Layer containing that color.
Our new layer filter widget allows you to filter layers by name, on top of color label.
We’ve also added a new “Isolate Active Group” isolation mode. Found in the context menu when right-clicking on a layer, this mode temporarily makes the current group that you’re working on the only thing that’s visible.
Community contributor Paolo Amadini has added the ability to paste directly into the active layer, as well as the active frame of an animated layer.
A perhaps little-known feature, “soloing” a layer by shift-clicking on its eye icon can now be exited without permanently changing layer visibility.
Contributed by the GDQuest Team, this plugin is designed for the game asset pipeline, allow you to plan and batch export files with the click of a button.
A plugin by Pedro Reis that helps you manage your photo bashing resources and import them quickly into Krita.
Part of keeping Krita and it’s dependencies modern, we now have support for SIP 5 for our Python bindings.
A feature contributed by Rebecca Breu, this lets you paste a URL from which to download and import the plugin.
Pressing CTRL + Enter while the Krita window is in focus will now give a pop-up search bar where you can search for a given action. This will help new users more easily find features, and old user to quickly get to a given feature. Command search bars are becoming more common in intricate programs like Krita, amongst which Kate, whose implementation we were able to reuse.
With Search Actions (on CTRL+Enter), you will be able to search and access any action in Krita.
In Krita 4.x the size of the text rendered in the document could depend on the resolution of the screen Krita runs on. In Krita 5 this bug has been fixed and now the text is rendered with the same size whatever hardware Krita runs on. That has an important consequence: when loading a .kra file, Krita 5 now converts the font size into the correct value and this new value will be saved into .kra file later. It means that this file will no longer be compatible with older versions of Krita.
A setting has been added to allow specifying the text resolution to be used when opening old files.
Deif Lou reworked the spinbox sliders we use throughout Krita. Now in addition to right click to enter a number, you can also use click-hold and enter while focused. Shift key can be used while dragging to make smaller changes, and the Ctrl key for snapping to predefined values. Last but not least, the dragging in the spinbox sliders is now sensitive to the vertical mouse distance, similar to the angle rotation widget. There are even more subtle features to the new sliders as mentioned in the MR, such as support for very large ranges and more!
G’MIC has been moved to a build-in plugin again, which should improve the G’MIC situation on MacOS.
A context menu has been added with several options to control the history, with three new options for history behavior, and the ability to remove a single preset or clear the list, added by Mathias Wein.
Useful for Android devices, you can now switch in and out of Canvas-Only mode with a four-finger tap.
There’s a new option for applying the last-used image filter again that also prompts for settings changes.
For years we’ve had three finger panning. Thanks to, when “finger painting” is disabled in the settings, you will be able to use a single finger to pan.
If you aren’t sure which image scaling filter to use, you can now select “Auto” to have Krita decide for you based on your scaling parameters. It will try to pick the best scaling filter for your image and even automatically applies nearest neighbor filtering to super low resolution pixel art enlargements.
A bit of convenience implemented by, this feature allows you to apply layer split directly on a colorize mask without converting to a paint layer first.
Our smoothing options make heavy use of the time stamps that belong with tablet stylus movement. Thanks to, You can now switch between the old timer based method, or the new driver based method. Which of these is the best depends on your operating system, driver, and tablet model.
Sachin Jindal took the time to update all the filters with these new sliders, giving more consistency throughout Krita.
Krita is a community project, with people all over the world working on Krita, and every release we see old and new contributors. Without these people, Krita would not be possible:
(irc: halla) The Krita maintainer, and the primary programmer behind the resource rewrite. She also spend a lot of time on getting builds going for the new generation of Macs, with the M1 added to the the KDE building system.
(irc: wolthera_laptop) As the Manual Maintainer, Wolthera has been typing her fingers raw for this release (and these release notes, hi!). In addition to this, she did a lot of work on the resource management, as well as handling color management topics all over Krita. Avif and Heif’s many color spaces as well as color spaces in video formats have become near invisible to the user thanks to her work, as well as the writing and parsing of SVG 1.1 icc colors.
(irc: ivanyossi) Ivan spend countless hours on getting Krita compiled on the new generation of ARM based Macs, which involved getting all the dependancies to build, as well as many smaller bugs to be fixed.
(irc: emmetpdx and eoinoneill) Passionate for animation, Emmet and Eoin are largely responsible for the slew of animation improvements, which were selected after extensive discussion with the animators who user Krita. They’re also responsible for handling Krita on Steam, which was welcome with all the bugfix releases we have done for the 4.4.x series.
(irc: amyspark) Amyspark has not just brought us dithered and unbounded gradients, but also many improvements in file formats and the new handling of G’Mic. They also did a lot of smaller cleanups and maintaince tasks, such as updating the dependancies, refactoring older code and has been working on MSVC support. They are also the maintainer of the KDE fork of SeExpr, KSeExpr, which is used in the fill layers.
Created the regular Krita videos for the Krita channel, as well as many special brush preset collections.
Did a lot of work on fund.krita.org.
GSOC student that brought us the storyboard docker.
Updated the assistant tools with the 2-point perspective assistant.
Small android fixes, amongst which the new 4-finger gesture.
Created video import.
Worked on the pop-up palette.
Several export and smaller layer bugfixes.
Worked on the recorder docker.
Did many smaller fixes, contributed the photobash python plugin, as well as UI fixes.
Contributed a python plugin import assistant.
Contributed the batch imported plugin.
Added new cropping options.
(irc: dmitryK) Core Programmer, Dmitry has been overseeing many an MR that got into this release, amongst which collaborating on the Color Smudge rewrite, the in-stack transform preview, and many many more. Recently, he’s been investigating compiler optimizations and benchmarking Krita on different platforms.
(irc: tiar) Hired initially to fix bugs, Agata has been the second driving force behind the resource rewrite. Many elements of the tagging and resource UX has been tested to death by her, as well as handling all the bundles and other resource libraries, such as ASL and ABR. She also worked on improving the selection tools, the fill tool and improving the UX of the assistant tools.
(India) Our Android man, Sharaf has not just been working continuously on improving Krita on Android, but also has been tackling many obscure bugs throughout the year.
(animtim) Hired to refresh the icons, Animtim is a long time KDE contributor and under his careful watch Krita’s icons got updated while still in line with the rest of KDE.
(raghukamath) Handles many tasks with the manual, not least of which is reviewing and handling updated screenshots. Raghu has also started up the Krita-artists.org forum, which aims to bring together Krita users, and which has helped a lot with regards to testing complex features such as the color smudge.
(lynx3d) Thanks to Lynx3d, we now have optimizations in the blending modes without which the color smudge rewrite would not have been possible. He also updated the pop-up palette, and has been responsible for many smaller
(windragon) Has done many bugfixes on windows, and improved many parts of Krita for translation.
(tyson_tan) Blessed us with yet another splash screen, and improved a lot of the translatable strings.
(deevad) Has updated the brush packs this time to include MyPaint brushes.
(Deif_Lou) Contributed many improvements to the filter and fill layers, as well as the gradients, on top of introducing the modes for the texture option in the brush tips.
(voronwe) Spent an extraordinary amount of time on researching and implementing new modes for the brush tips, and the driving force behind the new color smudge algorithm.
(scottyp) Handled many of the website issues we got over the years, such as a better download page as well as handling things like the look for fund.krita.org.
Contributed consistency and usability fixes.
Contributed UX fixes.
Bugfixes and UX improvements left and right.