Blog

How to Fix Mixed Content Errors in WordPress After Installing SSL

How to Fix Mixed Content Errors in WordPress After Installing SSL

Your SSL certificate is installed, your site should be secure, but the browser is still warning visitors that something is wrong.

That usually means mixed content. The site itself is loading over HTTPS, but one or more images, scripts, stylesheets, fonts, videos, or embeds are still being requested over plain HTTP.

The good news: mixed content is usually fixable without rebuilding your WordPress site. The annoying part is that the problem can hide in page builder content, old image URLs, theme settings, CSS files, caching layers, or third-party embeds.

What mixed content means

Mixed content happens when a secure HTTPS page loads something from an insecure HTTP URL.

For example, your page might load here:

https://example.ca/about/

But the logo, background image, stylesheet, or tracking script might still be referenced like this:

http://example.ca/wp-content/uploads/logo.png

That mismatch is what triggers the warning.

Browsers are stricter about this in 2026 than they used to be. They may quietly upgrade some image requests, block scripts completely, or show a warning beside the address bar. If checkout scripts, form scripts, or page builder files are blocked, parts of the site can break.

Quick distinction: Having an SSL certificate is only step one. Your site also needs to actually use HTTPS everywhere.

How to tell if you have mixed content

The most obvious sign is a browser warning. You may see “Not secure,” a broken padlock, or a warning icon beside the address bar even though the page URL starts with HTTPS.

Other signs include:

  • Images missing on secure pages
  • Layout issues after installing SSL
  • Fonts not loading correctly
  • Sliders, maps, or forms not working
  • Checkout buttons or payment fields behaving oddly
  • Browser console errors mentioning “mixed content”

Some pages may be fine while others are not. The homepage might show a secure padlock, but an older blog post, landing page, product page, or contact page may still contain HTTP links.

Before you start fixing anything

Do not run a database-wide replacement or install three SSL plugins before doing a quick safety check. Mixed content is fixable, but a rushed fix can create broken images, duplicate redirects, or serialized data problems.

Before making changes:

  • Take a fresh backup of the files and database
  • Confirm the SSL certificate is valid and not expired
  • Check that WordPress Address and Site Address use HTTPS
  • Clear any caching plugin, server cache, and CDN cache after each major change
  • If the site is important for sales or leads, test changes on staging first

If you want a broader SSL overview first, read SSL Certificates: Why Your Site Needs HTTPS.

Step 1: Confirm WordPress is using HTTPS

Start in the WordPress dashboard. Go to the general site settings and check both the WordPress Address and Site Address fields.

They should use:

https://

Not:

http://

This sounds too basic, but it is one of the most common causes of mixed content after SSL is installed. If WordPress still thinks the site lives at the HTTP version, it can keep generating insecure links for media, scripts, stylesheets, and internal URLs.

After changing these settings, log out and back in if needed. Then clear cache and test again in a private browser window.

Step 2: Find the exact insecure files

Do not guess. Find the exact HTTP resources causing the warning.

The fastest way is your browser’s developer tools:

  1. Open the affected page in Chrome, Firefox, Edge, or Safari
  2. Right-click the page and choose Inspect
  3. Open the Console tab
  4. Reload the page
  5. Look for messages mentioning “Mixed Content”

The console will usually show the insecure URL. Copy it somewhere. You are looking for patterns.

For example:

  • All problem URLs are old images from your own uploads folder
  • Only one plugin is loading an HTTP script
  • A page builder section has an HTTP background image
  • A third-party widget is using an insecure embed
  • The CDN is still serving old HTTP references

Once you know the source, the fix is much easier.

Step 3: Fix internal media URLs

If the insecure URLs point to your own domain, they are usually old database references.

This often happens when a site existed for years on HTTP, then SSL was added later. Old posts, pages, widgets, menus, and page builder layouts may still contain full HTTP links.

You can fix these with a careful search and replace from:

http://example.ca

To:

https://example.ca

Use a tool that understands WordPress serialized data. Many WordPress site owners use plugins such as Better Search Replace, or WP-CLI if they are comfortable with command line work. Check the official documentation for whichever tool you use, because interfaces and options can change.

Do not manually export the database and run random SQL replacements unless you know exactly what you are doing. WordPress stores some data in serialized formats, and careless replacements can break page builder layouts, widgets, and plugin settings.

If using WP-CLI, a typical approach is to run a dry run first, review what would change, then run the real replacement. Many developers skip the GUID column when replacing URLs, but the right choice depends on the site and migration history.

If that sentence made your eyes glaze over, that is a sign to use a WordPress-safe plugin or ask someone technical to handle it.

Step 4: Check page builders, theme options, and widgets

Search and replace fixes many mixed content issues, but not all of them.

