ComfyUI Node

WebUI Prompt Bridge

Missing the A1111 prompt box? This node brings it to ComfyUI

By dianfangsihuo·Created 3 months ago·Updated 6 days ago· 39
WebUI Prompt Bridge
  • model
  • clip
  • regional_mask
  • model
  • clip
  • positive
  • negative
  • positive_text
  • negative_text
  • lora_info
  • module_config
  • image
  • mask
  • img2img_denoise
  • img2img_mode
positive_promptmasterpiece, best quality, anime style, 1girl, <lora:anima-highres-aesthetic-boost:0.65>
negative_promptworst quality, low quality, blurry, bad anatomy, extra fingers
default_clip_strength1.00
fail_on_missing_loratrue
regional_enabledfalse
regional_modematrix
regional_splitvertical
regional_ratios1,1
regional_base_enabledfalse
regional_common_enabledfalse
regional_base_ratio0.20
regional_strength1.00
regional_canvas_autotrue
regional_canvas_width1024
regional_canvas_height1024
module_table_enabledfalse
module_mask_enabledfalse
module_mask_strength1.00
module_mask_set_area_to_boundsfalse
module_negative_common_enabledfalse
module_negative_common_prompt
module_flip_enabledfalse
module_flip_axisauto
module_presets_enabledfalse
module_adetailer_enabledfalse
module_adetailer_modelface_yolov8m.pt
module_adetailer_promptdetailed face, detailed eyes, detailed hands
module_adetailer_negative_promptbad anatomy, deformed, blurry, extra fingers
module_adetailer_confidence0.30
module_adetailer_mask_blur4
module_adetailer_denoise0.40
module_adetailer_inpaint_only_maskedtrue
module_adetailer_cycles1
module_controlnet_enabledfalse
module_controlnet_preprocessorcanny
module_controlnet_model
module_controlnet_weight1.00
module_controlnet_start0.00
module_controlnet_end1.00
module_controlnet_resize_modejust_resize
module_controlnet_control_modebalanced
module_controlnet_pixel_perfecttrue
module_sam_enabledfalse
module_sam_modelsam_vit_b
module_sam_prompt_modeauto
module_sam_confidence0.50
module_sam_mask_blur4
module_sam_dilate0
module_sam_inpaint_denoise0.45
module_sam_inpaint_areaonly_masked
module_sam_padding32
module_upscale_enabledfalse
module_upscale_modehires_fix
module_upscale_by2.00
module_upscale_upscalernearest-exact
module_upscale_steps18
module_upscale_denoise0.48
module_upscale_tile_width768
module_upscale_tile_height768
module_upscale_overlap64
module_regional_lora_enabledfalse
module_img2img_image
module_img2img_mask
module_img2img_modeimg2img
module_img2img_denoise0.55
module_img2img_enabledfalse
generation_size_enabledfalse
generation_width1024
generation_height1024
generation_seed_enabledfalse
generation_seed1
generation_steps_enabledfalse
generation_steps30
generation_seed_modefixed

If you came over from AUTOMATIC1111 or Forge, the first thing ComfyUI makes you give up is the prompt box. ComfyUI's plain text fields are great at wiring nodes together and terrible at editing a hundred tags. The WebUI Prompt Bridge is the direct answer to that: it's a full WebUI-style prompt workspace that lives inside one ComfyUI node - tag chips you can drag and reorder, autocomplete with Chinese explanations, translation, favorites, prompt history, styles, a LoRA browser, regional prompts and generation-parameter takeover.

Before anything else, kill the obvious worry: the name is a lie in the good way. It doesn't call any API, it doesn't need a WebUI running, and there's no key. It will happily read tags and styles from a local A1111/Forge install if you point it at one, but out of the box it ships its own complete Danbooru tag data and autocomplete, fully offline. The "bridge" is between the two tools' strengths: WebUI does the prompt editing, ComfyUI does the workflow.

How it works

