paint.js is a proof-of-concept, cross-platform raster graphics editor written in JavaScript, ported from Paint.NET (v3.36.7) by Rick Brewster, the last version released under the original MIT-compatible license.
Paint.NET is arguably the best and simplest painting tool available on Windows. Since switching to Linux, it has been the program I miss the most and used every day. The goal of this port is to bring that same experience to macOS, Linux, and the web.
⚠️ Note: This project is developed on Chromium and may currently only work correctly in Chromium-based browsers.
The current proof-of-concept includes:
- Full document UI & layout
- Zooming & panning
- Complete edit history with undo/redo
- Document layering system
- Color picker
- Tools window with multiple document support
- Selection tools: lasso, rectangle select
- Transform tools: move, rotate, resize (rectangle selections)
⚠️ Note: Selections transformation is currently unstable, and performance for large selections is a work in progress.
Follow these steps to get paint.js running locally.
paint.js uses the latest assets from Paint.NET 5.1.9.
Due to licensing, these assets cannot be included in this repository, so you need to download them yourself:
python3 scripts/download_assets.pyThis script will automatically fetch the required assets so the app can run properly.
npm installnpm run appThe Electron version runs as a standalone program, similar to the original Paint.NET application.
npm run web-watchThen open index.html in your browser. The web version runs as a website, allowing you to use paint.js on any device with a compatible browser.
paint.js is still a proof-of-concept and is reaching a complex stage where performance optimizations are needed. The current challenge includes:
- Selection transformations: moving and resizing work; rotation is partially broken
- Performance improvements for large selections
- Implementation of additional tools
If you are interested in contributing, your help is highly welcome!
This project is licensed under the MIT License. See the LICENSE file for details.

