Design & Media · Guide · File & Format Converters
How to resize images without losing quality
Resampling algorithms ranked (Lanczos, bicubic), downscale vs upscale, AI upscaling limits, web/print dimensions, format choice, batch tools, and common mistakes.
Resizing an image is simple; resizing without visible quality loss is surprisingly easy to get wrong. Downscale too aggressively and you get blurry results. Upscale naively and you get pixelation. Use the wrong algorithm and straight lines wobble, faces soften, text becomes unreadable. This guide covers the math of resampling, which algorithm to pick for which job, how much you can actually upscale before quality breaks, when to use AI upscaling, and the file-format choices that interact with resize quality.
Advertisement
Resize vs. resample vs. compress
Three distinct operations often confused for each other:
Resize changes the pixel dimensions of an image — 4000×3000 → 1600×1200. The image contains less data after.
Resample is the algorithmic step inside a resize: how the new pixels are derived from the old. Different algorithms (nearest-neighbor, bilinear, bicubic, Lanczos) give different visual results.
Compress keeps the same pixel dimensions but reduces file size by encoding pixels more efficiently (JPEG quality, WebP quality, AVIF settings).
Want smaller file, same dimensions? Compress. Want smaller dimensions for a specific layout? Resize. Usually you do both: resize to target dimensions, then compress.
Resampling algorithms — ranked for real use
Nearest-neighbor: picks the nearest source pixel. Fast but pixelated. Use only for pixel art or when hard edges must be preserved.
Bilinear: averages 4 neighboring pixels. Smooth but slightly blurry. Faster than bicubic. Acceptable for thumbnails where quality isn’t critical.
Bicubic: uses 16 neighbors with a cubic function. Sharper than bilinear, mild ringing around edges. Photoshop’s default. Good all-purpose choice.
Lanczos (Lanczos3 or Lanczos5): uses a sinc- based kernel with 6 or 10 neighbors. Sharpest non-AI result; preserves fine detail best. Browsers’ default for large downscales. The best choice for photos shrinking to specific sizes.
Mitchell-Netravali: a smoother Lanczos alternative; reduces ringing artifacts. Good for large downscales where Lanczos feels too sharp.
Rule of thumb: Lanczos3 for photos, nearest-neighbor for pixel art, bicubic if nothing better is available.
Downscaling — the safe direction
Going from larger to smaller (e.g., 4K → 1080p) is lossy but forgiving. You’re discarding information the resized image can’t display anyway.
Do one resize, not multiple. Resize 4000px → 800px directly, not 4000 → 2000 → 1200 → 800. Each resampling pass introduces minor softening.
Apply slight sharpening after aggressive downscales. Dropping from 4000px to 400px softens edges; a 30-50% unsharp mask or a mild radius-1 sharpen restores snap.
Downscale before JPEG compression, not after.Compressing a large JPEG then resizing amplifies block artifacts. Resize first, then compress at a reasonable quality.
Upscaling — the dangerous direction
Upscaling invents data that doesn’t exist. Traditional algorithms (bicubic, Lanczos) produce blur; they can’t add detail that wasn’t captured.
Safe upscale limit with traditional algorithms:up to ~150-200% of the original size. Beyond that, blur becomes visible at normal viewing distance.
AI upscalers (Topaz Gigapixel, Waifu2x, Real- ESRGAN, Gigapixel AI, Upscayl) hallucinate plausible detail based on trained models. A 2x or 4x AI upscale of a reasonably sharp source can look genuinely sharp. Beware: AI upscalers can “make up” features — faces may look subtly wrong, text can become nonsense.
Don’t upscale for critical uses. Print, archival, legal, forensic. If the source is 800px and you need 2000px for print, you need a higher-res source, not a better upscaler.
Dimensions and format — picking targets
For the web:
Hero images: 1600-2000px wide at 72 DPI.
Body images: 1000-1200px wide.
Thumbnails: 400-600px wide.
Avatars: 200-400px square.
Serve 2x density versions for retina (so 2400px for a 1200px CSS pixel width), lazy-loaded via srcset.
For print: 300 DPI at the final print size. An A4 print at 300 DPI needs 2480×3508 pixels minimum.
For social: platform-specific specs change yearly. 1080×1080 for Instagram square, 1080×1920 for Stories, 1200×630 for OG images, 1500×500 for Twitter/X headers.
Format choice interacts with resize
PNG: lossless, good for graphics with sharp edges (logos, UI), bad for photos (large files). Resizes cleanly.
JPEG: lossy, great for photos, poor for sharp edges. Re-encoding after resize is necessary and slightly lossy. Keep quality at 80-85 for web; lower causes visible artifacts.
WebP: 25-35% smaller than JPEG at equivalent quality; supports transparency; widely supported in 2026. Prefer for web photos unless legacy compatibility is critical.
AVIF: 30-50% smaller than JPEG; better quality; slow to encode. Best for hero images you generate once.
SVG: vector, resizes infinitely without quality loss. Use for icons, logos, illustrations. Not for photos.
Maintaining aspect ratio
Always resize proportionally unless deliberately stretching. Constraining width to 1200 and letting height auto-calculate keeps the image natural.
For fixed-frame targets (like a 1:1 square from a 4:3 photo), pick: crop (lose content), fit (letterbox with padding), or fill (crop + zoom to fill).
“Smart crop” tools detect subjects and center the crop on them. Useful for bulk thumbnails.
Metadata and EXIF
Most resizers strip EXIF by default, which removes camera info, GPS, original date. Usually desirable for web.
If you need to preserve EXIF (photography archives, legal records), use a resizer that supports it. ImageMagick with-auto-orient applies rotation from EXIF without breaking it.
GPS coordinates in photos are a privacy leak — always strip before publishing photos taken on a mobile device.
Batch resizing
For 10+ images, command-line or scripted tools save time.
ImageMagick: magick mogrify -resize 1200x1200 -quality 85 -format webp *.jpg. Industry standard, scriptable, Lanczos by default for downscales.
Sharp (Node.js): fast, WebP/AVIF-ready, great for server-side pipelines.
cwebp and avifenc: format- specific tools with excellent compression tuning.
Squoosh.app: browser-based batch-free tool from Google with a great UI for comparing quality/size trade- offs.
Common mistakes
Resizing by CSS, not by actual pixels.Serving a 4000px image to display at 400px wastes bandwidth (10-15× more data) and hurts page speed.
Upscaling before a resize. Drop source, then upscale, then downscale is always worse than just downscaling the original.
Saving JPEG quality too low. 60 or below introduces visible blocks, color banding, and edge halos. 80-85 is the usual sweet spot.
Forgetting retina/HiDPI. A 1200×800 image looks soft on retina. Serve @2x or @3x via srcset.
Ignoring the color space. sRGB is the web standard. Images in Adobe RGB or ProPhoto will look muted or wrong on web browsers.
Run the numbers
Resize any image in-browser with the image resizer. Pair with the image compressor to trim file size after resizing, and the image format converter to output the right format for your use case (WebP for web, PNG for graphics, JPEG for legacy).
Advertisement