SkillAgentSearch skills...

Jspaint

🎨 Classic MS Paint, REVIVED + ✨Extras

Install / Use

/learn @1j01/Jspaint

README

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.

Screenshot

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.
  • 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
    <!-- (Broken due to no-longer-free service) * Even tell the application to sketch things (for instance, "draw a house") -->
  • 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.
<!-- Half-features: * When you do **Edit > Paste From...** you can select transparent images. ~~You can even paste a transparent animated GIF and then hold <kbd>Shift</kbd> while dragging the selection to smear it across the canvas *while it animates*!~~ Update: This was [due to not-to-spec behavior in Chrome.](https://christianheilmann.com/2014/04/16/browser-inconsistencies-animated-gif-and-drawimage/) I may reimplement this in the future as I really liked this feature. * You can open SVG files, though only as a bitmap. (Note: it may open super large, or tiny. There's no option to choose a size when opening.) -->

JS Paint drawing of JS Paint on a phone

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

View on GitHub
GitHub Stars7.7k
CategoryDevelopment
Updated3h ago
Forks643

Languages

JavaScript

Security Score

100/100

Audited on Mar 20, 2026

No findings