Native pixel art editor with tons of features
Requires macOS Monterey 12.4 or later
Last updated: 2026-08-17
CG Course: What Is Pixel Art?
What is a pixel? Imagine the tiniest square of colour you can see on your screen. Now imagine painting an entire world out of nothing but those squares, one by one, dot by dot. That is pixel art, and it is one of the most exciting forms of digital creation happening right now! See what all the fuss is about.
An App for Pixel Art: Hello, Dottie!
Dottie is a brand-new native Mac application built from scratch to make pixel art feel as natural as picking up a pencil. Forget clunky web apps and awkward Windows ports. Every tool has been designed to feel right at home on your Mac: trackpad gestures, keyboard shortcuts, and an interface that gets out of your way while you create game sprites, tilesets, icons, portraits, or whatever. It feels good to draw!
-
Drawing ToolsPencil, pen, airbrush, smudge, clone, shift, fill, etc
-
Brush SettingsShapes, sizes, dither, pixel perfect, pressure-sensitive
-
Layer SystemOpacity, onion skin, solo, tileset, hiding, locking
-
Vector LayersEditable objects, groups, and SVG interop, rasterised crisp
-
Tileset EditingEdit sprite-sheet tiles in-grid with cross-tile strokes
-
AnimationFrames, timeline, tags, and GIF/APNG export
-
Selection ToolsMagic wand, marquee, lasso, and polygon selections
-
Custom PalettesUse presets, create your own, or import from Lospec
-
Multiple PreviewsFloating or docked previews with their own settings
-
Import & Export15+ import formats, 10 export formats
-
Plugins & ScriptingScript using AppleScript and JXA, extend using JavaScript
-
Apple NativeMulti-window, Auto-save, Quick Look, iPad Sidecar
Drawing Tools
Your creative journey starts here! Every tool is assigned to a single key so your hands never leave the keyboard.
| Tool | Key | Description |
|---|---|---|
| Pencil | N | Toggle-style classic Mac drawing |
| Pen | P | Smooth strokes |
| Airbrush | A | Soft spray for shading |
| Smudge | S | Blend adjacent pixels together |
| Colour Shift | C | Shift painted pixels along the palette ramp |
| Clone | G | Stamp a copy from an Option-click source anchor |
| Fill | K | Flood fill, outlines, and dithered gradients |
| Eraser | E | Remove pixels in a single stroke |
| Line | L | Perfect geometric shapes |
| Rectangle | R | Perfect geometric shapes |
| Oval | O | Perfect geometric shapes |
| Eyedropper | D | Pick any colour from your canvas |
Shift-drag the Fill tool to lay down a dithered gradient from your primary to secondary colour—and keep tweaking the dither in real time until you let go to lock it in.
Selection Central
Selecting parts of your artwork is just as important as drawing them!
| Tool | Key | Description |
|---|---|---|
| Magic Wand | W | Similar colour, connected or canvas-wide |
| Rectangle Marquee | M | Precise rectangular selections |
| Oval Marquee | I | Circular and oval selections |
| Freehand Lasso | U | Draw your own selection boundary |
| Polygon | Y | Click point by point around complex shapes |
Every tool combines: hold Shift to add, Option to subtract, or both to intersect—so you can build up exactly the region you want. The Magic Wand grabs connected colour, or every matching pixel across the canvas with Control.
Select all, select every pixel on a layer, invert, deselect, and reselect. Copy Merged lifts the whole composited canvas in one go, and you can copy the cursor position as plain x,y text. Grow or shrink the selection a pixel at a time to tighten a mask or step out a clean outline—then cut, copy, and paste, all wrapped in animated marching ants that you can hide when they get in the way. Nudge a selection with the arrow keys, or lift it straight onto a fresh layer with New Layer with Selection (Acorn-style).
Brush Collection
Here is where things get really interesting!
- Shapes—Circle, Square, Diagonal
- Sizes—1 to 16 pixels, stepped with
[and], with hand-tuned nib stamps - Per-tool size memory—every size-using tool remembers its own size, so switching tools restores the size you last drew with; Line, Rectangle, and Oval share one stroke weight so the shape tools stay linked
- Dither—17 levels (0 to 16)
- Custom dither patterns—swap the Bayer dither for your own 8×8 two-colour tile: import an XPM, a MacPaint file, or any image—or capture the current selection as a pattern, then every tool and fill stipples the primary against the secondary (or transparent). Saved patterns stick around; pick a dither level again to clear it
- Pixel Perfect mode—Toggle with F, automatically cleans up jagged corners
- Pressure Size—Apple Pencil, Force Touch trackpad, and Wacom pens drive the nib size across the full 1–16 range, with Ease In/Linear/Ease Out curves and an Invert toggle
- Symmetry—Mirror every pixel across the canvas centre horizontally, vertically, or both ways for instant 4-way symmetry, with any brush or tool
Palette Organiser
Colour is everything in pixel art!
- Draw with three colours at once—plain paints primary, Option paints secondary, Command paints the eraser colour (transparency by default); switch between all three mid-stroke, no trip back to the palette
- Quick switch with X and Shift+X
- 16 built-in presets: Atari ST, Commodore 64, EGA, GB Studio, Macintosh Color, Macintosh Mono, NES, PICO-8, PICO-8 32-colour, Picotron, Psion 16-colour, Psion 4-level Greyscale, Psion 16-level Greyscale, Sweetie 16, Windows, and ZX Spectrum
- Palettes hold up to 256 colours, with Cmd-click colour protection so in-use swatches can’t be removed
- Swatch tooltips show hex code, pixel count, and percentage of canvas use
- Gradient generation and Lospec import
- Palette files—import ten formats including GIMP, Photoshop, Adobe Swatch Exchange, and PNG swatches; your own palettes save as spec-exact Simple Color Palette files, complete with a Quick Look preview
- Ten sorting modes including hue, brightness, luminance, temperature, and usage
- Swap a palette and the artwork follows—replacing the active palette remaps every pixel, vector colour, and embedded pixel object by palette position, in one undoable step; different-sized palettes map proportionally, and colours that were never in the old palette stay put
Layer System
Layers are the secret weapon of serious pixel artists!
One flexible building block, shown different ways by the mode—layers stack into the composite image, double as animation frames, and lay out as tiles in tileset mode. Only in Dottie!
- Per-layer visibility and opacity (0–100%), with number keys 1–0 for quick steps
- Five modes, one keystroke each: Composite, Onion Skin (ghost the layers above and below to line up animation frames), Solo, Tileset, and Animation
- New, duplicate, merge down, rename, centre, and reorder—each a single keystroke
- Merge Visible and Flatten Image to collapse the stack when you’re done
- Lock a layer to protect its pixels while still reordering, renaming, and hiding it
- New Layer with Selection, or with the selection cut from the layer below
- Contextual Delete—clear a whole layer, or just the active selection, optionally filling with your primary or secondary colour
- Option-click a layer’s eye to flip the visibility of every other layer at once
- Reference image—a non-editable, aspect-fitted underlay to trace over, shown, hidden, or removed at will
- Layer and document notes—free-text notes on any layer or the whole document, with a badge for noted layers
- Auto-generated thumbnails
Tileset Tricks
Switch a layer to Tileset mode and edit a sprite sheet in place:
- Every tile is composed into its sheet grid, so the whole sheet pans and zooms as one
- Edit in context—click a tile and it goes active and takes the stroke in the same gesture, with its real neighbours visible all around it;
⌘-click switches tiles without painting - Cross-tile editing—freehand tools, fill (including the gradient), and shapes all span tile boundaries so edges always line up, and the eyedropper picks from whichever tile is under the cursor
- See-through boundaries—tiles are separated by thin transparent gaps rather than hairlines, so each one reads as its own island while you draw freely across them
- Rearrange on the sheet—hold
⌘and drag a tile to another cell to move it there, with the target cell highlighted (Escape cancels) - Tile menu on the canvas—
⌘-right-click any tile for Select, Duplicate, Clear, Shift, or Delete without leaving the artwork - Active-tile badge—hold
⌘for a corner readout of the active tile’s number, grid position, and name - Shift Tile wrap-offsets the active tile to bring a seam to the middle, paint it out, then shift back—perfect for self-tiling textures
- Wrap Tiles turns the selected tiles into a seamless self-wrapping group, with a live preview ring of wrapped copies around the edges; strokes, fills, shapes, and the Smudge tool all continue on the opposite edge
- Zoom to Tile fits the selected tile to the window, with neighbours spilling around it
- Split into Tiles carves the canvas into a grid of tiles, one per cell, and Merge Tiles into Canvas reassembles them into a single layer
- Re-flow the grid to any column count—drag the rail at the sheet’s right edge for a live column badge, with a matching rows rail along the bottom, or set it from the menu
- Grid column count is detected on sprite-sheet import and saved with the document
Vector Layers
Keep your pixels crisp and fluid at the same time!
- Draw with the familiar shape and pen tools, plus a dedicated Poly Line tool for whole-pixel, multi-vertex paths; the tool grid swaps to a vector set automatically
- Select and reshape—click an object for a bounding box, drag the handles to resize, or hold Cmd and drag to free-rotate
- Node editing—double-click a path to edit it point by point: drag nodes, click an edge to insert one, or delete a node and its neighbours reconnect
- Multi-select—Shift-click to add, Option-click to subtract, or rubber-band a whole group at once; Control-click reaches through to the topmost object on any visible vector layer and makes that layer active
- Split at Node breaks an open path into two objects at the selected node, and Merge Objects bakes a selection down into one
- Recolour live—selecting an object adopts its width and colour, and clicking a palette swatch repaints every selected object
- Fill an object—rectangles and ovals fill solid, or Cmd-click for outline-only; the fill stipples with the active dither level or custom pattern, exactly like the pixel canvas
- Arrange objects forward and back within the layer, and copy, cut, and paste them like any other selection
- Groups—bundle objects with
⌘G, nest them arbitrarily deep, double-click to descend and edit inside, and name a group for SVG export - Pixel objects—drop raster bitmaps in as movable objects, and convert any object—or a whole layer—to and from pixels, losslessly. Convert to Vector Layer wraps a pixel layer’s content as a single movable object, and Convert to Pixel Layer bakes it back down; both round-trip in one undo step
- SVG interop—copy objects as SVG to paste into other vector apps, and paste SVG shapes back in as editable objects
- Every object keeps its stroke width, colour, dither, and pixel-perfect setting, with named undo for every edit
Canvas & Transform
Start with any canvas size you like, then bend it to your will!
New Document
- Begin blank at any size, or pick a preset—sprite sizes (8/16/32/64) and retro systems like Apple IIc, Atari ST, DOS, Electronika BK, Famicom, GBA, GBC, Macintosh, Mega Drive, and Super Famicom, each with the right pixel aspect ratio and a matching palette
- Save your own presets, and Option-click New to skip the dialog when you already know what you want
Transform
- Resize canvas with 9-position anchoring
- Scale image up or down
- Canvas size ceiling you can raise to 1024, 2048, 3072, or 4096 px
- Custom pixel aspect ratios for authentic retro looks
- Flip horizontally or vertically
- Rotate the whole canvas—or just one layer—left or right
- Nudge whole layers or single layers pixel by pixel with arrow keys
- Type maths straight into any numeric field, like
128*2
Grid & Navigation
Find your way around the canvas, at any zoom.
Grid
- Toggle the grid with a single key
- Choose Gridlines, Centre Dots, Corner Dots, or Crosshairs
- Dial in grid opacity from 25% to 100%, and grid line width from 0.5 to 4 px
- Grid size—the drawing lattice, saved per document and typically 1×1; pick a preset or type your own pair
- Tile size—an optional coarser interval, from 8×8 up to 128×128 or off entirely, drawn as a thin see-through gap along every tile boundary so each tile reads as a separate island. Never finer than the grid, and independent of grid style and opacity
- Cells appear once they’re at least 8 points wide, so an 8×8 tile shows at 1× while the 1px lattice waits for 8×
- New documents take their grid and tile defaults from Settings
Zoom & Pan
- Zoom In, Out, Fit Window, 100%, or toggle between two levels
- Pinch or Cmd/Option-scroll to zoom, always anchored on your cursor
- Scroll, two-finger drag, Space-drag, or the Move tool to pan
- Zoom slider right in the sidebar
Animation Fun
This is the really exciting part!
- Frame-based animation with a configurable rate and live preview
- Explicit frames—each frame controls which layers are visible; add, delete, and navigate them from the Animation panel
- Timeline strip under the canvas—a thumbnail per frame; drag to reorder or scrub, edit any frame’s duration inline, add a frame from the trailing “+” tile or delete one from its hover badge, and drive it all from a transport cluster with play/pause, step, and loop
- Per-frame duration—give any frame its own timing, or fall back to the document rate
- Frame tags—name a range of frames, give it its own loop mode (forward, reverse, or ping-pong), and export just that tag
- Playback scope—play the whole document or just one tag, at ½×, 1×, or 2× preview speed
- Sidebar and floating preview windows with independent playback
- Export as a sprite sheet, an animated GIF, or an animated APNG with full 8-bit alpha
A REAL MAC-ASSED APP
Dottie is a true Mac application!
- Document-based multi-window architecture
- Metal-accelerated canvas keeps pan, zoom, and drawing smooth on large images, with ProMotion refresh rates up to 160Hz
- Autosave and restore—new and unsaved documents come back after a relaunch
- Settings window with six panes: General tool preferences, Grid defaults, Display, New Document defaults, your saved Presets, and Experimental
- CRT filter—an optional on-screen scanline effect for the canvas, the previews, or both, with adjustable intensity and thickness and a 100%-zoom-only option. Display only; it never touches your pixels
- Full Screen and Dark Mode support
- Toggle the inspector, sidebar preview, metadata, and timeline panels from the Window menu
- Coordinates panel—a floating readout in the style of classic Mac coordinate palettes, tracking cursor position, drag size, and angle/distance for any drawing or selection action
- Quick Look previews and thumbnails
- Window position and zoom restored per document
Plugins & Scripting
Make Dottie your own!
- JavaScript plugins—install a loose script or a full package with a manifest; plugins can register commands, importers/exporters, and pointer tools, and they show up in the right menu automatically
- Document API—inspect and transactionally edit selections, palettes, layers, pixels, animation frames and tags, and canvas geometry, with locked and vector-layer protections enforced by the host
- Native command dialogs—declarative parameter UI and colour pickers, with atomic transactions that roll back cleanly on error
- Runs sandboxed—file access limited to files you explicitly choose, with heavy work off the main thread and cancellable
- Worked examples ship in the box: isometric projection, configurable shadow/extrude, and palette-range remapping
- Full AppleScript and JavaScript (JXA) support—script undo, colours, pixels, canvas size, zoom, tools, and shapes
Import & Export
Dottie speaks every format you need!
- Import & Export
PNG, GIF, TIFF, BMP, ICO, PICO-8, XPM - Import Only
PSD, TGA, PICT, MacPaint, ICNS, CUR, Piskel - Export Only
APNG, SVG
Optimised
- Only 3.5 MB app download size
- Less than 120 MB base memory footprint
How Dottie Compares With The Competition
| Dottie | Aseprite | Pixen | |
|---|---|---|---|
| Native Mac app | ✓ | Hybrid | ✓ |
| Animation | ✓ | ✓ | ✓ |
| Layers | ✓ | ✓ | ✓ |
| Onion skinning | ✓ | ✓ | ✓ |
| Pixel-perfect strokes | ✓ | ✓ | ✓ |
| Pressure sensitivity | ✓ | ✓ | ✓ |
| Sprite sheet export | ✓ | ✓ | ✓ |
| Custom patterns | ✓ | ✓ | ✓ |
| Quick Look previews | ✓ | – | ✓ |
| Tileset editing | ✓ | ✓ | – |
| Edit tiles in context | ✓ | ✓ | – |
| Tile wrap | ✓ | ✓ | – |
| Symmetry mode | ✓ | ✓ | – |
| Trace layer | ✓ | ✓ | – |
| Custom palettes | ✓ | ✓ | ✓ |
| Lospec import | ✓ | – | – |
| Erase as third colour | ✓ | – | – |
| Dither ink (all tools) | ✓ | – | – |
| Multiple previews | ✓ | – | – |
| ProMotion support | ✓ | – | – |
| Vector layer | ✓ | – | – |
| Offline manual | ✓ | – | – |
| Scripting | AppleScript, JXA | Lua | – |
| Plugins | JavaScript | Lua | – |
| App size | 3.5 MB | ~70 MB | ~20 MB |
Back To The Future
Some of Dottie’s ideas aren’t new at all! They’re borrowed from or inspired by vintage software for classic Macintosh or Japanese computers. These long-forgotten apps got a lot right, and those things are still useful today!
Here’s an online mirror of Dottie’s current Help book—the full manual, exactly as bundled in the app!
Connect your iPad to your Mac as a Sidebar display, and you’ll be able to move the Dottie window to that display. This way you’ll be able to use Apple Pencil with pressure sensitivity to draw at 120Hz.
In other news: a stand-alone iPad version is in development, but the user interface is being adapted so it needs a little more time in the oven. But get in touch if you have time to test it! But, please buy Dottie for what it is today not what it will be in future.