Add your photos and pick a layout to see the merged result and file size right away
Photo Merger puts several photos together, in order, into a single image file. The four cards at the top (Stack vertically, Side by side, Grid, and Justified rows) each show a live preview of your current photos, so you can choose by looking at the shape and pixel size of the result. To change the order, drag photos in the strip below or use the Move earlier and Move later buttons.
If your screenshots capture one long chat or web page in several parts, Stack vertically finds the overlap and removes it. The top bar and bottom input bar that repeat on every screen are kept only at the start and the end, and any rows that appear in both the previous and the next capture are kept once, so the result reads as if it had been captured in one go. Your photos are processed only inside this browser and are never sent to a server.
When to use it
- Saving a chat or an order history as one image: stacking scrolled captures vertically keeps the context unbroken. Repeated rows and repeated top bars are removed, so the same message doesn't show up twice.
- Comparing before and after: Side by side scales every photo to the same height. Place before-and-after photos of a tidy-up, a treatment, or a renovation from left to right and the difference is clear at a glance.
- Collecting product or trip photos on one canvas: Grid uses same-size cells, and Justified rows fills each row to the same width without cropping. Use them for a blog cover image or a social post that shows several photos in one.
- Photographing a document in parts: stack photos of a receipt or a notice top to bottom and send one file, so the recipient never mixes up the order.
How to merge photos
- Add photos: click Add photos or drag files onto the stage. You can also paste a copied image (Ctrl+V, ⌘V). The first photos you add replace the examples, and later ones are added at the end.
- Choose a layout: each of the four cards shows your photos merged that way, with the result size. If the first photos you add are two or more vertical captures of the same width, the layout switches to Stack vertically automatically.
- Order and direction: drag photos in the strip (mouse), or select a photo and press Move earlier or Move later (phone). Rotate 90° turns a photo clockwise, and Remove takes it out of this session only.
- Size and styling: the size starts at Original size, so no photo is enlarged. Then set Gap between photos, Outer margin, Rounded corners, and Background.
- Save: check the pixel size and the actual file size in the result line, then save as PNG, JPG, or WebP. On a phone, Share sends the image straight to a messaging app.
How do the four layouts differ?
None of the four layouts distorts a photo. They differ in which length they match, whether photos are cropped to fit, and whether empty space can appear.
| Layout | Length that is matched | Photos cropped? | Empty space | Best for |
|---|---|---|---|---|
| Stack vertically | Width of every photo | No (only overlap and trim values you enter) | None | Chat and web page captures, long documents |
| Side by side | Height of every photo | No | None | Before and after, two or three photos in a row |
| Grid | Cell size (2 to 6 columns, ratios 1:1, 4:5, 3:4, 4:3, 16:9) | Fill cell crops to the cell; Show whole photo doesn't crop | Empty cells in the last row, and margins with Show whole photo | Product photos, sets of photos with the same ratio |
| Justified rows | Total width (each row gets its own height) | No (only within 1px of rounding) | None | Trip and everyday photos of mixed ratios |
In Grid, Fill cell enlarges each photo until it covers the cell completely and then crops what spills over. It keeps the center at first, but you can move the part that stays by dragging the photo on the stage, or by selecting it and pressing the arrow keys. With Justified rows set to Auto, the number of rows is the one that brings the result closest to 4:3 landscape; setting 1 row gives the same shape as Side by side.
How the saved size is determined
The number in the size field means something different for each layout. In Stack vertically it is the photo width, in Side by side the photo height, in Grid the cell width, and in Justified rows the total width without the outer margin. Add the gap between photos and the outer margin on both sides, and you get the saved size. Lengths scaled up or down to keep the ratio are rounded to the nearest whole pixel.
- Original size: the starting value is the largest size that doesn't enlarge any photo. In Stack vertically that is the width of the narrowest photo, and in Side by side the height of the shortest photo. Enlarging a small photo doesn't create detail that wasn't there; it only blurs.
- Result limits: if a result made at Original size goes over the limits below, it is reduced to the largest size within the limits. If you enter a size yourself and it goes over, it is not reduced; saving is blocked and the largest value you can enter is shown.
| Example | Photos added | Settings | Saved size |
|---|---|---|---|
| Stack vertically | 100 × 50px, 50 × 100px | Width 100px, gap 10px, margin 5px | 110 × 270px (height 50 + 200 + 10 + 5 + 5) |
| Side by side | The same two photos | Height 100px, gap 10px, margin 5px | 270 × 110px (width 200 + 50 + 10 + 5 + 5) |
| Grid | 3 photos | 2 columns, cell 100px, 1:1, gap 10px, margin 5px | 220 × 220px (the single photo in the last row is centered) |
| Justified rows | 4000 × 3000, 3000 × 4000, 1920 × 1080px | Total width 1000px, 2 rows, gap and margin 0 | 1,000 × 1,043px (first row 640 + 360 × 480, second row 1,000 × 563) |
| Stack vertically (captures) | 3 captures of 1080 × 2340px (fixed 150px top bar and 130px bottom bar, 760px of content overlapping) | Original size, Remove capture overlap | 1,080 × 4,940px (1,040px removed at each seam) |
| Grid (large photos) | 6 photos of 4032 × 3024px | 3 columns, 1:1, Fill cell, no gap or margin, Original size | Original size would make 3,024px cells, which go over 50 megapixels, so cells are 2,886px and the result is 8,658 × 5,772px |
A rotated photo is calculated with its rotated proportions. Rotating a 100 × 50px photo by 90° makes it 50 × 100px, and in Stack vertically with the width set to 100px, that photo becomes 200px tall.
What does Remove capture overlap look for?
Screenshots taken while scrolling overlap in two ways. One is the rows that stay fixed in place, such as the top bar at the very top and the input bar or menu at the very bottom. The other is content that appears at the bottom of one capture and again at the top of the next. The tool compares the pixel rows of each neighboring pair, top to bottom, to find both.
- Fixed rows: it compares the same positions in the two captures from the very top and from the very bottom, and treats the run of identical rows as the top bar and bottom bar. A row where only one corner differs, like a clock or a battery icon, still counts as the same row.
- Repeated content: it looks for the largest number of rows for which the end of the previous capture's content matches the start of the next one. A match counts as overlap only if the average color of each row is nearly the same (JPG compression differences are ignored) and several of the rows contain changing patterns, so a stretch of plain background alone isn't treated as overlap.
- Trimming: from the previous capture it cuts the bottom bar, and from the next one it cuts the top bar and the repeated content. The first capture's top bar and the last capture's bottom bar are kept.
Each seam it finds appears on the stage as a dotted line with an "overlap removed" marker showing the pixels cut. Click a marker to go to that photo's Trim top and Trim bottom fields and change the values yourself, and click Use auto value to return to the detected value. Overlap is only searched between captures of the same width. Photos taken on a different device, rotated photos, and horizontally scrolled captures are joined as they are.
Photos you can add and the limits on the result
| Item | Limit | Reason |
|---|---|---|
| Number of photos | 30 | This tool's own limit (raised from 20 in the old version) |
| One file | 50 MB | This tool's own limit. There is no limit on total file size or total pixels (each photo is read one at a time when you save) |
| Input formats | JPG, PNG, WebP, GIF, BMP, and HEIC or AVIF if the browser can open them | Safari opens HEIC from version 17.0. Animated images use only the first frame |
| One side of the result | 32,767px | The maximum side of a canvas in Firefox (65,535px in Chrome) |
| Area of the result | 50 megapixels, and 16,777,216 pixels (4,096 × 4,096) on iPhone and iPad | The canvas area limit of mobile Safari; elsewhere it is this tool's memory limit |
| Saving as WebP | 16,383px per side | The largest size the WebP format can hold. Above that, the WebP button is turned off |
When a canvas goes over the size limit, the browser doesn't raise an error; it just produces a blank picture. That is why the tool checks, right before saving, that the bottom-right pixel of the result is actually drawn, and tells you to reduce the size if it isn't. Even within the limits, a phone may fail to save depending on its memory, so close other tabs, reduce the size or the number of photos, and save again.
PNG, JPG, or WebP: which to save as?
- PNG: suits captures with lots of text. It leaves no compression artifacts and supports a transparent background. If every photo you added is a PNG, the starting format is PNG.
- JPG: gives a much smaller file than PNG for photo-heavy results. It can't store transparency, so transparent areas are filled with white. Quality runs from 50 to 100%, starting at 90%.
- WebP: lossy compression with a quality setting that also supports transparency. It can't be used when a side goes over 16,383px, and if the browser can't create WebP, the image is saved as PNG and you are told.
The file size in the result line is not an estimate; it is measured by actually creating the file with your current settings. For large results over 16 megapixels the calculation takes long, so the size is set when you save. Even 100% quality doesn't mean identical to the original, because the photos are resized, redrawn, and compressed again.
Common mistakes
- Reading the size field as the final size: in Stack vertically, 1080 is the photo width. With a 20px outer margin the saved width is 1,120px. The number in the result line is the real saved size.
- Scrolling too far between captures: if two captures share no rows, there is nothing to remove, so they are joined as they are and the content in between is missing. When you take the next capture, make sure a few rows from the bottom of the previous one show again.
- A moving ad or video sits in the overlapping area: its pixels differ between the two captures, so the overlap may not be found. If no seam marker appears, enter a value in Trim top yourself.
- Faces or text cut off by Fill cell: drag the photo on the stage to move the part that stays, or switch to Show whole photo. Justified rows never crops.
- Choosing a transparent background but saving as JPG: JPG has no transparency, so the background turns white. Save as PNG or WebP if you need transparency. A white background painted into the original photo does not become transparent.
Where are my photos processed?
Reading the photos, merging them, and creating the file all happen inside this browser. Photos are not sent to a server to be merged, and your original files are never changed or deleted. Remove and Clear only take photos out of this session. The work is not saved automatically, so save the result before you close the page.
Captures of chats and order histories often contain names, phone numbers, and addresses. Merging photos doesn't hide personal information, so open the result and check it before you share it. The saved file is a newly created image and doesn't carry over the photo information (EXIF).
Limitations
- It doesn't warp overlapping parts to fit, as a panorama does. Remove capture overlap only finds captures where the same rows appear unchanged above and below; it doesn't search for horizontal overlap or for photos taken at a different angle.
- It doesn't do free editing such as layering photos or placing text and stickers on top. Add text first with a tool like a text-on-photo tool.
- If you add an animated GIF or WebP, only the first frame is used and the result is a still image.
- If you refresh or close the page, the work is gone.
- Result limits and supported save formats differ by browser, and the tables above show values checked on 2026-10-20.
As of 2026-10-20, the relevant statements in the documents below were checked. The photo count, file size, and 50-megapixel limit are this tool's own limits.
Sources
- 01MDN — <canvas>: Maximum canvas sizeThe maximum size differs by browser; iOS devices allow 4,096 × 4,096 pixels, and drawing commands stop working beyond it
- 02canvas-size — Test ResultsChrome 73+ allows 65,535 per side and Firefox 122+ 32,767; area 268,435,456; mobile Safari 16,777,216
- 03Google for Developers — WebP FAQThe maximum pixel size of a WebP image is 16383 × 16383
- 04WHATWG — HTML Living Standard, toBlob()The default format is PNG, and requesting an unsupported format also gives PNG; quality is 0.0 to 1.0
- 05MDN — createImageBitmap()imageOrientation defaults to from-image: the image is rotated according to its EXIF orientation
- 06WebKit — WebKit Features in Safari 17.0Safari 17.0 added support for HEIC images
- 07MDN — Using files from web applicationsHow a web page reads, inside the browser, files that the user chose or dropped
Frequently asked questions
How do I stitch several screenshots together without overlap?
Add the screenshots in order and choose Stack vertically. If the first photos you add are two or more vertical captures of the same width, it switches to Stack vertically by itself, finds the top bars and input bars repeated on every screen and the rows that appear in both the previous and the next capture, and keeps each only once. Each seam it finds is shown with a dotted line and the number of pixels removed.
What if the overlap isn't found or is cut wrongly?
Click the seam marker or the photo to edit the pixel values in Trim top and Trim bottom, and click Use auto value to return to the detected value. Overlap is only searched between captures of the same width, and it may not be found if a moving ad or video sits in the overlapping area.
Which layout do I choose to put two photos next to each other?
Choose Side by side: both photos get the same height and are placed from the left. To place them one above the other, choose Stack vertically. Change the order by dragging photos in the strip or with the Move earlier and Move later buttons.
Is there a way to collect photos without cropping and without gaps?
Choose Justified rows. It splits the photos into rows in order and gives each row its own height so it fills the total width, so nothing is cropped and no cell is left empty. With rows on Auto it picks the number that brings the result closest to 4:3 landscape, and you can also set it yourself from 1 row.
Is the number in the size field the size of the finished image?
No. It is the photo width in Stack vertically, the photo height in Side by side, the cell width in Grid, and the total width without the margin in Justified rows. The real saved size, including the gap and the outer margin, appears in the result line. The starting value, Original size, is the largest size that doesn't enlarge any photo.
Can I merge iPhone HEIC photos?
If your browser can open HEIC, you can add them as they are. Safari opens HEIC from version 17.0. In a browser that can't, you get a message, so add a file converted to JPG instead. Just renaming the extension to jpg is not a format conversion.
How many photos and how large an image can I make?
You can add 30 photos of up to 50 MB each. The result can have up to 32,767px per side and 50 megapixels, and on iPhone and iPad it is limited to the browser's 16,777,216 pixels (4,096 × 4,096). WebP can't be used above 16,383px per side. If Original size goes over a limit, it is reduced to the largest size within the limit.
Are my photos uploaded to a server?
No. Reading the photos, merging them, and creating the file all happen inside this browser, and no photo is sent to a server to be merged. Your original files are not changed either. The work isn't saved automatically, so save the result before you close the page.