HappyPaint — User Guide
A browser-based raster painting app inspired by Procreate & Krita: natural-media brushes, layers with blend modes, pressure/tilt input, and multi-touch gestures. This guide documents every tool and setting so you can get going without looking anything up elsewhere.
New here? Jump to Overview for the 60-second mental model, then Tools and Shortcuts & gestures.
Overview
Paint on a stack of layers with a chosen tool (brush, eraser, fill, …). Each layer is a GPU texture; the engine composites them through the viewport every frame. Documents autosave to your browser (IndexedDB) and can be saved as a portable .happypaint file, exported to PNG/JPEG, or interchanged as PSD.
First drawing in 4 steps: (1) open the gallery and click New drawing; (2) pick a size (plus paper, colour depth and a background colour — or a transparent canvas) and press Create; (3) choose a brush and color in the header and paint with mouse, pen, or finger; (4) it autosaves — find it again in the gallery anytime.
Managing drawings: each gallery card has quick actions — Rename (pencil), Duplicate (copy), and Delete (trash) — so you can tidy up your library without opening a document.
Guided tour & What’s new: the first time you open the editor, a short guided tour spotlights the toolbar, canvas, layers and status bar. You can skip it, and replay it anytime from the ? Help dialog (“Take the tour”). Tapping the version number in the status bar (or the gallery footer) opens What’s new — a list of recent features and fixes with a button to check for the latest build. A small dot on the version appears when there are new changes you haven’t read yet.
Coordinate spaces are explicit: screen pixels (what you touch) convert to document pixels (the canvas) through the viewport transform — so painting stays accurate at any zoom/rotation.
Workspace

- Header — document name, brush Size / Opacity, color, brush dynamics, guides, image insert, camera, reference window, layers toggle, adjustments, record, save/export, View menu, theme, settings, and live zoom.
- Tool dock — a floating, draggable grid of drawing tools. Drag the top handle to move it; double-click it (or the toggle) to flip vertical/horizontal; drag the dotted right-edge grip to change how many icon columns it shows. Drag it to the left or right screen edge to pin it as a rail (the canvas reflows around it); drag the handle away to float it again. Layout is remembered.
- Status bar — save state, active tool/brush, color, cursor position, document size + DPI + bit-depth (+ a “P3” badge on wide-gamut docs), layer count, rotation dial, zoom, and undo/redo. Click the size/DPI area to open Document properties.
- Layers panel — the layer stack with opacity, blend mode, masks, and per-layer actions. The layer menu's Metallic paint toggle turns a layer's paint into metal: flake glints and the paint's own colour tinting the reflection (gold paint glints gold) — and the shimmer moves as you rotate the canvas, like tilting a gilded page. Pairs beautifully with the thick Impasto/Oil brushes, whose ridges catch the light. A Metallic strength slider appears in the panel footer while it's on, and the color picker's Metals row has ready-made gold, silver, copper, bronze, rose gold, emerald and gunmetal base colours.
- Dockable panels — drag the Layers, Brush, Brushes & presets, Reference, or Color panel by its title bar to tear it off into a floating window, or drop it at the left or right edge to dock it there (Photoshop/Krita style). A docked color palette stays open while you paint — no reopening the popover per pick. Panels docked to the same edge stack vertically — e.g. Layers on top with the brush library below, both visible at once. While you drag, the edge lights up and an insertion line shows the exact slot the panel will land in. The divider between sections drags to rebalance their heights, and a dock's inner edge drags to resize its width. Sections work like an accordion: the chevron in a docked panel's title collapses it to a slim strip (click the strip to expand), and its space flows to the other panels. A docked brush library stays open while you paint — pick brushes without reopening it. Layout persists across sessions; More → Reset panel layout restores the defaults. (Compact/phone layouts keep their slide-in drawers instead.)
- Pick up where you left off — each document remembers its working state: zoom/pan/rotation, active tool and layer, the brush (with your tweaks) and color. Reopen the document and the canvas looks exactly as you left it. Open docked panels come back too. New documents start with your last-used tool, brush and color (instead of factory defaults) — new canvas, same brush in hand.
- Zen mode — Tab (or a four-finger tap) hides all chrome for a full-screen canvas; a floating button or the same gesture brings it back.
Canvas & navigation
Pan, zoom, and rotate at any time; painting always maps to document space.
| Zoom | Pinch, Ctrl/⌘+wheel, +/− keys, or the status-bar buttons (5%–6400%). |
| Pan | Two-finger drag, scroll wheel, the Pan tool (H), holding Space with any tool, or a middle-mouse drag. |
| Rotate | Two-finger twist, Shift+wheel, Ctrl+[ / Ctrl+] (15° steps), or the status-bar dial. Snaps near 0/90/180/270°. |
| Fit / 100% | Quick pinch-in, or 0 (fit) and 1 (100%). |
| Reset rotation | 5, click the rotation dial, or double-click its degree label. |
| Grayscale view | Ctrl+Y (or the status-bar contrast toggle) shows the artwork in grayscale to check values — non-destructive: your layers and exports stay in colour. |
| Print preview | View → Print preview (CMYK proof) shows your artwork as the press prints it: separated into C/M/Y/K inks with realistic (impure) ink colours and dot gain, then printed back. Colours the press can reach are left alone — a muted sky or a skin tone should barely move — and only genuinely unprintable ones shift, which is what makes the preview worth trusting. Saturated screen greens and blues are the ones that dull. Non-destructive: toggle it off and the screen is back to normal. |
| Proof options | Under Print preview, once it is on. Press names the press being simulated — the built-in generic coated model, or click to load your own .icc. Simulate paper white tints the whole preview with the stock’s own colour, and Simulate black ink shows ink black as the dark grey it really is instead of screen black. Both are off by default (as in other proofing apps): they make the preview look washed out, which reads as a broken preview rather than as information. Turn them on when you want the absolute rendering — what the printed sheet will look like next to your monitor. |
| Non-printable colours | View → Non-printable colours paints every pixel the press cannot reproduce in flat red — the gamut warning proofing apps show. Click again to tighten the threshold from ΔE 5 (visibly different) to ΔE 2 (strict), and once more to turn it off. It works with or without Print preview: the preview shows what a colour becomes, this shows where the press had to move it. |
| View menu | The eye button in the header collects non-destructive toggles — Grayscale, Print preview (with its press and proof options), Non-printable colours, Fill mode, and Symmetry mirrors — for one-tap access on tablets (kept separate from Adjustments, which bakes pixels). |
| Transparency | Transparent areas show a checkerboard so you can see the canvas bounds. |
Tools

