ScreenshotNeo

BlogEngineering

Progressive Image Rendering: How It Works and When to Use It

Progressive JPEG and interlaced PNG can show a rough full-image preview while data downloads. Learn when that helps, how to encode images, and what it does not speed up.

By the ScreenshotNeo team4 October 202610 min read

Progressive image rendering lets a browser show a coarse version of an image before the complete file has arrived, then refine it as more image data downloads. It is an encoding property, not an HTML loading attribute. Progressive JPEG uses successive quality scans across the whole image; interlaced PNG uses a different ordering of image data. The preview can make loading feel more visibly continuous, but it does not remove bytes from the transfer or guarantee a shorter load time. [MDN: Progressive images] [W3C PNG specification]

Use progressive JPEG when a photographic image benefits from an early full-frame preview and JPEG is otherwise a good fit. Consider interlaced PNG when PNG’s lossless handling or transparency is required and a preview helps. Compare the actual encoded size and loading experience against WebP, AVIF, or other suitable formats; progressive display is only one part of that choice.

1. How progressive rendering works

The browser cannot display useful partial image content merely because an image is inside an <img>. The image data itself must be encoded in a form that can be decoded incrementally, and the browser must process it as data arrives. Once encoded progressively, the file is used with ordinary image markup. [MDN: Progressive images]

Progressive JPEG versus baseline JPEG

A baseline JPEG is generally revealed in a top-to-bottom sequence as its data is decoded. A progressive JPEG is organized into multiple scans over the image: an early scan gives a rough representation of the whole composition, and later scans add detail and quality. A user may therefore see the entire scene blurred first and watch it sharpen while the download continues. The exact scan behavior and visible timing depend on the encoder, file, browser, and connection. [web.dev: JPEG]

Interlaced PNG

PNG’s interlacing option orders image data to support progressive display. It is distinct from JPEG’s successive quality scans, though both can let a viewer see a rough representation before all image data is available. PNG remains useful where lossless representation or transparency matters. The PNG specification describes the format as streamable and defines interlaced data ordering. [W3C PNG specification]

What progressive rendering does not mean

  • It does not mean the browser downloads less data. The complete image still has to arrive for the complete result.
  • It is not lazy loading. Lazy loading changes when a request is made, commonly deferring off-screen images.
  • It is not responsive image selection. srcset and sizes help select an appropriate resource for display size and density.
  • It is not a low-resolution placeholder that is replaced by a separate full-resolution file. A progressive file refines from its own encoded data.
  • It is not controlled by a special <img> attribute. The progressive property comes from how the image was encoded.

2. When progressive images are a good fit

Image and goal Starting point What to check
Large photographic image; a full-frame preview is useful Try progressive JPEG Compare bytes at similar visual quality, preview timing, and decode behavior on representative devices.
Lossless image or transparency is required Try PNG, including interlaced PNG if early display helps Check whether interlacing increases the file size enough to outweigh its preview benefit.
Small image where the entire transfer is already quick Use the format and encoding that best meet quality and size goals Progressive encoding may bring little perceptible value; measure rather than assume.
Compression or image features matter more than progressive preview Evaluate WebP, AVIF, or another supported format Check browser support, fallback needs, transparency, animation, visual quality, and bytes. WebP and AVIF do not support progressive rendering according to MDN’s format guide.
Image is below the fold Consider lazy loading independently It can defer the request; progressive encoding affects how an already requested image is revealed.

Progressive JPEG is a sensible candidate for many photographic JPEGs, but there is no universal winner. web.dev describes progressive JPEG files as often a little smaller than baseline JPEG except for the smallest images, with a minor additional decoding cost. MDN cautions that progressive or interlaced images are inherently slightly larger than their non-progressive counterparts. Treat size and decode results as encoder- and image-dependent: test a representative set from your own site. [web.dev: JPEG] [MDN: Progressive images]

3. Encode a progressive JPEG or interlaced PNG

Encoding is usually performed in an image build pipeline or an image-editing/optimization tool. Squoosh exposes progressive JPEG as an advanced option, and MozJPEG is an encoder option mentioned by MDN. Tool flags and defaults can vary by version, so verify the output rather than trusting a filename or command label. [web.dev: JPEG] [MDN: Image formats]

