You have uploaded images to your hosting account, but when you load your website they show as broken icons or do not appear at all. This is almost always caused by one of three things: the file path in your HTML does not match where the image actually is, the filename case does not match, or the image is outside of public_html.
Case sensitivity: Photo.JPG is not the same as photo.jpg
Linux servers are case-sensitive, unlike Windows. If your image file is named Banner.JPG but your HTML references banner.jpg, the server cannot find it and the image will not load. Check that the filename in your HTML matches the actual file exactly, including uppercase and lowercase letters and the file extension.
01. File Names Are Case-Sensitive
This is the number one cause of missing images, especially for users coming from Windows where Photo.JPG and photo.jpg are treated as the same file. On a Linux web server, they are completely different files.
Common mismatches include:
- Extension case -
.JPGvs.jpgvs.Jpg. Cameras often save files with uppercase extensions like.JPGor.PNG. - Name case -
MyPhoto.jpgvsmyphoto.jpg. HTML editors on Windows may auto-lowercase references. - Folder case -
/Images/logo.pngvs/images/logo.png. The folder name matters too.
The easiest fix is to rename all your image files to lowercase (including the extension) and update your HTML to match. Lowercase filenames are a web development best practice that avoids this issue entirely.
02. Using the Correct File Path
The path in your HTML src attribute must match the actual location of the image file relative to the HTML page or relative to the site root.
Relative paths (recommended)
If your HTML page is at public_html/index.html and your image is at public_html/images/logo.png, the correct reference is:
<img src="images/logo.png" alt="Logo">
If your HTML page is in a subdirectory like public_html/about/team.html, you need to go up one level:
<img src="../images/logo.png" alt="Logo">
Root-relative paths
Starting the path with a forward slash makes it relative to the website root (your domain), regardless of where the HTML file is:
<img src="/images/logo.png" alt="Logo">
This always resolves to yourdomain.com/images/logo.png no matter which page the tag appears on.
Full URLs
<img src="https://yourdomain.com/images/logo.png" alt="Logo">
This works from anywhere but is less flexible if you ever change domains.
Right-click the broken image in your browser and select "Open image in new tab" (or "Copy image address"). Look at the URL the browser is trying to load. Then compare it to where the file actually is on the server using cPanel File Manager. The mismatch will be obvious.
03. Make Sure Images Are in the Right Directory
Your website files must be inside the public_html directory (or the appropriate document root for addon domains). Files uploaded to your home directory, the tmp folder, or any location outside public_html are not accessible via the web.
Check in cPanel File Manager:
- Navigate to public_html
- Look for your images folder (usually
images,img,assets, orwp-content/uploadsfor WordPress) - Verify the image files are there
If your images are in the wrong place, move them to the correct location inside public_html. For details on the hosting file structure, see Uploaded My Site But Cannot See It and FTP Root Directory and Account Structure.
04. Check File Permissions
Image files need to be readable by the web server. The correct permissions for image files are 644 and for directories 755. If permissions are too restrictive (like 600 or 700), the web server cannot read the file and will return a 403 error instead of the image.
To check and fix permissions in cPanel File Manager, right-click the file or folder and select "Change Permissions." Set files to 644 and directories to 755.
Via SSH or Terminal:
find ~/public_html/images -type f -exec chmod 644 {} \;
find ~/public_html/images -type d -exec chmod 755 {} \;
05. Hotlink Protection Blocking Images
If you enabled Hotlink Protection in cPanel (under Security > Hotlink Protection), it prevents other websites from embedding your images. However, if configured incorrectly, it can also block your own site from loading its images.
Check that your own domain is listed in the "URLs to allow access" field. Both yourdomain.com and www.yourdomain.com should be included.
06. FTP Transfer Mode: Binary vs ASCII
If you uploaded images via FTP using ASCII transfer mode instead of binary mode, the files may have been corrupted during upload. Images, PDFs, ZIP files, and any non-text files must be uploaded in binary mode.
Most modern FTP clients (including FileZilla) default to "Auto" mode, which detects the file type and chooses the correct mode automatically. If your images look corrupted or are the wrong file size after uploading, re-upload them in binary mode. In FileZilla, go to Transfer > Transfer Type > Binary.
For more on FTP best practices, see our FTP client guide.
Still Cannot See Your Images?
If you have checked all of the above and images are still not loading, open a ticket and include the URL of a page with broken images. We will check the server side for you.
Open a Support TicketQuick Recap
- Check case sensitivity -
Photo.JPGandphoto.jpgare different files on Linux - Verify the file path - Right-click the broken image to see what URL the browser is requesting
- Images must be inside public_html - Files outside this directory are not web-accessible
- Permissions should be 644 - 600 or 700 will block the web server from reading the file
- Upload images in binary mode - ASCII mode corrupts non-text files
Helping users troubleshoot website image issues · Last updated March 2026 · Browse all Getting Started articles