A tool decides what a stroke does on the active layer. The brush, eraser and smudge tools all paint through the brush engine, but each keeps its own brush — preset, size, opacity and all — so choosing a proper eraser never disturbs the brush you were drawing with. The other tools have their own options, described below.
| Brush (B) | Lays down the current color with the active brush preset. Pressure and speed drive size/opacity so lines taper naturally. |
| Hold E | Temporary eraser. Hold E, erase the stray line, let go and you are back on the pencil — no round trip through two keypresses. Tapping E still latches the eraser as before; the difference is whether you held the key (or drew while it was down). |
| Eraser (E) | Same brush mechanics, but removes pixels (paints transparency) instead of colour — soft brushes erase softly. It keeps its own brush, size and opacity: pick a different eraser, size it up, take it to 100% to wipe an area, and the brush tool is left exactly as you had it (brush, eraser and smudge each remember their own, saved with the document and carried into new drawings). |
| Choosing an eraser | Open the brush library with the eraser active and it shows the Eraser brushes only — one panel that changes with the tool, so you never scroll past ninety painting brushes hunting for an eraser. Six of them: Hard (flat, grainless, full flow — one pass clears completely), Soft (feathered, for blending an edge back), Square Hard (clears into a corner with no scalloped edge — the classic block eraser), Square Soft, Spatter (breaks an edge into flecks, for distressing rather than clearing) and Textured (grainy and short of full flow — a kneaded-eraser feel for lifting tone off charcoal). Tap “All brushes” for the full library: any brush works as an eraser if you want its exact texture, and that choice sticks to the eraser alone. Why the default matters: erasing with a textured painting brush like the Pencil removes only part of the alpha per dab and leaves speckle in the grain, so a mark takes three or four passes to clear. |
| Fill (G) | Flood-fills a connected region with the current color. Tolerance controls how different a neighbouring pixel can be and still be filled; “Grow” expands the fill a few px to tuck under anti-aliased outlines (no 1px halo). |
| ColorDrop | Drag the status-bar colour swatch onto the canvas to flood-fill; pause to lock the seed, then slide to set the threshold live, release to commit. |
| Fill mode (F) | A brush modifier (brush panel / status bar / press F): the stroke fills its closed silhouette with flat colour — draw a loop, get a filled shape. It fills at the brush Opacity, so a translucent fill stays translucent and overlapping shapes build up; edges are anti-aliased. Live preview at that same opacity; commits on release; self-crossing scribbles fill their pockets (even-odd); honours Symmetry and alpha lock. |
| Move / Transform (V) | Repositions, scales, rotates and flips the whole layer — or just the selected pixels if there’s a selection. Corner handles scale uniformly, edges stretch one axis, the top handle rotates, and dragging an edge handle past the far side mirrors. The toolbar adds Flip H, Flip V, rotate ±15° and scale ±10% buttons, plus Distort & Warp modes (see Selections & transform). Enter applies, Esc reverts. Ctrl/⌘+T selects the tool in the installed app; in a browser tab that shortcut belongs to New Tab and cannot be intercepted, so use V. |
| Pan (H) | Drags the canvas around — no pixels are touched, so it works on any layer (including text and path layers, where painting is blocked). Hold Space with any tool for a temporary pan, or drag with the middle mouse button; the wheel and a two-finger drag pan too. |
| Smudge (S) | Picks up paint under the brush and drags it, smearing colors into each other (blending, soft shading, hair/fur). Strength sets how much it pulls. |
| Gradient | Drag a line to lay a linear gradient from the current color to transparent; the drag sets its direction and length. Confined to the selection if one exists. |
| Liquify | Warps existing pixels like wet paint — Push shoves them along the drag, Twirl swirls, Pinch/Expand pull in or push out, Reconstruct eases them back. Size sets the radius; Strength the intensity. |
| Text (T) | Editable, resolution-independent text layers (see the Text section). |
| Pen (P) | Draws editable vector paths (a path layer, re-strokeable with any brush). Two modes (the Anchor | Curve pill in the options row): Anchor — click to drop corner points, click-drag for smooth Bézier curves; Curvature — just tap a series of points and a smooth curve is fitted through them. Finish the path the same way in both modes: click back on the first point to close it, double-tap (or press Enter) to finish it open, Backspace removes the last point, Esc cancels. Options: Fill the closed path, Snap anchors to the grid/guides, Constrain handles to 45° (the keyboard-free stand-in for Shift), and a tablet edit mode (move / add / delete / corner⇄smooth points). Convert to paint layer to bake it to pixels. |
| Selections | Rectangle (M), ellipse, lasso (L), polygon, and magic wand (W). Everything outside the selection is protected. |
| Eyedropper (I) | Samples the colour under the cursor exactly as you see it — impasto relief and paper tooth included — with a Procreate-style loupe showing old/new. Three ways in: the toolbar pipette (or I) latches it as a tool, so a press-and-drag on the canvas samples with no modifier at all (the tablet-friendly route); Alt+drag (mouse/pen) or touch-and-hold (finger) samples without leaving the tool you’re painting with. Drag to hunt for the exact pixel — the colour updates live and lands in Recents when you lift. |
Brush engine
A stroke is drawn by stamping the brush tip repeatedly along its path; dynamics (pressure, speed, tilt) modulate each stamp’s size, flow and shape. Brushes are just data presets, so every preset is a starting point you can tune and save as your own. Open the brush panel from the header to adjust the active brush; the Library button holds all presets and your saved brushes.