Using an image tool

  1. Choose a representative source image and record its dimensions and current format.
  2. Export a baseline JPEG and a progressive JPEG at comparable visual quality, or export non-interlaced and interlaced PNG for a PNG workflow.
  3. Compare file sizes and inspect the output at the actual rendered dimensions, including on a slower connection or device profile used by your team.
  4. Confirm the encoded scan/interlace mode with the encoder’s metadata or inspection command.
  5. Deploy the chosen file with the same normal image markup you already use.

Runnable examples with ImageMagick

If ImageMagick is installed and its JPEG/PNG delegates are available, these commands create candidate files. Options and support can depend on the installed build; inspect the result and compare quality and size before adopting it.

# Progressive JPEG candidate from an input photograph
magick input.jpg -quality 82 -interlace Plane output-progressive.jpg

# Baseline JPEG comparison candidate
magick input.jpg -quality 82 -interlace None output-baseline.jpg

# Interlaced PNG candidate
magick input.png -interlace PNG output-interlaced.png

# Non-interlaced PNG comparison candidate
magick input.png -interlace None output-noninterlaced.png

The numeric JPEG quality setting is an example starting point, not a universal quality recommendation. Keep settings comparable, inspect visual artifacts, and compare file bytes. If a command fails because the installed tool does not recognize an option, check its local help and version; alternatively use a GUI encoder that exposes progressive JPEG or PNG interlacing.

Use the result as a normal image

<img
  src="/images/product-photo-progressive.jpg"
  width="1600"
  height="1067"
  alt="A product displayed on a workbench"
>

There is no progressive-specific HTML attribute. Keep intrinsic dimensions so layout space can be reserved, and provide descriptive alternative text. If you serve multiple sizes, use responsive image markup independently of the encoding:

<img
  src="/images/product-photo-1200-progressive.jpg"
  srcset="/images/product-photo-640-progressive.jpg 640w,
          /images/product-photo-1200-progressive.jpg 1200w"
  sizes="(max-width: 700px) 100vw, 700px"
  width="1200"
  height="800"
  alt="A product displayed on a workbench"
>

Use only candidates with matching content and appropriate declared widths. Progressive encoding does not make an oversized candidate efficient; sending an image much larger than its rendered size still wastes transfer bytes. See web.dev’s image performance guidance.

4. Choosing formats and combining performance controls

Choose the image format from the full set of requirements, not from progressive display alone. Compare compression at acceptable visual quality, browser support, transparency, animation, image type, and decode behavior. MDN’s guide describes JPEG as a common lossy choice for still photographs, PNG where more precise reproduction or transparency is needed, and WebP/AVIF as formats with different compression and feature trade-offs. It also notes that WebP and AVIF do not provide progressive rendering. Browser support and guidance can change, so consult the current compatibility guidance for your audience. [MDN: Image file type and format guide]

  • Need a progressive preview and JPEG works for the image: compare progressive JPEG with baseline JPEG at similar visual quality.
  • Need PNG characteristics: compare interlaced and non-interlaced PNG; do not assume the interlaced file will be smaller.
  • Need better compression or other format features: test WebP or AVIF and provide a suitable fallback if required by your supported browsers. An early preview may be less important than sending fewer bytes.
  • Need less data transferred: resize to the rendered context and use responsive candidates.
  • Need to avoid fetching off-screen content early: consider lazy loading for below-the-fold images.

These controls act at different stages. Format and quality affect encoded bytes and capabilities; responsive selection chooses which resource is requested; lazy loading influences request timing; progressive encoding changes how a supported image can appear during its transfer. [web.dev: Image performance]

5. How to evaluate the result

  1. Build a representative sample. Include the image types, sizes, transparency needs, and display dimensions common on the site.
  2. Hold visual quality reasonably constant. Comparing files with substantially different visible quality does not reveal the encoding trade-off.
  3. Record file size. A preview benefit is not a win if the extra bytes undermine the page’s delivery goal.
  4. Observe perceived progress. Compare when a useful composition first appears under the connection conditions relevant to your users.
  5. Check decoding and rendering on target devices. Decoding cost is generally described as minor for progressive JPEG, but it can depend on the image and device.
  6. Check final rendering separately. Verify image selection, layout dimensions, and whether lazy-loaded images are requested at the intended time.
  7. Repeat across content. One photograph or one encoder setting cannot establish a universal result.

