● UK tech experts · info@vividrepairs.co.uk
Vivid Repairs

The Website Clinic · Free help

Your website says "Not secure"? How to put it right, usually for free

Checked 31 October 202613 min read

Illustration for a website showing Not secure: a browser window with an open, chained red padlock on one side and a closed teal padlock on the other

Vivid Repairs The Website Clinic

Since Chrome 154 was released in September 2026, a website without HTTPS can lose a customer before its first page loads. Chrome now asks people's permission before it opens a public site over plain http. Someone who changed the setting themselves, or whose employer manages their Chrome, may not see it, and a visitor who clicks through isn't asked again for 15 days.

If your website says not secure, whether as a small label beside the address or a full-page warning a customer has sent you a photo of, the cause usually sits in your hosting or website builder settings and the fix usually costs nothing. Start by working out which warning it is, because Chrome has three that look alike.

Quick answer

"Not secure" means the page isn't reaching visitors over a valid HTTPS connection. Usually the site has no certificate, the certificate has expired or doesn't cover the address typed (often the version without www), http isn't redirected to https, or images, scripts or a form on the page still use plain http. Most hosts and website builders include certificates free.

At a glance

  • Difficulty: Easy
  • Time needed: 10 minutes to find the cause; up to 48 hours if a builder has to issue a new certificate after a DNS change
  • You'll need: Chrome on a computer, a phone on mobile data, and the login for your host or website builder

Three warnings, three different faults

Websites load over plain http:// or encrypted https://. HTTPS needs a certificate, often called an SSL certificate. Each Chrome warning points at a different way that has gone wrong.

  • "Not secure" beside the address. The page loaded over plain http. Chrome's help describes a connection that isn't private, where someone may be able to view and change what's sent and received.
  • "This site doesn't support a secure connection", a warning that covers the page before anything loads. Chrome tried HTTPS, couldn't get it, and is asking whether to carry on over http, with buttons for "Continue to site" and "Go back". This is the Chrome 154 change: the setting called Always use secure connections is now on by default.
  • "Your connection is not private", full page, with a code. The site offered HTTPS but the certificate failed a check. NET::ERR_CERT_DATE_INVALID means expired, or a visitor whose clock is wrong. ERR_CERT_COMMON_NAME_INVALID means it doesn't cover the address typed. NET::ERR_CERT_AUTHORITY_INVALID means the browser doesn't trust whoever issued it.
Table of four address types, what a visitor sees for each, from a Not secure label to no warning, and what to do
A simplified drawing of what visitors see, not a screenshot of any one browser version. Tap the picture to open it full size.

A quieter fourth case is mixed content: an https page still pulling an image, script, font or widget from an http address. You might see a missing picture, a broken slider, a padlock warning or "not fully secure". A form that sends to http gets its own "not secure" text as people type.

One more cause catches sites with a valid certificate. Chrome's guide for site owners says that if any step in a redirect chain doesn't support HTTPS, Chrome warns, even though the visitor would have ended up on a secure page. Its example is a site served at https://www.example.com, where http://example.com redirects to http://www.example.com and the bare example.com (the address without www) has no HTTPS. Anyone typing the address without www gets the warning.

That setup was harmless for years.

Quick routeStart here

Quick checks before you change anything

1

Your site, or your computer? Easy

  1. Try a phone on mobile data
    Turn off Wi-Fi and open your site. What you'll see: if the phone opens it cleanly while your computer warns, the fault is probably on the computer or its network.
  2. Try someone else's site
    Open a big, well-known website on the computer that warned. If that warns too, suspect the computer: its date and time, antivirus "HTTPS scanning", a work network, a hotel Wi-Fi sign-in page, or an extension.
  3. Try an Incognito window
    Extensions don't run there unless you've allowed them, so a warning that disappears points at one of yours.
If one computer complains about every site, fix that computer and leave the website alone.
2

Type all four addresses Easy

  1. Try each version
    In fresh tabs, type http://yourname.co.uk, http://www.yourname.co.uk, https://yourname.co.uk and https://www.yourname.co.uk. What you'll see if all is well: every one ends on the same https address, with no warning page and no "Not secure" label.
  2. Note which one fails
    A warning only on the versions without www means HTTPS was never set up on the bare domain. Under Chrome's new default, that one step is enough.
  3. Try an old inner page
    Type the http address of your contact page. Old bookmarks and links point at inner pages too.
All four addresses, and an old inner page, land on https with no warning.
3

