Jspaint
🎨 Classic MS Paint, REVIVED + ✨Extras
Install / Use
/learn @1j01/JspaintREADME
JS Paint
A pixel-perfect web-based MS Paint remake and more... Try it out! Then join the Discord server to share your art!
JS Paint recreates every tool and menu of MS Paint, and even little-known features, to a high degree of fidelity.
It supports themes, additional file types, and accessibility features like a Dwell Clicker and Speech Recognition.

Ah yes, good old Paint. Not the one with the ribbons or the new skeuomorphic one with the interface that can take up nearly half the screen. (And not the even newer Paint 3D.)
Windows 95, 98, and XP were the golden years of Paint. You had a tool box and a color box, a foreground color and a background color, and that was all you needed.
Things were simple.
But we want to undo more than three actions. We want to edit transparent images. We can't just keep using the old Paint.
So that's why I'm making JS Paint. I want to bring good old Paint into the modern era.
Current improvements include:
- Open source (MIT licensed)
- Cross-platform
- Mobile friendly
- Touch support: use two fingers to pan the view, and pinch to zoom
- Click/tap the selected colors area to swap the foreground and background colors
- View > Fullscreen to toggle fullscreen mode, nice for small screens
- Extras > Quick Undo Button to add a floating undo button for easier access
- (this may be enabled by default in the future for touch devices)
- Web features
- File > Load From URL... to open an image from the Web.
- File > Upload to Imgur to upload the current image to Imgur.
- Paste supports loading from URLs.
- You can create links that will open an image from the Web in JS Paint. For example, this link will start with an isometric grid as a template: https://jspaint.app/#load:https://i.imgur.com/zJMrWwb.png
- Rudimentary multi-user collaboration support. Start up a session at jspaint.app/#session:multi-user-test and send the link to your friends! It isn't seamless; actions by other users interrupt what you're doing, and visa versa. Sessions are not private, and you may lose your work at any time. If you want better collaboration support, follow the development of Mopaint.
- Extras > Themes to change the look of the app.
- Dark and light variants
- Vector tool icons handcrafted to match the pixel art versions, for both Modern and Classic themes
- Occult theme, in the spirit of Halloween
- Winter theme, with a special color palette including candy cane stripes, and advent calendar style flaps revealing pixel art for each tool
- Bubblegum theme, featuring Business Pink color scheme and AI-generated icons
- Extras > Enlarge UI to make buttons and menus bigger, for usage with an eye tracker, head tracker, or other course input devices. May also work well for a tablet, but not so much for a phone at the moment.
- Extras > Dwell Clicker to click automatically by hovering in one spot, for usage with an eye tracker or head tracker.
- Hovered buttons are highlighted, and the click is performed after a delay.
- Supports dragging windows and drawing on the canvas.
- With just a webcam, you can try it out with Enable Viacam (head tracker), GazePointer (eye tracker), or the built in <img src="images/tracky-mouse-16x16.png" width="16" height="16"> Tracky Mouse head tracker using Extras > Head Tracker.
- This feature can be easily added to other web applications, using the <img src="images/tracky-mouse-16x16.png" width="16" height="16"> Tracky Mouse API.
- Extras > Speech Recognition to control the app with your voice.
- Select tools and colors ("fill tool", "orange", etc.)
- Pan the view ("scroll down and to the left", or "go southwest", etc.)
- Explore the menus, or activate any menu item without opening the menus first
- Interact with windows
- Dictate text with the Text tool
- Create an animated GIF from the current document history. Accessible from the Extras menu or with <kbd>Ctrl+Shift+G</kbd>. It's pretty nifty, you should try it out! You might want to limit the size of the image though.
- Load and save many different palette formats with Colors > Get Colors and Colors > Save Colors.
(I made a library for this: <img src="images/anypalette-logo-128x128.png" height="16"> AnyPalette.js.)
- You can also drag and drop palette files into the app to load.
Editing Features:
- Use Alt+Mousewheel to zoom in and out
- Edit transparent images! To create a transparent image, go to Image > Attributes... and select Transparent, then OK, and then Image > Clear Image or use the Eraser tool. Images with any translucent pixels will open in Transparent mode.
- You can crop the image by making a selection while holding <kbd>Ctrl</kbd>
- Keyboard shortcuts for rotation: <kbd>Ctrl+.</kbd> and <kbd>Ctrl+,</kbd> (<kbd><</kbd> and <kbd>></kbd>)
- Rotate by any arbitrary angle in Image > Flip/Rotate
- In Image > Stretch/Skew, you can stretch more than 500% at once
- Zoom to an arbitrary scale in View > Zoom > Custom...
- Zoom to fit the canvas within the window with View > Zoom > Zoom To Window
- Non-contiguous fill: Replace a color in the entire image by holding <kbd>Shift</kbd> when using the fill tool
Miscellaneous Improvements:
- Vertical Color Box mode, accessible from Extras > Vertical Color Box
- You can use the Text tool at any zoom level (and it previews the exact pixels that will end up on the canvas).
- Spellcheck is available in the textbox if your browser supports it.
- Resize handles are easier to grab than in Windows 10's Paint.
- Omits some Thumbnail view bugs, like the selection showing in the wrong place.
- Unlimited undos/redos (as opposed to a measly 3 in Windows XP, or a measly 50 in Windows 7)
- Undo history is nonlinear, which means if you undo and do something other than redo, the redos aren't discarded. Instead, a new branch is created in the history tree. Jump to any point in history with Edit > History or <kbd>Ctrl+Shift+Y</kbd>
- Automatically keeps a backup of your image. Only one backup per image tho, which doesn't give you a lot of safety. Remember to save with File > Save or <kbd>Ctrl+S</kbd>! Manage backups with File > Manage Storage.

