jspaint is a web-based reimplementation of Microsoft Paint, built entirely in JavaScript to run in a browser. It recreates the classic desktop application by reverse-engineering the original Win32 API calls and event handling, rendering the entire interface onto an HTML5 canvas for pixel-perfect retro graphics. The project preserves the original file format compatibility with BMP, PNG, GIF, and JPEG, ensuring exact pixel data matches the legacy application.
The application maintains a complete undo history stack using compressed image snapshots, and offloads computationally intensive image processing to web workers to keep the interface responsive. It includes a plugin extension system that allows third-party scripts to hook into the application lifecycle and modify tool behavior. User preferences, tool settings, and recent files are persisted across page reloads through browser localStorage.
Additional capabilities include vertical text input and editing for CJK typesetting, the ability to list installed fonts for text tool selection, and a toggle for the font formatting toolbar. The desktop version can be packaged as an AppImage for Linux distributions.