Why join instead of overlap
There is a whole family of things people mean by putting two pictures together, and they are not the same job. Mixing two frames into each other so both show through at once is one of them. Placing a small element on top of a photograph, with its own edges, is another. This page does neither — those have pages of their own, blend two pictures, double exposure and photo on photo. Here the pictures keep their own space and touch along a straight edge: two photographs side by side, four in a square, twenty stacked into a column. Left alone, nothing covers anything, so nothing is lost and every original pixel is still in the file you save — and when two pictures genuinely share a strip, because they were shot or captured with an overlap, you can slide one back over the other by exactly that strip, nudge it into line, and choose a hard cut or a soft feather where they meet.
The one exception proves the rule. Scrolling captures of the same page do repeat each other along the join, and the whole point of the long-screenshot mode is to find those repeated rows and cut them out so the seam disappears — which is still a join, just one that has to do some measuring first. That case has a page of its own at /long-screenshot, where the seams are the first thing on screen rather than the fourth button in a row. The repeated band is proposed with a match score, and nothing is cut until you accept it.
Five steps, in any order
The numbered steps at the head of the inspector are a map, not a gate. Every step is clickable at any time and going back costs nothing, so you can settle the order, look at the result, and change your mind about the sizing three times without losing anything.
- Pieces. Drag them in, pick them, or paste one straight off the clipboard. Order is settled here — by filename with the numbers read as numbers, by the time each was taken, by dragging, or reversed in one click — and any piece can lose rows or columns off any edge without the picture itself being cut.
- Join. Side by side, stacked, a grid, or one long screenshot. This step changes what the next one asks and nothing else moves.
- Seams. How far each piece overlaps the one before it, how far it is nudged across, and whether the seam is a hard cut or a feather. Auto-align compares the edges on this device and proposes an overlap with a match score; the grip on each seam does the same by hand, snapping to touching and flush edges as you drag.
- Fit. The step where a join is won or lost, because pictures are almost never the same size. Sizing policy, alignment, the gap between and around, the colour behind it all or a blur of each picture, rounded corners, a border and a divider line.
- Save. PNG, JPEG or WebP, with the finished dimensions and a rough file size updating as you go — scaled to a width you set, split into parts for sharing, with boxes drawn over anything private, and the arrangement copied as a short string to reuse on another set.
What you look at on screen is a smaller drawing of exactly the arrangement that gets saved — same order, same crops, same rounding, one scale factor apart. That is deliberate: nothing you approved is allowed to change on the way out.
What you can feed it
JPG, PNG, WebP, GIF, BMP and ICO open in every current browser. TIFF opens in Safari; elsewhere save it as PNG or JPEG first. HEIC — what an iPhone shoots unless it has been told otherwise — opens through a decoder that is fetched only when a HEIC actually turns up, so nobody else pays for it. Up to a hundred files, 120 MB each — and one more limit that is not ours: a canvas in this browser stops at about 32,767 pixels on a side and about 268 megapixels in total (8,192 and 16 on an iPhone), so a tall enough stack is refused whatever the file count says. The status line under the preview carries that verdict from the second picture onward.
A few things are quietly put right on the way in. Colour is whatever your browser hands back when it decodes a file onto a canvas, and every canvas here asks for sRGB — so a wide-gamut photograph is brought into the same colour space as an ordinary one before they meet, although its most saturated colours can still flatten a little at the seam, which is the most visible place it could appear. Sideways phone photographs are turned upright from the tag the camera wrote — one picture on its side in a row of six is impossible to miss. A CMYK scan converts approximately and says so. An animated GIF contributes its first frame. And a file that will not open is named individually while the rest of them join as normal.
None of it goes anywhere. There is no upload step in this build. A build check forbids network and storage calls in the code that handles pictures, and a release test watches the network while pictures are merged. The joining happens inside this tab, and the only file that moves is the one you save at the end.
Common snags
My two photographs are different heights. What happens to the shorter one?
Whatever you tell it to. The Fit step offers five answers: grow everything to the tallest, shrink everything to the shortest, match whichever picture is first in the chain, scale everything to a height you type, or scale nothing at all and let the ground colour — or a soft blur of the shorter picture — fill the gap beside it. There is no right answer — matching the tallest keeps detail and softens the small picture, matching the shortest keeps everything sharp and throws pixels away.
A repeated band still shows where two screenshots meet. Can I fix it by hand?
Yes, and it takes about five seconds. Each seam has its own slider and its own full-size view of the joint, so you drag until the repeated rows disappear and the text runs straight through. A seam you set by hand is never touched again by the detector.
Can I put a gap between the pictures instead of having them touch?
You can. The gap starts at zero because pictures touching is what this site is for, but the Fit step has a gutter in pixels for the space between them and a margin for the space around the outside. Whatever colour you chose for the ground is what shows through both.
I chose a see-through ground and the saved file came out white. Why?
Because it was saved as JPEG, and JPEG has no channel for see-through at all — every transparent pixel has to become some colour, and white is the one browsers pick. PNG and WebP both keep it. The step-four panel says so before you save rather than after.
How many pictures can go into one join?
A hundred, at up to 120 MB each. The real ceiling arrives sooner than that and it is your browser's rather than ours: a canvas stops at about 32,767 pixels on a side, and six phone screenshots stacked can pass 15,000 without trying. If a join goes past what can be drawn, the tool says so and stops instead of handing back something truncated.
The chain put IMG_10 before IMG_9. How do I get the real order?
It shouldn't — filename order here counts the numbers rather than the characters, so IMG_9 lands first. If the names carry no useful order at all, sort by the time each picture was taken instead, or drag the thumbnails: hold Alt and press left or right and the picture you are standing on moves with you.
Stitching works when the pictures are the same width and the content sat still. It won’t cope with a sticky header that changes as you scroll, a video mid-page, or captures taken at different zoom levels. If a seam looks wrong, drag it — you’ll beat the detector in about five seconds.
On this page the join is measured in pixels, not kilobytes: you see exactly how big the result is and roughly what the file will weigh. When a form states a kilobyte range — a photo and signature for an exam or bank application — use merge photo and signature, which searches for the size honestly and tells you when the range cannot be met.
Picking the file at the end
Three formats come out of the Save step and the choice is not a matter of taste. PNG stores every pixel exactly as it was drawn, which is why a joined pair of screenshots stays crisp in it and why the file is the heaviest of the three. JPEG throws information away on purpose, and it throws it away hardest at hard edges — so a seam between two photographs survives it happily, while a seam running through a line of text can pick up a faint shimmer along the join. WebP sits between them: much lighter than PNG, still able to hold a see-through ground, and occasionally refused by an older piece of software that will accept the other two without complaint. The status line under the stage updates as you switch, so the trade is visible before you commit to it rather than after.
Where to go from here
The four ways of joining are one control apart on this page, and two of them have a page of their own as well: a row of exactly two pictures, and the long screenshot rebuilt from scrolling captures. Columns and grids stay here, because a column is a row turned ninety degrees and a grid is rows stacked — a separate page for each would be the same tool wearing four hats. The rest of this list is the reading.











