Generated buckets

Training resolutions for this base model & step (area kept near native).

Drop images here

Only the width × height is read — image data never leaves your browser.

or add dimensions

Add images or dimensions to see which bucket each one lands in.

A preview for the aspect-ratio bucketing used when training LoRA or DreamBooth with kohya_ss / sd-scripts and similar trainers. Pick a base model (SDXL = 1024, SD 2.x = 768, SD 1.5 = 512) and a bucket step (64 / 32 / 8), and it generates the set of training resolutions (buckets) that keep the model's native total pixel count. Then drop your dataset images — or type dimensions directly like "1920x1080" — and each image is assigned to the bucket with the closest aspect ratio, showing the cover scale factor, whether it has to be upscaled, and the fraction cropped away by the center crop. The small diagram on each row is drawn from the numbers: the scaled source (red) versus the kept bucket region (green), so you can see at a glance which edges get trimmed and by how much. Because bucketing makes a bucket per aspect ratio and snaps each image to the nearest one before center-cropping, very tall or very wide images lose a lot at the edges, and small images get upscaled (if you don't disable upscaling). Checking this before you launch a run helps you avoid cropping off heads or important edges, and avoid soft results from needless upscaling. It reads only the width × height of each image — the image data is decoded in your browser but never sent anywhere, and all the math runs locally. There is no upload at all.

How to use

  1. Pick a base model (SDXL = 1024, SD 2.x = 768, SD 1.5 = 512) and a bucket step (64 is standard). The generated bucket list updates instantly.
  2. Drop your dataset images (multiple at once) or type dimensions directly like "1920x1080". Only the width × height is read.
  3. Read each image's bucket, scale, crop fraction, and small diagram to spot images that lose a lot to cropping or get upscaled — before you train.

FAQ

Are my images uploaded to a server?

No. Images are decoded in your browser only to read their width × height — neither the files nor the sizes are sent anywhere, and the bucket math runs entirely on your device. You can also just type dimensions by hand.

Do these buckets exactly match what kohya produces?

The approach (keep the area near native, build width × height in multiples of the step, then snap each image to the nearest-aspect bucket and center-crop) follows kohya_ss / sd-scripts bucketing. But the exact min/max bucket resolutions, the no-upscale option, and rounding details depend on your trainer's settings. This tool is for quickly grasping which images crop or upscale, and how much; defer to your trainer for the final numbers.

What does the "upscaled" badge mean?

It means that image has to be enlarged (scale greater than 1) to cover its bucket. If you train with no-upscale enabled, an upscaled image — i.e. one that is smaller than its bucket — tends to look soft, so it's a signal to swap in a higher-resolution source.

What is the crop fraction?

It's the fraction of area trimmed off by the center crop after the image is scaled to cover its assigned bucket. "exact" means almost nothing is cropped (the aspect matches the bucket); larger values mean more is cut from the edges, which is common for very tall or very wide images.

Should I use a bucket step of 64, 32, or 8?

64 is the standard for SD/SDXL. Smaller steps (32 or 8) create more buckets so images match their aspect more closely and crop less, but you get more distinct resolutions, which makes batching during training less tidy. Start at 64 and only go finer if a particular aspect ratio crops more than you'd like.

Does orientation matter?

Yes. Both portrait and landscape buckets are generated, and each image is assigned to the closest bucket including its orientation. A landscape photo snaps to a landscape bucket and a portrait illustration to a portrait one, each cropped on the opposite pair of edges.