SEO glossary

What is Mixed Content?

Learn what mixed content is—HTTP subresources on HTTPS pages—how browsers block or downgrade it, and why fixing insecure assets protects user trust, security, and crawl consistency.

Technical SEOUpdated August 14, 2026
Also known asinsecure contentHTTP resources on HTTPSmixed active content

Definition

Mixed content occurs when a page loaded over HTTPS also requests subresources (scripts, styles, images, iframes) over insecure HTTP, weakening encryption guarantees and triggering browser warnings or blocked loads.

When HTTPS pages are only half secure

Migrating to HTTPS feels complete when the address bar shows a padlock—until devtools report mixed content. The main document loads over TLS, but embedded resources still call http://. Browsers treat that as a security regression: active mixed content is blocked; passive mixed content may load with degraded UI.

For SEO, mixed content is a silent rendering killer. A blocked stylesheet collapses layout logic; a blocked script strand SPAs on spinners. Crawlers may index incomplete DOM trees while marketers celebrate "we went SSL."

Active vs passive mixed content

TypeExamplesBrowser behaviorSEO risk
Active<script src="http://...">, <link rel="stylesheet" href="http://...">, <iframe src="http://...">Often blocked entirelyHigh—breaks rendering and link discovery
Passive<img src="http://...">, <video>, fonts in some casesMay load; padlock warningsMedium—trust signals, broken images in SERP previews
Mixed downloads<a href="http://file.pdf"> from HTTPS pageVaries by browserLower direct SEO impact; still sloppy migrations

Modern browsers err toward blocking anything that can change DOM semantics or exfiltrate data—exactly the assets SEO depends on.

How mixed content appears after HTTPS migrations

Classic sources:

  1. Hard-coded http:// in CMS templates — Old HTML fragments in posts and widgets.
  2. Third-party tags — Legacy ad, analytics, or heatmap scripts without TLS endpoints.
  3. CDN misconfiguration — Origin serves HTTPS but asset URLs in DB stay HTTP.
  4. Open Graph and JSON-LD — Social images still on insecure URLs (sharing previews break).
  5. Canonical and hreflang mistakes — Less mixed content per se, but co-travel with scheme drift.
  6. Server-generated redirects — Page is HTTPS while inline src attributes remain HTTP.
<!-- Active mixed content: script blocked -->
<script src="http://cdn.example.com/app.js"></script>

<!-- Passive mixed content: image may warn -->
<img src="http://images.example.com/hero.jpg" alt="Hero">

The upgrade-insecure-requests escape hatch

The Content-Security-Policy: upgrade-insecure-requests directive asks browsers to rewrite http:// subresource requests to https:// automatically. Helpful during migrations, but dangerous if the asset does not exist on HTTPS—requests fail silently or 404.

Better long-term fix: store and emit HTTPS URLs everywhere—sitemaps, RSS, email templates, and API payloads.

Mixed content and JavaScript rendering

Client bundles sometimes construct URLs at runtime:

const api = 'http://api.example.com/v1/products';
fetch(api).then(renderGrid);

The HTML fetch is HTTPS; the API call is active mixed content or blocked cross-scheme traffic. AJAX endpoints must match page scheme or use protocol-relative patterns deliberately (prefer explicit HTTPS).

Search bots executing JS hit the same blocks. Indexed product grids may empty while Lighthouse on a developer laptop (with permissive flags) looks fine.

Detection workflow

  1. Crawl HTTPS URLs and collect subresource schemes.
  2. Browser Console on top templates—filter "Mixed Content."
  3. Lighthouse / PageSpeed security audits.
  4. Content-Security-Policy-Report-Only to catch stragglers pre-enforcement.
  5. Search Console URL Inspection rendered HTML—verify CSS/JS URLs are https://.

Log server log lines for HTTP asset hits after sitewide HTTPS—persistent 200s on HTTP objects mean crawlers and users still discover insecure URLs.

Fixing mixed content at scale

StrategyWhen to use
URL rewrite in CMSThousands of legacy post images
Search-replace in DB (staged)Known safe host patterns
Proxy third partiesVendor lacks HTTPS; use your TLS edge
Remove dead widgetsTag manager injections no longer maintained
HSTS + 301 HTTP hostStop new HTTP document URLs entirely

Validate on staging with the same CSP as production—ad blockers and corporate proxies behave differently, but scheme errors reproduce reliably.

Mixed content vs duplicate HTTP/HTTPS URLs

Related but distinct problems:

  • Mixed content — One HTTPS document pulls HTTP subresources.
  • Duplicate URLs — Both http:// and https:// document versions return 200.

Fix both during migrations. Canonical tags should point to HTTPS; subresources should never downgrade scheme.

Third-party and tag-manager debt

Marketing stacks accumulate HTTP-only pixels. Each one is a mixed-content candidate after TLS rollout. Governance:

  • Inventory tags quarterly.
  • Require HTTPS endpoints in procurement.
  • Use server-side measurement where client pixels cannot upgrade.

SEO teams feel this when Core Web Vitals regress—blocked scripts delay hydration and inflate layout shift when fallback fonts/images differ.

Mixed content impact on trust and CTR

Even when indexing survives, users see "Not fully secure" indicators. YMYL sites (finance, health) suffer disproportionate CTR loss. HTTPS is a hygiene factor; mixed content signals incomplete execution of that hygiene.

Reporting mixed content to engineering

SEO teams should file tickets with:

  • Exact page URL (HTTPS document)
  • Blocked resource URL (HTTP subresource)
  • Resource type (script, stylesheet, image)
  • Whether devtools classifies it as active or passive
  • Screenshot of Console error text

Generic "fix mixed content" requests stall. A CSV export from crawl tools with columns page_url, insecure_asset_url, asset_type clears backlog faster than Slack screenshots alone.

Regression testing after CMS upgrades

Major WordPress, Drupal, or headless CMS upgrades often reintroduce http:// in widget defaults. Add mixed-content checks to release QA—same gate as broken canonicals or accidental noindex on templates.

How Crawlox helps eliminate mixed content

Crawlox maps HTTPS pages alongside their referenced asset URLs during authorized crawls—flagging http:// hosts in HTML, linked CSS, and script src attributes before browsers block them in production. Treating mixed content as a crawl-graph defect catches CMS template debt faster than spot-checking individual URLs in devtools.

Related terms

Frequently asked questions

Does mixed content hurt SEO rankings?

Google has not listed mixed content as a direct ranking factor, but blocked scripts can break rendering and indexing. Browser security UI also erodes user trust and CTR.

What is active vs passive mixed content?

Active content (scripts, stylesheets, iframes) can alter the page and is usually blocked. Passive content (images, audio, video) may load with warnings but still signals misconfiguration.

How do I find mixed content on my site?

Use browser devtools Console, Lighthouse, crawlers that report insecure subresource URLs, and Content-Security-Policy reports.

Will upgrading HTTP to HTTPS fix all mixed content?

Only if the subresource is available over HTTPS at the same URL or you update references. Some third-party hosts may not support TLS.

Can mixed content affect Googlebot rendering?

Yes. Blocked JavaScript or CSS prevents full rendering, which can hide links and text from the indexed DOM.

References

Explore authoritative guidance and frameworks related to mixed content.

Explore every glossary definition

Return to the glossary to search by term, alias, starting letter, or category.

Browse glossary