www.makeworld.space

Dithertime: a desktop app for image dithering

Feb 17th, 2025
by makeworld

screenshot of dithertime application

In February 2021, I first released dither, my Go library for image dithering, along with a blog post. Three months later, I released didder, a command-line tool for accessing that library and creating image dithering pipelines.

Four years later, I am now releasing Dithertime, a graphical desktop application for image dithering. I hope this will make my image dithering implementation accessible to many more people.

If this already sounds good to you, you can download Dithertime right now! Just head over to itch.io. It costs $7.50 USD, or about $10 CAD — one time.

Why use image dithering?

Image dithering is a technique for emulating multiple colours with only a few colours. For example, a mix of black and white pixels will look gray from a distance.

In the past, image dithering was used everywhere, as few output mediums (print or digital) could display all the colours that an original image (maybe on film) contained. Nowadays, computer screens can display millions of colours so this is less necessary, but it still sees some use. There has even been a small comeback in recent years!

Some reasons to use image dithering today:

Why use my code?

My dithering library, which this application is based on, is the best implementation of image dithering I am aware of. It achieves mathematical and colour science correctness in ways that many existing dithering website and tools do not, such as:

This results in dithered images that are much more faithful reproductions of the original than other software creates.

The underlying dithering library also supports a variety of dithering algorithms and matrices for custom effects.

Why pay?

Having Dithertime be (initially) closed-source and paid is an experiment, following in the footsteps of Rad Reader by Alexander Cobleigh.

Dithertime will become open source under the AGPLv3 license after 375 purchases. These purchases will retroactively fund the roughly 75 hours spent on the development of Dithertime, at a rate of 50 CAD/hour.

I think this funding model has a lot of potential for GUI desktop software, which directly faces end users who are somewhat familiar with paying for software, as opposed to libraries for developers. As a FOSS head, it reassures me that my software will become part of the commons eventually. I hope it reassures nerdy users too, despite the bit of trust required initially.

For Dithertime especially I feel less “guilty” than I might normally with this approach, because the algorithms are all open source, already in the library and CLI I wrote. So the payment is mostly for the grunt work of designing the UI/UX, and making sure things work across OSes — annoying parts of development I am happier to get paid for.

And of course, I am happy to not be putting more rented products into the world. Pay once, and you’ll own it, including future minor updates and bug fixes.

Tech stack

Wails

Dithertime is built using Wails, a framework for writing Go desktop apps. Like Electron, the frontend is written using web technologies (HTML/CSS/JS) but unlike Electron, there is no heavy Chromium renderer. Instead the native OS web renderer is used, such as WebKit (Linux and macOS) or WebView (Windows). This reduces binary size and memory usage.

Although I’ve run into some bugs, I have nothing but good things to say about Wails. It’s well designed, easy to use, and works great.

jQuery

The frontend for Dithertime is written entirely in vanilla JavaScript and jQuery. I find this pretty funny, but the reality is that jQuery was a very effective tool for Dithertime, a single page app with a simple UI. It strikes a good balance: vanilla JavaScript would have been verbose, but Svelte or something would have been overkill. Even with modern JavaScript, jQuery still shines when dealing with multiple elements at once, or handling custom events.

Conclusion

Thanks for making it to the end of this post! I hope you’ll check out Dithertime, as well as my free image dithering library and CLI.