Nodes/JNComfy/Seamless Border
ComfyUI Node

Seamless Border

Blend just the edges of an image, not the whole thing

By jn-jairo·Created 2 years ago·Updated 2 years ago· 5
Seamless Border
  • model
  • MODEL
  • SEAMLESS_PARAMS
direction
border_percent0.125
start_percent0.000
end_percent1.000

The pack's plain JN_Seamless patches an entire model so everything it generates tiles edge to edge - great for a wallpaper texture, wrong if you want a normal, one-off composition with a subject in the middle that just happens to need its edges to blend against a copy of itself. JN_SeamlessBorder is the narrower tool: it only makes a strip around the border seamless-blendable, leaving the center of the image untouched.

It's from JNComfy (jn-jairo/jn_comfyui), a one-person pack that also covers audio, face restoration, and a family of small logic primitives - this node sits in the same "Patch" category as full-image JN_Seamless. There's essentially no community discussion of the pack anywhere, so the README and the node's own schema are the whole reference here.

How it works

Same underlying trick as full-image seamless tiling - patching the model's conv layers to wrap at the edges instead of zero-padding - but scoped to a border region instead of the whole canvas. border_percent sets how wide that region is, as a fraction of the image edge, capped at 0.25 - meaning you can't push the seamless zone past a quarter of the image width using this node; if you need more than that, plain JN_Seamless (patching the whole image) is the one to reach for instead.

start_percent and end_percent gate when during the sampling schedule the patch is active, as a fraction of total steps - the same convention ControlNet's start/end percent uses. Leave them at their defaults (0 and 1) to apply the patch across the whole run; narrow the window only if you have a specific reason to apply it just during the early structural steps or just during late detail steps.

The output side is the part to plan for before you start: this node doesn't hand you a ready-to-sample MODEL and stop there. It outputs a patched MODEL plus a SEAMLESS_PARAMS bundle - and the README's own Sampling section names a sibling node, JN_KSamplerSeamlessParams, that's clearly built to consume exactly that output. This node is one half of a pair, not a complete standalone step; a plain SEAMLESS_PARAMS-shaped output with nowhere to plug in will just sit there unused.

The inputs and outputs that matter

  • model (required, MODEL) - the checkpoint to patch.
  • direction (required, none / both / horizontal / vertical) - which axes get the border treatment.
  • border_percent (required, FLOAT, default 0.125, capped at 0.25) - how wide the seamless border zone is.
  • start_percent / end_percent (required, FLOAT, defaults 0 / 1) - when in the sampling schedule the patch applies.
  • Outputs: MODEL (patched), SEAMLESS_PARAMS (feeds a compatible sampler node).

Installing it

ComfyUI Manager: search "JNComfy". Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/jn-jairo/jn_comfyui

Restart ComfyUI. No models to download - it patches your existing checkpoint.

Common issues & troubleshooting

SEAMLESS_PARAMS has nowhere to plug in. Check the pack's Sampling section for JN_KSamplerSeamlessParams before wiring this node into your graph expecting it to do something with a stock KSampler - the params output specifically needs a compatible consumer.

You need more than a quarter of the image to blend. border_percent is hard-capped at 0.25 - that's a real ceiling on this node, not a UI suggestion. For a full-image seamless result, use JN_Seamless instead.

The blend applies to the wrong part of the generation. Like ControlNet's start/end percent, it's easy to get the intuition backwards - 0 is the start of sampling, 1 is the end. Double-check which portion of the schedule you actually meant to target before assuming the node is broken.

CategoryJN/Patch

Inputs (5)

NameTypeDefaultDescription
modelMODEL
directionCOMBO4 options: none, both, horizontal, vertical
border_percentFLOAT0.1250–0.25
start_percentFLOAT0.0000–1
end_percentFLOAT1.0000–1

Outputs (2)

NameTypeDescription
MODELMODEL
SEAMLESS_PARAMSSEAMLESS_PARAMS