It's a real node, not a passthrough. You feed it model and clip, and it does the LoRA loading, the conditioning encoding, and - if you turn the modules on - the whole img2img and detailer configuration in one pass.

The interesting part is LoRA. You write <lora:my-style:0.75> in the prompt and the node parses it, resolves the file against your models/loras folder, calls ComfyUI's own LoRA loading logic (load_lora_for_models), strips the tag from the text that actually reaches the text encoder, and hands you back the LoRA-modified model and clip. That fixes the classic failure where your prompt says a LoRA is applied but the sampler never loaded it. fail_on_missing_lora defaults to true, so a typo'd LoRA name stops the run with an error instead of silently generating without it.

Inputs and outputs that matter

Required inputs are just model and clip. After that you mostly live in positive_prompt and negative_prompt, plus a few knobs:

  • fail_on_missing_lora - keep it true. It's the difference between finding out a LoRA is missing now vs. after a wasted render.
  • regional_enabled / regional_split / regional_ratios - turn on WebUI-style regional prompting (BREAK-based matrix regions, split vertical/horizontal/grid).
  • The module_* family (adetailer, controlnet, sam, upscale, img2img) - these are the settings that the pack's helper nodes consume.
  • The generation_* family - let the Bridge own width, height, steps and seed when you don't have upstream constants.

Outputs: positive and negative conditioning go to your KSampler; model/clip carry the applied LoRAs; positive_text/negative_text are the cleaned prompts; module_config is a JSON blob the other Bridge nodes read; and image, mask, img2img_denoise, img2img_mode feed the img2img path.

How to install

Install the whole pack, this node comes with it. In ComfyUI-Manager search ComfyUI WebUI Prompt Bridge (registry id comfyui-webui-prompt-bridge) and install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/dianfangsihuo/ComfyUI-WebUI-Prompt-Bridge.git
pip install -r ComfyUI-WebUI-Prompt-Bridge/requirements.txt

Restart ComfyUI and add it under conditioning/webui → WebUI Prompt Bridge. No model files are bundled - the pack only ships nodes and sample workflows. The bundled example workflow targets the Anima/Qwen split-model setup, but it works fine with an ordinary SDXL/Pony/Illustrious checkpoint via CheckpointLoaderSimple.

Common issues

The classic trap is wiring LoRA wrong: the Bridge can only apply a LoRA if its model output actually reaches the sampler's model input. If you ignore the output and keep your original model wired, "LoRA matched" doesn't mean "LoRA used." Relatedly, switching a Qwen/Anima split-model workflow to a normal SDXL checkpoint means turning off the Qwen-specific reference/pose branches first. And if translations come out stubbed, you're on the built-in fallback - pointing the config at a WebUI with the Prompt All in One extension gets you the real thing. It's a Chinese-first project, so the docs and status strings are partly in Chinese; the core workflow is easy enough to follow once you know where the wires go.

Categoryconditioning/webui

Inputs (77)

