Skip to content

Mixed Content: HTTPS Page Loading HTTP Resources

TL;DR:

Mixed Content means an HTTPS page loads resources (JS, CSS, images, iframes) over HTTP. Chrome blocks active mixed content entirely; passive triggers a warning. Fix: replace http:// URLs with https:// or protocol-relative //, and add Content-Security-Policy: upgrade-insecure-requests.

This error occurs tens of thousands of times per month. We cover the causes and step-by-step fix.

Check your site's SSL →

What Mixed Content means

Mixed Content means an HTTPS page loads resources (JS, CSS, images, iframes) over HTTP. Chrome blocks active mixed content entirely; passive triggers a warning. Fix: replace http:// URLs with https:// or protocol-relative //, and add Content-Security-Policy: upgrade-insecure-requests.

The error can appear in Chrome, Edge, Opera, Brave (all Chromium-based), and partially in Firefox and Safari. Different browsers display the same code differently, but the underlying issue is the same.

How to fix (step-by-step)

  1. Check the SSL certificate online — the Enterno.io checker shows the grade, expiry, chain, and specific cause.
  2. If the issue is server-side — reissue the certificate via certbot or your chosen CA.
  3. Update nginx/apache config (enable TLS 1.2/1.3, fullchain, correct ciphers).
  4. Check kernel OpenSSL — an outdated openssl < 1.1 can break handshakes.
  5. After deploy: recheck via SSL checker + clear the browser SSL cache.

Check SSL now →

Related SSL errors

TL;DR: Fixing Mixed Content Warnings

To resolve mixed content warnings on your website, ensure that all resources, such as images, scripts, and stylesheets, are loaded over HTTPS. Use tools like the browser console to identify insecure requests and update URLs accordingly. Additionally, consider implementing Content Security Policy (CSP) headers to enforce secure loading of resources.

Understanding Mixed Content Types

Mixed content occurs when a secure HTTPS page loads resources over an insecure HTTP connection. This can lead to security warnings in browsers and can jeopardize user data integrity. There are two primary types of mixed content:

  • Passive Mixed Content: This includes elements like images, videos, and audio files. Although they don't pose a direct risk, their insecure loading can still compromise the entire page's security.
  • Active Mixed Content: This includes scripts, stylesheets, iframes, and AJAX requests. Loading these over HTTP can lead to vulnerabilities such as man-in-the-middle attacks.

For example, if a website's main page is served via HTTPS, but it pulls a JavaScript file from an HTTP source, it creates an active mixed content scenario. Browsers typically block active mixed content by default, while passive mixed content may still display with a warning.

Practical Steps to Fix Mixed Content Issues

To address mixed content warnings, follow these practical steps:

  1. Identify Mixed Content: Use the browser's developer tools (F12) to inspect the console for mixed content warnings. Look for URLs that are loaded over HTTP.
  2. Update Resource URLs: Change all HTTP resource links to HTTPS in your HTML, CSS, and JavaScript files. For example, if you have an image tag like this:
<img src="http://example.com/image.jpg" alt="Example Image">
  1. Change it to:
<img src="https://example.com/image.jpg" alt="Example Image">
  1. Use Relative URLs: If your resources are hosted on the same domain, consider using protocol-relative URLs. For instance:
<script src="//example.com/script.js"></script>
  1. Implement Content Security Policy: To enforce HTTPS loading, configure a CSP header in your server settings. An example of a CSP header that disallows all HTTP content is:
Content-Security-Policy: upgrade-insecure-requests;
  1. Test Your Changes: After making updates, refresh your site and monitor the console for any remaining warnings. Tools like Why No Padlock can help you verify that all content is now served securely.

By following these steps, you can effectively eliminate mixed content warnings and enhance the security of your website.

CertificateExpiry, issuer, domains (SAN)
ChainIntermediate and root CA validation
TLS ProtocolTLS version and cipher suite
VulnerabilitiesHeartbleed, POODLE, weak ciphers

Why teams trust us

TLS 1.3
supported
Full
CA chain check
<2s
result
30/14/7
days-to-expiry alerts

How it works

1

Enter domain

2

TLS chain verified

3

Expiry date & vulnerabilities

What Does the SSL Check Cover?

SSL/TLS is the encryption protocol that protects data between the browser and server. Our tool analyzes the certificate, chain of trust, TLS version, and knownvulnerabilities.

Certificate Details

Issuer, validity period, signature algorithm, covered domains (SAN), and validation type (DV/OV/EV).

Chain of Trust

Full chain verification: from leaf certificate through intermediates to root CA.

TLS Analysis

Protocol version (TLS 1.2/1.3), cipher suites, Perfect Forward Secrecy (PFS) support.

Expiry Alerts

Set up a monitor — get Telegram and email alerts 30/14/7 days before expiration.

DV vs OV vs EV Certificates

DV (Domain Validation)
  • Confirms domain ownership only
  • Issued in minutes automatically
  • Free via Let's Encrypt
  • Suitable for most websites
  • Most common certificate type
OV / EV
  • Organization (OV) or Extended Validation (EV)
  • Issued in 1-5 business days
  • Costs $50 to $500/year
  • For finance, e-commerce, government sites
  • Increases user trust

Who uses this

DevOps

SSL certificate monitoring

Security

TLS config audit

SEO

HTTPS as ranking factor

E-commerce

customer trust

Common Mistakes

Expired certificateBrowsers block sites with expired SSL. Set up auto-renewal or monitoring.
Incomplete certificate chainWithout intermediate CA, some browsers and bots cannot verify the certificate.
Mixed content on HTTPS siteHTTP resources on an HTTPS page — the browser lock icon disappears, reducing trust.
Using TLS 1.0/1.1Legacy TLS versions have known vulnerabilities. Use TLS 1.2+ or 1.3.
Domain mismatch in certificateThe certificate must cover all site domains, including www and subdomains.

Best Practices

Set up auto-renewalLet's Encrypt + certbot with cron — certificate renews automatically every 60-90 days.
Enable HSTSStrict-Transport-Security header forces browsers to always use HTTPS.
Use TLS 1.3TLS 1.3 is faster (1-RTT handshake) and safer — legacy ciphers removed.
Monitor expiration datesCreate a monitor on Enterno.io — get notified well before expiration.
Verify chain after renewalAfter certificate renewal, confirm that intermediate certificates are installed.

Get more with a free account

SSL certificate monitoring, check history and alerts 30 days before expiry.

Sign up free

Learn more

Sources

Frequently Asked Questions

Is it safe to ignore Mixed Content?

No. This error indicates a real SSL certificate problem. Ignoring it (via chrome://flags or "thisisunsafe") makes the connection vulnerable to man-in-the-middle attacks. Fix it on the server side.

How can I catch this error early?

Use the <a href="/en/ssl">Enterno.io SSL/TLS checker</a>, or <a href="/en/monitors">set up monitoring</a> with 14-day expiry alerts. Receive an email/Telegram notification before your users see the error.

Does clearing cookies / cache help?

Sometimes, for transient cached SSL errors. Steps: chrome://net-internals/#sockets → Flush sockets, chrome://net-internals/#hsts → Delete domain security policies (carefully, for debugging only). But if the issue is server-side, cache clearing will not help.

Is Let's Encrypt free — and is the certificate trusted?

Yes, Let's Encrypt certificates are in every modern trust store (Chrome, Firefox, Safari, Edge). 90-day validity with automatic renewal via certbot. No reason to use a paid CA for a standard website.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.