Do not report progressive encoding as a reduction in download time unless measurements show a smaller file or some other delivery change. The direct benefit is the possibility of visible partial progress before the complete image arrives.

6. Troubleshooting

Symptom Likely cause Fix
The image still appears all at once The file may be baseline/non-interlaced, the browser may receive it too quickly to expose intermediate states, or the browser may not present them visibly. Inspect the encoded file’s scan/interlace mode, then observe a sufficiently large file under throttled conditions. Do not infer encoding from the extension.
The progressive file is larger Progressive/interlaced encoding can add overhead, and results vary with image and encoder. Compare at similar visual quality. Keep the smaller or otherwise better-performing representation for the actual use case.
WebP or AVIF does not show a progressive preview Those formats do not support progressive rendering in the cited MDN format guidance. Decide whether their compression or features outweigh the preview requirement, or serve a progressive JPEG/PNG option where appropriate.
Responsive markup downloads an unexpectedly large image srcset descriptors or the sizes value may not reflect the rendered layout, or only a large candidate may be available. Inspect the selected resource in browser developer tools, correct candidate widths and sizes, and generate display-appropriate variants.
PNG transparency or fine detail is damaged The pipeline may have converted the asset to a lossy format or changed its color/alpha handling. Preserve PNG or another format that meets the image’s transparency and fidelity requirements; compare the rendered result after conversion.
Image command reports an unknown option The installed encoder version or build differs from the one expected. Check the installed tool’s help and supported delegates, or select the progressive/interlaced option in a compatible image tool.
A placeholder is mistaken for progressive rendering A separate low-resolution image or CSS background is being shown before the full image. That is a placeholder strategy. If you want encoding-based progressive display, serve a progressive JPEG or interlaced PNG as the image itself.

7. Performance, reliability, and cost notes

Performance: Progressive display can improve perceived continuity, not inherently reduce transfer time. Progressive JPEG size results vary: web.dev says it is often a little smaller except for the smallest images, while MDN notes progressive/interlaced images are inherently slightly larger. Resolve the apparent difference empirically with your encoder and image set. Additional decoding work for progressive JPEG is described as minor, but test on target devices. [web.dev: JPEG] [MDN: Progressive images]

Reliability: Because the file remains an ordinary JPEG or PNG resource in ordinary image markup, progressive encoding does not require a new HTML loading protocol. Still, validate generated files, preserve appropriate fallbacks when using formats with differing browser support, and monitor broken-image behavior as with any image pipeline.

Cost: There is no special browser or hosting charge implied by progressive encoding. Operational cost comes from generating and storing any additional variants and transferring their bytes. If you retain both progressive and baseline or alternate-format versions, include the extra storage and cache variants in your delivery design. No universal savings or cost reduction follows from progressive encoding alone.

8. Capture the rendered page for review

A screenshot can help a team compare how a real page appears while assets load or after the page settles. ScreenshotNeo is a website screenshot API and MCP server from ScreenshotNeo. It can capture a URL as an image or PDF; its API supports waits and full-page capture when you need to inspect a particular state. See the ScreenshotNeo API documentation for request options.

Or skip the browser setup

Make one GET request to capture a page. Replace the example URL with your page and provide your API key. The same API also has Python and Node.js examples in the documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

ScreenshotNeo accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status. Its MCP server provides take_screenshot, get_page_info, and capture_pdf for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 screenshots.

Create a free ScreenshotNeo account and get 1,000 screenshots a month with no card.

9. FAQ

Does progressive rendering make an image load faster?

It can make progress visible earlier, but the browser still needs the image data. It does not inherently shorten transfer time.

Is progressive JPEG better than WebP?

Neither is universally better. Progressive JPEG can show a full-frame preview during transfer; WebP offers different compression and image features but does not support progressive display. Compare quality, bytes, support, and the value of the preview for your content.

Can I enable progressive loading with CSS or an HTML attribute?

No. Encode the JPEG progressively or the PNG with interlacing. Then use the resulting file in normal image markup.

Should every image be progressive?

No. The benefit depends on image size, content, connection, device, and format trade-offs. Test representative assets and keep progressive encoding where it improves the result.

Does a progressive image need JavaScript?

No. The encoding and the browser’s image decoder provide the progressive behavior; ordinary image markup is sufficient.