TM
February 12, 2026
|
10 min read


When images don’t load, a website immediately seems "broken"—and often the cause is simpler than it feels.
We show you how to recognize the most common error patterns, debug in a specific order, and which fixes in WordPress, HTTPS, and CDN are effective.
In the end, you'll have not just a repair, but a robust image strategy: faster, more accessible, more sustainable.
404
403
500
Mixed Content
Cache
CDN
WebP
AVIF
LCP
CLS
Lazy Loading
CORS
Path
Permissions
WordPress
Hotlinking
We encounter this in projects more often than you think: The site is up, the layout fits—and then suddenly empty spaces appear. In stores, it’s product images, in portfolios it’s references, in blogs it’s hero images. It feels dramatic because images are often the part that builds trust.
First: The image is not accessible. This is the classic: an incorrect path, a renamed file, a capital letter too much (yes, that’s enough on many servers), or a folder has been moved. Then the server often returns a 404. Just as often, we see 403 when permissions or a hotlink protection is active.
Second: The image is blocked. Since many websites run entirely on HTTPS, we regularly encounter "Mixed Content": The site is secure (https) but an image is still embedded via http. Modern browsers then block it—not out of spite, but for security reasons. The console often clearly shows the hint.
Third: The image is there—but it doesn’t arrive sensibly. This includes oversized files (on mobile it rather aborts or seems like it "never loads"), a format without a suitable fallback, or a CDN/cache delivering an old or damaged version. Images remain the heavyweight on the web: On typical homepages, there are about 900 KB (mobile) to 1054 KB (desktop) median for images alone. HTTP Archive Web Almanac 2024
At Pola, we always take a closer look at image problems: What is broken—and why was it possible to break it? Often, there’s not a single typo behind it, but a missing process. That’s exactly why we combine repair with prevention: fewer outages, less data, more impact.
If you’re currently affected, don’t go into "rebuild everything" mode. Start with a clean diagnosis—and in a few minutes, you’ll be much smarter.


When images are missing, the fastest way is almost always the same: We don’t first look into plugins or server logs, but where the truth lands—in the browser.
We use a process that deliberately remains short but covers the most common causes. You only need Chrome or Firefox.
1) Open image URL directly. Right-click on the spot (or in the code src) and open the image URL in a new tab. If you see an error page there, it’s not a “rendering problem,” but a delivery problem.
2) Open DevTools and check the Network tab. Press F12, switch to “Network” and reload the page. Filter by “Img.” Now you see status codes: 404 (not found), 403 (forbidden), 500 (server error), or also 200—then the problem is more about display, cache, or format.
3) Read the console, don’t guess. In the Console tab, hints like “Mixed Content” or CORS problems are often literally there. This is the moment when gut feeling becomes a clear fix.
A 404 almost always means: path, filename, capitalization, wrong folder. We typically see a 403 with incorrectly set file permissions, security rules, or when hotlinking is to be prevented.
If you see 200 but still nothing displayed, it gets more interesting: Then we check the format and CSS next. An image can be “loaded” but end up on display:none through CSS, be overwritten as a background image, or covered by a cookie banner/overlay. This happens more often in practice than it sounds in classic guides.
If you have many pages, a targeted crawl is worth it. For a quick overview, we often use Google PageSpeed Insights (for performance and image hints) or WebPageTest (for the waterfall and actual loading order). For “Are there broken image paths somewhere?” a Broken Link Checker works pragmatically.
The most important thing: Stick to the order. Those who tweak ten settings at first sometimes fix it by accident—and learn nothing. Those who measure first, fix cleanly and sustainably.
Do you want to fix the cause quickly, cleanly, and permanently?
A non-loading image is rarely “just” a visual problem. It’s a small breach of trust: You’ve brought someone to your website—and then the site doesn’t provide the most important orientation.
When images are missing, the answers are often missing too. In the shop: “What does the product look like?” In consulting: “Is the team real?” In NGO communication: “What does the project stand for?” Users bounce before they even read your text.
Even if images do eventually appear, timing matters. In the performance context, it is crucial which element takes the longest to become visible. In practice, this is often an image: According to the Web Almanac, an image determines the Largest Contentful Paint in about 68% of cases. HTTP Archive Web Almanac 2024 If this image hangs, the perceived page hangs.
It quickly becomes economic: More than half of mobile users leave a page if it takes longer than three seconds to load. Site Builder Report This is a number we don’t use as a threat but as a reminder: Your content is only as effective as its delivery.
At Pola, there’s another level. Images make up the largest data share of many websites—and every byte must be stored, transmitted, processed. That costs energy in data centers, networks, and on end devices. The internet has a measurable CO₂ footprint, and unnecessary data transfer is part of it. SHIFT
It sounds big, but it starts small: A hero image that is 180 KB instead of 1.2 MB not only loads faster. It is also simply more responsible. “Less data, more impact” is not a slogan for images, but a design decision.
Core Web Vitals have been part of the Page-Experience signals for years. Since 2025, the demands have noticeably increased in many teams: Performance is no longer “nice,” but hygiene. Those who get image problems under control usually simultaneously improve LCP, reduce bounces, and make content reliable again.
The beauty of it: This is often where the fastest, cleanest improvements lie—because images have so much potential.


