A rich, feature-packed prompt editor designed for ComfyUI and other AI applications. ComfyUI Prompt Studio provides an intuitive interface for creating, editing, and managing complex prompts with real-time compilation, custom chants, LoRA support, and intelligent autocompletion.
- Real-time Compilation: Prompts are automatically compiled as you type and changes are reflected instantly in the underlying text area
- Advanced Prompt Editor: Rich text editing with syntax highlighting and tag recognition
- Custom Chants System: Create reusable prompt templates with variables and descriptions
- LoRA & Embedding Support: Built-in support for LoRA and embedding tags with proper formatting
- Intelligent Autocompletion: Context-aware suggestions based on tag databases and custom definitions
- Live Preview: See your compiled prompt output update in real-time as you make changes
- Flexible Integration: Works as an overlay on any text area in ComfyUI and other applications
-
Download the extension:
- Clone or download this repository to your ComfyUI
custom_nodesdirectory - Path should be:
ComfyUI/custom_nodes/ComfyUI-Prompt-Studio/
- Clone or download this repository to your ComfyUI
-
Install dependencies:
cd ComfyUI/custom_nodes/ComfyUI-Prompt-Studio pip install -r requirements.txt -
Restart ComfyUI:
- Restart your ComfyUI instance
- The extension will automatically load and be available on text input fields
-
Open the editor:
- Click on any text input field in ComfyUI
- Press Ctrl+Space to open the ComfyUI Prompt Studio editor
-
Write your first prompt:
1girl, beautiful, looking at viewer, smile- Type normally - you'll see syntax highlighting and autocompletion
- The compiled prompt appears in real-time in the preview panel
-
Use autocompletion:
- Start typing a tag name like "bea..."
- Press Ctrl+Space or wait for suggestions to appear
- Use arrow keys to navigate, Tab or Enter to accept
-
Add weights to tags:
- Type
(beautiful:1.2)for increased emphasis - Use
[[beautiful]]for reduced emphasis - Use Ctrl+Up / Ctrl+Down arrows to adjust weights quickly
- Type
Create a chant in the right panel:
@@quality
/// High quality rendering tags
masterpiece, best quality, high quality
ultra-detailed, highly detailed
Use the chant in your prompt:
@quality, 1girl, beautiful
See real-time expansion:
- The preview panel shows the expanded version
- Your original prompt structure is preserved
Add LoRA models:
<lora:character_model:0.8>
1girl, specific_character_name
Use embeddings:
<embedding:negative_embedding:0.9>
bad_quality, blurry
Combine everything:
@quality, 1girl, beautiful
<lora:style_model:0.7>
// This is a comment that won't appear in output
smile, looking at viewer
- Start simple: Begin with basic tags and gradually add complexity
- Use the preview: Always check the preview panel to see your compiled output
- Experiment with weights: Try different emphasis levels to see what works
- Save your chants: Create reusable chants for common tag combinations
- Check the help panel: Click the Help button for detailed documentation
The ComfyUI Prompt Studio interface consists of three main panels:
- Primary editing area for writing your prompts
- Supports all tag types: normal tags, custom chants, LoRA, and embeddings
- Syntax highlighting with different colors for different tag types
- Real-time validation with visual indicators for invalid or unregistered tags
- Autocompletion triggered by typing or
Ctrl+Space
- Define custom chants using the
@@namesyntax - Write reusable prompt templates with descriptions
- Comments support using
///for chant descriptions - Real-time expansion of chants in the preview panel as you type
Three mutually exclusive panels that can be toggled:
- Preview Panel: Shows the final compiled prompt output in real-time with all chants resolved and comments removed
- Settings Panel: Configure editor appearance, compilation options, and data sources
- Help Panel: Comprehensive documentation and keyboard shortcuts
ComfyUI Prompt Studio supports four main types of tags:
Standard tags that form the core of your prompt.
1girl, looking_at_viewer, smile
((masterpiece)), (best quality:1.2)
[[sky]], (dark:0.8)
Features:
- Automatic underscore/space conversion based on settings
- Weight syntax using parentheses
(tag:1.2)or brackets[[tag]] - Comments support using
//or/* */syntax - Minus notation: Use
-tagor-<lora:name>to delete/remove previous tags (interpreted as weight 0.0)
User-defined reusable prompt templates prefixed with @.
@quality, @character:girl, @pose:standing
Usage:
- Reference:
@chant_nameor@chant_name:weight - Chants can include multiple tags and even LoRA/embedding references
- Weights are applied to all tags within the chant
Tags for textual inversions and embeddings.
<embedding:embedding_name>
<embedding:embedding_name:0.9>
Specialized tags for LoRA (Low-Rank Adaptation) models.
<lora:model_name.safetensors:0.8>
<lora:model_name:0.7:extra_params>
Define custom chants in the right panel using this syntax:
@@quality_high
/// High quality prompts for detailed artwork
masterpiece, best quality, high quality
ultra-detailed, highly detailed
@@character_girl
/// Basic female character setup
1girl, solo, beautiful detailed face
looking at viewer
@@style_anime
/// Anime art style modifiers
anime, manga style, cell shading
vibrant colors, sharp lines
Syntax Rules:
- Label:
@@chant_namestarts a new chant definition - Description: Lines starting with
///are treated as descriptions - Content: All other lines are treated as prompt content
- Comments: Use
//for single-line comments and/* */for multi-line comments
(tag:1.2) # Increase emphasis
(tag:0.8) # Decrease emphasis
((tag)) # Double emphasis (equivalent to :1.21)
(((tag))) # Triple emphasis (equivalent to :1.331)
[[tag]] # Reduce emphasis (equivalent to :0.826)
[[[tag]]] # Further reduce emphasis
Ctrl+Up Arrow: Increase weight by 0.1Ctrl+Down Arrow: Decrease weight by 0.1
You can delete or remove previously added tags using minus notation:
-1girl, -<lora:example>
How it works:
- Tags prefixed with
-are interpreted as having a weight of 0.0 - Tags with zero weight have the special effect of deleting previous occurrences
- Works with all tag types: normal tags, LoRA, embeddings, and chants
- Adding a regular tag afterward will restore the deleted tags
Examples:
1girl, beautiful, -1girl, 2girls # Results in: beautiful, 2girls
<lora:model:0.8>, -<lora:model>, <lora:other:0.5> # Results in: <lora:other:0.5>
As you type, your prompt automatically goes through several processing steps in real-time:
- Comment Removal: All comments (
//and/* */) are stripped from the prompt - Chant Resolution: Custom chants (e.g.,
@quality) are expanded to their full content - Duplicate Handling: Duplicate tags are processed according to your settings:
- Overwrite: Later occurrences replace earlier ones
- Multiply: Weights are multiplied together
- Add: Weights are added together
- Ignore: First occurrence is kept, duplicates are ignored
- Normalization: Tags are normalized according to underscore/space settings
- Source Embedding: Original prompt is compressed and embedded as a comment for restoration
Input:
@quality, 1girl, looking_at_viewer
// This is a comment
<lora:style_model:0.8>
With chant definition:
@@quality
/// High quality tags
masterpiece, best quality
Output:
masterpiece, best quality, 1girl, looking_at_viewer, <lora:style_model:0.8>
/*# PROMPT_STUDIO_SRC: <compressed_original_data> */
ComfyUI Prompt Studio uses various data sources for autocompletion and tag validation:
- Tags: Comprehensive database of tags with categories and aliases
- E621 Tags: Furry artwork tags from e621.net
- Artist Database: Artist names and associated URLs
- Quality Tags: Common quality and style modifiers
You can configure data sources in the settings panel:
# Dictionary Sources Configuration
https://example.com/tags.csv # Remote dataset
./local/tags.csv # Local file
# Lines starting with # are comments
CSV Format (headerless, UTF-8 encoded):
1girl,1,50000,"girl,female,woman"
looking_at_viewer,2,25000,eye_contact
masterpiece,5,40000,"best_quality,high_quality"
- Remote URLs: Fetch data from web sources (e.g.,
https://example.com/tags.csv) - Local Files: Load CSV files from your local system (e.g.,
./local/tags.csv) - Multiple Sources: Combine multiple data sources for comprehensive coverage
- CSV Format: Headerless CSV files encoded in UTF-8 with columns: Tag, Category, Usage count, Comma-separated aliases
- Font Family: Choose your preferred coding font
- Font Size: Adjust text size for better readability
- Line Height: Control vertical spacing
- Theme: Light or dark mode support
- Normalization: Convert between underscores and spaces
- Escape Characters: Handle special characters in prompts
- Duplicate Handling: Configure how duplicate tags are processed
- Dictionary Sources: Add or remove tag databases
- Auto-loading: Configure automatic data loading on startup
- Cache Settings: Control how data is cached and updated
ComfyUI Prompt Studio integrates seamlessly with ComfyUI:
- Overlay Mode: Appears as an overlay on any text input field
- Automatic Detection: Detects ComfyUI text areas and provides enhanced editing
- Workflow Integration: Works with ComfyUI's workflow system and node-based interface
The extension is designed to work with other applications:
- Universal Text Areas: Can be called from any text input field
- Customizable Integration: Settings can be adjusted per application
- Extensible Architecture: Easy to add support for new applications
Ctrl+EnterorOKbutton: Close the editorCtrl+Space: Trigger autocompletion
Tab: Accept current autocompletion suggestionCtrl+Up/Down: Increase/decrease tag weight
Ctrl+Z: UndoCtrl+Y: Redo
Original prompts are preserved even after compilation:
- Compressed using Brotli compression
- Embedded as comments in the output
- Allows full restoration of original prompt structure
- High-performance dictionary engine written in Rust
- Compiled to WebAssembly for fast search and filtering
- Handles large datasets efficiently
- Multi-language support with i18n system
- Currently supports English and Japanese
- Easy to add new translations
- Node.js and npm/pnpm
- Rust toolchain for WASM compilation
- Modern browser with WebAssembly support
# Install dependencies
pnpm install
# Build WASM module
pnpm run build-wasm
# Start development server
pnpm run dev
# Build ComfyUI extension
pnpm run build-extensions-comfyui
# Run tests
pnpm run test- Svelte: Frontend framework with custom element support
- Web Components: Custom elements for reusable UI components with encapsulation
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- Rust/WASM: High-performance dictionary engine
- Jotai: Robust state management with isolation and reactivity
- daisyUI: Pre-built components for rapid UI development
- CodeMirror: Advanced text editing capabilities
- Paraglide: Localization and internationalization support
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and ensure code quality
- Submit a pull request
This project is open source. Please check the license file for specific terms and conditions.