NPS Image Editor is a free, unique image editing program that is perfect for pixel art, drawing, and photo editing. It is lightweight, customizable, and intuitive, yet surprisingly powerful.
Text effects, drawing improvements, and an enhanced script editor
Release date: November 23, 2025Select a file to download
Release notes for this version
- Drawing improvements
- Simplify Ripple Delete operation by automatically filling to width/height without needing to manually refine
- Added Push Left/Right/Above/Below for selection (expands the canvas to fit the selection next to it)
- Add Ctrl+Del keyboard shortcut for Ripple Delete
- Prevent merging mask down on background layer
- Increase rounded rectangle tool's border radius with line width
- Rename "Mask to Layer" to include "Edit Mask"
- Better logic for detecting whether a layer is a mask or not when merging down
- Fixed Make Opaque for indexed mode, including blending semitransparent (alpha) pixels with nearest palette color
- Add option to resize all layers proportionally in Resize dialog
- Improved Skew feature with 2 angles instead of the 3-point system
- Allow pasting images from RTF or HTML sources
- Added better warnings to Crop to Content describing why no pixels could be found
- Place selection when clicking outside of canvas
- Set transparent background color via Ctrl+Click on swatch
- Add descriptions to Eraser slider and Warp Strength
- Added clone source display to clone tool
- Fix Copy Merged behavior to better handle blending modes (added legacy behavior in settings if you prefer it)
- Preserve blending mode in Selection to Layer operation
- Added Hard Shadow text effect
- Scripting improvements
- Added script commands: AddLayer, AddLayerMask, CanvasSize, CommitAutosave, CommitSettings, CombineMask, CopyMerged, CopySettingsToAllInstances, FindNext, Flip, Increment, InvertColors, LoadClassicPalette, LoadSelection, LoadSetting, MakeOpaque, MaskToLayer, MeasureText, MergeDown, Multiply, Offset, PickChannels, PlaceText, Pop, PromptBoolean, PromptColor, PromptFileOpen, PromptFileSave, Push, Randomize, Refresh, ReloadSettings, RenameLayer, Rotate, Round, SaveCopy, SaveSetting, SaveSettings, SetCursor, Skew, Tile
- Added system variables: $NOW, ActiveLayerBlendingMode, ActiveLayerColorMode, ActiveLayerDisplayName, ActiveLayerHeight, ActiveLayerName, ActiveLayerOpacity, ActiveLayerTransparencyMode, ActiveLayerUniqueID, ActiveLayerWidth, AirbrushIntensity, BucketFillDirections, BucketFillMode, BucketFillTolerance, DocumentHeight, DocumentOpen, DocumentTitle, DocumentWidth, FileName, InstanceID, LayerCount, SelectionActive, SelectionHeight, SelectionWidth, SelectionX, SelectionY, ShapeFillMode, Text, TextAlignment, TextBackground, TextEffect, TextFont, TextFontSize, TextFontStyle
- Added sample scripts: Filter (Echo Windowbox, Motivational Poster, Rounded Corners, Rainbow Flag, Old Fashioned Photo, Worn Photo), Render (Bokeh, Checkerboard, Copyright Notice, Object Shadow, Smiley Face), Samples (Document Information, Update Status). Background to Layer
- Added scripting support for If statement and nested blocks
- Don't set user variable in Set command when this sets a system variable
- Interpret $variables in parameters/strings
- Improved error handling for system variable invalid values
- Fixed aborting script within block
- Added ability to push/pop multiple variables on the same line
- Fixed Draw command wrongly using screen coordinates
- Fixed broken > and >= operators
- Fixed script math issues with floating point numbers
- Suppress informational popup about mask to layer when calling this from a script
- Fix Call function not getting current script's directory
- Fix status bar issues with scripts, in some cases not updating and in other cases leaving a dangling "ExecAction" when not expected
- Updated comment logic to only allow single line (causes more issues otherwise including HTML colors acting like comments)
- Script editor
- Added syntax highlighting (and an option to disable it)
- Added negation operator to variable, i.e. -$Variable
- Updated toolbar icons
- Added keyboard shortcuts: F1 help, Ctrl+D duplicate line, Ctrl+F/F3 fine, Alt+R run action
- Fixed status bar covering bottom of the text box
- Added variable dump
- Added extension parameters to building blocks
- Added UiXXXX commands to building blocks
- Fixed missing theme for script editor name popup
- Fixed bug where clicking Yes to save on close does not close
- Fixed "ding" when pressing Ctrl+S
- Added Word Wrap
- Added Undo/Redo
- Added context menu to text area
- Added warnings for placeholders
- Fixed empty user script subfolder causing built-in scripts to disappear
- Fix wrongly saving to "UserScripts" subfolder when no category was specified
- Added settings button
- Added startup script support
- DPI scaling improvements and fixes
- Fixed scaling bugs in script editor
- Fix "Actual Size" zoom on high DPI displays
- Fix scaling bug with Skew dialog
- Fix scaling bugs with Text tool including the actual font size placed on the image
- Miscellaneous improvements
- Update Paste button via event subscription instead of activation
- Added "Blue Fire" Acrylic theme variant
- Fix wrong skin variant shown in settings
- Support Windows high contrast modes
- Sync MRU across instances when opening a document
- Fixed Blend/Overwrite dropdown text size
- When a read-only document is Saved As, don't keep the read-only status
- Warn when merging a layer down to background that is outside the bounds of the canvas
- Make it possible to cancel a Find Next operation
- Remember chosen classic palette
- Updated Tip of the Day
- Added better progress indication for long-running undo operation
- Save settings before opening a new instance of NPS, so that settings you've changed will stick
- Commit autosave and enable recovery when NPS is forcibly closed by a Windows shutdown or update reboot
- Commit autosave after placing pasted selection to reduce the risk of data loss
- Added export to data: URI
- Added ability to paste data: URI directly
- Increased text limit beyond 32767 chars on InputBoxEx - you can paste longer text but it may not appear due to Windows limitations
- Disable unnecessary tooltip from Palette dialog dropdown
- Miscellaneous bug fixes
- Fix Settings bug when switching between scheme variants that have or don't have dark/light modes
- Improved handling for missing temp directory
- Theme InputBoxEx text area
- Fix Mask to Layer undo crash
- Fix crash when merging down with selection active
- Clear existing update when switching channel to ensure the correct update is loaded
- Clear clone source when opening new image
- Fixed Layers to Spritesheet oversized layers spilling over
- Fixed layer rendering cut off when it is to the left and wider than the canvas
- Fix Copy Merged bug that included hidden layer
- Fix spurious "selection must be placed" prompts for: Resize, Offset, Skew, Rotate, Pick Channels, Color Matrix, Tile, Flip, Clear Image, Crop and Fit
- Fix Color Matrix inability to type
- Fix crash for Apply Filter to All Layers when attempting to apply to a single-layer image
- Fix Apply Filter to All Layers applying to other layers when a selection is active
- Correctly save airbrush shape setting
- Fix classic palette pane covering bottom of layer picker
- Fix flash to transparency when closing a document with a selection active
- Fix logic when prompted to save on close and a selection is active
- Fix "Show debug information in web views" typo, setting should work now
- Fix issues with Crop to Content when in Opaque mode
- Fixed accidental placing of selection when using Enter or Esc to close a dialog
- Fixed Copy Merged behavior with blending modes
- Fixed layer preview border cut off for wider layers
- Fixed Tile for selections with mask
- Fixed issues with Safe Mode incorrectly loading templates
- Better error handling for Filter Gallery when there are no available filters
- MRU item with \n in the filename (e.g. folder\new.npsd) would fail to load, now it is fixed
- Disable fast undo cache on 32-bit systems (would cause "out of memory" errors with large images)
- Fix incorrect layer restored in undo manager after using Selection to Layer
- Clear selection mask when replacing with a rectangular selection
- Added help topics in Options dialog help
- Show help in Options dialog when pressing F1
- Better handling for attempting to save read-only files, including files with read-only attribute and documents such as data: URI that cannot be saved directly
- Don't put large data: URI into MRU
- Save setting for Apply Filter to All Layers
- Block Ripple Delete when selecting all pixels and when animation is playing
- Fix missing NPS logo on splash screen and About box when in High Contrast mode
- Fix redo step generation for operations: Global color mode, frame mode, enable animation, document metadata
- Refresh layer list after undo/redo layer rearrange
- Fix corrupt image data when pasting from (or dragging to create selection) a Raw Bitmap image