Creating, saving & importing brushes
- Open the Library and pick the preset closest to what you want — it loads as the live brush.
- Tune it with the controls below. The preview shows a sample stroke; the Try scratch area lets you scribble to test the feel without touching your artwork.
- Reopen the Library, type a name, and click Save current — it captures every setting as a new brush under My brushes (built-ins can’t be overwritten). Custom brushes persist in your browser and can be deleted from the library.
- Capture a tip from what you drew (define a custom stamp from the active layer / selection), or Import a file — a PNG/JPEG image becomes a single brush tip, while a Photoshop .abr or Procreate .brush/.brushset imports the whole pack: every sampled tip lands under My brushes with its original name, and texture patterns / Procreate grains join your custom grain library (a Procreate brush keeps its own grain attached). Imported brushes keep their parameters, not just their tips: size, spacing, tip angle & roundness, pressure controls with their minimum floors, size/opacity jitter, scatter, rotation dynamics, wet edges, airbrush build-up and even dual-brush textures map onto the equivalent HappyPaint settings (the full source→target table lives in the project's brush-import spec).
- Share your brushes — every custom brush has a download button (and the library has an Export button for the current brush) that saves a .happybrush file: an open, documented format (a plain zip with the settings as JSON plus the tip/grain as PNGs — inspectable with any unzip tool). Import them back on any HappyPaint install with full fidelity.
Imported and captured brushes persist in your browser (tip bitmaps are stored in IndexedDB, so even multi-hundred-brush packs survive reloads). If storage is unavailable — some private browsing modes — the import still works for the current session and the notice will say so.
Presets are organised into categories — Sketching, Ink, Marker, Paint, Watercolor, Airbrush, Charcoal & Chalk, Texture & FX, Effects — each tuned for a different natural-media feel. The Effects category includes Glow, Fire, Sparkle, Embers, plus Clouds, Fog, Smoke, Nebula, Starfield and Lightning. Watercolor washes (Watercolor Wash, Dry Brush) dry with a darker edge — as each stroke settles, pigment gathers at the rim and granulates into the paper grain, like a real wash drying on paper. The Live watercolors (Watercolor Live, Wet-on-Wet Live, Water) go further: the paint stays wet after you lift the pen — washes keep spreading, bloom into other wet strokes, and settle into the layer as they dry over a few seconds. A 💧 Dry chip appears at the bottom of the canvas while paint is wet; tap it to settle everything at once. Next to it, the round tilt pad tips the canvas: drag the dot and wet paint runs downhill in that direction (drips and gravity washes); double-click the pad to level the canvas again. Wet paint has momentum: runs ramp up as gravity takes hold, coast a little further after you level the canvas, and deep puddles spread toward their shallow edges on their own — so fresh water pushed into a drying wash blooms back into it. The Water brush lays pure water (no pigment): it pushes still-wet paint around, and it re-wets dried paint — scrub a dried wash and the pigment lifts back into the water to bloom, run and edge-darken again (firm pressure dissolves faster, like scrubbing with a wet brush). The Blow brush is a directed air stream — it carries no paint or water and simply shoves whatever is currently wet along your stroke, like blowing through a straw on wet ink (it does nothing on a dry canvas). Every Live brush also has Water and Pigment sliders in the brush panel's Fluid section (wetness per dab vs paint load; pigment 0 turns any Live brush into a water brush). The document's paper (chosen in the New-drawing dialog) shapes all of it: rough tooth drinks water so washes dry unevenly, slows the spreading front into ragged fingers, and granulates — pigment lodges in the paper's valleys as it settles. Wet paint dries automatically before undo, layer switches, transforms and exports. In the Paint category, Oil Paint Live is paint that stays wet on the canvas: unlike watercolor it doesn't spread or dry on its own — come back a minute later with a knife, the Fan Blender or Blow and it still moves; dry it deliberately with 💧 Dry (undo, layer switches and exports dry it automatically). Impasto and Oil Paint lay thick paint: strokes build up real height and catch the light along their ridges, like oil straight from the tube — and the relief is baked into PNG and JPEG exports along with the paper's tooth, so the file looks the way the canvas does. Erasing takes the relief with the paint, so an area you clear goes properly flat before you paint it again.
Output & coverage
Size vs Opacity vs Flow are the three that trip people up. Size is how big. Opacity caps the whole stroke — overlapping passes within one stroke never get darker than this. Flow is how much paint each stamp drops: low flow builds up gradually as stamps overlap (soft shading), high flow goes solid at once.
| Size | Stamp diameter at full pressure (1–500 doc px) — the maximum width of the mark; pressure scales it down. [ and ] nudge it. |
| Brush size follows | What zooming does to your brush — a global setting (it applies to every brush), in the brush panel and Settings. Canvas: the size is a fixed width in the drawing, so zooming in makes the mark look thicker on screen — Krita/Photoshop behaviour, and the default. Screen: the size is in screen pixels, so the mark keeps the same on-screen thickness however far you zoom — Procreate behaviour, handy for detail work where you want the same visual line weight while zoomed right in. To see the difference, zoom to 400% and draw one line in each mode. The choice is baked in when a stroke starts, so zooming mid-stroke never changes its width. |
| Opacity | The stroke’s maximum strength (1–100%): a ceiling one pass won’t exceed — predictable, even coverage. |
| Flow | Paint laid per stamp (1–100%). Low + overlap = gradual build-up; high = opaque immediately. |
| Blend | How the stroke combines with the layer (Normal, Multiply, Screen, …). A Multiply brush deepens shadows; Screen/Add paints glow — without a separate layer. |
| Wash | Non-buildup mode: coverage tops out at the opacity instead of darkening with every overlap — a flat marker rather than layered ink. |
| Even build | Smooths build-up so overlapping stamps accumulate evenly regardless of spacing — removes darker “seams” where dabs overlap. |
Tip shape & smoothing
| Spacing | Gap between stamps as a fraction of size (2–200%). Tight = a smooth solid line; wide = a dotted/stamped trail. |
| Hardness | Edge falloff (0–100). 0 is a soft airbrushed edge that fades to nothing; 100 is crisp. |
| Smooth | Stabilizes shaky input (0–100%). Higher irons jitter into clean curves but adds a little lag. |
| Stabilizer | Optional pulled-string smoothing (per brush): the brush trails the cursor on a leash whose length scales with Amount — great for long, confident inking curves. |
| Dual brush | A second image tip carved into each dab (rotates/scales with the stamp) for textured, masked tips. Needs a dry brush — it has no effect while Wet is above 0. |
| Paper | How hard the document paper’s tooth bites this brush, 0–100%. Dry media (pencil, charcoal, pastel, Dry Ink) ship at 100% — that is what makes paper mean anything. Ink, gel pens and screentone ship at 0 and markers at 20%: they are wet or solvent media that flood the tooth, and a high-contrast ink line should not break up into pencil speckle. Turn it up on an ink brush if you want a dry-pen look. |
Pressure & tilt
How a pen’s pressure and tilt drive the brush. (No pressure hardware? Speed stands in, so fast strokes still taper.)
| Pressure | Overall pressure response — soft (eases in) to firm (reaches full quickly). The curve editor gives point-by-point control of pressure → size. |
| Size·P | How much pressure controls size: 0 = constant width, 100 = press-to-taper. |
| Flow·P | How much pressure controls flow/opacity. |
| Tilt | How far tilting a pen broadens/elongates the stamp, so you can shade with the side of the “pencil”. Drives chisel/calligraphy nibs (e.g. Chisel Marker, Chisel Inker) — pen only. |
| Speed→Size | Velocity sensitivity: faster strokes draw thinner (0 = constant, 100 = strong taper). Unlike pressure this works with a mouse, so it’s how you get a speed taper on hardware with no pen pressure. Multiplies on top of any pressure response. |
| Speed→Opacity | Faster strokes paint lighter — the opacity counterpart to Speed→Size, again mouse-friendly. |
Jitter (randomness)
| Scatter | Throws each stamp off the stroke path — spray, stipple, foliage. |
| Size·J | Varies each stamp’s size for uneven, hand-made line weight. |
| Angle·J | Randomly rotates each stamp — breaks up the repeat in textured tips. |
| Space·J | Varies the gap between stamps so the cadence isn’t perfectly even. |
| Hue·J / Sat·J / Val·J | Independently jitter each dab’s hue, saturation, and value for lively, painterly colour. Seeded from the brush, so they show (and let you tune) the preset’s own colour dynamics. |
| Press→Dark | Pressure darkens the dab colour — a harder press lays down a deeper, richer colour (deterministic, not random). Great for pencils/pastels. |
| Hue→Shift | Sweeps the colour along a single stroke (± half the wheel, deterministic) — one stroke gradates hue, e.g. the Marigold brush’s yellow→orange→red petals. Negative shifts one way round the wheel, positive the other. |
| Tip col | Two-colour load: blends from your current colour (base) toward this colour along the stroke — a literal “yellow base → red tips” paint load. Toggle Off for single colour. |
Taper
| Taper In | Thins the first N px so the stroke starts from a point — the clean entry of an inking pen. |
| Taper Out | Thins the last N px so the stroke ends in a point. |
Wet mixing (Mixer Brush) & pigment
Turns the brush into wet paint that smears and blends with what’s already on the canvas, like an oil/acrylic mixer.
| Wet | Dilution: how much of the colour already on the canvas the brush drags along (0 = dry, no pickup). It does not set how opaque the mark is — Load and Opacity do that. Turning Wet up used to thin the mark as a side effect, which made a fully loaded brush paint a ghost. |
| Load | How much paint is on the brush. This is what drives the mark’s opacity and contrast, and it depletes along the stroke — run it out and you are left with a pure smear. |
| Mix | Canvas-pickup vs reservoir ratio (0 = your brush color, 100 = all picked-up canvas color). At 100 the brush carries no paint of its own, so Load has nothing to lay down. |
| Pigment | Subtractive (Kubelka–Munk) mixing on wet brushes: yellow over blue makes green like real paint, not RGB averaging. |
| Blender | Turns the brush you already have into a blender — the same brush, blending instead of painting. It keeps its own tip texture (so the brush marks survive the blend, unlike the Smudge tool, which wipes them smooth), takes its colour from the canvas, and softens the impasto it crosses instead of piling more on. While it is on, Wet is labelled Oil (how much paint it drags, and how much impasto it levels) and Load is labelled Pigment (how much of your own colour still goes down — 20% is a thin glaze); Mix follows from Pigment, so it steps aside. Press harder for a stronger blend. Ready-made: the Oil Blender preset in Paint. |
Oil & Pigment — mixing your own paint
On a body-paint brush (one that builds impasto — Thick Paint, RGBA Oil, Impasto, Oil Paint, Oil Blender) the same two sliders are labelled Oil and Pigment, and they behave like the real thing whether or not the Blender is on. They are properties of the paint, not settings of the mixer.
| Pigment | How much colour is suspended in the medium. It drives the opacity of the mark AND how much impasto it stands up: thin it down and you get a transparent glaze that leaves no ridge for the light to catch; at 100% you get full body colour standing off the canvas. A low-Pigment pass is a real glaze — it will not build past its own limit inside one stroke, but repeated passes stack, exactly like thin oil. |
| Oil | How much vehicle is in the paint. It is how much of the canvas colour the brush drags along, and — with the Blender on — how much of the impasto it knocks down as it passes. An oily blender is fluid and levels the ridges it crosses; a lean one drags the paint while leaving the texture standing. |
The document paper’s tooth follows the paint: it only bites a surface it can still reach. Thick paint fills the weave as you lay it, so a loaded daub goes down solid while the thin, dragged edge of the same stroke still breaks up on the tooth — which is why a low-Pigment glaze shows the paper through it and a full-Pigment one does not.
A wet brush keeps your pressure dynamics — a brush pen still tapers with pressure when you wet it. But it paints through the mixer rather than stamping a tip, so Grain, Dual brush and the document paper have nothing to act on and are greyed out while Wet is above 0. Set Wet to 0 to get them back. (The tip texture is the exception: turn Blend on and the mixer shapes its dab with the brush's own tip.)
Grain (texture)
| Pattern | The paper/canvas/grain/halftone texture multiplied into the mark (or none) — gives the brush its tooth. |
| Scale | Texture tile size in doc px: small = fine tooth, large = coarse grain. |
| Amount | How strongly the texture shows through (0 = smooth, 100 = full tooth). |
Under the hood, dynamics map sensors (pressure, speed, tilt, drawing angle, distance, fade, random) through editable curves onto size/flow/rotation/scatter — the foundation behind every slider above. The brush editor has a lot of controls, so there's a search box at the top — type “grain”, “tilt”, “velocity”… to filter the panel down to the matching sections.
Choosing a brush for the job
| Silhouettes / solid blocking-in | Ink — fully opaque (Opacity 100, Flow 100, hard edge) with Size·P at 100%, so the width is driven entirely by pressure while the fill stays solid black. Sumi-e Brush is the expressive alternative (bigger, tilt + taper), though its light touches read lighter as well as thinner. For instant shapes, turn on Fill mode (press F) and draw a closed loop to fill its silhouette with flat colour. |
| Knife-edge blending | Palette Knife — a hard square tip that rakes along the stroke direction and smears existing paint with almost no deposit of its own (the “blender knife”). |
| Soft smear / edge softening | Blender (soft round, pure smear) pushes colour around; Fan Blender (bristle fan) feathers and softens edges. Both pick up the canvas rather than laying new paint. |
| Thick oil / impasto daubs | Thick Paint and RGBA Oil use colour (RGBA) tips — each dab is a loaded flat-brush daub with paint value + hue-break, Krita’s RGBA thick-paint feel. Thick Paint tints the daub to your colour; RGBA Oil paints the tip’s own baked oil colours. The Tip colour toggle (shown for these brushes) switches between the two: On = the tip’s baked colours, Off = your picked colour. Tip hue / sat / bright recolour the baked paint, so you can take the same daub into any colour family. |
Color

The current color is what the brush, fill, gradient and text paint with. Open the picker from the header swatch; it floats and can be dragged out of the way (it then stays open while you paint). Several ways to choose, all editing the same color:
| Square + hue | Hue on the strip, then drag inside the square for saturation (left→right) and brightness (top→bottom). |
| Wheel | Hue around the ring, saturation/value inside — handy for complementary/analogous hues. |
| Triangle | Hue ring + inscribed value/saturation triangle (classic painter’s picker). |
| H / S / V sliders | Type or drag exact Hue, Saturation, Value (and a hex value) for precise, repeatable colors. |
| Harmony | The hue ring with companion dots for the chosen relationship — complementary, split-complementary, analogous, triadic or tetradic. Tap a companion swatch to paint with it; + saves the whole scheme into the active palette. |
| Recent | Colors you’ve just used, kept so you can jump back without re-mixing. |
| Eyedropper | Sample a colour on the canvas: the Eyedropper tool (toolbar pipette / I) drags to sample with no modifier, or Alt+drag (mouse/pen) / touch-and-hold (finger) from any tool. A split-circle loupe shows old/new, and the picked colour joins Recents on release. |
Palettes
Swatches live in named palettes (Procreate-style): keep one palette per project or per artwork. The picker stays lightweight — a dropdown to switch palettes and the swatch grid — while the Palettes panel (the ⚙ Manage button, or dock it beside Layers) holds everything else. The + next to the hex field saves the current colour into the active palette; everything persists in the browser across sessions.
| In the picker | Switch palettes with the dropdown; tap a swatch to paint with it, drag to reorder, hover for ✕ to remove. |
| Palettes panel | One card per palette (tap to activate, preview strip, colour count) with rename, duplicate, export and delete; a roomy grid for the active palette below. Drag its title bar to float or dock it. |
| Import | Panel header → Import — opens Procreate .swatches, Photoshop .aco, Adobe .ase and GIMP .gpl files; each palette in the file arrives as its own named palette. |
| Export | On each card → writes that palette as a Procreate-compatible .swatches file (first 30 colours). |
| From image | Panel header → New from image — extracts up to 30 representative colours from a photo (median-cut) into a new palette named after the file. |
Working on several drawings
The strip above the canvas lists everything you have open. Click a tab to switch, ✕ to close, + to go back to the gallery. On a tablet the strip becomes a switcher button, because a row of tabs is the wrong shape next to a toolbar. If you would rather not have it,Settings → Documents → Open documents in tabs turns it off.
| Only one is loaded | The drawing you are looking at is the only one in memory — which is why keeping several open costs nothing. Switching reloads, and takes about half a second. |
| What comes back | Zoom, rotation and pan, the active tool, brush and colour, and the active layer are all saved per drawing, so a switch lands you where you left off. |
| What does not | The undo history of the drawing you leave. Finish an edit before switching if you might want to take it back. |
| Most tabs at once | Six by default (2–12 in Settings). Opening one past the cap closes whichever you looked at longest ago, saving it first. |
| Between drawings | Copy (Ctrl/⌘+C) in one, switch, paste (Ctrl/⌘+V) in another — it arrives as a new layer. A copy bigger than the drawing you paste into is cropped to fit. |
| Switching | Ctrl+Alt+← / → cycle the open drawings; both are rebindable in Settings → Shortcuts. |
Layers

Layers stack bottom-to-top; each is composited onto the ones below via its opacity and blend mode. Keeping line art, color and shading on separate layers lets you change one without disturbing the others. Open a layer’s ⋯ menu (or right-click / long-press a row) for all its actions; swipe a row for quick actions.
| Opacity | How strongly the whole layer shows over those below (0–100%) — fade a layer back without altering its pixels. |
| Visibility / Lock | The eye hides a layer from the composite (and export); the lock blocks any pixel edits. |
| Alpha lock | Paint only recolours the layer’s existing pixels — its silhouette/transparency never changes (great for shading inside a shape). |
| Inherit alpha | Clip the layer to the composited alpha of everything below it in its container (a whole-stack clipping mask). |
| Groups | Bundle layers under one folder with its own opacity/blend, applied to the group as a whole. Single-level (no nested groups). Select several rows (below) and hit Group. |
| Search & filter | The magnifier in the panel header opens a search box: type to narrow the list by layer name. The funnel beside it filters by kind (paint, text, vector path, adjustment, group, has-a-mask) and by attribute (locked, hidden, clipped, alpha-locked, masked, blend ≠ Normal, selected). Kinds and attributes are OR-ed within each list and AND-ed across them, so "text or adjustment, locked" is one filter. A group comes through whenever it matches or any layer inside it does. Reordering is off while a filter is on — a drop position means nothing when the row above isn't the layer above. |
| Select several layers | Ctrl/⌘-click a row to add or remove it, Shift-click to take everything between — or swipe a row right on touch. The bar above the list then acts on the whole set: Group, Merge, Duplicate, Lock, Hide, Delete. Dragging any selected row’s grip reorders them all together, and each action is a single undo step. The Move tool works on the whole set too: pick several layers, press V, and they move, scale, rotate, flip, distort or warp as one — each layer stays its own layer, nothing is flattened. Hidden and locked layers sit it out; selecting a group transforms what is inside it. |
| Actions | Add, duplicate, merge down, clear, delete, reorder (drag the grip), rename (double-click), and “Select pixels” (selection from the layer’s opaque pixels). Most of these also work on several layers at once. |
| Merge visible | Combine all visible layers into a new “Merged” layer on top, leaving the originals intact (Photoshop “Stamp Visible”). The panel header’s merge button (touch-friendly) or Ctrl/⌘+Shift+Alt+E. |
| Flatten image | Collapse the whole document into one layer, discarding the rest (hidden layers included). In any layer’s ⋯ menu. One undo step. |
Blend modes & what they do
A blend mode changes how the layer’s colors combine with the layers beneath — the heart of shading and lighting effects:
| Normal | Plain stacking — the layer covers what’s below (subject to opacity). |
| Darken group | multiply, darken, color-burn, linear-burn — only darken. Multiply is the go-to for shadows, glazes and ink (white disappears). |
| Lighten group | screen, lighten, color-dodge, add — only lighten. Screen/Add are for glows, highlights, fire (black disappears). |
| Contrast group | overlay, soft-light, hard-light — darken darks and lighten lights for contrast/pop. |
| Comparative | difference, exclusion, divide — invert/compare colors for high-contrast or alignment-checking effects. |
| Component | hue, saturation, color, luminosity — borrow one attribute. “Color” recolors art below while keeping its shading. |
Masks & clipping
Two non-destructive ways to control where a layer shows, without erasing its pixels:
| Layer mask | A grayscale companion to the layer (⋯ → Add mask). White reveals, black hides. With the mask active, painting/erasing edits the mask (black to hide, white to reveal) — the layer’s own pixels stay intact. |
| Edit mask / Edit layer | Toggle whether your strokes target the mask or the colour. The thumbnail shows which you’re editing. |
| Mask ops | Invert, Disable (keep but stop applying), Delete, Mask from selection (pack the current selection into the mask), and Selection from mask. |
| Clipping mask | Confines a layer to the opaque pixels of the one directly below — paint shading or colour “inside” existing artwork without spilling past its edges. Releases just as easily. |
Use a clipping mask to add shading on top of a base shape; use a layer mask to hide/reveal parts of a finished layer (e.g. fade an edge) you might want back later.
Adjustment layers
A non-destructive filter that lives in the layer stack and re-colours everything below it at composite time — so you can tune the look forever without baking pixels (Photoshop adjustment layers / Krita filter layers).
| Add | The sliders button at the top of the Layers panel opens a menu of adjustment kinds — pick one to drop an adjustment layer above the active layer. |
| Edit | Select the adjustment layer; its parameters appear in the panel footer. Drag to re-tune live (one undo step per drag). |
| Scope | By default it affects the whole stack below. Turn on its Clipping mask to scope the effect to just the single layer beneath. |
| Mask it | Add a mask to the adjustment layer and paint it to limit where the effect applies (e.g. brighten only a face). |
| Opacity | Acts as effect strength — dial the adjustment back without changing its parameters. |
| Bake | “Merge down (bake)” applies the adjustment into the layer below and removes the adjustment layer. |
Kinds available as adjustment layers: Brightness/Contrast, Hue/ Saturation, Black & White, Color Balance, Levels, Curves, Gradient Map, Posterize, Threshold, Invert, Replace Color, Selective Color+, Gaussian/Motion Blur, Sharpen, Noise, Chromatic Aberration, Bloom, Halftone, Glitch. You can’t paint on an adjustment layer (only on its mask).
Selections & transform
A selection masks the canvas so painting, fills, adjustments and transforms only affect the chosen area. Marching-ants show the boundary; deselect to paint freely again.
| Make | Rect (M) / ellipse / lasso (L) / polygon / magic wand (W, tap a colour). Shift = add, Alt = subtract, Shift+Alt = intersect. Hold Shift while dragging a rect/ellipse to constrain to a square/circle; with the polygon lasso, Shift constrains a segment to 45°. |
| Magic wand | Selects a colour region — Contiguous (connected) or global (all matching), with a Tolerance slider. |
| Refine | Expand / Contract / Smooth the selection by a set Amount in pixels — type it in the toolbar field (1–200) and click, so trimming 20px off a lasso is one click rather than ten. Feather gives the edge a soft falloff. |
| Commands | Select all (Ctrl+A), invert (Ctrl+Shift+I), deselect (Ctrl+D). |
| Selection ↔ mask | Turn a selection into a layer mask, or load a mask back as a selection (layer ⋯ menu). |
| Transform (Move tool) | Move/scale/rotate the layer or just the selected pixels. Enter commits, Esc cancels. |
| Distort | Free 4-corner / perspective transform — drag each corner independently. |
| Warp | Mesh warp — drag a control lattice to bend the pixels smoothly. |
Adjustments & filters

Adjustments re-process the active layer’s existing pixels (they don’t paint new color). Each opens a live preview — drag sliders, then Apply or Cancel. With a selection, only those pixels change. Want it non-destructive and re-editable forever? Use an adjustment layer instead.
| Brightness & Contrast | Brightness shifts lighter/darker; contrast pushes lights and darks apart or together (±100 each). |
| Hue / Saturation / Brightness | Rotate all hues (±180°), make colours more vivid or muted, lighter or darker. For recolouring and mood. |
| Curves | Reshape the tonal response by bending a curve — lift shadows, drop highlights, add an S-curve for contrast. |
| Levels | Set input black/white points + gamma and the output range — quick contrast and tonal mapping. |
| Color Balance | Push midtones along Cyan–Red, Magenta–Green, Yellow–Blue to warm/cool or correct a cast. |
| Gradient Map | Map tones by brightness onto a multi-stop gradient — drag the bar to add colour stops, drag them to reorder, double-click to delete, click to recolour. Two stops = a duotone; more = rich stylized grades. |
| Black & White / Invert / Threshold / Posterize | Desaturate with control; invert colours; 1-bit luminance stencil; reduce to N tone steps. |
| Replace Color / Color to Alpha | Recolour pixels near a target colour (preserving shading); or knock a colour out to transparency. |
| Selective Color+ | Grade by sampled colour range: eyedropper a colour off the canvas, set how far the selection Reaches and how soft its edge is, then shift that range’s Hue / Sat / Val. Stack up to 8 samples — skin, sky and foliage each graded separately in one adjustment, and overlapping ranges blend instead of fighting. Tick Show range to see exactly which pixels are selected (red) and which aren’t (dimmed). |
| Blur / Sharpen / Noise | Gaussian (uniform) and Motion (angle+distance) blur; sharpen edges; add (mono) noise to fight banding. |
| Effects | Bloom (glow bright areas), Chromatic Aberration, Halftone dot screen, Glitch (RGB split / row-tear). |
| Line Art | One-click photo → line art (Sobel edges or inky XDoG) onto a new layer above the source — a base to ink over. |
Text
The Text tool (T) creates text layers— a dedicated, non-raster layer kind. Text stays editable and resolution-independent until you rasterize it. Set font, size, colour, alignment, bold/italic, outline, background, line height and letter spacing in the floating Text panel. Commit with ⌘/Ctrl+Enter or by clicking away; Esc cancels.
| Add text | Click empty canvas to type. If a text layer is active the new text is added to it (multiple text objects per layer); otherwise a new text layer is created. |
| Edit | Tap an existing text with the Text tool to edit wording/style. Clearing all its text deletes that object. |
| Style characters | Select any characters while editing and use the bar above the text: bold, italic, underline, strikethrough, smaller/larger, apply the current colour, or a different font — per selection, like Photoshop (Procreate can only style whole objects). Styling stays editable and survives save/reload. |
| Move / box | Drag a text object with the Text tool; a per-object box gives corner-scale (font size), a rotate knob, and move — all staying editable vector. |
| Wrap width | Drag the box’s right-edge handle to set a wrap column — words reflow to that width. Drag it wide to fit the text again. Stays editable vector. |
| Scale / rotate | The Move tool (V) also scales/rotates a text layer crisply (it re-renders at the new size). |
| Convert to paint layer | Layer menu → bakes the text to pixels so you can paint on it. Painting is otherwise disabled on a text layer. |
| Auto-rasterize | Liquify/Warp, an adjustment, a non-uniform stretch, or merging a text layer down rasterizes it automatically, then proceeds. |
Fonts: built-in system/web-safe families, plus your own. The bottom of the Text panel has two ways to add a custom font — both add it to the Font dropdown, select it, and persist it in the browser (each shows in the removable list below, with a trash icon). Text stays editable across save/reload.
Load a Google Font (by URL — no download needed). On fonts.google.com pick a font and copy its embed link (e.g. https://fonts.googleapis.com/css2?family=Pacifico&display=swap). In the panel, type the exact family name in Font name (e.g. Pacifico — it must match the family= in the URL, or the text falls back to a default), paste the link into Font / Google Fonts URL, and click Add. Adding the font needs an internet connection, but once loaded it is cached by the app and keeps rendering offline.
Upload a font file (from your computer — works offline). Use the Upload font file button to pick a local .ttf/.otf/.woff/.woff2 file — for a font you bought or downloaded, or that isn’t on Google Fonts. The file is stored with the app, so it keeps working with no connection. (You can also paste a direct link to a font file in the URL field; there the name is just a friendly label — the file is downloaded and stored the same way.)
Shapes & QuickShape
Draw a freehand stroke with the brush or eraser and hold still at the end (~0.6s): the stroke snaps to a clean line, ellipse, rectangle or polygon (it detects corners). After it snaps it stays editable — drag the endpoints, bbox corners or polygon vertices to adjust. Enter or tapping away commits; Esc cancels.
| Constrain | Hold Shift while it’s snapped to lock to 45° lines, a perfect circle, or a square. |
| Edit | Drag handles to reshape before committing; the shape uses your current brush, colour and size. |
| With guides | Combine with Perspective/Symmetry for on-grid straight edges and mirrored shapes. |
Rulers, guides & symmetry
Non-destructive overlays drawn above the canvas to help you align and construct — never part of the artwork or export. Open the Guides popover from the header (it’s a movable, maximizable window). Everything here is saved with the drawing, so your setup is still there when you come back to it.
Rulers and guides
Shift + R puts tick bars along the top and left edges of the drawing. Drag from a bar onto the canvas to pull out a guide — from the top bar a horizontal one, from the left bar a vertical one. The bars sit just outside the artwork and turn with it, so the numbers always measure the drawing rather than the screen: rotate the canvas 30° and the ruler still reads along the edge of your paper.
| Units | px, cm or inches, cycled in the Guides panel. cm and inches come from the drawing’s DPI, so set that in Document properties first if you are working to a print size. |
| Edit guides | Shift+G (or “Edit guides” in the panel) turns on the mode where guides are draggable. Painting is suspended while it is on, so a stroke is never eaten by a guide lying across your artwork. Escape leaves the mode. |
| Move a guide | In Edit guides, drag it. |
| Any angle | In Edit guides, drag on empty canvas to draw a guide along the drag — press where you want it anchored and pull in the direction you want it to run. Alt+drag an existing guide to swing it about its anchor. Hold Shift either way to lock to 15° steps, and the status bar shows the angle live as you set it. |
| Delete a guide | Drag it off the drawing while moving guides — the universal gesture. “Clear” in the panel removes them all at once. |
| Undo | Guides are on the same undo stack as your painting, so Ctrl/⌘+Z takes back an accidental nudge or a Clear. A whole drag counts as one step, not one per pixel moved. |
| Lock | “Lock all” makes guides un-draggable while they keep snapping — useful once a layout is settled and you are painting over it. Locked guides draw dashed, in the same colour. |
| Guide colour | Pick one in the Guides panel. The default blue disappears over blue-heavy artwork, which is exactly when you need to see the guide — set it to something that contrasts with what you are painting. Saved per drawing, like the guides themselves. |
| Snap to guides | On by default. A stroke started near a guide begins on it and runs along it, and the Pen tool drops anchors on it. Turn it off in the panel to keep the guides purely visual. |
| Add without a ruler | “Add H” / “Add V” in the panel drop a guide down the middle of the drawing — the way in when you are zoomed too far in to see the edges. |
| Measure | Shift+D, then drag: the status bar reads the distance (in your chosen units) and the angle, and the line stays on screen until you take another or press Escape. Painting is suspended while measure is on. |
Grid, symmetry and perspective
| Grid | A reference grid (cell size 4–512 px + subdivisions) that pans/zooms/rotates with the canvas. Optional snap-to-grid. Assignable colour. |
| Symmetry | Mirrors your strokes live — vertical/horizontal/both (quadrant) for faces & symmetrical design, or radial (2–24 spokes) for mandalas. Y toggles; Shift+Y (or the crosshair) drags the axis to reposition the mirror. Works for brush, eraser, smudge and wet paint. |
| Perspective | 1–5 vanishing points. Snapping is Off / Soft (nudges a freehand stroke toward the nearest VP, keeping wobble) / Hard (a clean re-aimable line committed on release). Drag the VPs in “Edit points”. |
| Fish-eye | 5-point spherical/curvilinear perspective — curved arc families + radial spokes; strokes can snap to the arcs (Soft/Hard). Density and colours are adjustable. |
| Show guides | Hide the overlay while keeping snapping active — sketch in perspective with no lines visible. |
Images, camera & reference
| Insert image | Add a photo/PNG as a new layer — the header image button, drag-and-drop onto the canvas, or paste a clipboard image (Ctrl/⌘+V). It’s scaled to fit and centred. |
| New doc from photo | From the gallery, start a fresh document sized to an image. |
| Camera | Capture a photo from your device camera straight onto a layer (editor) or as a new document (gallery) — live preview, front/rear toggle. Needs camera permission on a secure (https) page. |
| Copy / cut / paste | Ctrl/⌘+C / X / V on the selection (or the whole layer) via an internal clipboard; paste a system image with Ctrl/⌘+V. |
| Reference window | A floating companion panel: import a reference image, pan/zoom it, and eyedrop colours from it into your palette. Draggable/resizable; remembered per document. |
Procedural FX (Generate)
The Adjustments menu (wand) ends with aGenerate group that synthesizes content onto a new layer: Clouds, Fog,Smoke, Nebula andStarfield and Lightning, each with a live-preview panel.
| New layer | Every generator makes its own layer above the active one, so it never alters what is below. |
| Region | With a selection active, the effect fills only the selection; otherwise the whole canvas. |
| Controls | Scale (feature size), Detail (octaves), Density, Softness, Swirl (domain warp), and two colours the noise blends between. |
| Re-roll | The 🎲 button picks a new random seed for a fresh pattern; the seed is saved, so the look is reproducible. |
| Presets | Clouds/Fog/Smoke/Nebula share one fractal-noise field (different scale/detail/warp/colours); Starfield scatters sparse bright points. |
| Lightning | A branching bolt (top→bottom, Start/End X positions), with Jaggedness, Branches, Glow, Width and colour — a glowing electric arc onto a new layer. |
Recording & time-lapse
Record your session and replay or export it as a time-lapse — great for process videos and undo-proof history.
| Record | The Record button (header) logs every operation as you paint. Recording captures commands, not just frames, so replay is exact. |
| Replay | Open Replays to play back, scrub the timeline, change speed, and restart. |
| Branch | Seek to any point and Branch to save that state as a new document — explore a different direction without losing the original. |
| Export | Save the time-lapse as MP4 (or WebM) or an animated GIF. A portable .happypaint-rec file stores the whole recording. |
Animation (flipbook)
Turn a document into a frame-by-frame animation. Open it from the header ⋯ menu → Animation. Each top-level layer becomes a frame (a layer group is a frame with sub-layers), bottom of the stack first. A timeline strip appears at the bottom; painting always lands on the current frame.
| Flipping | The keys an animator wears out: , and . flip back and forward a frame, < and > jump to the first and last, K plays and pauses, N adds a frame after the current one, O toggles onion skins, Shift + M drops a marker, Alt + , and Alt + . flip marker to marker, Shift + I and Shift + O set the play range, and Shift + A turns animation mode on and off. All of them are rebindable under Settings → Animation. |
| Draw on what you see | The playhead owns the selection: step to a frame and you are painting on it, and the same holds while playback runs, so you can animate rain, sparks or speed lines by dabbing as the frames go by — the trick Callipeg is known for. A stroke never splits across two frames; whatever frame you started it on gets the whole thing. Selecting a frame’s layer in the Layers panel works the other way round and moves the playhead to it. |
| The ruler | Above the thumbnails is a ruler with one cell per frame of time: a frame held for six frames is six cells wide, so uneven timing is visible at a glance. Drag anywhere on it to scrub. The thumbnails stay a fixed width on purpose — they are there to identify a drawing, the ruler is there to show timing. Tap the frame count to read the timeline in seconds instead of frames. |
| Tracks (exposure sheet) | A flipbook is one row of drawings. Convert to tracks… (in a frame’s ⋮ menu) turns those frames into a track, and the timeline becomes a grid: rows are tracks, columns are frames of time. A cell spans however long its drawing is held, and a blank space is a gap — which is the point, because it lets a colour track hold still under a line track that changes every frame. Tap a cell to pick that drawing and that moment; tap a row name to switch to that track without leaving the column you are on. Background and foreground layers stay outside the tracks and show on every frame. Converting changes nothing about your timing: the drawings keep their holds and their order. Onion skins follow the track you are drawing on. |
| Building up tracks | + Track at the bottom of the grid adds an empty row above the one you are on and moves you onto it, ready to draw — that is how you get a line track over a colour track over a background, each timed separately. Drag a cell along its row to retime that drawing: slide it later to open a gap, pull it back to close one. Dragging is retiming, never reordering, so a drawing cannot overlap or swap places with its neighbours — reordering drawings is still the Layers panel’s job. A short press without movement is still just a tap, so selecting works as before. Tracks, their timing and any gaps are saved with the document. |
| Filling in a row | A blank cell is a gap: the row draws nothing there. Tap one to go to that column on that row, and double-tap it to add an empty drawing right there — or use + Drawing to add one at the playhead. Either way it lands only where the row is actually empty; a column that already shows a drawing is not a gap, and happypaint will say so rather than shove the neighbours along. That is the discipline of an exposure sheet: timing changes because you moved something, never as a side effect. |
| Managing the rows | Hover a row name and three controls appear. ▲ and ▼ move that track in front of or behind the others — rows are the compositing order, so this is how the line track gets on top of the colour — and the timing is untouched by it. The bin deletes the track and every drawing on it; the last remaining track is always kept, since a tracks document with no tracks is just a flipbook again. Tap a row name to switch to that track without leaving the column you are on. |
| Retiming cells | The batch ops work on grid cells too: Shift or Ctrl/Cmd-tap a cell to start a selection, then Duration ×N, Split into ×N, In-between, Duplicate and Delete act on the cells you picked. A selection belongs to one row — the timing ops read the track you are on — so modifier-tapping a cell on another row moves you to that row and starts a fresh selection there. |
| Markers | The ⚑ button drops a marker on the playhead (Shift + M), and the panel there lists them all — rename one, tap its swatch to cycle its colour, tap the frame number to jump to it, or delete it. Markers show as coloured tabs on the ruler and belong to the ruler, not to the drawings: retiming or reordering frames leaves them where they are, because they mark a moment in the shot. Alt + , and Alt + . flip from marker to marker, which is how you check a run of key poses. |
| Play range (mark in/out) | Shift + I sets the in point and Shift + O the out point (both are in the ⚑ panel too). Playback then loops inside that range only, and the ruler hatches the slots outside it. Press play from outside the range and it starts at the in point rather than playing nothing. "Full range" clears it. Markers and the range are saved with the document. |
| Out of pegs | Animators slide the paper under their hand to keep a head turn on model — draw against a neighbour that sits where you need it rather than where it was drawn. Turn on Out of pegs at the bottom of the onion panel, pick which ghost to move, then drag the canvas: that ghost slides, and your drawing does not move at all. Rotate and Scale turn or resize it. It is purely a display offset — no pixels, no layers and no history are touched — so Reset this / Reset all put everything back exactly. The offsets are saved with the document. Nothing in Procreate does this. |
| Retiming several frames | The ☑ button turns on frame selection: tap thumbnails to add them (or Shift-tap for a range and Ctrl/Cmd-tap for individual frames without leaving the playhead). Then act on the lot — Duration ×N holds them all, Split into ×N cuts a long exposure into sheets of that length while keeping the total timing, In-between drops an empty frame after each one to draw into, plus Duplicate, Delete and All / Invert. With nothing selected, the ops fall back to the current frame. |
| Frames | Tap a thumbnail to select a frame; drag to reorder. + adds an empty frame right after the current one and moves onto it. The transport plays/pauses and steps frame-by-frame. |
| Onion skins | The ⧉ button ghosts neighbouring frames — previous in red, next in green — so you can draw against them. Up to eight each way, with opacity falling off the further a frame is from the one you are on. The on/off switch (also O) keeps your counts for when you turn them back on. |
| Onion bar | Under the before/after counts is a pip per neighbour (−3 … +3). Tap one to mute just that frame and tap again to bring it back — useful when one drawing in the run is muddying the view. The rest keep their distance fade, so muting −1 does not promote −2 to full strength. |
| Onion colours & placement | Set your own before/after colours (Reset returns to red/green), or untick Tint to see the neighbours in their original colours — handy for checking shadows and light across frames. Draw in front puts the ghosts over the current frame instead of under it, which is what you want when your drawing is dark enough to swallow them. Hide while scrubbing takes the ghosts out of the way while you drag the ruler. |
| Hold & roles | A frame’s ⋮ menu: duplicate, hold it for extra time (×N), delete, or mark it Background/Foreground so it shows under/over every frame (a static scene). |
| Playback | FPS and loop mode (Loop / Ping-pong / Once). Playback and onion skins are preview-only — your layers are never changed. |
| Export the marked range | With a play range set, the export menu offers “Marked range only” — the stretch you marked to review is the stretch you hand over, instead of the whole shot. |
| Export | The ⬇ button exports as an animated GIF, MP4/WebM video, a PNG sequence (.zip), or a Standalone HTML player — a single self-contained file that plays offline in any browser (no HappyPaint needed). Pick a background: transparent (kept for GIF/PNG; video falls back to white since video has no alpha), white, or a custom colour. All offline. |
Documents, save & export

Pixel size sets the canvas resolution; DPI only sets how big it prints (300 = print, 72 = screen) — it doesn’t change the pixels. The dialog previews the physical size live.
| New | Name, size, DPI, bit depth, colour mode (stated: RGB · sRGB), and paper (Smooth/Rough/Fine grain/Canvas/Linen). The name is focused when the dialog opens, and Enter creates the drawing from any field (Esc closes). |
| Size presets | Grouped by what you are making. Print has A4, A5, A3, Letter, Legal, Tabloid, 5 × 7 and 8 × 10, each at a real print resolution; Screen has Screen, HD, 4K UHD, Square, Social square and Phone at 72 DPI. Every card shows its pixel dimensions and DPI, because that is what you actually choose on. The bigger sheets are offered at 200 DPI rather than 300 — A3 at 300 would be 4961 px, past the 4096 px safe canvas limit. |
| Saved sizes | Set any width, height and DPI and press “+ Save” to keep it under the Saved tab — it persists across sessions, and “✕” on a card removes it. Handy if you always work to one client format. |
| Size readout | Pixels, centimetres and inches are shown together and update live, so you never have to switch the Unit control just to check the other measurement. The ⇄ button swaps width and height — A4 portrait to landscape without retyping. |
| Paper | The surface you paint on, and it does three things. It is visible: pick Linen or Canvas and the weave is on the canvas straight away, lit as a real surface rather than printed as flat noise, anchored to the drawing so it scales as you zoom. It bites dry media: a pencil or charcoal on Rough breaks up over the ridges the way it does on real cold-press, and each further pass works more graphite into the tooth instead of leaving permanent white specks. And it drives the wet simulation — a rough tooth drinks water so washes dry unevenly, breaks a spreading front into ragged fingers, and granulates pigment into the valleys. Change it any time from Document properties; dried paint keeps the paper it was painted on. Smooth (the default) leaves the canvas perfectly flat. The eraser is never carved by the paper — erasing clears in one pass on any surface. Two controls shape how it reads: Texture scale in Document properties sizes the tooth (drop it for a fine sketching-paper grain, raise it for coarse blotchy cold-press) — it only appears once the paper is something other than Smooth, since a flat surface has no tooth to size — and each brush has its own Paper amount in the brush panel — ink and markers ignore the tooth so they stay high-contrast, pencil and charcoal take it in full. |
| Bit depth | 8-bit (standard), 16-bit float (smoother gradients — recommended), or 32-bit float (HDR/pro). Float docs composite in scene-linear light for correct edges and glow. |
| Colour mode | Documents are always RGB — painting, layers and blending all composite in RGB (like Procreate, and Krita’s default). There is no CMYK working mode; the print path is instead View → Print preview (CMYK proof) to see the ink shift on screen, and Export → TIFF (CMYK) to separate for the press, optionally through your own .icc profile. The New-drawing dialog and Document properties both state the mode so it never has to be inferred. |
| Colour space | Documents are sRGB. (Wide-gamut Display-P3 support is built into the display pipeline but the selector is hidden until the wide-gamut painting/import side lands — it’d look identical to sRGB until then.) |
| Document properties | Click the size/DPI in the status bar to view colour mode/depth/colour space, change the paper (the canvas surface updates immediately and wet media re-simulates on the new texture; dried paint keeps the paper it was painted on), size its tooth with Texture scale (the slider unlocks as soon as the paper is not Smooth), and Resize the canvas (crop/extend with a 3×3 anchor) or Scale the image (resample all layers). |
| Autosave | Every change saves to the browser (IndexedDB), debounced and flushed when you hide the tab. Offline-capable (PWA) — installable, works without a connection. |
| .happypaint | The portable document file: all layers, masks, groups, editable text, depth/DPI in one file. Save from the header, reopen from the gallery — the only format that preserves everything. |
| PSD | Export to Photoshop .psd (layers, groups, opacity, blend modes, clipping, masks) and open .psd files from the gallery (round-trips with Krita/Photoshop). |
| Netpbm (.ppm) | Open .ppm / .pgm / .pbm / .pnm images from the gallery (ASCII P1–P3 and binary P4–P6, 8- or 16-bit) — the image lands on its own layer above a white Background. You can also drop one on the canvas or use Insert image to add it as a layer in the current drawing, and Export → PPM writes an uncompressed portable pixmap (binary P6 or plain-text P3, flattened onto white — no transparency). Handy for graphics/CV tooling browsers can’t display natively. |
| Export image | Flatten to PNG (keeps transparency) or JPEG (smaller), at 25–200% scale, with the document DPI and an ICC colour profile embedded — other apps and print drivers know the exact size and colour space instead of assuming. Exports carry the surface you painted on: the paper’s tooth and any impasto relief are baked into the file, so a Rough or Linen drawing looks in the export the way it looks on canvas. |
| Print (CMYK TIFF) | Export → TIFF (CMYK) writes the file print shops ask for: flattened onto white and separated into C/M/Y/K inks at the document DPI, within a 300% total ink limit and with black kept out of the light tones. It separates through the same press as Print preview, so what you proofed is what you hand over. |
| Press profiles (.icc) | Load your printer’s CMYK profile (FOGRA, SWOP, GRACoL…) from either View → Print preview → Press, or the TIFF export dialog — it is the same app-wide press either way, and it is remembered between sessions. Print preview and the gamut warning then show exactly that press’s colours, the TIFF separates through the profile, and the profile itself is embedded so prepress reads the intent. Without one, the built-in generic coated press applies. |
| Google Drive | Optionally connect Google Drive to save/open .happypaint files in the cloud (client-side, drive.file scope — only files you create). |
Settings & customization
| Settings (gear · Ctrl + ,) | The gear on the right of the header opens Settings, as does Ctrl/Cmd + , from anywhere in the editor (the same chord closes it, and it is rebindable under Settings ▸ View). It is also in the ⋯ and View menus. The first section is configurable keyboard shortcuts, grouped as Tools, Brush, View and Animation — click an action to rebind it; duplicate combos are flagged; reset per-action or all. |
| Brush cursor | Choose what follows the pointer while a paint tool is active: Ring (an outline at the brush’s size, following the tip shape), Crosshair (a small fixed cross at the exact centre), Ring + crosshair, or Dot. The crosshair earns its keep with a big soft brush, where a wide ring tells you the size but not precisely where the mark lands. |
| Follow brush shape | On by default: the ring is traced from the tip the brush actually stamps, so a leaf brush shows a leaf and a spatter brush shows its specks — the same idea as Photoshop’s brush-tip cursor. The outline sits at half coverage (the part of the dab that reads), which is why a very soft tip draws a little smaller than its nominal size. Round and square tips keep their exact geometric outline either way; turn it off to get a plain circle for every brush. |
| Cursor colour & thickness | Draw the cursor in the colour you’re painting with instead of the neutral outline — much easier to follow on a busy canvas, and it previews the colour. Thickness (1–4 px) fixes the other common complaint: a hairline outline disappears against a textured canvas or a mid-grey wash. |
| Undo steps | How far back Undo and Redo can go — 5 to 1000 steps, 200 by default. Every step keeps the pixels it changed, so a long history on a big canvas costs memory: drop the number if you are working huge and want it back, raise it if you like undoing your way out of a long detour. Steps can still be dropped sooner once they add up to the engine’s memory budget (~192 MB), and lowering the setting discards the oldest steps straight away. |
| Theme | Light / dark toggle in the header, remembered across sessions. |
| Tool dock layout | Drag to move, flip vertical/horizontal, and resize the column count — remembered. |
| Floating panels | The colour picker and Guides panel can be dragged out to float and stay open while you work; their positions persist. |
| Help | Press ? (or the header help button) for the in-app shortcut & gesture reference at any time. |
Shortcuts & gestures
Keyboard
| B / E / G / V / S | Brush / Eraser / Fill / Move / Smudge. |
| E (hold) | Temporary eraser — springs back to your drawing tool on release. Tap it to latch instead. |
| H · Space (hold) | Pan tool · temporary pan with any tool (middle-mouse drag works too). |
| T | Text. |
| I · Alt+drag | Eyedropper tool (latched) · transient eyedropper from any tool. |
| M / L / W | Rect select / Lasso / Magic wand. |
| [ / ] | Brush size down / up. Brush, eraser and smudge each keep their own brush, size and opacity. |
| F | Fill mode (silhouette) on/off. |
| Y / Shift+Y | Symmetry on/off · move symmetry axis. |
| Shift+R / Shift+G / Shift+D | Rulers on/off · edit guides (draw / move / angle) · measure. |
| Ctrl+Z / Ctrl+Shift+Z | Undo / Redo. |
| Ctrl+C / X / V | Copy / Cut / Paste (selection or layer). |
| Ctrl+A / Ctrl+D / Ctrl+Shift+I | Select all / Deselect / Invert. |
| + / − / 0 / 1 / 5 | Zoom in/out / fit / 100% / reset rotation. |
| Ctrl+[ / Ctrl+] | Rotate canvas ∓15°. |
| Ctrl+Shift+Alt+E | Merge visible → new layer (Stamp Visible). |
| Ctrl+Y | Grayscale value-check view. |
| Tab | Zen mode (hide UI). |
| Delete | Clear layer. |
| Ctrl + , | Settings — rebind shortcuts, brush ceiling, cursor style, undo depth. The gear on the right of the header opens the same dialog. |
| ? | Help / shortcut reference. |
Touch gestures (Procreate-style)
| One finger | Paint. |
| Two-finger drag / pinch | Pan / zoom / rotate. |
| Quick pinch-in | Fit to screen. |
| Two-finger tap | Undo (hold = repeat). |
| Three-finger tap | Redo. |
| Three-finger swipe down | Copy/paste pill: Cut · Copy · Duplicate · Paste (honours the selection; Paste drops in as a new layer). |
| Touch & hold | Eyedropper (loupe). Suppressed under the Pan tool so a paused finger keeps panning. |
| Three-finger scrub | Clear layer. |
| Four-finger tap | Toggle UI (zen mode). |
Palm rejection ignores touches while a pen is active, so you can rest your hand on the screen while drawing with a stylus.