In practice, it’s often the same stumbling blocks—just in different costumes. We go through them here deliberately as we encounter them in everyday life.
The most common reason is banal: The image is not where the URL points. After a relaunch, after moving media folders, or after a migration (e.g., from a staging to a live environment), old paths remain.
Also pay attention to filenames: special characters, umlauts, spaces, or a “final-final-2.png” can end up strangely in combination with encoding and CMS logic. And very importantly: On many Linux servers, /Images/Photo.jpg is something different from /images/photo.jpg.
If a 403 comes back, it’s often a permission issue or a protection rule. Especially in WordPress, we see this after host changes: The uploads folder has the wrong permissions, or a security plugin blocks certain file types.
If only one image doesn’t load, it may simply be damaged (upload interrupted, file corrupt). Then usually helps: re-export, re-upload, no long discussion.
A cache can save a page—and it can drive you mad. When images are exchanged but remain under the same URL, browsers or CDNs sometimes still deliver the old variant. Our routine: once hard reload, then cache purge in CDN/plugin, then continue.
Many image issues in WordPress are indirect. An optimization plugin converts images to WebP, but the rewrite rule is wrong. Or a lazy loading plugin sets attributes so that the browser only loads images when they are in the viewport—but an overlay prevents scrolling and triggering.
If you want to optimize but need to stay stable, many teams start with established tools like ShortPixel or Imagify. The important thing is not the tool itself, but that you test afterward: in incognito mode, on the phone, and once in Safari.
When we fix image issues, we never change five things simultaneously. We take exactly one hypothesis (e.g., “Mixed Content”), apply the fix, check the result in the Network tab—and only then comes the next variable.
That sounds slow, but it’s the opposite: You keep control. And you can document the fix later instead of starting from scratch the next time.
When the basics are right (path correct, status 200, still no image), it’s usually these “invisible” cases that cost time. We bundle them here because they often only appear on the fringes in classic how-tos.
You’ve enabled SSL, the site runs on https—but a few images are still hard linked to http. Then the browser blocks. You can recognize this in the console very reliably.
In WordPress, a search and replace in the database often helps (carefully and ideally with backup). Many teams use Better Search Replace for this. Important: Check afterward whether all assets are really delivered via https.
If you load images from another domain, CORS problems can arise in certain applications (Canvas, certain script accesses). For “normal display,” CORS is less often the cause, but in web apps, we do see it. Then the solution is: set headers correctly or move images to a suitable asset domain.
Sometimes images are “there,” but are only allowed to be embedded from the own domain. A shop owner then copies an image from an old system or a manufacturer—and suddenly it’s gone because the source blocks hotlinking. That’s not a bug, but the source’s intention. The clean solution is always: Host the image yourself or clarify the release.
CDNs are great—until an edge node caches the wrong variant. Then some users see images, others don’t. If you have such a "only some" problem, that’s a strong hint.
Here, a targeted purge (only the affected URLs) and then a test from different regions, for example with WebPageTest or a multi-location check, often helps.
WebP is widely supported today, AVIF is on the rise. According to the Web Almanac, AVIF has quadrupled between 2022 and 2024, while JPEG shares are declining. HTTP Archive Web Almanac 2024
Still applies: If you deploy Next-Gen formats, you need clean fallbacks via —otherwise “optimized” quickly becomes “invisible” when an edge browser or a specific in-app browser comes into play.
These special cases are exactly why we always read debugging as a little story: Who calls whom, what comes back, and who blocks it? Once you see the image as a request chain, it becomes solvable again.


