๐๏ธ Tile Checkpoint Patch
Make any model generate seamless tiles in two clicks
- model
- vae
- MODEL
- VAE
Some jobs need the image's left edge to meet its right edge as if they were the same edge. Seamless textures - wallpapers, game tiles, fabric, wrapping paper - and the whole family of tiled-diffusion tricks both depend on a model that treats the canvas as if it wraps around like a torus. By default, diffusion models don't: generate past native resolution and you get seams, duplicated anatomy, and the classic tiling artifacts everyone's hit at some point.
Tile Checkpoint Patch fixes this the old-school way: it rewrites the model's convolutions so they pad circularly instead of with zeros, in the X and Y axes. Circular padding means the edges of the image "see" each other - content at the right edge blends into the left - so whatever you generate is seamlessly tileable. This is the same trick the A1111-era "seamless" scripts and tiled-diffusion setups used, done as a ComfyUI node.
How it works
You feed in a MODEL and a VAE, and get both back patched. The two controls:
- tiling -
enable(both axes),x_only,y_only, ordisable. For a repeating texture you wantenable; for a strip that only needs to wrap horizontally,x_only. - copy_option - this is the one to care about.
Make a copydeep-copies the model before patching (safer, costs extra VRAM and RAM);Modify in placemutates the original model object.
The Modify in place option is a real footgun. ComfyUI keeps loaded checkpoints in memory and shares them across the graph - if you patch a model in place, every other node connected to that same model sees the patched version. If you're only using the model for seamless generation, that's fine. If the same checkpoint feeds another branch of the workflow where you wanted normal edges, you've silently changed its behavior. When in doubt, take the copy. The memory hit is real but it's the price of not corrupting the rest of your graph.
What to do with it
Two genuinely useful patterns:
- Seamless texture generation. Patch your model, prompt a brick pattern or a plaid fabric, and every output tiles perfectly. This is the node's bread and butter.
- Tiled diffusion / tiled upscaling. When you split a large image into tiles and diffuse each one, tiles fight at their seams. A tile-patched model makes each tile's edges agree, which is the mechanism behind "Tile ControlNet + tiled diffusion = very realistic upscaler" - and why the KB's upscaling guidance lists tiling as the path to arbitrary output sizes on limited VRAM. Note the VAE gets patched too, which matters when the VAE decode is also tiled.
It's not a substitute for a Tile ControlNet - this patches the model's geometry, the ControlNet conditions on the source image. They're complementary layers of the same workflow.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/YarvixPA/ComfyUI-NeuralMedia
cd ComfyUI-NeuralMedia
pip install -r requirements.txt
or ComfyUI Manager โ search ComfyUI-NeuralMedia, restart. Pack by YarvixPA (the FLUX.1-Fill-dev-GGUF author); if the clone 404s, Manager's registry entry works.
Gotchas
- Patch before sampling, and patch the VAE if you decode tiled. Both outputs come from this node for a reason.
Modify in placechanges the shared model. If your graph gets weird after enabling it, that's why - switch toMake a copy.- If tiles still seam, check that the tiling actually covers both axes (
enable, notx_only) and that your sampler's output resolution is inside the model's native range; the patch fixes edge continuity, not the underlying resolution problem.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | โ | |
| vae | VAE | โ | |
| tiling | COMBO | 4 options: enable, x_only, y_only, disable | |
| copy_option | COMBO | 2 options: Make a copy, Modify in place |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | โ |
| VAE | VAE | โ |