Why your images look blurry (and how to fix it)

Sharp images look professional. Blurry images make a site look amateur — even if the actual content is excellent. Five different problems all produce "blurry" output. Diagnose yours.

A blurry image on a website is rarely a single problem with a single fix. The term "blurry" covers several distinct issues, each with different causes and different solutions. This article walks through the five most common ones and shows how to diagnose each.

Problem 1: Image is too small for the display size

How it looks

Pixelated edges, soft details, jagged diagonal lines. Especially noticeable on text within the image.

What's happening

You're displaying an image at a size larger than its actual pixel dimensions. A 400×300 image stretched to 800×600 on the page is just guessing pixel values — the browser uses bicubic or similar algorithms to interpolate, and you see the interpolation as blur.

How to check

Open the image in your browser and look at the URL bar or developer tools. The image's natural dimensions vs the displayed dimensions tell you the scaling factor. If displayed size is larger than natural size, you're upscaling.

How to fix

Use a higher-resolution source image. The image should be at least as large as the largest display size it will appear at — and ideally 2× larger for retina screens.

For a website where the image displays at 800px wide, the source should be 1600px wide. If you only have a 400px source, you need to either find a larger version or accept that you can't display it at 800px without blur.

Problem 2: Compressed too aggressively

How it looks

Blocky patterns in smooth areas (sky, skin, gradients). Halos around sharp edges. Loss of fine detail. Text becoming hard to read.

What's happening

Lossy compression at a quality setting too low for the content. JPG below quality 60 starts showing visible blockiness in flat areas. WebP and AVIF degrade more gracefully but still degrade.

How to check

Open the image at 100% zoom (no browser scaling). Look at smooth areas like skies and skin tones. If you see blocky patterns or color banding, the compression is too aggressive.

Or: compare the file size to typical sizes for that content. A 1200×800 photo at 50 KB is suspicious. The same image should typically be 100-300 KB for good quality.

How to fix

Re-encode from a higher-quality source at a more reasonable quality setting (75-85 for JPG/WebP). If you only have the over-compressed version, you can't recover what was lost — you'd need the original.

For the future: don't compress more aggressively than necessary. Start at quality 82 and only drop if file size is truly critical.

Problem 3: Retina display showing 1× images

How it looks

Slight softness across the entire image, even when the image is "the right size" on paper. Looks fine on old monitors but slightly fuzzy on phones and modern laptops.

What's happening

The viewer's screen is high-DPI (retina), meaning the physical pixel density is 2× or more times the logical pixel density. CSS sizing is in logical pixels, but the screen renders in physical pixels.

An image at 800×600 displayed in a CSS 800×600 container looks crisp on a non-retina screen. On a retina screen, the same setup needs to render at 1600×1200 physical pixels, and the browser has to upscale your 800×600 source — back to Problem 1.

How to check

View the same site on a retina device and a non-retina device. If images look noticeably blurrier on retina, this is your problem.

Or: check your source image dimensions vs the CSS display size. The source should be at least 2× the display size.

How to fix

Serve 2× source images for retina displays. Use srcset in HTML to deliver different sizes to different displays:

<img src="photo-800.jpg"
     srcset="photo-800.jpg 1x, photo-1600.jpg 2x"
     alt="...">

The 1x source is delivered to non-retina; 2x is delivered to retina. The browser picks automatically.

Problem 4: Multi-generation compression damage

How it looks

Combination of multiple compression artifacts. Blockiness, color shifts, exaggerated edge artifacts. Looks like the image has been compressed several times and re-saved.

What's happening

Each time you save a JPG, you lose a little quality. Compounded across multiple generations (someone downloads a JPG, edits it, saves a JPG, sends it to you, you compress it again for the web), the damage accumulates.

How to check

If you didn't shoot the photo or generate the graphic yourself, you may be working with a multi-generation copy. Particularly common when:

  • Photos forwarded via WhatsApp or Telegram (which re-compress each time)
  • Images downloaded from social media (already compressed by the platform)
  • Files passed between people via email with quality-saving exports

How to fix

Get the original. If the photographer can send you the RAW or original-quality JPG straight from the camera, do that. Every re-encoding step adds damage that can't be undone.

For the future: keep originals in lossless format. Only export to lossy compression at the final delivery step.

Problem 5: Wrong format for the content

How it looks

For screenshots and text-heavy images: fuzzy or smeared text. Color halos around letters. Sharp lines becoming wavy.

For photos: blockiness or banding visible in smooth areas.

What's happening

JPG is optimized for photographic content with continuous tones. It performs poorly on sharp edges and text. PNG is the reverse — great for sharp edges, poor for photos.

Using the wrong format for your content type produces specific kinds of degradation that look blurry or fuzzy.

How to check

Examine the image at 100% zoom. Screenshot saved as JPG? Letter edges will have color halos. Photo saved as PNG? File is enormous, but quality is fine.

How to fix

  • Screenshots, line art, text: PNG or WebP lossless.
  • Photographs: JPG or WebP (lossy).
  • Mixed content: WebP handles both reasonably well.

Diagnostic flowchart

  1. Open the image directly in a new tab. What's the actual pixel size?
  2. Compare to the CSS display size on the page. Source ≥ 2× display? Good. Less? You need a bigger source.
  3. At 100% zoom, look for: blockiness (compression too aggressive), color halos around edges (wrong format for the content), pixelation (source too small).
  4. Check the file size. Tiny file for content type → over-compression. Huge file for content type → maybe wrong format.
  5. If still confused, view on multiple devices. Different behavior on retina vs non-retina → resolution mismatch.

Prevention

  1. Start with high-resolution sources. Always.
  2. Pick the format that fits the content type.
  3. Compress at quality 80-85 — the sweet spot.
  4. Generate 2× variants for retina displays.
  5. Keep lossless masters; only generate lossy for final delivery.
  6. Don't re-export images from existing JPGs unless you have to.

Doing all six prevents 95% of "blurry image" problems.


Get crisp images at the right size with pictoolkit's resize, compress, and convert tools. Browser-based, instant feedback.

Keep reading

Related articles