PK Systems PK Systems
Image Tools

Image Resize

Custom dimensions or one-tap social presets. Output as PNG, JPG, or WebP — no upload.

Image Resize

Drop an image here or click to pick PNG, JPG, WebP, or GIF (first frame).

All processing in your browser — no upload, no tracking.

Preview

What this tool does

Resize any image to exact pixel dimensions, in your browser. Drop a PNG, JPG, WebP, or GIF, then either type custom width and height or tap a social preset — Instagram square, Instagram story, Instagram reel, Facebook cover, X / Twitter post and header, LinkedIn banner, YouTube thumbnail, TikTok, Pinterest, Open Graph card, and more. Three fit modes: contain letterboxes the source inside the target with white padding, cover centre-crops to fill the target, and stretch ignores aspect ratio. Export as PNG (lossless, alpha kept), JPG (smaller, no alpha), or WebP (smallest, alpha kept). The image is decoded and resized through the canvas API — nothing uploads.

How to use it

  1. Drop your image — Drag a PNG, JPG, WebP, or GIF in, or click to pick. The original dimensions appear under the preview.
  2. Pick dimensions — Type custom values, or hit a social preset like Instagram square 1080×1080 or YouTube thumbnail 1280×720. The aspect-ratio toggle keeps width and height in sync.
  3. Choose fit and format — Cover crops to fill, contain letterboxes, stretch ignores aspect. PNG keeps alpha; JPG is smaller; WebP gets you both.
  4. Hit Resize — Preview shows the result. Click Download to save at the exact pixel size you set.

How the resize works

We decode the source into an HTMLImageElement, then draw it onto an off-screen canvas with imageSmoothingQuality = 'high'. Contain uses min(targetW/srcW, targetH/srcH) for the scale and centres the result. Cover uses max(targetW/srcW, targetH/srcH) and centres so the image fills the canvas with overflow cropped. Stretch uses the target as-is. The canvas is exported with toBlob() using the chosen MIME type and quality. The browser's high-quality bilinear / Lanczos pipeline is fine for typical social and web work; for very large downscales (more than 4×) chained downscales would produce sharper results, but quality is already excellent for one-step social-size jobs.

Picking the right preset

Squares (1080×1080) are safe across feeds — they crop nicely on every platform. Vertical 1080×1920 covers stories, reels, Shorts, and TikTok in one go. 1200×630 is the universal Open Graph and Twitter Card size that link previews on Slack, Facebook, LinkedIn, Discord, iMessage, and most other unfurlers expect. Use 1200×675 for X / Twitter posts, 1500×500 for X headers, 1584×396 for LinkedIn personal banners, 1280×720 for YouTube thumbnails, and 1000×1500 for tall Pinterest pins.

Frequently asked questions

Are my images uploaded?
No. Resizing happens in your browser via the canvas API. Nothing is sent to a server.
Will it lose quality?
Downscales lose detail by definition; we use the browser's high-quality smoothing to minimise it. For very aggressive downscales (e.g. 4000px → 320px), exporting as PNG keeps the result sharp; JPG/WebP add their own compression on top.
Why is my JPG output white instead of transparent?
JPG doesn't support transparency. We fill the background white before drawing. Pick PNG or WebP if you need to keep the alpha channel.
What's the difference between contain and cover?
Contain shrinks the source to fit entirely inside the target — the canvas may show padding. Cover scales so the source fills the target, cropping anything that overflows. Cover is what you want for social tiles that must be flush.
Can I batch-resize multiple images?
Not in this tool — it works on one image at a time. For batch jobs, our Image Compressor handles multi-file workflows.
Why don't the social-platform sizes match what I see online?
Platforms change recommended sizes every year or two. The presets here are correct as of 2026; if a platform updates again, use the custom mode to type the new dimensions.