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.
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:
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 Tracky Mouse head tracker using Extras > Head Tracker.
This feature can be easily added to other web applications, using the 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 Ctrl+Shift+G. It's pretty nifty, you should try it out! You might want to limit the size of the image though.
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 Ctrl
Keyboard shortcuts for rotation: Ctrl+. and Ctrl+, (< and >)
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 Shift when using the fill tool
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 Ctrl+Shift+Y
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 Ctrl+S! 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 Ctrl+C, cut with Ctrl+X, and paste with Ctrl+V, but data copied from JS Paint can only be pasted into other instances of JS Paint. External images can be pasted in.