Extensions/LF Nodes
ComfyUI Extension

LF Nodes

Custom nodes with a touch of extra UX, including: history for primitives, JSON manipulation, logic switches with visual feedback, LLM chat... and more!

By lucafoscili·Created 2 years ago·Updated about a year ago· 50
lucafoscili/comfyui-lf
Nodes91
On cloudLocal install
Category✨ LF Nodes/Filters, ✨ LF Nodes/Image
Stars50
Updatedabout a year ago

Nodes (91)

Blend

Overlay one image on another with a slider, and actually see it happen

✨ LF Nodes/Filters
Blur images

Blur an entire batch of images at once, by percentage, with filenames intact

✨ LF Nodes/Image
Boolean

A boolean primitive with history and randomization — the toggle that remembers

✨ LF Nodes/Primitives
Brightness

Gamma, midpoint, and localized lift

✨ LF Nodes/Filters
LLM <-> Character

Role-play with a local LLM from inside your workflow — no API key required

✨ LF Nodes/LLM
Checkpoint selector

Pick checkpoints with cover art, or stress-test your whole model folder on autopilot

✨ LF Nodes/Selectors
CivitAI metadata setup

Making your generations actually show their used resources on CivitAI

✨ LF Nodes/Configuration
Clarity

Midtone contrast plus sharpening in one pass

✨ LF Nodes/Filters
Color Analysis

Steal the color style from one image and apply it to another, with charts to prove it

✨ LF Nodes/Analytics
Compare images

A slide-to-compare node for before/after checks

✨ LF Nodes/Image
Contrast

Midpoint control and local edge contrast, not a blunt slider

✨ LF Nodes/Filters
Control panel

Where this pack's widgets get their looks (and colors)

✨ LF Nodes/Configuration
Desaturation

Strip the color per channel — the control that a grayscale slider never gives you

✨ LF Nodes/Filters
Display boolean

A display-only node for booleans, so your graph shows its truth

✨ LF Nodes/Primitives
Display float

Make the float on the wire visible — the smallest debugging node in the pack

✨ LF Nodes/Primitives
Display integer

A debug probe for integer values

✨ LF Nodes/Primitives
Display JSON

See the JSON on the wire without reaching for a text node

✨ LF Nodes/JSON
Display primitive as JSON

Every number and string on your graph, wrapped in one JSON

✨ LF Nodes/Primitives
Display string

A string you can actually read

✨ LF Nodes/Primitives
Embedding selector

With a preview and CivitAI info

✨ LF Nodes/Selectors
Extract prompt from LoRA tag

Turn a LoRA filename into prompt keywords, automatically

✨ LF Nodes/Logic
Extract string

One substring, pulled out and typed five different ways

✨ LF Nodes/Logic
Film grain

Give your images that 35mm texture without leaving the graph

✨ LF Nodes/Filters
Float

A float slider that remembers your last fifty values

✨ LF Nodes/Primitives
Gaussian Blur

The blur node with a preview, because blur is rarely a surprise

✨ LF Nodes/Filters
Get Random Key From JSON

Grab a random key from a JSON object, reproducibly

✨ LF Nodes/JSON
Get Value from JSON

Pluck a value out of a JSON blob without writing a single line of Python

✨ LF Nodes/JSON
LLM Image classifier

Ask a local LLM what's in your image, and get a verdict to branch on

✨ LF Nodes/LLM
Image Histogram

Read your image's exposure like a photographer, not a guesser

✨ LF Nodes/Analytics
Image list from JSON

Generating a batch of placeholder canvases sized to your JSON

✨ LF Nodes/JSON
Images editing breakpoint

Pause mid-workflow and hand-edit the image before it goes on

✨ LF Nodes/Image
Images slideshow

Flip through your whole batch in the node — a carousel for image lists

✨ LF Nodes/Image
Integer

LF Nodes' history trick

✨ LF Nodes/Primitives
Is image in landscape res.?

Ask the image which way it's facing, then branch on the answer

✨ LF Nodes/Logic
Keyword counter

Find the duplicate keyword wrecking your prompt

✨ LF Nodes/Analytics
Keyword toggle from JSON

Prompt building with checkboxes instead of typing

✨ LF Nodes/JSON
Line

Draw a line on an image, with an honest coordinate system

✨ LF Nodes/Filters
LLM Chat

Chat with a local LLM inside your workflow, then use the answer

✨ LF Nodes/LLM
LLM Messenger

Roleplay with a character, get a styled prompt out the other end

✨ LF Nodes/LLM
Load and edit images

Load images from disk and edit them before they touch the model

✨ LF Nodes/IO Operations
Load file from disk once

Load each file exactly once — the batch-processing cheat code

✨ LF Nodes/IO Operations
Load images from disk

Dump a folder of images into your workflow and actually find the one you want

✨ LF Nodes/IO Operations
Load JSON from disk

The local JSON loader that doesn't want your URL

✨ LF Nodes/IO Operations
Load LoRA tags

...> prompt and actually get the LoRA

✨ LF Nodes/Configuration
Load metadata from image

Pulling generation parameters back out of an image file

✨ LF Nodes/IO Operations
LoRA and embedding selector

One picker that loads a LoRA *and* its twin embedding

✨ LF Nodes/Selectors
LoRA selector

The LoRA picker that shows you the cover art and spits out a ready-to-paste tag

✨ LF Nodes/Selectors
LUT Application (filter)

Applying a color-grade LUT with a live before/after slider

✨ LF Nodes/Image
LUT Generation

Turn a color transformation into a reusable LUT

✨ LF Nodes/Analytics
Markdown doc. generator

Let a local LLM write your docs — no API key needed

✨ LF Nodes/LLM
Math operation

One formula string instead of a pile of Add/Multiply nodes

