All posts

"https//example.com": Why the Colon Vanishes & How to Fix It

September 21, 2026

If you've ever spotted a link that reads https//example.com instead of https://example.com, your first instinct is probably to blame a typo. Sometimes that's true. More often, it's a repeatable bug baked into a template, plugin, proxy config, or email tool — one that keeps generating the same broken link across your entire site until someone fixes the source, not just the symptom.

This article breaks down what happens when that colon disappears, why it happens, and how to hunt down every instance before it costs you traffic, clicks, or trust.

What "https//example.com" Actually Is (and Isn't)

A URL scheme has a strict syntax: the protocol name, a colon, and two forward slashes — https://. That colon isn't decorative — it's the delimiter that tells a browser "everything before this is the scheme, everything after is the authority and path." Strip it out and you get https//example.com, which no longer parses as an absolute URL at all.

The string looks "almost right," so it's easy to assume it still works like a normal link with a missing character. It doesn't. Most browsers and link parsers treat https//example.com as a relative path — literally a folder named https followed by a folder or file named example.com — relative to whatever page the link sits on. So a link placed on https://yoursite.com/blog/ might actually resolve to https://yoursite.com/blog/https//example.com, which almost certainly doesn't exist.

We're using example.com throughout this piece deliberately — it's one of the domains permanently reserved for documentation under RFC 2606 and confirmed by IANA, alongside example.org and example.net. That reservation is exactly why it's the standard placeholder for illustrating broken-URL syntax without pointing at a real, live site.

Why the Colon Disappears: The Real Causes

The missing colon almost never happens because someone manually mistyped a link. It happens because something in the pipeline between "someone wrote a URL" and "a browser rendered it" mangled the string. Four sources account for the vast majority of cases.

CMS functions and plugins. WordPress's esc_url() is meant to sanitize and escape URLs for safe output, but misuse in a theme's nav-menu walker — or a poorly coded plugin that concatenates a base URL with a path fragment — can strip or duplicate the scheme separator. This is the classic wordpress esc_url bug: the function itself isn't broken, but feeding it an already-malformed string, or calling it twice, produces https// output in menu items.

Email platform merge tags. Email builders often store the link scheme and domain as separate merge fields, then reassemble them at send time. If a template tag drops the colon during concatenation — a common email template broken link scenario — every recipient gets the same dead link, and you won't notice until click-through rates tank or unsubscribe links stop working.

Reverse-proxy and redirect misconfigurations. Tools like Nginx Proxy Manager can generate redirect rules where the target scheme loses its colon during rule construction. This isn't hypothetical — it's a documented issue in Nginx Proxy Manager's own GitHub tracker, where redirection hosts were created with https// instead of https://. If your infrastructure sits behind a reverse proxy, this is worth checking directly.

Manual string concatenation in code. Custom JavaScript or backend code that builds URLs by joining variables — protocol + domain + path — will produce a missing colon url the moment someone forgets the separator in the protocol variable itself, or a find-and-replace strips it during a migration.

What Actually Breaks When This Happens

A malformed scheme isn't cosmetic — it changes how the link behaves. Because browsers resolve https//example.com as relative, clicking it typically produces a broken link 404, either on your own domain (if it accidentally resolves to a real subpath) or as an outright "page not found."

For email, this means lost click-throughs on your calls to action, and — worse — non-functional unsubscribe or preference-center links, which is a compliance problem as much as a UX one. For a website, it means crawl budget spent on dead paths instead of real content, and any link equity a correctly formed link would have passed is simply lost. This is a specific, mechanical case of what's broadly known as link rot — links that stop working over time — except here the "rot" is baked in from the moment the page or email ships, not something that develops years later. The malformed url conversion loss compounds if the broken link sits on a high-traffic template, like a global nav menu or a footer that appears on every page.

None of this is a security issue in the sense of exposing data — but it is a trust and SEO issue, worth treating with the same urgency as any other crawl error.

How to Fix It Wherever It Lives

The fix depends entirely on where the bug originates:

  • WordPress menus/themes: Audit the theme's nav-menu template or walker function for double-processing of esc_url(), and check whether the URL passed in already includes the scheme before the function runs. This is the direct fix wordpress menu link scenario — usually a one-line correction once you find the offending template file.
  • Email tools: Check how the platform assembles merge tags — if scheme and domain are stored separately, hardcode the full https:// scheme into the base template rather than relying on concatenation.
  • Reverse proxy: Re-save the redirection rule with the scheme typed explicitly, and verify the generated config file directly rather than trusting the UI preview — the linked GitHub issue above shows this exact fix being discussed.
  • Custom code: Sanitize concatenated URL strings with a validation step (or use built-in URL constructor objects/libraries) instead of manual string joining.

Each of these is a fast fix broken https link scenario once you've located the source — the real challenge is finding every place it's happened.

Catching It Sitewide Instead of Link by Link

Here's the uncomfortable truth: if one of these causes exists in your stack, it's not producing one broken link — it's producing a pattern. A nav-menu bug shows up on every page using that menu. A proxy misconfiguration affects every redirect through that host. An email template bug ships to your entire list. Checking each href by hand doesn't scale, and manual spot-checks will always miss instances buried in old pages, legacy templates, or emails you've already sent.

This is exactly the gap a broken link checker or site audit tool is built to close. An automated crawl finds broken links automatically across your whole domain — flagging malformed schemes, dead redirects, and 404s in one pass instead of one click at a time. It's the same category of issue covered in HTTPS Links: Why Your Secure Site Still Leaks HTTP, URL With Spaces: Why It Breaks and How to Fix It, and — when a missing colon compounds with a redirect loop — How to Stop Site From Redirecting.

Once you've fixed the one link you noticed, the real question is how many more are quietly costing you traffic across templates, emails, and pages you haven't looked at in years. Run a full scan with Optimevra and see every malformed and broken link on your site at once — try the live demo to see it in action.

Frequently Asked Questions

Why does my URL show up as https//example.com instead of https://example.com?

The colon after "https" was stripped somewhere in the process of generating or rendering the link — most commonly by a CMS function like WordPress's esc_url() being misused, an email template merge tag assembling the URL incorrectly, a reverse-proxy tool misconfiguring a redirect rule, or manual code that concatenates URL strings without validation. It's rarely a simple manual typo; it's usually a systemic bug that repeats wherever that same template or code path runs.

Is https//example.com (without the colon) still a valid, working link?

No — it's not a valid absolute URL under standard URL scheme syntax, which requires the colon and double slash. Browsers typically interpret it as a relative path instead of an absolute address, meaning clicking it usually leads to a 404 rather than the intended destination.

How do I fix a WordPress menu link that's missing the colon after https?

Check the theme's nav-menu template or walker function for cases where esc_url() is applied to a URL that's already been escaped or concatenated incorrectly. Correcting the template so the full scheme is passed in once, cleanly, before sanitization usually resolves it site-wide for that menu.

Can a missing colon in a URL actually hurt my SEO or just annoy users?

It hurts both. Malformed links produce 404 errors that waste crawl budget, dilute the link equity a correctly formed link would pass, and contribute to link rot — while also breaking the user experience by sending clicks to nowhere, including in emails where it can break unsubscribe links.

How can I check my whole site for broken links like this instead of testing each one by hand?

Run an automated site crawl or broken link checker rather than manually clicking every href. A dedicated audit tool like Optimevra scans your entire domain, flags malformed schemes and dead links in one pass, and surfaces patterns — like a bug repeating across every page using the same template.

Originally published on Rankevra.