HappyPaint manual Open this in the app · About HappyPaint

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

The HappyPaint editor
The editor: header, floating tool dock, canvas, and layers panel.
  • 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 modeTab (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.

ZoomPinch, Ctrl/⌘+wheel, +/− keys, or the status-bar buttons (5%–6400%).
PanTwo-finger drag, scroll wheel, the Pan tool (H), holding Space with any tool, or a middle-mouse drag.
RotateTwo-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 rotation5, click the rotation dial, or double-click its degree label.
Grayscale viewCtrl+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 previewView → 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 optionsUnder 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 coloursView → 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 menuThe 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).
TransparencyTransparent areas show a checkerboard so you can see the canvas bounds.

Tools

Tool dock
The floating tool dock (resize the width to reflow icons).

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 ETemporary 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 eraserOpen 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).
ColorDropDrag 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.
GradientDrag 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.
LiquifyWarps 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.
SelectionsRectangle (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.

Brush settings
The brush panel — a live preview, a scratch ‘Try’ area, and every dynamic.

Creating, saving & importing brushes

  1. Open the Library and pick the preset closest to what you want — it loads as the live brush.
  2. 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.
  3. 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.
  4. 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).
  5. 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.

SizeStamp diameter at full pressure (1–500 doc px) — the maximum width of the mark; pressure scales it down. [ and ] nudge it.
Brush size followsWhat 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.
OpacityThe stroke’s maximum strength (1–100%): a ceiling one pass won’t exceed — predictable, even coverage.
FlowPaint laid per stamp (1–100%). Low + overlap = gradual build-up; high = opaque immediately.
BlendHow the stroke combines with the layer (Normal, Multiply, Screen, …). A Multiply brush deepens shadows; Screen/Add paints glow — without a separate layer.
WashNon-buildup mode: coverage tops out at the opacity instead of darkening with every overlap — a flat marker rather than layered ink.
Even buildSmooths build-up so overlapping stamps accumulate evenly regardless of spacing — removes darker “seams” where dabs overlap.

Tip shape & smoothing

SpacingGap between stamps as a fraction of size (2–200%). Tight = a smooth solid line; wide = a dotted/stamped trail.
HardnessEdge falloff (0–100). 0 is a soft airbrushed edge that fades to nothing; 100 is crisp.
SmoothStabilizes shaky input (0–100%). Higher irons jitter into clean curves but adds a little lag.
StabilizerOptional 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 brushA 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.
PaperHow 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.)

PressureOverall pressure response — soft (eases in) to firm (reaches full quickly). The curve editor gives point-by-point control of pressure → size.
Size·PHow much pressure controls size: 0 = constant width, 100 = press-to-taper.
Flow·PHow much pressure controls flow/opacity.
TiltHow 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→SizeVelocity 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→OpacityFaster strokes paint lighter — the opacity counterpart to Speed→Size, again mouse-friendly.

Jitter (randomness)

ScatterThrows each stamp off the stroke path — spray, stipple, foliage.
Size·JVaries each stamp’s size for uneven, hand-made line weight.
Angle·JRandomly rotates each stamp — breaks up the repeat in textured tips.
Space·JVaries the gap between stamps so the cadence isn’t perfectly even.
Hue·J / Sat·J / Val·JIndependently 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→DarkPressure darkens the dab colour — a harder press lays down a deeper, richer colour (deterministic, not random). Great for pencils/pastels.
Hue→ShiftSweeps 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 colTwo-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 InThins the first N px so the stroke starts from a point — the clean entry of an inking pen.
Taper OutThins 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.

WetDilution: 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.
LoadHow 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.
MixCanvas-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.
PigmentSubtractive (Kubelka–Munk) mixing on wet brushes: yellow over blue makes green like real paint, not RGB averaging.
BlenderTurns 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.

PigmentHow 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.
OilHow 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)

PatternThe paper/canvas/grain/halftone texture multiplied into the mark (or none) — gives the brush its tooth.
ScaleTexture tile size in doc px: small = fine tooth, large = coarse grain.
AmountHow 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-inInk — 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 blendingPalette 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 softeningBlender (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 daubsThick 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

Color picker
Square / wheel / triangle / sliders color picker (draggable).

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 + hueHue on the strip, then drag inside the square for saturation (left→right) and brightness (top→bottom).
WheelHue around the ring, saturation/value inside — handy for complementary/analogous hues.
TriangleHue ring + inscribed value/saturation triangle (classic painter’s picker).
H / S / V slidersType or drag exact Hue, Saturation, Value (and a hex value) for precise, repeatable colors.
HarmonyThe 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.
RecentColors you’ve just used, kept so you can jump back without re-mixing.
EyedropperSample 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 pickerSwitch palettes with the dropdown; tap a swatch to paint with it, drag to reorder, hover for ✕ to remove.
Palettes panelOne 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.
ImportPanel header → Import — opens Procreate .swatches, Photoshop .aco, Adobe .ase and GIMP .gpl files; each palette in the file arrives as its own named palette.
ExportOn each card → writes that palette as a Procreate-compatible .swatches file (first 30 colours).
From imagePanel 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 loadedThe 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 backZoom, 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 notThe undo history of the drawing you leave. Finish an edit before switching if you might want to take it back.
Most tabs at onceSix by default (2–12 in Settings). Opening one past the cap closes whichever you looked at longest ago, saving it first.
Between drawingsCopy (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.
SwitchingCtrl+Alt+← / → cycle the open drawings; both are rebindable in Settings → Shortcuts.

Layers

Layers panel
The layer stack.

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.

OpacityHow strongly the whole layer shows over those below (0–100%) — fade a layer back without altering its pixels.
Visibility / LockThe eye hides a layer from the composite (and export); the lock blocks any pixel edits.
Alpha lockPaint only recolours the layer’s existing pixels — its silhouette/transparency never changes (great for shading inside a shape).
Inherit alphaClip the layer to the composited alpha of everything below it in its container (a whole-stack clipping mask).
GroupsBundle 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 & filterThe 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 layersCtrl/⌘-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.
ActionsAdd, 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 visibleCombine 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 imageCollapse 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:

NormalPlain stacking — the layer covers what’s below (subject to opacity).
Darken groupmultiply, darken, color-burn, linear-burn — only darken. Multiply is the go-to for shadows, glazes and ink (white disappears).
Lighten groupscreen, lighten, color-dodge, add — only lighten. Screen/Add are for glows, highlights, fire (black disappears).
Contrast groupoverlay, soft-light, hard-light — darken darks and lighten lights for contrast/pop.
Comparativedifference, exclusion, divide — invert/compare colors for high-contrast or alignment-checking effects.
Componenthue, 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 maskA 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 layerToggle whether your strokes target the mask or the colour. The thumbnail shows which you’re editing.
Mask opsInvert, Disable (keep but stop applying), Delete, Mask from selection (pack the current selection into the mask), and Selection from mask.
Clipping maskConfines 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).

AddThe 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.
EditSelect the adjustment layer; its parameters appear in the panel footer. Drag to re-tune live (one undo step per drag).
ScopeBy default it affects the whole stack below. Turn on its Clipping mask to scope the effect to just the single layer beneath.
Mask itAdd a mask to the adjustment layer and paint it to limit where the effect applies (e.g. brighten only a face).
OpacityActs 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.

MakeRect (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 wandSelects a colour region — Contiguous (connected) or global (all matching), with a Tolerance slider.
RefineExpand / 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.
CommandsSelect all (Ctrl+A), invert (Ctrl+Shift+I), deselect (Ctrl+D).
Selection ↔ maskTurn 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.
DistortFree 4-corner / perspective transform — drag each corner independently.
WarpMesh warp — drag a control lattice to bend the pixels smoothly.

Adjustments & filters

Adjustments menu
Adjustments menu (live preview, Apply/Cancel, selection-masked).

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 & ContrastBrightness shifts lighter/darker; contrast pushes lights and darks apart or together (±100 each).
Hue / Saturation / BrightnessRotate all hues (±180°), make colours more vivid or muted, lighter or darker. For recolouring and mood.
CurvesReshape the tonal response by bending a curve — lift shadows, drop highlights, add an S-curve for contrast.
LevelsSet input black/white points + gamma and the output range — quick contrast and tonal mapping.
Color BalancePush midtones along Cyan–Red, Magenta–Green, Yellow–Blue to warm/cool or correct a cast.
Gradient MapMap 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 / PosterizeDesaturate with control; invert colours; 1-bit luminance stencil; reduce to N tone steps.
Replace Color / Color to AlphaRecolour 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 / NoiseGaussian (uniform) and Motion (angle+distance) blur; sharpen edges; add (mono) noise to fight banding.
EffectsBloom (glow bright areas), Chromatic Aberration, Halftone dot screen, Glitch (RGB split / row-tear).
Line ArtOne-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 textClick 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.
EditTap an existing text with the Text tool to edit wording/style. Clearing all its text deletes that object.
Style charactersSelect 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 / boxDrag 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 widthDrag 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 / rotateThe Move tool (V) also scales/rotates a text layer crisply (it re-renders at the new size).
Convert to paint layerLayer menu → bakes the text to pixels so you can paint on it. Painting is otherwise disabled on a text layer.
Auto-rasterizeLiquify/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.

ConstrainHold Shift while it’s snapped to lock to 45° lines, a perfect circle, or a square.
EditDrag handles to reshape before committing; the shape uses your current brush, colour and size.
With guidesCombine 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.

Unitspx, 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 guidesShift+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 guideIn Edit guides, drag it.
Any angleIn 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 guideDrag it off the drawing while moving guides — the universal gesture. “Clear” in the panel removes them all at once.
UndoGuides 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 colourPick 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 guidesOn 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.
MeasureShift+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

GridA reference grid (cell size 4–512 px + subdivisions) that pans/zooms/rotates with the canvas. Optional snap-to-grid. Assignable colour.
SymmetryMirrors 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.
Perspective1–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-eye5-point spherical/curvilinear perspective — curved arc families + radial spokes; strokes can snap to the arcs (Soft/Hard). Density and colours are adjustable.
Show guidesHide the overlay while keeping snapping active — sketch in perspective with no lines visible.

Images, camera & reference

Insert imageAdd 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 photoFrom the gallery, start a fresh document sized to an image.
CameraCapture 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 / pasteCtrl/⌘+C / X / V on the selection (or the whole layer) via an internal clipboard; paste a system image with Ctrl/⌘+V.
Reference windowA 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 layerEvery generator makes its own layer above the active one, so it never alters what is below.
RegionWith a selection active, the effect fills only the selection; otherwise the whole canvas.
ControlsScale (feature size), Detail (octaves), Density, Softness, Swirl (domain warp), and two colours the noise blends between.
Re-rollThe 🎲 button picks a new random seed for a fresh pattern; the seed is saved, so the look is reproducible.
PresetsClouds/Fog/Smoke/Nebula share one fractal-noise field (different scale/detail/warp/colours); Starfield scatters sparse bright points.
LightningA 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.

RecordThe Record button (header) logs every operation as you paint. Recording captures commands, not just frames, so replay is exact.
ReplayOpen Replays to play back, scrub the timeline, change speed, and restart.
BranchSeek to any point and Branch to save that state as a new document — explore a different direction without losing the original.
ExportSave 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.

FlippingThe 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 seeThe 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 rulerAbove 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 rowA 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 rowsHover 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 cellsThe 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.
MarkersThe ⚑ 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 pegsAnimators 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 framesThe ☑ 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.
FramesTap 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 skinsThe ⧉ 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 barUnder 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 & placementSet 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 & rolesA 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).
PlaybackFPS and loop mode (Loop / Ping-pong / Once). Playback and onion skins are preview-only — your layers are never changed.
Export the marked rangeWith 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.
ExportThe ⬇ 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

New document dialog
New drawing: size presets, custom size, DPI, bit depth (and colour space on capable browsers).

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.

NewName, 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 presetsGrouped 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 sizesSet 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 readoutPixels, 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.
PaperThe 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 depth8-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 modeDocuments 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 spaceDocuments 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 propertiesClick 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).
AutosaveEvery change saves to the browser (IndexedDB), debounced and flushed when you hide the tab. Offline-capable (PWA) — installable, works without a connection.
.happypaintThe 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.
PSDExport 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 imageFlatten 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 DriveOptionally 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 cursorChoose 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 shapeOn 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 & thicknessDraw 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 stepsHow 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.
ThemeLight / dark toggle in the header, remembered across sessions.
Tool dock layoutDrag to move, flip vertical/horizontal, and resize the column count — remembered.
Floating panelsThe colour picker and Guides panel can be dragged out to float and stay open while you work; their positions persist.
HelpPress ? (or the header help button) for the in-app shortcut & gesture reference at any time.

