A site shows as not secure when HTTPS is missing, broken, expired, or mixed with HTTP files that weaken the connection.
You open your site and the browser shows a gray warning, a red screen, or a message that says the page is not private. That’s a trust problem on the spot. Visitors see it before they read a line, fill a form, or buy a product.
Most of the time, the warning comes down to one of four issues: no HTTPS at all, a bad certificate, insecure files loaded into an HTTPS page, or behavior that makes the browser think the page is unsafe. Once you pin down which one you have, the fix is usually plain and mechanical.
Why Is My Website Not Secure? The Usual Causes
Browsers don’t hand out that label for no reason. They show it when they can’t confirm a private, trusted connection between the visitor and your server, or when the page loads unsafe pieces inside an otherwise secure page.
No HTTPS Is Running
If your page still opens on http://, the browser has no encrypted channel to work with. Data can be read or changed while it moves across the network. That alone is enough for modern browsers to mark a page as not secure.
The Certificate Is Missing, Expired, Or Mismatched
HTTPS depends on a TLS certificate. If the certificate has expired, was issued for the wrong hostname, is not installed as a full chain, or never got renewed after a server move, the browser can’t verify the site’s identity. That turns a plain warning into a harsher “connection is not private” error.
Mixed Content Pulls HTTP Files Into An HTTPS Page
This one catches site owners all the time. The page itself loads on HTTPS, yet one or more files still call http://: images, scripts, fonts, video, CSS, iframes, or form actions. A single insecure script can drag the full page into warning territory.
Unsafe Behavior Triggers A Red Warning
Sometimes the site uses HTTPS and the certificate is fine, yet visitors still see a bigger red alert. That can happen when a page, file, or redirect chain gets flagged for malware, deceptive behavior, or unsafe downloads. At that stage, the issue is no longer just encryption. It’s site safety.
What Browsers Mean By “Not Secure”
The wording matters because each warning points to a different kind of fault. A small “Not secure” label often means the page is using HTTP or weak page resources. A full-page privacy error usually points to certificate trouble. A red interstitial points to a site safety flag.
Start with these checks before you change anything:
- Open the page in a fresh browser window and test both the root domain and the
wwwversion. - Click the address bar warning and read the certificate or security details.
- Open DevTools and scan the Console for blocked HTTP files, script errors, and redirect loops.
- Test a few page types, not just the home page: posts, forms, cart, login, and media files.
- Check whether HTTP still resolves without a 301 redirect to HTTPS.
- Run the same checks on mobile, where stale cache and CDN rules can show up differently.
The Fix Order That Clears The Warning
Work from the transport layer upward. If you jump straight into theme files or plugins before the certificate and redirects are clean, you can waste hours chasing side effects.
1. Install Or Renew HTTPS Properly
Make sure the domain, the www host if you use it, and any live subdomains all have a valid certificate. web.dev’s HTTPS setup notes walk through certificate coverage, server setup, and 301 redirects in a way that matches real deployment work.
2. Force One Secure Canonical Version
Pick the version you want to keep, then send every HTTP request to HTTPS with a permanent redirect. Also update your CMS settings, canonical tags, sitemap URLs, internal links, and CDN origin rules so they all point to the same secure version. Split signals between HTTP and HTTPS can leave odd pages behind.
3. Hunt Down Mixed Content
Use the browser console, then search your database and theme files for hard-coded http:// paths. MDN’s mixed content notes spell out which file types browsers upgrade and which they block outright. Scripts, stylesheets, iframes, and fonts are the usual troublemakers.
| Warning You See | Likely Cause | First Fix To Try |
|---|---|---|
| “Not secure” in the address bar | Page loads on HTTP | Install HTTPS and redirect all HTTP URLs |
| “Connection is not private” | Expired or broken certificate | Renew the certificate and install the full chain |
| Lock missing on one page only | Mixed content on that page | Replace every HTTP asset with HTTPS |
| Warning on one subdomain | Hostname not covered by the certificate | Issue a cert for that exact subdomain or wildcard |
| Secure home page, broken checkout | Old form action or script URL | Update form, script, and API endpoints |
| Warning after host migration | Old CDN, cache, or proxy config | Purge cache and recheck edge certificate setup |
| Download blocked from secure page | Mixed download over HTTP | Serve the file over HTTPS or remove the link |
| Full red screen before the page loads | Unsafe page or download flag | Clean the site and request review after the fix |
4. Check What Chrome Is Telling You
When the wording feels vague, read the browser’s own description of the warning. Chrome’s site security page lays out the difference between a plain info warning, a private-connection failure, and a dangerous-page alert.
5. Re-Test Every Public Path
Don’t stop at the home page. Recheck category pages, blog posts, landing pages, image URLs, login screens, the cart, and any file download pages. Then test the site with cache on and cache off. A warning that appears on one stale template can undo the trust you fixed everywhere else.
What A Healthy HTTPS Setup Looks Like
A secure site does the boring things well. Every public URL resolves on HTTPS. Every subdomain in use has the right certificate. Every internal asset, form, script, and media file loads over HTTPS. HTTP requests move cleanly to the chosen secure host in one hop.
You also want the less visible parts lined up:
- The certificate renews before expiry, with monitoring in place.
- Your CDN, reverse proxy, and origin server all serve the same hostname rules.
- Third-party tags, chat widgets, ad scripts, and payment tools load from secure endpoints.
- No plugin or theme option stores old HTTP URLs in templates or custom fields.
- Your sitemap, robots file, and canonical tags point to HTTPS only.
| Site Element | Secure Version | Common Miss |
|---|---|---|
| Canonical URL | https://example.com/page/ |
Still points to HTTP |
| Image source | https://cdn.example.com/image.jpg |
Old theme path uses HTTP |
| Form action | https://example.com/checkout |
Plugin prints a hard-coded HTTP action |
| Script file | https://example.com/app.js |
Header snippet loads an old script |
| Redirect rule | HTTP → HTTPS in one step | Chains or loops across hosts |
What This Means For Visitors And Search
A browser warning doesn’t just look messy. It stops people cold. They hesitate before logging in, typing an email address, submitting a card, or even reading the page long enough to trust it. On content sites, that can mean shorter visits and fewer page views. On stores, it can wreck checkout.
Search visibility can take a hit too, not from one dramatic penalty in every case, but from the pileup of weak trust signals and broken user paths. If search engines see duplicate HTTP and HTTPS versions, blocked files, or redirects that bounce around, crawling and indexing get messier than they need to be.
A Final Check Before You Reopen The Page
Run this pass once the fixes are live:
- Load the page on HTTP and confirm it redirects to the chosen HTTPS host in one hop.
- Open the certificate details and verify the hostname and expiry date.
- Scan DevTools for mixed content, blocked downloads, and insecure requests.
- Test forms, checkout, login, search, and media embeds.
- Clear site cache, CDN cache, and browser cache, then test again.
- Check a sample of older posts, image attachments, and plugin-generated pages.
If your site still shows a warning after that, the fault is usually sitting in one of three places: the certificate chain, a proxy or CDN rule, or one stubborn HTTP asset hidden in a template, database field, or third-party tag. Find that one loose thread, and the warning usually disappears.
References & Sources
- Google Chrome Help.“Check if a site’s connection is secure.”Explains Chrome’s secure, not secure, and dangerous page indicators, plus what those warnings mean.
- MDN Web Docs.“Mixed content.”Shows how HTTP files inside an HTTPS page get upgraded or blocked and why they trigger security warnings.
- web.dev.“Enable HTTPS on your servers.”Outlines certificate setup, HTTPS deployment, redirects, and checks for a clean secure rollout.
