mixed content checker
Find HTTP resources loaded on HTTPS pages. Mixed content breaks the padlock icon and creates security warnings.
By Deepak Shukla — Founder & CEO, Pearl Lemon
Part of Security header monitoring — the full answer, the facts and the alternatives in one place.
What This Tool Checks
- Images loaded over HTTP
- Scripts loaded over HTTP
- Stylesheets loaded over HTTP
- Fonts and media over HTTP
- iframes loading HTTP content
Why This Matters
Mixed content breaks the HTTPS padlock, triggers browser warnings, and can block resources entirely. Google flags mixed content as a security issue.
How to Fix Issues
- 1.Update all resource URLs from http:// to https://
- 2.Use protocol-relative URLs or relative paths
- 3.Add Content-Security-Policy: upgrade-insecure-requests header
- 4.Check third-party embeds and scripts
Mixed content is what happens when a page served over HTTPS asks the browser to load something over plain HTTP. The page is encrypted; the image, script or stylesheet inside it is not. Enter a URL above and the check fetches the page and lists every insecure resource reference it finds, grouped by what the browser will do about each one.
Active and passive mixed content are not the same problem
Browsers block active mixed content outright — scripts, stylesheets, iframes and XHR over HTTP simply do not load. That is a functional break: a missing stylesheet makes the page look destroyed, a missing script breaks the checkout. Passive mixed content — images, audio, video — usually still loads but strips the padlock and shows a "not fully secure" state. One is an outage, the other is a trust problem, and a single list that does not distinguish them is not much use. The result here separates them.
Where mixed content comes from
Hardcoded http:// URLs in old content, typically pasted years ago into a CMS. Third-party embeds and widgets that never updated. Image URLs stored absolutely in a database after a migration. A plugin or theme that builds asset URLs from a stale site-URL setting. Ad and tracking tags from smaller vendors. Almost none of it comes from the code someone is currently writing, which is why it survives so long — nobody who works on the site today put it there.
Fixing it properly
Protocol-relative URLs (//example.com/image.jpg) work but are a relic; use explicit https://. Where the remote host supports HTTPS, rewrite the URL. Where it does not, either drop the resource or proxy it through your own domain. A Content-Security-Policy upgrade-insecure-requests directive can rewrite requests on the fly, which is a good bridge while you clean up the source, but it is a patch and not a fix: it hides the problem from browsers while leaving the wrong URL in your database and your feeds.
Why this keeps coming back
A site that is clean today can go mixed tomorrow, because content is added by people who paste URLs. That makes this a check worth repeating rather than a job to finish, especially on sites where editors publish daily.
Methodology
We fetch the URL you enter over HTTPS, following redirects, with a ten-second timeout and a body cap, then scan the returned HTML for every attribute that causes the browser to make a subresource request: src, href, srcset, data, poster, action and the url() references inside inline style blocks. Each reference is resolved against the page's base URL and any result with an http: scheme is recorded. We classify each finding as active (script, link stylesheet, iframe, object, embed, form action) or passive (img, audio, video, poster, background image), because browsers treat those two classes very differently — one is blocked, the other only degrades the padlock. We do not execute JavaScript, so resources injected at runtime by a tag manager or a third-party script will not appear here; those must be found in the browser's own console, and a clean result on a heavily script-driven page should be read with that in mind. Protocol-relative references are reported separately, since their safety depends entirely on the scheme of the parent page.
Frequently Asked Questions
This tool also answers
Why does my padlock icon disappear on HTTPS?
Because at least one asset on the page still loads over http://. Browsers downgrade or block the request and drop the padlock, even though your certificate is perfectly valid. This scan lists every offending resource so you can switch it to https.
Related Free Tools
HTTP Status Code Reference
Understanding HTTP status codes helps you diagnose issues found by this tool: