ComfySketch Pro
Full-featured digital painting app running as a ComfyUI custom node
ComfySketch Pro is a browser-based painting editor embedded directly inside ComfyUI. It runs in a fullscreen overlay, supports pen tablet pressure, layers, bezier paths, text, gradients, 3D model viewing, and direct AI generation — all without leaving your workflow.
Node Outputs
| Output | Format | Description |
|---|---|---|
| image | (1, H, W, 3) float32 | All visible layers composited as RGB |
| mask | (1, H, W) float32 | Designated mask layer — white=1.0, black=0.0 |
Interface Layout
Canvas Setup
Set canvas size via the node's preset_size dropdown or enter custom width/height. Supported range: 64–4096 px per side.
Size Presets
| Name | Dimensions | Use case |
|---|---|---|
| Square SD | 512 × 512 | Standard diffusion square |
| Portrait SD | 512 × 768 | Portrait diffusion |
| Landscape SD | 768 × 512 | Landscape diffusion |
| Portrait medium | 768 × 1024 | SDXL portrait |
| Landscape medium | 1024 × 768 | SDXL landscape |
| Square large | 1024 × 1024 | SDXL square |
| Phone portrait | 1080 × 1920 | Mobile |
| HD landscape | 1920 × 1080 | HD widescreen |
Multiple Canvases
ComfySketch Pro supports multiple independent canvases (documents). Use the Canvases button in the toolbar (document icon next to the file button) to open the canvas switcher.
Pencil Paint
Realistic graphite pencil with tapered strokes and paper texture. The alpha tip gives it authentic grain that builds up naturally with repeated passes, simulating real pencil on paper.
Options
Ink Paint
Fine ink pen with sharp pressure-responsive tapers. Ideal for precise linework, comic inking, and technical illustration. High stabilization produces smooth, clean curves.
Options
Felt Tip Paint
Smooth marker-like brush with soft wetness bleed at edges. Produces clean, even strokes suitable for coloring flats, concept art, and illustration.
Options
Marker Paint
Bold marker with slightly ragged edges and wetness bleed. Semi-transparent strokes overlap to create deeper color, mimicking the look of alcohol markers like Copic.
Options
Paint Paint
Oil paint simulation with color mixing and wetness. The brush picks up colors already on the canvas and blends them as you paint, simulating physical paint behavior.
Options
Pastel Paint
Soft pastel stick with paper texture and natural opacity variation. Builds up in layers with a chalky matte finish. Opacity and position jitter create the characteristic rough texture of real pastels.
Options
Smudge / Blend Utility
Blends colors that are already on the canvas without adding new color. Simulates finger-smearing wet paint. Higher Mixing values create a stronger drag of existing color.
Options
Eraser Utility
Erases pixels on the active layer. Supports the same brush types and settings as painting tools. Soft eraser for blended edges; hard eraser for clean cuts.
Options
Hard eraser: Hardness 100, opacity 100% — precise pixel cutout.
Clone Stamp Utility
Samples an area of the canvas and paints it elsewhere. Used for retouching, removing unwanted elements, and duplicating texture regions.
How to Use
- Alt + click to set the clone source point (a crosshair appears)
- Release Alt, then paint normally — the brush samples from the source
- The source offset moves relative to your brush as you stroke
Options
Eyedropper Utility
Click anywhere on the canvas to sample that color and set it as the foreground color. Automatically returns to the previously active tool after picking.
Shape Tools Shape
Shape tools draw directly onto the active pixel layer using the current foreground color, brush size, and opacity.
Click and drag to draw a straight line. Hold Shift to snap to 45° angle increments. Stroke width = current brush size.
Click and drag to draw an ellipse. Hold Shift to constrain to a perfect circle. Toggle fill in tool options.
Click and drag to draw a rectangle. Hold Shift to constrain to a perfect square. Toggle fill in tool options.
Click to place vertices one at a time. Press Enter to finalize as a closed filled polygon. Press Escape to cancel.
Pen Tool (Bezier) Vector
Creates resolution-independent vector paths stored as pen layers. Paths are procedural — re-rendered at any zoom and fully editable at any time. Each pen layer stores anchor points, bezier handles, color, stroke width, and fill state.
Options Bar
Sub-Modes
Classic bezier pen. Click to add corner anchors. Click-drag to create smooth anchor points with symmetric handles. Click the first anchor to close the path.
Alt + drag handle — break handle symmetry
Shift + click — snap to 45° from previous point
Click on segment — insert anchor at that position
Draw a freehand stroke naturally. On release, ComfySketch Pro automatically fits smooth cubic bezier curves through your stroke using Schneider's algorithm. Sub-mode persists so you can keep drawing consecutive strokes.
Drag to create a rectangular closed vector path with four corner anchor points. Hold Shift for a perfect square. Auto-finalizes on release.
Drag to create an elliptical closed path with four smooth bezier anchor points. Hold Shift for a perfect circle. Auto-finalizes on release.
Click anywhere on an existing path segment to insert a new anchor using De Casteljau subdivision — preserving the curve shape exactly. You can also drag existing anchors and handles in this mode.
Click an anchor to delete it. Drag to draw a red selection rectangle — all anchors inside are highlighted and deleted on release. Small click = single delete, drag rectangle = batch delete.
Click a smooth anchor to convert it to a corner (removes handles). Click a corner anchor and drag to pull out symmetric handles and convert it to smooth. Also allows dragging existing handles directly.
Add Pt / Delete Pt / Convert Pt buttons appear dimmed until a path exists — they unlock automatically after the first path is committed.
Click to place anchor points — the path automatically flows through them as smooth curves using Catmull-Rom interpolation. No handle dragging required. Handles are invisible during creation and auto-calculated.
Shift + click — snap to 45° from previous point
Click first anchor — close the path
Enter — finalize | Escape — cancel
Pen Mode Interactions
| Action | Result |
|---|---|
| Click empty space | Add corner anchor (no handles) |
| Click + drag | Add smooth anchor with symmetric bezier handles |
| Click first anchor (≥2 points) | Close the path |
| Alt + click anchor | Toggle smooth ↔ corner (remove or create handles) |
| Alt + drag handle | Break handle symmetry — move one handle independently |
| Shift + click | Snap new anchor to 45° angles from previous |
| Click segment | Insert new anchor at that point on the curve |
| Drag corner anchor (no handles) | Pull out symmetric handles (converts to smooth) |
| Enter | Finalize path and create/update pen layer |
| Escape | Cancel current edit / clear path |
Re-editing Pen Layers
Double-click a pen layer in the layers panel to re-enter edit mode. All anchors and handles reappear. Apply commits changes; Escape reverts to the original path.
SVG Export / Import
Right-click a pen layer → Export as SVG to download as an .svg file. Use File → Import SVG… to import paths from Inkscape, Illustrator, or Affinity Designer. See the SVG section for full details.
Fill & Gradient
Flood Fill
Click on the canvas to flood-fill a contiguous region of similar color with the foreground color.
Gradient
Click-drag on the canvas to define a gradient from start to end point. Gradients are stored as vector layers and can always be re-edited.
Gradient Editor
Fill Shortcuts
| Shortcut | Action |
|---|---|
| Alt+Delete | Fill selection (or entire layer) with foreground color |
| Ctrl+Delete | Fill selection (or entire layer) with background color |
Selection Tools Select
Selections define an active region. Painting, filling, and transforms affect only the selected area. Multiple selection modes can be combined using Shift/Alt modifiers.
Click and drag to define a rectangular selection. Hold Shift while dragging to constrain to a perfect square.
Click and drag for an elliptical selection. Hold Shift to constrain to a perfect circle.
Draw a freehand closed boundary around the area you want to select. Release to close the selection automatically.
Click to place polygon vertices. Press Enter to finalize (minimum 3 points). Press Escape to cancel. Creates a precise polygonal selection.
Paint a selection mask with a soft or hard brush. Paint to add, Alt+paint to erase from the mask. Press Enter to convert the painted mask to a selection.
Click to select a contiguous region of similar color. Shift+click adds more regions to the existing selection.
Selection Modifiers (while drawing)
| Modifier | Effect |
|---|---|
| Shift + drag | Add to existing selection |
| Alt + drag | Subtract from selection |
Selection Operations
| Shortcut | Action |
|---|---|
| Ctrl+A | Select entire canvas |
| Ctrl+D | Deselect all |
| Ctrl+Shift+I | Invert selection |
| Ctrl+J | Copy selected area to a new layer |
| Ctrl+Shift+J | Cut selected area to a new layer |
| Delete | Clear (erase) the selected area on the active layer |
| Alt+Delete | Fill selected area with foreground color |
| Ctrl+Delete | Fill selected area with background color |
Selection Refinements (tool properties)
Move / Transform Utility
Moves and transforms any layer non-destructively. A live preview shows changes before committing. Works on pixel layers, text layers, gradient layers, and pen layers.
Transform Handles
Commit & Cancel
| Action | Result |
|---|---|
| Enter or double-click inside | Commit the transform and apply permanently |
| Escape | Cancel — reverts to original position and size |
| Alt + click (no active transform) | Duplicate the layer then enter move mode on the copy |
Auto-Select
Double-click the Move tool button in the toolbar to open Move Options. Enable Auto-select to automatically pick the topmost layer with visible content under the cursor when clicking — no manual layer selection required.
Multi-Layer Transform
Select multiple layers using Ctrl+click or Shift+click in the Layers panel, then use the Move tool. All selected layers transform together. Click a group header to select and transform all children simultaneously.
Crop Tool Utility
Photoshop-style crop with adjustable handles. When you switch to the Crop tool, crop handles appear over the full canvas immediately. Drag handles to define the crop area. A rule-of-thirds grid overlays while dragging.
How to Use
- Press H or click the Crop button in the toolbar
- Drag any of the 8 edge/corner handles to define the crop region
- Drag inside the crop area to reposition the frame (or drag the underlying image)
- Press Enter or double-click inside the frame to apply the crop
- Press Escape or switch tools to cancel
Features
Text Tool Vector
Click anywhere on the canvas to place a new editable text layer. A floating options bar appears with full typographic controls. Text remains vector/editable as long as it hasn't been rasterized.
Text Properties
Per-Character Formatting
Select a range of characters inside the text overlay using click-drag, then change the color or size in the options bar. Only the selected characters are affected — the rest of the text is unchanged.
Committing & Re-editing
3D Layers
ComfySketch Pro supports 3D model layers powered by Three.js. Drop a 3D model file onto the canvas to add it as a 3D layer, then enter 3D Mode to pose, light, and snapshot it.
Supported Formats
Adding a 3D Layer
- Drag and drop a 3D model file anywhere onto the canvas
- A new 3D layer appears with an orange border thumbnail in the layers panel
- Double-click the 3D layer to enter 3D Mode
3D Mode
In 3D mode the 3D viewer panel becomes active. All other layers are dimmed. You can:
Brush Types
Every painting tool uses one of these underlying brush rendering engines. Change it in a tool's properties panel (double-click the tool button).
| Type | Description |
|---|---|
| Round | Hard-edged circle. Hardness controls how sharply the edge falls off (0 = soft feather, 100 = crisp). |
| Soft | Gaussian radial falloff from center to edge — classic soft-glow or airbrush look. |
| Airbrush | Wide soft spray with flow-based buildup. Color accumulates while held in one position. |
| Spray | Scattered random dots. Density controls particles per stamp. Creates stipple and splatter effects. |
| Marker | Flat chisel-shaped stamp. Rotating the brush angle changes apparent width. |
| Ragged | Irregular rough edges — ideal for dry brush, charcoal, and textured painting effects. |
| Alpha | Custom grayscale tip image (pencil grain, pastel texture, eraser shape). White = full paint, black = no paint. Auto-inverted if average brightness > 50%. |
Round / Soft Shape Controls
Pressure Sensitivity
When a pen tablet is connected, stylus pressure data modulates the brush dynamically on every stroke.
Pressure Curves
| Curve | Feel |
|---|---|
| Linear | Direct 1:1 mapping — pressure value directly becomes size/opacity |
| Soft | Very sensitive at low pressure — a light touch gives a bigger response than expected |
| Firm | Requires more force — small response until mid-pressure range |
| S-Curve | Gentle at both low and high extremes, steepest in the middle range |
Stabilization (Smoothing)
Smooths out shaky hand movements using a lazy brush algorithm — the brush tip lags behind the physical cursor, filtering out tremor while preserving intentional movements.
Accessible via the smoothing icon in the top options bar, or inside any tool's properties panel.
Texture
Textures add surface variation to brush strokes. The texture alpha map is multiplied into each brush stamp, simulating painting on different paper and canvas surfaces.
Procedural Textures
| Name | Character |
|---|---|
| None | No texture applied |
| Hot Press | Very smooth — subtle micro-fiber grain (watercolor hot-press paper) |
| Cold Press | Prominent bumpy grain with peaks and valleys |
| Canvas | Regular woven grid pattern — linen/cotton canvas |
| Bristol | Nearly invisible fine grain — default for pencil and pastel |
| Kraft | Medium irregular fibrous texture — brown kraft paper |
| Rough | Heavy tooth, chunky irregular grain — rough sketch paper |
Image Textures (512×512)
Jitter
Jitter adds controlled randomness to brush stamps, creating organic natural-looking variation along a stroke.
Brush Library
Browse, load, and save brush presets. Press J to open the brush library panel. Presets are stored in browser IndexedDB and persist across sessions.
Built-in Preset Categories
| Category | Count | Includes |
|---|---|---|
| Dry | 9 | Soft/Hard/Oil Pastel, Chalk, Soft/Vine/Compressed/Hard Charcoal, Conte |
| Paint | 12 | Round/Flat/Spray/Oil Brush, Wet Acrylic, Turpentine, Palette Knife, Impasto, Wash, Gouache, Watercolor |
| Ink | 11 | Fine Ink, Brush Pen, Technical Pen, Felt Tip, Chisel Tip, Fine Liner, Felt Nib, Marker, Copic Broad, Copic Brush, Highlighter |
| Pencil | 10 | 8B, 5B, 2B, B, HB, 3H, 6H, Technical, Colored, Sketch |
| Utility | 7 | Soft Blend, Smudge, Finger Paint, Wet Paint, Dry Brush, Soft Eraser, Hard Eraser |
Layer Panel
Layers are stacked top-to-bottom in the panel — the topmost layer is drawn on top. Click to select. All painting operations affect the active layer only.
Layer Controls
Multi-Select
Reorder
Drag layers up or down to reorder. Drag a layer onto a group header to nest it inside the group.
Right-Click Context Menu
Right-click any layer for additional options: Rename, Duplicate, Merge Down, Merge Visible, Move to Group, Set as Mask, Ungroup, Rasterize, and (for pen layers) Export as SVG.
Layer Types
Standard bitmap layer. Created by default. Receives all painting, erasing, and filter operations. Content is resolution-dependent.
Editable text stored as vector data. Rendered on-the-fly at any zoom. Re-editable at any time. Non-destructively transformable with the Move tool.
Vector gradient fill. Color stops and direction are editable at any time by selecting the Fill tool and clicking the gradient layer.
Vector bezier path. Stores anchor points, handles, color, width, and fill. Double-click in the layers panel to re-edit. Exportable as SVG.
Container for a 3D model (GLB/GLTF/OBJ/FBX). Double-click to enter 3D mode. Always placed at the bottom of the layer stack. Snapshot creates a flat pixel layer from the current 3D view.
Blend Modes
Controls how a layer's colors interact with the layers beneath it.
| Mode | Effect |
|---|---|
| Normal | Standard alpha compositing. Replaces what's below at the layer's opacity. |
| Multiply | Darkens. Multiplies layer color with layers below. White = transparent, black stays black. |
| Screen | Lightens. Inverted multiply. Black = transparent, white stays white. |
| Overlay | Contrast boost. Multiplies darks, screens lights. Intensifies the image below. |
| Darken | Keeps only the darkest pixel between this layer and the layers below, per channel. |
| Lighten | Keeps only the lightest pixel between this layer and the layers below, per channel. |
| Color Dodge | Brightens the lower layer based on this layer's brightness. Creates vivid highlights. |
| Color Burn | Darkens the lower layer. Deepens shadows and increases saturation. |
| Hard Light | Strong Multiply or Screen depending on upper layer brightness. High contrast. |
| Soft Light | Subtle dodge/burn effect. Gentle lighting and shading. |
| Difference | Inverts lower layer where upper is white. No change where upper is black. |
| Exclusion | Similar to Difference but lower contrast and softer. |
| Hue | Applies the hue of this layer while keeping the saturation and luminance below. |
| Saturation | Applies the saturation of this layer to the colors below. |
| Color | Applies hue + saturation. Useful for colorizing grayscale artwork. |
| Luminosity | Applies the brightness of this layer to the hue and saturation below. |
Groups
Groups (folder layers) organize layers and enable transforming multiple layers as a single unit.
Mask Layer
One layer can be designated as the output mask. This layer's content is exported through the node's mask output as a float32 grayscale tensor.
Color Wheel
Click the foreground color swatch to open the full HSV color wheel panel.
Foreground / Background
Mini Color Wheel (Pie Menu)
Right-clicking the canvas also opens a mini color wheel in the center of the pie menu, allowing quick color changes without opening the full panel.
Palettes & Swatches
Press Q to toggle the floating swatch panel. Pick saved colors quickly or manage custom palettes.
Built-in Palettes
Create custom palettes, add the current foreground color to any palette, and reorder or delete saved swatches. Palettes persist across sessions.
Zoom, Pan & Rotate
| Action | Input |
|---|---|
| Zoom in/out | Scroll wheel |
| Fine zoom | Alt + scroll |
| Zoom in (stepped) | + or = |
| Zoom out (stepped) | - or _ |
| Reset to 100% | 0 |
| Fit to view | Fit button in toolbar (scales canvas to fill the window) |
| Pan | Middle mouse button drag |
| Rotate canvas (smooth) | Shift + scroll wheel |
| Rotate canvas ±15° | Alt+← / Alt+→ |
| Reset rotation | 0 (also resets zoom to 100%) |
Flip Canvas
The toolbar includes Flip H and Flip V buttons to horizontally or vertically flip the entire canvas (all layers). Useful for checking composition balance and spotting drawing errors.
Mirror Drawing
Toggle horizontal and/or vertical mirror drawing from the toolbar. Every brush stroke is automatically mirrored in real-time across the axis. Dashed guide lines show the mirror axis while active.
Quick Generate (AI)
Ctrl+EnterThe Quick Gen tab provides direct text-to-image generation without needing to wire up a full ComfyUI workflow. It builds a minimal SD pipeline internally and submits it to ComfyUI's API.
How to Use
- Open the Run panel on the right and switch to the Quick Gen tab
- Type your prompt in the text area
- Optionally click the gear icon to open settings (model, LoRA, negative prompt, RMBG)
- Click Run or press Ctrl+Enter
- Result appears in the preview panel
Settings (Gear Icon)
Fixed Generation Parameters
Node Outputs
| Output | Format | Description |
|---|---|---|
| image | (1, H, W, 3) float32 | All visible layers composited as a flat RGB image tensor |
| mask | (1, H, W) float32 | The designated mask layer as grayscale. White=1.0, black=0.0. |
Connect image to any image input in your workflow. Connect mask to inpainting, ControlNet, or any node accepting a ComfyUI mask tensor.
SVG Import / Export
Export a Pen Layer as SVG
- Right-click the pen layer in the layers panel
- Click Export as SVG — an .svg file is downloaded named after the layer
Import an SVG File
- Go to File → Import SVG…
- Select an .svg file
- Each subpath (M…Z block) becomes a separate pen layer inserted above the active layer
Compatible Apps
Supported SVG Features
<path> elements are imported. Groups, transforms, text, images, and rect/circle primitives are not supported.File Operations
File Menu (toolbar folder icon)
| Item | Description |
|---|---|
| New Canvas | Create a fresh empty canvas at the current size |
| Clear Canvas | Erase all content on the current canvas |
| Open Image… | Open an image file as a new canvas (replaces current) |
| Open from Input Image | Load the image connected to the node's input as a new canvas |
| Open Project (.csk)… | Load a saved .csk project file (restores all layers, text, pens, groups) |
| Open PSD… | Open a Photoshop PSD file as a new canvas with preserved layers |
| Open ORA… | Open an OpenRaster .ora file as a new canvas |
| Import Image… | Add an image file as a new pixel layer on the current canvas |
| Import from Input | Add the node's input image as a new layer |
| Import PSD Layers… | Import layers from a PSD file into the current canvas |
| Import ORA Layers… | Import layers from an ORA file into the current canvas |
| Import SVG… | Import SVG paths as pen layers |
| Save PNG | Export all visible layers as a flat PNG Ctrl+S |
| Save PSD (layers) | Export the full layer stack as a Photoshop PSD file |
| Save ORA (layers) | Export the full layer stack as an OpenRaster .ora file |
| Save Project (.csk) | Save full project with all layer data Ctrl+Shift+S |
| Export Mask PNG | Export the mask layer as a standalone grayscale PNG |
| Close | Exit the fullscreen editor |
Clipboard
Auto-Save
Canvas data is continuously auto-saved to browser IndexedDB after every change (debounced 300ms). If the browser crashes, your work is automatically recovered on the next load.
Settings
Access via the ⚙ settings button in the toolbar.
Theme
Theme choice is saved and restored automatically across sessions.
Preferences
Import / Export Settings
Export all preferences as a JSON backup file. Import to restore settings on another machine. A Reset to Defaults option returns all preferences to factory values.
Hotkeys Reference
Click the ? button in the toolbar (or settings panel) to open the full interactive hotkeys overlay with all keyboard shortcuts listed by category.
Help Menu
The ? toolbar button opens a dropdown with the following items:
For purchase, support, or bug reports see the Contact & Support section.
Keyboard Shortcuts
Tools
| Key | Tool |
|---|---|
| B | Felt Tip |
| A | Paint |
| N | Ink |
| P | Pencil |
| K | Marker |
| Y | Pastel |
| F | Smudge / Blend |
| E | Eraser |
| T | Clone Stamp |
| G | Fill / Gradient |
| I | Eyedropper |
| V | Move / Transform |
| H | Crop |
| L | Line |
| C | Circle / Ellipse |
| R | Rectangle |
| U | Pen (Bezier) |
| M | Rectangle Select |
| ⇧M | Ellipse Select |
| W | Magic Wand |
| ⇧X | Text |
| / | Toggle previous tool |
View & Canvas
| Key | Action |
|---|---|
| + / = | Zoom in |
| - / _ | Zoom out |
| 0 | Reset view (100%, no rotation) |
| Alt+←/→ | Rotate canvas ±15° |
| ⇧+Wheel | Smooth canvas rotation |
| Middle drag | Pan canvas |
| Space | Toggle all UI panels |
Brush
| Key | Action |
|---|---|
| [ | Smaller brush |
| ] | Larger brush |
| S+drag | Interactive size adjust |
| O+drag | Interactive opacity adjust |
| Alt+click | Pick color (eyedropper) |
Color
| Key | Action |
|---|---|
| X | Swap foreground/background |
| D | Reset to white/black |
| Q | Toggle floating swatches |
Edit
| Key | Action |
|---|---|
| Ctrl+Z | Undo |
| Ctrl+Y | Redo |
| Ctrl+A | Select all |
| Ctrl+D | Deselect |
| Ctrl+⇧I | Invert selection |
| Ctrl+C | Copy to clipboard |
| Ctrl+V | Paste from clipboard |
| Ctrl+J | Copy selection → new layer |
| Ctrl+⇧J | Cut selection → new layer |
| Ctrl+E | Merge down |
| Ctrl+⇧E | Merge visible |
| Ctrl+⇧G | Group selected layers |
| Delete | Clear selection |
| Alt+Delete | Fill with FG color |
| Ctrl+Delete | Fill with BG color |
File
| Key | Action |
|---|---|
| Ctrl+S | Save PNG |
| Ctrl+⇧S | Save project (.csk) |
| Ctrl+Enter | Run workflow / Quick Gen |
Transform
| Key | Action |
|---|---|
| Enter | Commit transform |
| Esc | Cancel / deselect |
| ⇧+rotate handle | Snap to 15° increments |
| Ctrl+corner handle | Free distort (pixel layers) |
Other
| Key | Action |
|---|---|
| Right-click canvas | Open pie menu |
| J | Toggle brush library |
| ` | Toggle size/opacity widget |
Contact & Support
Have a question, found a bug, or want to share your work? Reach out through any of the channels below.