Duplicate WebP

Tile a WebP image (or any image, re-encoded to WebP) into a grid. Quality slider, lossless toggle. Free, offline, client-side, instant, secure.

Drop a WebP (or any image - JPG, PNG, GIF, BMP), pick rows × columns, and download the tiled grid encoded as WebP.

Click here or drop an image to upload

WebP / PNG / JPG / GIF / BMP - output is always re-encoded WebP

How to Use Duplicate WebP

  1. Upload a WebP (or JPG / PNG / GIF / BMP - non-WebP inputs are re-encoded to WebP on output).
  2. Set rows and columns (each 1-10). Output is source-width × cols by source-height × rows.
  3. Set quality (0.1-1.0). 0.92 is the canvas default; 1.0 attempts maximum quality (typically still lossy unless the browser supports a true lossless WebP path through the canvas API).
  4. Click Duplicate or press Ctrl/Cmd + Enter. The preview updates and the stats line shows the actual format the browser produced (Safari < 14 falls back to PNG).
  5. Copy or download. Copy goes through the clipboard API as PNG (the clipboard API only reliably accepts PNG); download saves as .webp if the browser produced WebP, otherwise .png.

Frequently Asked Questions

Is EXIF / ICC / metadata preserved?

No. The HTML5 Canvas API strips all metadata – EXIF, color profiles (ICC), and any custom chunks – when you draw an image onto a canvas. This is a privacy/security default of the spec, not specific to this tool. Compression settings, quality level, and metadata are likewise not carried over. If you need metadata-preserving WebP tiling, use a desktop tool.

Why does the tool wait for the image to load before tiling?

Image loading is asynchronous: reading the width right after setting img.src returns 0, which would size the canvas to 0 × 0 and produce blank tiles. The tool waits for the decode to finish, then cuts each tile from the real dimensions.

What if my browser doesn’t support WebP encoding?

Safari versions before 14 (and a few older browsers) silently fall back to PNG when you request toDataURL('image/webp'). The tool detects this by inspecting the returned data URL’s prefix and reports the actual format in the stats line. The download filename uses the real extension (.webp or .png) so you never end up with a mislabeled file.

Does this preserve transparency?

Yes, both PNG sources and WebP sources with alpha channels keep their transparency through the duplication. The canvas API preserves alpha when drawing image-to-image, and WebP encodes alpha when present.

Why does Copy say “PNG” when the tool is for WebP?

The Clipboard API only reliably accepts image/png across browsers. So when you copy, the tool encodes a PNG from the canvas and writes that to the clipboard. The Download button still produces a .webp file (if the browser supports WebP encoding) – only the clipboard path is PNG.

How large can the output get?

Output is exactly source-width × cols by source-height × rows. A 2000 × 2000 source at 10 × 10 grid = 20,000 × 20,000 = 400 megapixels – likely too big for many browsers (canvas has implementation-specific max dimensions, often around 16,384 px per side and ~268 MP total). The tool warns via toast when projected output exceeds 50 megapixels.

Is anything sent to a server?

No. The page loads three static files (HTML, CSS, JS) and then runs entirely in your browser. You can disconnect from the internet after the page loads. No analytics, no tracking, no cookies.

Is this tool free?

Yes – free, unlimited, no signup, no watermark, no usage cap. Use the output in any context. Attribution to is appreciated but not required.