Some themes and page builders store images, icons, fonts, or background settings in places that do not update cleanly. You may need to open the affected page, edit the section, remove the old image, and reselect it from the media library.

Check these areas:

  • Header logo settings
  • Footer logo settings
  • Favicon or site icon settings
  • Hero background images
  • Custom CSS fields
  • Sidebar widgets
  • HTML blocks
  • Page builder templates
  • Popup builder content
  • Old shortcode output

Background images are a classic culprit. They may not appear in the visible page editor, but the browser console will still show the HTTP image being loaded from a CSS rule.

Step 5: Fix hardcoded theme and custom code references

If the browser console points to a script, stylesheet, font, or image inside your theme, the URL may be hardcoded.

This can happen in:

  • Theme template files
  • A child theme
  • Custom JavaScript
  • Custom CSS
  • Header or footer injection fields
  • Tracking code snippets

Look for full URLs beginning with HTTP. Where possible, replace them with HTTPS versions or use WordPress functions that generate the correct site URL automatically.

If you are editing theme files, use a child theme or proper deployment workflow. Editing a commercial theme directly can cause your changes to disappear during the next theme update.

Step 6: Check third-party embeds and scripts

Not every mixed content issue comes from your own site.

You may have an old embed from a booking system, review widget, map provider, video player, analytics tool, chat widget, or payment-related service that still uses HTTP.

For third-party resources, do not simply change HTTP to HTTPS and hope for the best. First, check whether the provider supports HTTPS. Most reputable providers do, but old embed codes can linger for years.

Good fixes include:

  • Replacing the old embed code with the current one from the provider
  • Updating the plugin that provides the integration
  • Removing the widget if the provider no longer supports HTTPS
  • Switching to a maintained alternative if the old service is abandoned

This matters even more on contact forms, appointment forms, payment pages, and intake forms. Canadian businesses collecting personal information should take HTTPS seriously, especially where PIPEDA obligations are involved. For more on privacy expectations, see How to Comply with PIPEDA: Essential Privacy Policy Requirements for Canadian Websites.

Step 7: Clear every cache layer

Mixed content sometimes looks fixed in WordPress but still appears in the browser because cached files are being served.

Clear all relevant caches:

  • WordPress caching plugin cache
  • Server cache
  • Object cache, if used
  • CDN cache
  • Browser cache
  • Page builder generated CSS cache
  • Minified CSS and JavaScript cache

If your site uses a CDN, check whether the CDN is rewriting, caching, or proxying assets. A stale CDN cache can keep serving old HTTP references after WordPress itself has already been corrected.

If you are not sure how caching works in WordPress, this article is a useful companion: WordPress Caching Explained: A Beginner's Guide.

Step 8: Set up proper HTTP to HTTPS redirects

Once the site is working over HTTPS, make sure visitors and search engines are redirected from HTTP to HTTPS.

This is usually handled at the hosting, server, CDN, or control panel level. Many hosts provide a simple “force HTTPS” option. Some WordPress plugins can also do it, but server-level redirects are usually cleaner.

A redirect helps when someone visits the old HTTP version of a page. It does not fully solve mixed content by itself, because the HTML may still request insecure assets. Fix the source URLs first, then use redirects as a safety net.

Also avoid stacking multiple redirect systems if you can. A hosting redirect, CDN redirect, WordPress plugin redirect, and manual redirect rule can create loops or slow chains.

Step 9: Be careful with HSTS

HSTS tells browsers to always use HTTPS for your domain. It can be useful, but do not enable it too early.

If your HTTPS setup is incomplete, HSTS can make testing harder and can lock visitors into a broken secure version until the policy expires. Get the certificate, redirects, mixed content, forms, checkout, and admin area working first.

Once everything is stable, HSTS may be worth considering, especially for sites that handle sensitive information. If you are unsure, leave it off until someone technical reviews the setup.

When an SSL plugin helps, and when it does not

Plugins such as Really Simple SSL or SSL Insecure Content Fixer can be useful, especially on smaller sites where you need a quick improvement.

They typically help with things like:

  • Detecting SSL
  • Updating common WordPress settings
  • Adding HTTPS redirects
  • Rewriting some insecure asset URLs on output

But they are not magic. They may not fix hardcoded third-party scripts, abandoned plugin output, broken CDN settings, or old embed codes. They can also hide the real issue instead of cleaning it up properly.

My usual advice: use an SSL plugin as a temporary bridge if needed, not as a permanent substitute for fixing the database, theme settings, and external resources.

Mixed content on WooCommerce stores

Mixed content is more serious on WooCommerce sites because cart, checkout, payment gateway, and account pages need to feel trustworthy and function reliably.

