Image Weight on Portfolio Sites
Portfolio sites depend on imagery for impact, but unchecked image weight destroys the performance that makes that impact possible. Balancing the two is a core design skill.

The Portfolio Performance Paradox
Portfolio sites have a fundamental tension at their core. The purpose of the site is to showcase visual work, which means images are the primary content. But images are also the primary performance cost. A portfolio that loads slowly because it is packed with unoptimised hero images defeats its own purpose—the visitor leaves before seeing the work.
This is not a theoretical concern. According to research published by web.dev on loading performance, page weight is one of the strongest predictors of user abandonment, and images account for the largest share of page weight on most sites. For portfolio sites, where image count and image size are both high, the performance impact is amplified.
The solution is not to use fewer images or smaller images. It is to be deliberate about how images are loaded, encoded, sized, and prioritised. A portfolio site can deliver stunning visual impact with acceptable performance, but only if image handling is treated as a core design and engineering discipline rather than an afterthought.

Understanding Where Weight Accumulates
Before optimising, you need to know where the weight is. Run a page weight audit on a typical portfolio page and the results usually follow a predictable pattern: a hero image accounts for forty to sixty percent of the total page weight, supporting project images account for another twenty to thirty percent, and everything else—HTML, CSS, JavaScript, fonts—is a small fraction of the total.
This distribution tells you where to focus. Reducing your JavaScript bundle by ten percent is meaningful on a SaaS app. On a portfolio site, it is noise. Reducing your hero image weight by thirty percent, on the other hand, has a direct and measurable impact on load time.
The hero image deserves the most attention because it is both the heaviest single asset and the most performance-sensitive. It loads above the fold, it determines the Largest Contentful Paint metric, and it is the first visual impression the visitor receives. Getting the hero right—the right format, the right dimensions, the right encoding quality—solves a disproportionate share of the performance problem.
Format Selection
Format choice has a larger impact on image weight than most people realise. The same photograph encoded as an unoptimised PNG might weigh 3 megabytes. As a quality-85 JPEG, it drops to 300 kilobytes. As a well-tuned WebP, it might hit 200 kilobytes. As AVIF, it could be 150 kilobytes or less with equivalent perceived quality.
For portfolio sites, the practical format strategy is: serve AVIF where supported, fall back to WebP, and fall back again to JPEG for the small percentage of browsers that support neither modern format. This can be implemented with the HTML element, which allows the browser to select the best available format without JavaScript.
The quality setting matters more than the format for most images. A JPEG at quality 82 is visually indistinguishable from quality 95 for most photographic content, but the file size difference is significant. The sweet spot varies by image content—high-detail images tolerate lower quality settings better than flat-colour graphics—so batch encoding at a single quality level is a compromise. For hero images and primary project shots, individual quality tuning is worth the time.
Responsive Image Sizing
Serving a single image file at all viewport sizes is the most common performance mistake on portfolio sites. A 1600-pixel-wide hero image on a 375-pixel mobile screen means the browser downloads four times more pixel data than it can display. That wasted data is the difference between a two-second load and a five-second load on a mobile connection.
The srcset attribute solves this by providing the browser with multiple image sizes to choose from. For a hero image, a typical set might include widths at 640, 960, 1280, and 1920 pixels. The browser selects the smallest version that satisfies the display size and device pixel ratio.
The sizes attribute tells the browser how large the image will be rendered in the layout, which the browser needs to make its srcset selection before the CSS has loaded. Getting the sizes attribute right is important—an incorrect value can cause the browser to select a larger image than necessary, negating the benefit of responsive sizing.
For project grid images—the thumbnails on an index page—the size reduction is even more dramatic. A grid item that displays at 400 pixels wide does not need a 1600-pixel source image. Generating appropriately sized variants and using srcset can reduce grid page weight by seventy to eighty percent with no visible quality loss.
Lazy Loading Strategy
Not every image on the page needs to load immediately. Images below the fold—project grid items further down the index, supporting images in case study pages—can be deferred until the user scrolls near them. Native lazy loading via the loading="lazy" attribute is the simplest implementation and has broad browser support.
The key decision is which images to lazy-load and which to load eagerly. The hero image and any images visible in the initial viewport should load eagerly to optimise Largest Contentful Paint. Everything below the fold should use lazy loading.
For project index pages with many thumbnails, lazy loading transforms the initial page load from a heavy multi-megabyte transfer to a lightweight first paint with images loading progressively as the user scrolls. The perceived performance improvement is significant.

Placeholder Strategies
When images lazy-load, there is a moment between the page rendering and the image arriving. How that moment looks matters for perceived performance and visual stability.
The worst option is an empty space that suddenly fills with an image. This causes layout shift, which is both a Core Web Vitals penalty and a jarring user experience.
The best option for portfolio sites is a dominant-colour placeholder or a low-quality image preview (LQIP). The dominant colour approach fills the image container with a solid colour extracted from the image during the build process. The LQIP approach loads a tiny, heavily compressed version of the image (typically under 1 kilobyte) and displays it blurred until the full image loads, then cross-fades to the sharp version.
Both approaches prevent layout shift because the container is sized correctly from the start. The LQIP approach gives a better preview of the image content, which is valuable for portfolio sites where the image content is the point.
Build-Time Image Processing
Manual image optimisation does not scale. A portfolio site with thirty projects, each with five images, has a hundred and fifty images that need format conversion, quality tuning, responsive variant generation, and metadata stripping. That pipeline needs to be automated.
Build-time image processing integrates into the project's build step and handles: source image intake (accepting high-resolution originals from the design team), format conversion (generating JPEG, WebP, and AVIF variants), responsive sizing (generating multiple widths per image), quality optimisation (applying appropriate compression for each format), and metadata stripping (removing EXIF data, ICC profiles, and other non-rendering metadata).
The output is a set of optimised, correctly sized image files that the front-end templates reference. The templates should generate the appropriate and srcset markup automatically based on the available image variants.
Performance Budgets
Set a page weight budget for key page types and enforce it. A reasonable budget for a portfolio index page might be 800 kilobytes total transfer for the initial viewport, with additional weight loaded progressively as the user scrolls. A project detail page might budget 1.2 megabytes for the initial load including the hero image.
These budgets should be tested against real network conditions. A 1.2-megabyte page loads in under a second on a fast office connection, but takes over four seconds on a 3G mobile connection. If the audience includes mobile users—and it does—the budget needs to account for the slower end of the connection spectrum.
Frequently Asked Questions
Should portfolio sites use next-gen formats exclusively?
No. Use modern formats as the primary option with JPEG fallbacks. The element makes this seamless. Do not sacrifice compatibility for marginal file size gains.
How much quality loss is acceptable for portfolio images?
Less than you might expect. Most photographic content is perceptually identical at quality 80-85 compared to quality 95. For hero images, test individually. For grid thumbnails, batch encoding at quality 82 is a reasonable starting point.
Is it worth optimising images if the site uses a CDN?
Absolutely. A CDN reduces latency but does not reduce file size. The bytes still transfer. Optimisation and delivery infrastructure are complementary, not alternatives.