Limitations:
A few things with the tools aren't done yet. See TODO.md
Full clipboard support in the web app requires a browser supporting the Async Clipboard API w/ Images, namely Chrome 76+ at the time of writing.
In other browsers you can still copy with <kbd>Ctrl+C</kbd>, cut with <kbd>Ctrl+X</kbd>, and paste with <kbd>Ctrl+V</kbd>, but data copied from JS Paint can only be pasted into other instances of JS Paint. External images can be pasted in.
Supported File Formats
Image Formats
⚠️ Saving as JPEG will introduce artifacts that cause problems when using the Fill tool or transparent selections.
⚠️ Saving in some formats will reduce the number of colors in the image.
💡 Unlike in MS Paint, you can use Edit > Undo to revert color or quality reduction from saving. This doesn't undo saving the file, but allows you to then save in a different format with higher quality, using File > Save As.
💡 Saving as PNG is recommended as it gives small file sizes while retaining full quality.
| File Extension | Name | Read | Write | Read Palette | Write Palette | |-------------------------------|-------------------------------|:----:|:-----:|:------------:|:-------------:| | .png | [PNG][] | ✅ | ✅ | 🔜 | | | .bmp, .dib | [Monochrome Bitmap][BMP] | ✅ | ✅ | 🔜 | ✅ | | .bmp, .dib | [16 Color Bitmap][BMP] | ✅ | ✅ | 🔜 | ✅ | | .bmp, .dib | [256 Color Bitmap][BMP] | ✅ | ✅ | 🔜 | ✅ | | .bmp, .dib | [24-bit Bitmap][BMP] | ✅ | ✅ | N/A | N/A | | .tif, .tiff, .dng, .cr2, .nef | [TIFF][] (loads first page) | ✅ | ✅ | | |
Related Skills
healthcheck
325.9kHost security hardening and risk-tolerance configuration for OpenClaw deployments
imsg
325.9kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
node-connect
325.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
openai-image-gen
325.9kBatch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
