Seamless Border
Blend just the edges of an image, not the whole thing
- model
- MODEL
- SEAMLESS_PARAMS
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, default0.125, capped at0.25) - how wide the seamless border zone is.start_percent/end_percent(required, FLOAT, defaults0/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.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| direction | COMBO | 4 options: none, both, horizontal, vertical | |
| border_percent | FLOAT | 0.1250–0.25 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| SEAMLESS_PARAMS | SEAMLESS_PARAMS | — |