Critical page affected and no time for trial and error?
If we want to prevent image failures permanently, it’s not enough to fix individual broken links. Then we need an image pipeline as natural as a brand guide: clear rules, simple routines, few surprises.
We recommend a pragmatic version to teams that works without a large tool landscape:
1) Scale and compress before upload. A photo from the camera is almost never web-ready. For quick quality control, we like to use Squoosh or tiny tools like TinyJPG.
2) Take Responsive Images Seriously. If you send a 2400px image to a 390px wide phone, it appears “sharp,” but is mainly a waste. Web Almanac shows that images are delivered about 25% larger on mobile pages than necessary in the median. HTTP Archive Web Almanac 2024 srcset and sensible size levels solve this.
3) Lazy Loading, but With Care. For images below the visible area, loading="lazy" is usually right. For the central hero image, it’s often wrong because it can worsen the LCP. (Depending on the setup, fetchpriority="high" can also help.)
4) Configure Caching to Prevent Updates from Getting Stuck. Long cache times are good as long as you use versioning (filename or hash). Then the page stays fast and you don’t lose control.
A point we rarely read in other guides but see constantly in design projects: The more images are "just decoration," the more fragile the site becomes. Minimalist design is not only an aesthetic attitude, but it’s often also the more robust technical decision.
We deliberately ask: "Which image really carries meaning?" If an image only fills space, the risk increases (more requests, more dependencies) without clear impact. If an image carries meaning, we treat it like core content: optimized, prioritized, with fallback.
Thus, prevention doesn't become an extra task, but a way of building websites: light, clear, durable.


When images don’t load, it’s “just” irritating for some users. For others, it’s a real obstacle. And that’s where it gets interesting: Accessibility is not just a legal issue or a checkbox, but a stress test for your content.
A persistent myth: “If the image is missing, you’ll see the alt text.” In reality, this happens inconsistently—often the browser only shows a small icon, and the alt text is primarily valuable for screen readers. This means: Alt texts do not replace images, but they save information.
We write alt texts so that they carry the purpose of the image, not describe the pixels. A product photo needs something different than an atmospheric image. And a diagram needs a textual summary, otherwise, the information is lost.
Accessibility is also about layout: When images load late or fail, jumps often occur. This is not only annoying but can burden people with cognitive impairments or concentration difficulties more. A simple, often underestimated step: Set width and height (or define fixed ratios via CSS) so that the space is reserved and the page remains calm.
We like to evaluate websites by how they behave when things go wrong: slow network, blocked images, external service down. If everything collapses then, the experience was fragile.
However, if you maintain alt texts properly, don’t hide important information only in the image, and embed visual content with stable placeholders, your website remains usable—even when an image cannot be delivered.
This fits with our aspiration “Access for all”: Not because we promise perfection, but because we take responsibility seriously.
With image problems we see two typical reactions: Either everything is "analyzed to death"—or quick solutions are adopted that create new problems in the long run. A few misunderstandings keep popping up.
A CDN can reduce latency, but it doesn’t suddenly make a 5MB image small. If you don’t use an image CDN with automatic transformation, the file size remains the same. The effect is limited—and sometimes even additional complexity arises from cache invalidation.
If you really want to deliver automatically, look at services like Cloudinary that dynamically serve formats and sizes. It’s not necessary for every site, but with large image volumes, it can save a lot of maintenance.
We love strong images. But we also see that users are more likely to give up than wait for perfection. If load time increases from one to ten seconds, the bounce rate can grow drastically. Site Builder Report Our empirical value: A "visually clean" quality beats a "technically maximal" quality.
Performance is a state that changes daily because content changes. Today an editor uploads a 6MB image, tomorrow a new plugin comes in, the day after tomorrow a CDN is activated. Therefore, prevention is more important than heroics.
Alt texts are important—but they’re no excuse for broken images. They are the seatbelt, not the engine.
We don’t like these myths because they are “wrong,” but because they lead you in the wrong direction: away from clear diagnosis, away from a clean image strategy. Once you’ve understood the contexts, the topic becomes much more relaxed—and you make decisions that bring together design, technology, and impact.
Want to deliver stable, fast, and accessible images?
Send us a message or book a non-binding initial consultation – we look forward to getting to know you and your project.
Our plans
Copyright © 2026 Pola
Learn more
Directly to
TM