NameTypeDefaultDescription
modelMODEL
clipCLIP
positive_promptSTRINGmasterpiece, best quality, anime style, 1girl, <lora:anima-highres-aesthetic-boost:0.65>
negative_promptSTRINGworst quality, low quality, blurry, bad anatomy, extra fingers
default_clip_strengthFLOAT1.00-10–10
fail_on_missing_loraBOOLEANtrue
regional_enabledBOOLEANfalse
regional_modeCOMBOmatrix1 options: matrix
regional_splitCOMBOvertical3 options: vertical, horizontal, grid
regional_ratiosSTRING1,1
regional_base_enabledBOOLEANfalse
regional_common_enabledBOOLEANfalse
regional_base_ratioFLOAT0.200–1
regional_strengthFLOAT1.000–10
regional_canvas_autoBOOLEANtrue
regional_canvas_widthINT102464–16384
regional_canvas_heightINT102464–16384
module_table_enabledBOOLEANfalse
module_mask_enabledBOOLEANfalse
module_mask_strengthFLOAT1.000–10
module_mask_set_area_to_boundsBOOLEANfalse
module_negative_common_enabledBOOLEANfalse
module_negative_common_promptSTRING
module_flip_enabledBOOLEANfalse
module_flip_axisCOMBOauto3 options: auto, horizontal, vertical
module_presets_enabledBOOLEANfalse
module_adetailer_enabledBOOLEANfalse
module_adetailer_modelCOMBOface_yolov8m.pt9 options: face_yolov8m.pt, face_yolov8n.pt, face_yolov8s.pt, hand_yolov8s.pt, hand_yolov8n.pt, person_yolov8m-seg.pt, +3
module_adetailer_promptSTRINGdetailed face, detailed eyes, detailed hands
module_adetailer_negative_promptSTRINGbad anatomy, deformed, blurry, extra fingers
module_adetailer_confidenceFLOAT0.300–1
module_adetailer_mask_blurINT40–64
module_adetailer_denoiseFLOAT0.400–1
module_adetailer_inpaint_only_maskedBOOLEANtrue
module_adetailer_cyclesINT11–8
module_controlnet_enabledBOOLEANfalse
module_controlnet_preprocessorCOMBOcanny10 options: none, canny, depth, openpose, lineart, softedge, +4
module_controlnet_modelSTRING
module_controlnet_weightFLOAT1.000–2
module_controlnet_startFLOAT0.000–1
module_controlnet_endFLOAT1.000–1
module_controlnet_resize_modeCOMBOjust_resize3 options: just_resize, crop_and_resize, resize_and_fill
module_controlnet_control_modeCOMBObalanced3 options: balanced, prompt, control
module_controlnet_pixel_perfectBOOLEANtrue
module_sam_enabledBOOLEANfalse
module_sam_modelCOMBOsam_vit_b6 options: sam_vit_b, sam_vit_l, sam_vit_h, sam_hq_vit_h, mobile_sam, custom
module_sam_prompt_modeCOMBOauto4 options: auto, point, box, mask
module_sam_confidenceFLOAT0.500–1
module_sam_mask_blurINT40–64
module_sam_dilateINT0-64–64
module_sam_inpaint_denoiseFLOAT0.450–1
module_sam_inpaint_areaCOMBOonly_masked2 options: whole_picture, only_masked
module_sam_paddingINT320–512
module_upscale_enabledBOOLEANfalse
module_upscale_modeCOMBOhires_fix4 options: hires_fix, ultimate_sd_upscale, latent_upscale, tile
module_upscale_byFLOAT2.001–8
module_upscale_upscalerSTRINGnearest-exact
module_upscale_stepsINT180–150
module_upscale_denoiseFLOAT0.480–1
module_upscale_tile_widthINT768128–4096
module_upscale_tile_heightINT768128–4096
module_upscale_overlapINT640–1024
module_regional_lora_enabledBOOLEANfalse
module_img2img_imageSTRING
module_img2img_maskSTRING
module_img2img_modeCOMBOimg2img2 options: img2img, inpaint
module_img2img_denoiseFLOAT0.550–1
module_img2img_enabledBOOLEANfalse
generation_size_enabledBOOLEANfalse
generation_widthINT102464–16384
generation_heightINT102464–16384
generation_seed_enabledBOOLEANfalse
generation_seedINT10–18446744073709550000
generation_steps_enabledBOOLEANfalse
generation_stepsINT301–10000
generation_seed_modeCOMBOfixed4 options: fixed, increment, decrement, randomize
regional_maskoptMASK

Outputs (12)

NameTypeDescription
modelMODEL
clipCLIP
positiveCONDITIONING
negativeCONDITIONING
positive_textSTRING
negative_textSTRING
lora_infoSTRING
module_configSTRING
imageIMAGE
maskMASK
img2img_denoiseFLOAT
img2img_modeSTRING