# 1j01/jspaint

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/1j01-jspaint).**

7,801 stars · 662 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/1j01/jspaint
- Homepage: https://jspaint.app/about
- awesome-repositories: https://awesome-repositories.com/repository/1j01-jspaint.md

## Topics

`app` `canvas` `drawing` `editor` `html5` `image` `image-editing` `image-editor` `image-manipulation` `javascript` `jspaint` `ms-paint` `mspaint` `online` `paint` `painting` `remake` `retro` `web-app` `web-application`

## Description

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.

## Tags

### Graphics & Multimedia

- [Canvas Rendering](https://awesome-repositories.com/f/graphics-multimedia/canvas-rendering.md) — Renders the entire application UI onto an HTML5 canvas using pixel-level drawing operations.
- [Legacy Image Format Preservation](https://awesome-repositories.com/f/graphics-multimedia/multi-format-media-players/format-compatibility/legacy-image-format-preservation.md) — Preserves exact pixel data for BMP, PNG, GIF, and JPEG formats matching the legacy application.

### Operating Systems & Systems Programming

- [Win32 API Emulation Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/hardware-emulators/emulator-porting-layers/win32-api-emulation-layers.md) — Reimplements original MS Paint logic by reverse-engineering and porting Win32 API calls to JavaScript.

### DevOps & Infrastructure

- [JavaScript Plugin Systems](https://awesome-repositories.com/f/devops-infrastructure/release-automation/plugin-extensibility/javascript-plugin-systems.md) — Allows third-party scripts to hook into the application lifecycle and modify tool behavior via a JavaScript plugin API.

### Software Engineering & Architecture

- [Image Processing Offloading](https://awesome-repositories.com/f/software-engineering-architecture/worker-thread-patterns/image-processing-offloading.md) — Offloads computationally intensive image processing operations to background web workers for UI responsiveness.

### Web Development

- [Undo-Redo History](https://awesome-repositories.com/f/web-development/history-management/undo-redo-history.md) — Maintains a complete stack of canvas state snapshots for unlimited undo/redo operations using compressed image data.