✨ LF Nodes/Logic
Multiple image resize for Web

Batch-resize a folder of images without leaving the graph

✨ LF Nodes/Image
Notify

Get pinged when the render finishes — and requeue from the notification

✨ LF Nodes/Configuration
Parse Prompt with LoRA tags

Parsing keyword-encoded LoRA tags out of a prompt

✨ LF Nodes/Logic
Random boolean

A weighted coin flip for your workflow

✨ LF Nodes/Primitives
Regex replace

Find-and-replace for prompts, using real Python regex

✨ LF Nodes/Logic
Extract region from sources

Hand an LLM your code one function at a time

✨ LF Nodes/IO Operations
Resize image by edge

Aspect-preserving resize by long or short side

✨ LF Nodes/Image
Resize image to dimension

Resize to an exact size — crop or pad, your call

✨ LF Nodes/Image
Resize image to square

Cropping to a square without doing the math yourself

✨ LF Nodes/Image
Resolution switcher

Roll the dice on portrait vs landscape

✨ LF Nodes/Logic
Sampler selector

Pick your sampler from a dropdown that remembers

✨ LF Nodes/Selectors
Save image with CivitAI-compatible metadata

A SaveImage replacement that actually gets your resources recognized

✨ LF Nodes/IO Operations
Save JSON

Writing any JSON blob in your graph to disk

✨ LF Nodes/IO Operations
Save Markdown

Write that LLM-generated doc to disk, timestamp and all

✨ LF Nodes/IO Operations
Scheduler selector

A scheduler dropdown with history, filtering, and randomization bolted on

✨ LF Nodes/Selectors
Sepia

Old-photo filter that doesn't commit you to full sepia

✨ LF Nodes/Filters
Generate sequential seeds

20 seeds out of one starting number

✨ LF Nodes/Seed generation
Set/Create a Value in a JSON Object

Write into a JSON object from the graph — the 'set' half of LF's JSON pair

✨ LF Nodes/JSON
Shuffle JSON keys

Randomize the order of your JSON keys — for real this time

✨ LF Nodes/JSON
Convert to number

Convert anything to a number — and get the sum for free

✨ LF Nodes/Primitives
Convert to string

Every string conversion you'd ever want, in one node

✨ LF Nodes/Primitives
Sort JSON keys

Sort your JSON keys and stop squinting at the tree

✨ LF Nodes/JSON
String

A string node that remembers what you typed before

✨ LF Nodes/Primitives
String replace

Find-and-replace for your prompt text, no regex required

✨ LF Nodes/Logic
String template

Mail-merge for prompts

✨ LF Nodes/Logic
Convert string to JSON

Turning typed text into a real JSON value

✨ LF Nodes/JSON
Switch Float

A ternary if/else for float values

✨ LF Nodes/Logic
Switch Image

The lazy image switch that only runs the branch you pick

✨ LF Nodes/Logic
Switch Integer

A boolean switch for any integer in your workflow

✨ LF Nodes/Logic
Switch JSON

Flip between two JSON datasets with one boolean

✨ LF Nodes/Logic
Switch String

A boolean switch for text that doesn't make you squint at wires

✨ LF Nodes/Logic
Update usage statistics

Track which checkpoints and LoRAs you actually burn time on

✨ LF Nodes/Analytics
Upscale model selector

An upscaler picker that remembers your last few and can randomize the rest

✨ LF Nodes/Selectors
Urandom Seed Generator

Twenty fresh seeds per run, straight from your CPU's entropy

✨ LF Nodes/Seed generation
Usage statistics

A usage dashboard node with zero inputs

✨ LF Nodes/Analytics
VAE selector

A VAE picker with history, wildcard filtering, and a shuffle button

✨ LF Nodes/Selectors
View images

A masonry grid for eyeballing every frame at once

✨ LF Nodes/Image
Vignette

A fast, tweakable dark-edge filter that won't fight the GPU

✨ LF Nodes/Filters
Wall of text

Concatenate up to ten prompt fragments, optionally in a blender

✨ LF Nodes/Primitives
Write JSON

A JSON text box that catches your typos before the queue does

✨ LF Nodes/JSON
Readme

LF Nodes (Legacy Repository)

MIGRATION PROCESS COMPLETE!

You can start migrating to the new repository whenever you want, I completed the transition and everything seems to working smoothly. This repo will be archived in the next weeks


🚨 This repository is now in legacy mode 🚨

LF Nodes has officially migrated to its new dedicated repository: LF Nodes. This repository will no longer receive new updates, fixes, or features.

Notes:

  • Last update: 2025-02-11
  • Status of the nodes at this date: Fully functional.
  • More info about the migration: See Discussion #145

📢 What Does This Mean?

  • ❌ No further development – This repo is now frozen at its last stable release.
  • ✅ New repository available – Active development has moved to LF Nodes.
  • ⚡ New Features & Improvements – The new repo leverages LF Widgets, a brand-new web components library designed for modularity and scalability.

📜 Archived Documentation

The original README and documentation for this repository have been moved to /docs/legacy_README.md for reference.


💡 Why the Migration?

LF Nodes is evolving to provide:

  • A better UI framework with LF Widgets.
  • Scalability & future-proofing for upcoming ComfyUI features.
  • A cleaner, more maintainable codebase.

🛠 What Now?

The migration process will take some time, as the codebase is being adapted to the new frontend library. Follow the new repository for updates.

  • The same nodes will be available, with names and functionalities largely unchanged.
  • Frontend improvements will make nodes lighter and more modular.
  • Existing workflows remain functional in this repo, but future features will only appear in the new LF Nodes.

This repository will stay accessible until migration is complete. Once some time has passed after the first stable release of LF Nodes, this repo will be archived.