Contact Sheet / Image Grid Maker

Arrange a batch of images into one grid, in any order — add more anytime, sort by name/date/size, or drag rows to reorder.

Select one or more images — do this again any time to add more, even from a different folder.

About this tool

Arranges a batch of images into a single grid image — a "contact sheet" — with as many columns as you choose, each photo cropped to fit its cell. Handy for a quick visual overview of a folder of photos, a mood board, a set of product shots, or a simple image collage. Everything runs locally in your browser using the canvas element — nothing is uploaded anywhere.

Building the set. Choosing images doesn't have to happen in one go — select a batch, then open the file picker again (even for a different folder) and the new images are added to the list rather than replacing it, so a sheet can mix photos from wherever they're stored. Each image in the list shows a thumbnail and filename with a ✕ to drop one you don't want.

Controlling the order. Images fill the grid left-to-right, top-to-bottom in the order they're listed. Reorder that list by dragging a row, with the ▲/▼ buttons, or with a sort button — by filename, by the file's last-modified date, or by file size — click the same sort button again to reverse it. Sorting and dragging both only touch the order; nothing is re-cropped or re-loaded.

Choosing columns and cell size. More columns fits more images per row at the cost of each one being smaller and more tightly cropped; a taller cell size shows more detail per photo but produces a larger final image. There's no single right answer — a 3–4 column grid with a large cell size reads well as a portfolio-style overview, while 6–8 narrow columns fit more thumbnails into a quick reference sheet.

Common uses: a visual index of a photo folder before choosing which to edit or delete, a simple product or portfolio grid, a mood board, comparing several image variants side by side, or a printable proof sheet — the traditional darkroom "contact sheet" this tool is named after, where every negative in a roll got printed small on one page for review.

To find and remove actual duplicate or near-duplicate photos before building a sheet, use the duplicate image finder. To shrink the originals first, the image compressor; for the same grid-of-frames idea applied to a single video instead of separate photos, the video sprite sheet generator.

Frequently asked questions

How does an image get fit into its cell if the proportions don't match?
Each image is scaled and center-cropped to fill its square cell completely (the same "cover" behavior as CSS object-fit: cover) — no letterboxing or distortion, but the edges of a very wide or very tall photo may be trimmed off.
Can I add images from more than one folder?
Yes — select a batch, then open "Add images" again and pick more, from the same folder or a different one. Every selection adds to the existing list instead of replacing it.
Can I control the order the images appear in?
Yes. Drag any row in the list to move it, use its ▲/▼ buttons, or click "Name," "Date modified," or "File size" to sort the whole list at once — clicking the same sort button again reverses it. The grid always reflects whatever order the list is in.
What does "Date modified" sort by, exactly?
The file's last-modified timestamp as your operating system reports it — the same value shown in your file manager's "Date modified" column. It's read from the file itself, not from anything in the image content.
Can I remove one image without starting over?
Yes — each row in the list has its own ✕ button. "Clear all" is there separately for when you actually do want to start over.
Is any image uploaded anywhere?
No — every image stays on your device; loading, thumbnails, sorting, and the finished grid are all done locally in your browser, and nothing is ever sent to a server.