Shortcuts & gestures

Keyboard

B / E / G / V / SBrush / 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).
TText.
I · Alt+dragEyedropper tool (latched) · transient eyedropper from any tool.
M / L / WRect select / Lasso / Magic wand.
[ / ]Brush size down / up. Brush, eraser and smudge each keep their own brush, size and opacity.
FFill mode (silhouette) on/off.
Y / Shift+YSymmetry on/off · move symmetry axis.
Shift+R / Shift+G / Shift+DRulers on/off · edit guides (draw / move / angle) · measure.
Ctrl+Z / Ctrl+Shift+ZUndo / Redo.
Ctrl+C / X / VCopy / Cut / Paste (selection or layer).
Ctrl+A / Ctrl+D / Ctrl+Shift+ISelect all / Deselect / Invert.
+ / − / 0 / 1 / 5Zoom in/out / fit / 100% / reset rotation.
Ctrl+[ / Ctrl+]Rotate canvas ∓15°.
Ctrl+Shift+Alt+EMerge visible → new layer (Stamp Visible).
Ctrl+YGrayscale value-check view.
TabZen mode (hide UI).
DeleteClear 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 fingerPaint.
Two-finger drag / pinchPan / zoom / rotate.
Quick pinch-inFit to screen.
Two-finger tapUndo (hold = repeat).
Three-finger tapRedo.
Three-finger swipe downCopy/paste pill: Cut · Copy · Duplicate · Paste (honours the selection; Paste drops in as a new layer).
Touch & holdEyedropper (loupe). Suppressed under the Pan tool so a paused finger keeps panning.
Three-finger scrubClear layer.
Four-finger tapToggle 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.