Version 2.3.0-beta.2 and Donations

Aug. 7, 2025

The first beta of Drawpile version 2.3.0 is out now (with a small hotfix, so it's beta.2). It has many new features, such as layer clipping, lasso fills, a gradient tool, realistic pigment blending, OKLAB mode, pixel-perfect mode, a new file format that's 3000% faster and much more. There is also a version for Windows on ARM now, if you have such a device. And of course numerous fixes and stability improvements. It is backward-compatible, so you can join sessions hosted with the previous version.

Click here to download and install it. You can use both the current and the beta version side by side. See here for how to that.

To find out what's new, take a look at this page. It has videos and pictures showing everything off.

You can also now donate to the project! Drawpile is largely developed by only a single person, donations let me spend more time working on it and helps pay to keep the servers running.

If you have questions, feedback or trouble using the new version – especially if it breaks your workflow – take a look at the help page on how to get in contact! Almost every feature is added because it was requested by an artist and bugs can only be fixed if they are reported, you can see everyone that contributed in the list of changes below.

Updating or Installing Side by Side

You can download Drawpile from here and simply install it over the current version. This will update it. The new version is backward-compatible, so you can still join sessions hosted with the previous version.

Alternatively, you can run both versions side-by-side. See here for how to do that on different operating systems.

On the server side, everything is both back- and forward-compatible. Server owners can update if they want, but it's not necessary, people can use any version they wish to host sessions.

Changes in this Release

Drawpile 2.3.0-beta.2 represents a bit over 4 months of development since version 2.2.2 (and just a few hours from beta.1, since it's just a small fix). Many people contributed with suggestions and bug reports and are listed below. If you find any issues, please report them!

For an illustrated list of the major changes, take a look at this page.

Where available, there's links to the development blog with more information.

  • Features:
  • Fixes:
    • Change the dptxt recording format to use JSON to represent message bodies instead of a bespoke format that sometimes doesn't round-trip properly.
    • Make indirect wash mode actually work like it's supposed to, without causing weird effects for soft brushes. The previous mode is now available as a separate paint mode.
    • Don't displace annotations when resizing the canvas to the left or top.
    • Make MyPaint brush outline more accurate to the actual maximum size of the brush (although it still can't account for crazier brushes.)
    • Don't mark the canvas as having unsaved changes from just making a selection on it. Thanks MachKerman for reporting.
    • Don't include credentials in the URL when opening a new window on reconnect, they're only for use in the same window. Thanks MachKerman for reporting.
    • Save and restore smudge minimum value properly instead of resetting it to zero.
    • Don't disconnect when receiving an unknown message from user 0. Thanks Blozzom and unsername for reporting.
    • Compensate jagged curves in when using the lasso select tool. Thanks Blozzom for reporting.
    • Properly stop flood fills at selection boundaries. Thanks Bluestrings for reporting.
    • Don't reattach detached brushes when switching slots. Thanks MachKerman for reporting.
    • Don't switch away from a detached brush when only right-clicking, just like it works when you disable brush detaching altogether. Thanks MachKerman for reporting.
    • Don't allow toggling toolbars in small screen mode, since they will just reappear again. Thanks CosmosX007 for reporting.
    • Add some space to the sides of the bottom toolbar in small-screen mode so that the undo and record buttons don't get eaten by rounded corners. Thanks March for reporting.
    • Detect eraser pen tip on Android, since the eraser doesn't report it's in proximity until it hits the surface, similar to the browser. Thanks CosmosX007 for reporting.
    • Remember loops field in animation export dialog during a single run, instead of resetting it to 1 every time.
    • Disable audio playback under 32 bit Windows, since it just crashes.
    • Clear text in the annotation tool when deselecting, since it makes it seem like you can still type in there.
    • Don't reselect default layer after picking a layer from the canvas or via the timeline. Thanks Meru for reporting.
    • Properly snap pixel brush outlines in the correct spot and don't snap soft brush outlines at all. Thanks Meru for reporting.
    • Disable color wheel preview on macOS, since it breaks dragging on the wheel like it does on Android. Thanks Millie for reporting.
    • Don't crash on some systems when selecting multiple layers and merging them. Thanks cromachina for reporting.
    • A rare crash when faced with a lot of identically-named brushes assigned to the same shortcut. Thanks Blozzom for reporting.
    • Allow changing the background color when you have background permissions, previously it checked for canvas resize permission instead.
    • Make fill tool apply to the layer it was executed on when "edit pending fills" is disabled. Thanks Greendyno for reporting.
    • Don't set a 0% opacity layer to 1% opacity when switching it out of sketch mode. Thanks Meru for reporting.
    • Properly reset layer visibility when creating a layer with the same ID as a previously hidden layer when you have a high-ish ping. Thanks MachKerman for reporting.
    • Don't start a kinetic scroll of the surrounding view when trying to adjust curve or slider. Thanks 3rd_EFNO for reporting.
    • Make MyPaint brushes not pick up transparency from outside of the canvas. Thanks Meiren and yvantot for reporting.
    • Properly render sketch mode layers when the actual layer opacity is zero.
    • Remove warning about Firefox on Android not supporting pressure sensitivity, since it does now. Thanks tiar for reporting.
    • Correct warning about Firefox on Linux not supporting pressure sensitivity, since it does work on some systems. Thanks Kuuuube for reporting.
    • Don't crash on macOS when inputting an invalid session address to join. Thanks Charmandrigo for reporting and Axocrat for testing.
    • Restore normal layer view mode when loading a canvas into the same window.
    • Replace the notification sound playback backend, which should make it work on Android, the Linux AppImage and on 32 bit Windows. It should hopefully also no longer have occasional crashes on some Linux and Windows systems.
    • Make click detection more sensitive, to avoid accidentally creating tiny selections when trying to just click to deselect. Thanks Bluestrings for reporting.
  • Tool Features:
    • Add -B/--background-color option to drawpile-timelapse command to set an override background color. Thanks Bluestrings for suggesting.
  • Server Features:
    • Session thumbnail generation, by requesting the client to generate one. Currently only through the web admin API, thumbnails are not displayed anywhere or generated automatically yet.
    • Add settings to filter disallowed user and session names. Thanks Bluestrings for suggesting.
    • Allow marking individual sessions as unlisted, as well as a setting to automatically unlist all or browser-hosted sessions. Thanks Bluestrings for suggesting.
    • Allow adding server log entries via API. Thanks Bluestrings for suggesting.
    • Add a "browser" flag to the API, to be able to tell whether a user is connected via web browser.
    • Add a --no-gui option to explicitly run the server without a graphical shell.
  • Server Fixes:
    • Properly prefer users with better OS, net quality or ping for autoresets, even if they responded first. Thanks Blozzom for reporting.
    • Interpret the connection quality setting sent by clients correctly when choosing who to pick for autoresets. Thanks Blozzom and grimsley for reporting.
    • The server now checks whether it can actually start with a GUI if you run it without arguments on Linux and other non-macOS Unix systems, rather than trying it and crashing because you don't have a graphical environment. Thanks Epiglottal Axolotl for reporting.
  • Translations (only translations that are completed to a large enough degree are included in the program):
    • Arabic translation by Ahmed Essam.
    • Brazilian Portuguese translation by Inky 1003 and Zeevee.
    • Catalan translation by Roger VC.
    • European Portuguese translation by ssantos and Victor Araújo.
    • French translation by Nicolas Rivard.
    • German translation by askmeaboutloom.
    • Gothic translation by Roel v.
    • Italian translation by Isy.
    • Japanese translation by ubanis.
    • Polish translation by Krzysztof Bursa, Kuba18 and tiar.
    • Simplified Chinese translation by xxxx.
    • Spanish translation by Manuart, Rockhopper and Shiki.
    • Turkish translation by polarwood.
    • Ukranian translation by Maksim Gorpinic and neketos851.
    • Vietnamese translation by BlackFire123654 and Cas Pascal.

What's Next

Several fixes and a few of the features will be backported for another release in the 2.2 series, probably sometime soonish.

Work on 2.3.0 will continue, there is still a few more features that are slated to be included. For example, anti-overflow brush filling, for which work is already in progress. Or updating stuff to target the latest Android version because Google requires it for some reason, even though Drawpile doesn't need any of the new features.

And of course we want to hear feedback from artists using the new version. If it breaks your workflow or there is something you want improved or fixed, the help page say so!

Acknowledgements

Thanks to everyone that contributed code, bug reports, feedback, donations and everything else to make Drawpile. Also thanks to all the people that help other folks in the public channels and keep the servers running smoothly.

We also thank SignPath.io for providing us with code signing for Windows with a certificate by SignPath Foundation.