After fixing SSL issues, test:

  • Product images
  • Add to cart buttons
  • Cart page
  • Checkout page
  • Payment fields
  • Order confirmation page
  • Customer login and password reset
  • Transactional email links

If a payment gateway script is blocked because of mixed content, customers may not be able to pay. If trust badges, checkout styling, or product images break, customers may abandon the order even if the payment system technically still works.

For stores, do this on staging first if possible. A live checkout is not the place to experiment blindly.

Common mistakes to avoid

Only checking the homepage

The homepage is not enough. Check service pages, blog posts, landing pages, forms, checkout pages, and any older content that was built before SSL was installed.

Forgetting mobile

Some mixed content only appears on mobile layouts. A different logo, background image, menu script, or mobile slider may load only below a certain screen width.

Changing the database without a backup

Search and replace is powerful. It is also easy to make a mess. Always back up first.

Ignoring CSS background images

Visible image blocks are easy to spot. CSS background images are easier to miss, especially when they live inside generated page builder CSS.

Assuming the SSL certificate is the problem

If the certificate is valid and the page loads over HTTPS, the certificate may be fine. The problem is often the page content, not the certificate itself.

Leaving old third-party widgets in place

If a provider still serves assets over HTTP, it may be outdated or poorly maintained. That is worth reviewing beyond the mixed content warning.

A practical testing checklist

After making fixes, run through this checklist:

  • Visit the HTTP version of the site and confirm it redirects to HTTPS
  • Open the HTTPS version in a private browser window
  • Check the browser padlock or security indicator
  • Open developer tools and check the Console tab
  • Test at least one page from each major section of the site
  • Submit a test contact form
  • Check images, fonts, icons, and layout
  • Test on mobile and desktop
  • Clear all cache layers and test again
  • For WooCommerce, test cart and checkout carefully

If the warning disappears before cache clearing but returns after a few hours, look at caching, CDN rules, scheduled optimization tasks, or plugins that regenerate CSS.

What if the mixed content keeps coming back?

If mixed content keeps returning after you fix it, something is likely regenerating HTTP URLs.

Possible causes include:

  • Incorrect WordPress site URL settings
  • A migration plugin or old configuration still using HTTP
  • A theme option that stores the old domain
  • A page builder regenerating CSS from old settings
  • A plugin loading assets with hardcoded HTTP paths
  • A CDN or proxy configuration issue
  • Old content being copied and pasted from another source

At that point, stop repeating the same search and replace. Find the source that is recreating the problem.

How Ambrite handles this for WordPress sites

Ambrite Web Services builds, hosts, and maintains WordPress sites from Fredericton, New Brunswick. On Ambrite Canadian cloud hosting, SSL certificates are included and auto-renewed on every plan.

For existing WordPress sites, mixed content cleanup is the kind of issue that can often be handled as part of ongoing care, depending on the site and the work required. Ambrite’s WordPress maintenance and security plans include updates, backups, monitoring, CDN support, speed checks, and monthly edit time, with plan details listed on the maintenance page.

If your site is already under maintenance, open a ticket or send an email with the affected page URLs. If you are not a client yet, you can contact Ambrite and include your website address plus a short note about where you see the browser warning.

When to get help instead of DIY fixing it

You can usually fix simple image-related mixed content yourself. If the console shows a few old image URLs from your own domain, a careful WordPress-safe search and replace may be enough.

Get help if:

  • The issue affects checkout, payment, forms, or client intake pages
  • You are not comfortable backing up and editing the database
  • The site uses a complex page builder or custom theme
  • The warning appears only sometimes
  • Fixes disappear after cache clears or CSS regenerates
  • You see blocked scripts rather than just insecure images
  • You are dealing with sensitive personal information

Mixed content is not usually a disaster, but it does chip away at trust. Visitors do not care whether the warning is caused by one old background image or a serious security issue. They just see that the browser is unhappy.

Fix the URLs, clear the caches, test the important pages, and do not rely on a plugin to paper over something that should be cleaned up properly.

This article was written with the help of AI and reviewed by Ambrite. Pricing, features, and technical details may change, so always verify with official sources before making decisions.

Was this article useful?

Related Articles

How to Comply with PIPEDA: Essential Privacy Policy Requirements for Canadian Websites
Your website collects personal information from visitors (even just their IP address counts)....
How to Set Up Two-Factor Authentication for WordPress Admin Access
Two-factor authentication (2FA) is like adding a deadbolt to your WordPress admin door, and in...
How Hackers Exploit Outdated WordPress Plugins
That outdated WooCommerce shipping plugin you've been meaning to update? It's probably already...
How a Hacked Website Damages Your Firm's Reputation
Your website just got hacked. The sinking feeling in your stomach is real, and it should be. A...
WordPress Security Best Practices for Law Firms
Your law firm's website handles sensitive client data every single day. One security breach...