Read the certificate's dates Easy

  1. Open the certificate
    Click the icon to the left of your web address, then the line about the connection, then the option to view the certificate. What you'll see: who it was issued to, who issued it, and the dates it's valid between.
  2. Compare the expiry with today
    A date in the past means it didn't renew (box 7).
You know whether you're dealing with no certificate, an expired one, or a valid one with something else wrong.
Intermediate routeKeep going if needed

Step-by-step fixes

4

Switch HTTPS on where your site lives Medium

  1. cPanel hosting
    Go to Security, then SSL/TLS Status. What you'll see: each domain with a status. Filter for "Unsecured", "Expired", "Expiring Soon" or "Has AutoSSL Problems". cPanel's own example of a problem is a domain that doesn't resolve to an IPv4 address on the internet, which means it isn't pointing at a server.
  2. Shopify
    Certificates are free for every domain added to Shopify and are issued once its A and CNAME records (the DNS settings that point the domain at a server) point to Shopify, which can take up to 48 hours. What you'll see on the domain: "TLS or SSL pending", or "TLS or SSL unavailable" if it failed.
  3. Squarespace
    In the SSL settings, choose "Secure (Preferred)". The domain must point to Squarespace; allow up to 48 hours. Leave "HSTS Secure" alone unless you've read box 11.
  4. Wix
    HTTPS is on automatically at no extra cost, with a certificate generated once a domain is connected (a custom domain needs a paid plan). If it warns, check the domain is connected, its DNS records match the connection method and, for a domain bought elsewhere, DNSSEC (an extra security layer on the domain's DNS settings) is off.
  5. Any other host
    Look for an SSL, Let's Encrypt or AutoSSL option, or ask the host to enable HTTPS on both the www and non-www addresses.
The host or builder shows an active certificate for both versions of your domain.
5

Send every address to HTTPS Medium

  1. Give the bare domain its own HTTPS
    Chrome now tries https://yourname.co.uk first. If that address has no working certificate, visitors get the warning, whatever your redirect does next. Make sure the certificate covers the address with and without www, then point the redirect from http://yourname.co.uk straight at the https address rather than at http://www.yourname.co.uk.
  2. Turn on the force HTTPS setting
    Many hosts and builders have a single switch. Where there isn't one, set up a permanent 301 redirect from every http address to the same page on https.
  3. Update the WordPress addresses
    In Settings, General, change both WordPress Address (URL) and Site Address (URL) to start with https. If they're greyed out, they're set in wp-config.php as WP_SITEURL and WP_HOME, and need changing there.
  4. Update links that point inwards
    Menus, buttons, canonical tags and the XML sitemap should all use the https addresses.
  5. Test again
    Repeat the four-address check from box 2. A page that keeps reloading and never arrives means two redirect rules are fighting; undo the last one you added.
Every version of every address lands on https in one step.

Take a backup before changing the WordPress addresses. A typo in either field can lock you out of the dashboard until someone corrects it in wp-config.php or the database.

6

Clear mixed content and insecure forms Medium

  1. Open the Console
    In Chrome, right-click the page, choose Inspect, then Console (Ctrl+Shift+J on Windows, Command+Option+J on a Mac). What you'll see: lines beginning "Mixed Content:" that name the file at fault.
  2. Read the end of each line
    "This request was automatically upgraded to HTTPS" means you can safely change that address to https. What you'll see for the serious kind: "This request has been blocked". That item isn't loading at all, so a slider, font or booking form may have quietly stopped working.
  3. Go page by page
    The Console only shows the page you're on and clears when you move, so check every page with a form, map, video or booking widget.
  4. Fix it at the source
    Change http:// to https:// in the page, theme or widget settings; on WordPress, check old image addresses inside posts. A file with no https version needs hosting yourself (where allowed), replacing or removing.
  5. Check the forms
    Start typing into your contact and login forms. Warning text means the form sends to an http address. Change its destination to https in the form's settings.
No "Mixed Content:" lines on the pages you've checked, and the forms send without a warning.
Illustration of a padlock on a rosette beside a calendar marked with a cross, with an arrow pointing to a computer screen
Certificates have a fixed life, so renewal has to be automatic and someone should hear when it fails.
7

Make sure it renews Medium

  1. Know the limits
    Publicly trusted certificates issued on or after 15 March 2026 can be valid for at most 200 days, falling to 100 days for those issued from 15 March 2027 and 47 days from 15 March 2029. One issued before March 2026 can still run longer. Let's Encrypt's free certificates last 90 days, moving to 64 in February 2027 and 45 in February 2028.
  2. Check renewal is automatic
    Renewing by hand isn't realistic at these lengths. Automatic renewal usually needs the domain still pointing at your host, so a DNS change can stop it.
  3. Get told when it fails
    Let's Encrypt stopped sending expiry reminder emails on 4 June 2025. Unless your host warns you, diary the expiry a fortnight ahead or use a monitoring service.
You know the next expiry date, and someone will hear about a failure before customers do.

And Google rankings? Google called HTTPS a very lightweight ranking signal in 2014. Its current guidance says page experience aspects other than Core Web Vitals, which include being served securely, don't directly help a site rank higher. Moving to HTTPS needs nothing special in Search Console: don't use the Change of Address tool, and keep the redirects in place. The visitor who turns back at the warning costs more.

Advanced routeChange one thing at a time

For your developer or host

8

Certificate expiry, names and chain Hard

Show the technical detail

Run this for the bare domain and again for www; with SNI the server can present a different certificate for each.

echo | openssl s_client -connect example.co.uk:443 -servername example.co.uk 2>/dev/null \
  | openssl x509 -noout -subject -issuer -dates -ext subjectAltName

notAfter= is the expiry. The Subject Alternative Name list must include every address people use. A wildcard such as *.example.co.uk covers www but not the bare domain. For monitoring, -checkend 1209600 in place of the last line's options exits non-zero if expiry is within 14 days.

echo | openssl s_client -connect example.co.uk:443 -servername example.co.uk -showcerts 2>&1 \
  | grep -E "Verify return code|^ *[0-9] s:"

An expired certificate gives Verify return code: 10 (certificate has expired). An incomplete chain gives 21 (unable to verify the first certificate) with only one certificate listed: install the full chain the certificate authority supplies. Names are only compared if you add -verify_hostname example.co.uk, which reports 62 (hostname mismatch) on a wrong one.

curl -vI https://example.co.uk/ 2>&1 | grep -E "subject:|issuer:|expire date|subjectAltName|SSL certificate (verify|problem)"

A healthy site ends SSL certificate verify ok.; an expired one stops with curl: (60) SSL certificate problem: certificate has expired.

CERT_AUTHORITY_INVALID also covers self-signed certificates, and Chrome's help ties it to work proxies such as ZScaler, Palo Alto Networks or Fortinet. If issuance keeps failing, check DNS for CAA records limiting which authorities may issue; Shopify needs letsencrypt.org, pki.goog and ssl.com allowed where they exist.

9

Redirect chains and Ask-before-HTTP Hard

Show the technical detail

Chrome's adoption guide says any redirect step without HTTPS triggers the warning, tracking redirects and domain forwarding services included. A user's decision lasts 15 days and renews on each revisit. Localhost, local IPs and single-label or other non-unique hostnames are exempt. Certificate error warnings are separate and unchanged.

The guide's warning case is a bare domain with no HTTPS of its own, so first check that curl -sSI https://example.co.uk/ answers without a certificate error. A working one starts with a status line such as HTTP/2 301 or HTTP/2 200; a certificate fault prints a curl: (60) error instead. Then follow the redirects from http.

curl -sSI https://example.co.uk/ | head -n 1

curl -sI http://example.co.uk/ | grep -iE "^HTTP|^location"
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' http://example.co.uk/
curl -sIL -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.co.uk/

The first hop should be a 301 or 308 whose Location already starts with https (for example HTTP/1.1 301 Moved Permanently, Location: https://example.co.uk/), and the chain should end on a 200 at the final https address. A first hop to http://www.example.co.uk/ is worth fixing too, but on its own it isn't what Chrome warns about. Repeat from http://www.example.co.uk/.

To see what visitors will, turn on Always Use Secure Connections at chrome://settings/security and browse the site, old campaign links and forwarding domains. HSTS, where set, takes precedence over these warnings.

10

Mixed content in detail Hard

Show the technical detail

Browsers auto-upgrade image, video and audio requests, CSS background images included, and block the rest, including scripts, stylesheets, iframes, fetch, web fonts, and images via srcset or <picture>. An otherwise upgradable request is blocked if its host is an IP address. Plain <a> links to http pages aren't mixed content.

In DevTools, the Privacy and security panel's Non-secure origins section has View requests in Network panel.

As a stopgap while the sources are fixed, this header or meta tag makes the browser upgrade insecure URLs before requesting them. Anything with no https version then fails to load, so it isn't a fix in itself.

Content-Security-Policy: upgrade-insecure-requests

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Mixed forms (on an https page, submitting over http) have shown warning text, a full-page "submit anyway" warning and no autofill since Chrome 87. Search templates and plugin output for action="http:.

11

HSTS, and why to go slowly Hard

Show the technical detail

The Strict-Transport-Security header tells browsers to use only HTTPS for the host for max-age seconds. Browsers ignore it over http, and it shouldn't be on the http to https redirect response.

curl -sI https://example.co.uk/ | grep -i strict-transport-security

Two risks matter for a small business. Once a browser holds it, visitors can't click through a certificate error, so a lapsed certificate locks out everyone returning. And includeSubDomains blocks any subdomain that only works over http, such as an old test site or a booking page. Withdrawing it takes max-age=0 sent over HTTPS, and Squarespace warns that switching off "HSTS Secure" can keep returning visitors out for up to 48 hours.

Add it only once the redirect works and every subdomain runs on HTTPS, ramping max-age in stages (300, 604800, then 2592000 with includeSubDomains) and checking for breakage each time.

Strict-Transport-Security: max-age=300

Don't add preload to a small business site. hstspreload.org says inclusion can't easily be undone and removal takes months to reach users through Chrome updates.

What owners run into

"The SSL checkers say my certificate is fine." Owners on Chrome's help forum and the Let's Encrypt community describe valid certificates that Chrome still flags as "Not secure". Replies pointed to what a checker doesn't test: a missing http to https redirect, or mixed content. Run boxes 2 and 6.

"I switched SSL on and now I can't log in." A login form flagged as not secure left one owner on Chrome's forum thinking they'd have to turn SSL off to get in. Replies pointed to insecure elements on the page and an old http bookmark. Fix the form or the bookmark; switching HTTPS off brings back a bigger warning for every visitor.

"Every site is not secure, but only on my computer." It happens on one machine while the phone works fine, posters on Google's forums say, sometimes with NET::ERR_CERT_DATE_INVALID. That points at the device: its clock, an old operating system, security software or an extension. In one thread, disabling extensions was what fixed it.

"A customer on an old device can't get in." Let's Encrypt certificates depend on the device trusting its ISRG Root X1 or X2. For X1 its compatibility list starts at Windows XP SP3 (with automatic root updates on), macOS 10.12.1, iOS 10 and Android 7.1.1. Wix's help likewise says older operating systems aren't a site issue. Usually it's the customer's device that needs updating.

"I turned HSTS off and some people still can't get in." Their browsers remember it and still insist on HTTPS until it works again or the remembered period runs out. That's why box 11 starts with a five-minute max-age.

Official pages on this

Frequently Asked Questions

Because a certificate is only part of the job. The page may still pull in an image, script or font over http, a contact form may send to an http address, the http version may not redirect to https, or the certificate may cover www but not the bare domain. Since Chrome 154, a redirect that passes through plain http on the way to your secure page can trigger a warning too.

Start with the expiry date. A certificate that didn't renew gives visitors a full-page warning overnight, and renewal can fail quietly if the domain's settings changed. The other recent cause is Chrome itself: since version 154 it asks before opening any public page that has no HTTPS, including the address without www if that was never set up.

Switch on the free certificate at your host or website builder, make sure it covers the address with and without www, redirect every http address straight to https, and change any images, scripts or form addresses that still start with http. Then type all four versions of your address to check each lands on the secure page.

Reading is lower risk than typing, but Chrome's help says someone may be able to see or change information you send or receive on a site marked not secure, so don't type passwords, card details or personal information into one. As the owner, that's why it matters: customers see the same warning on your contact form.

It means the site offered HTTPS but the certificate failed a check. The code underneath says which: NET::ERR_CERT_DATE_INVALID points to an expired certificate or a wrong clock on the visitor's device, ERR_CERT_COMMON_NAME_INVALID to a certificate that doesn't cover that address, and NET::ERR_CERT_AUTHORITY_INVALID to one the browser doesn't trust.

One of the redirect steps on the way is plain http. A common setup sends http://yourname.co.uk to http://www.yourname.co.uk before switching to https, and if the bare domain has no HTTPS of its own, Chrome warns at that first step. Set up HTTPS on the bare domain so it works on its own, then redirect each http address straight to its https version.

Not much directly. Google called HTTPS a very lightweight ranking signal in 2014, and its current guidance says page experience aspects beyond Core Web Vitals, which include being served securely, don't directly help a site rank higher. The bigger cost is visitors: current versions of Chrome ask people before opening a site that isn't on HTTPS, and some won't continue.

Yes. Every certificate has a fixed life, and the limit keeps falling: newly issued publicly trusted certificates have been capped at 200 days since 15 March 2026, and Let's Encrypt's free ones currently last 90. Renewal needs to be automatic, with something that tells you if it fails.

More from the Website Clinic

All Website Clinic guides