og url and canonical on 27 homepages: 18 declare both, and the only differences are a trailing slash
The og url tag and the canonical link both name the URL a page wants to be known by. On 27 homepages, 18 declared both, and every pair agreed — the only three differences were a trailing slash.

FIELD TEST · 2026-09-20 · 27 homepages · one pass
Sample and method: the same 30-domain panel this series uses, one request per homepage on 2026-09-20 with a desktop Chrome user agent, no JavaScript, redirects followed. medium.com and stackoverflow.com returned a Cloudflare challenge and nytimes.com returned a 6 KB stub, so all three are excluded; 27 homepages remain. Every value below is read from the saved HTML.
The og url property and the canonical link both answer one question: which URL should this page be known by. Across 27 homepages, 20 declared an og:url and 22 declared a canonical, 18 declared both, and every one of those 18 pairs agreed. Three of the 18 differed at all, and only by a trailing slash. This is a consistency result, not a mistake hunt.
How we measured
We fetched each homepage once, saved the delivered HTML, and looked for two declarations in the head: a <link rel="canonical"> and a <meta property="og:url">. We recorded the raw value of each, then compared the two after removing the scheme, the leading www. and any trailing slash. The command below does the same thing on any page.
curl -s -L --compressed -A "Mozilla/5.0" https://example.com/ -o page.html
python3 -c "
import re
html = open('page.html').read()
head = html.split('</head>')[0]
for pat in (r'<link[^>]+rel=[\"\\']?canonical[^>]*>', r'<meta[^>]+property=[\"\\']?og:url[^>]*>'):
for m in re.finditer(pat, head, re.I):
print(re.sub(r'\s+', ' ', m.group(0)))
"
Two limits are built into this method. It reads declarations, not behaviour: we cannot tell from outside which URL a site would pick if the two ever disagreed. And it compares strings, so a difference of one trailing slash counts as a difference even when both URLs resolve to the same page.
What og url and canonical are each for
They come from different worlds and only partly overlap. The canonical link is a search signal, defined by Google as a way to tell it which URL you want to appear in search results. The og:url property is a social signal, defined by the Open Graph protocol as the URL that acts as the object's permanent ID in the graph.
Google's page lists the canonical methods in order of how strongly they influence canonicalization: a redirect first, then the rel="canonical" link, then sitemap inclusion. It also says plainly that a site will often do fine without specifying one. The og:url property is not in that list at all, because it is not a search signal.
Canonical is what you tell the search engine. og url is what you tell everyone else. When they name the same URL, you have one page.
The 27 homepages, by what they declare
Coverage is uneven, and the two declarations are not chosen together. Four sites declared a canonical and no og:url, two declared an og:url and no canonical, and three declared neither. The table is the whole panel.
| Site | Canonical | og url | Match |
|---|---|---|---|
| framer.com | https://www.framer.com/ | https://www.framer.com/ | Yes |
| discord.com | https://discord.com | — | — |
| arstechnica.com | https://arstechnica.com/ | https://arstechnica.com/ | Yes |
| railway.com | https://railway.com | https://railway.com | Yes |
| wired.com | https://www.wired.com/ | https://www.wired.com/ | Yes |
| bbc.com | https://www.bbc.com | https://www.bbc.com | Yes |
| notion.com | https://www.notion.com/ | https://www.notion.com/ | Yes |
| ycombinator.com | — | https://www.ycombinator.com/ | — |
| slack.com | https://slack.com | https://slack.com | Yes |
| supabase.com | https://supabase.com | https://supabase.com/ | Slash |
| theverge.com | https://www.theverge.com | https://www.theverge.com/ | Slash |
| substack.com | https://substack.com/ | https://substack.com/ | Yes |
| mozilla.org | — | https://www.mozilla.org/en-US/ | — |
| techcrunch.com | https://techcrunch.com/ | https://techcrunch.com/ | Yes |
| nextjs.org | https://nextjs.org | https://nextjs.org | Yes |
| vercel.com | https://vercel.com | https://vercel.com | Yes |
| shopify.com | https://www.shopify.com/ | https://www.shopify.com/ | Yes |
| github.com | https://github.com | https://github.com/ | Slash |
| netlify.com | https://www.netlify.com/ | — | — |
| cloudflare.com | https://www.cloudflare.com/ | https://www.cloudflare.com/ | Yes |
| figma.com | https://www.figma.com/ | https://www.figma.com/ | Yes |
| stripe.com | https://stripe.com/nl | https://stripe.com/nl | Yes |
| webflow.com | https://webflow.com/ | — | — |
| linear.app | https://linear.app | — | — |
| reddit.com | — | — | — |
| wikipedia.org | — | — | — |
| canva.com | — | — | — |
The three that differ, and why it is only a slash
Three sites name the same host and path twice with different trailing slashes: supabase.com, theverge.com and github.com all write the canonical without a slash and the og:url with one. Every other pair is byte-identical. Nothing on the panel pointed the two at genuinely different URLs.
Two rows are worth a second look, and neither is a mistake. mozilla.org is the only og:url that leaves the homepage: it points at /en-US/, a locale path, while the request to mozilla.org ends at the bare host. stripe.com answers from /nl because our client's IP is in the Netherlands, and both declarations match that regional URL — the canonical follows the served page, not the country-neutral one.
What this means for your own page
The useful move is not to add both tags everywhere. It is to check that the two, where they exist, name the same URL — and to know which one the search engine reads.
- Run the command above and list the canonical and og:url values on one page.
- Normalise both the same way: drop the scheme, the leading
www.and the trailing slash. - If they differ by more than that, decide which URL is the real one and fix the other. A trailing slash is cosmetic; a different path is not.
- Remember which signal is which. The canonical link is the one Google documents; og url is for social and chat previews and carries no search weight.
- Make og url and canonical name the same URL, down to the host.
- Do not assume a canonical tag makes an og:url redundant, or the reverse. They are read by different consumers.
One honest caveat. We read what the pages declare and compared strings. We did not test how any search engine or social platform treats a trailing-slash difference, and we cannot say whether the three that differ lose anything for it. What we can say is narrower and still useful: on 27 homepages, the two declarations never pointed at different pages.
Common questions
How did you measure this?
One request per homepage on 2026-09-20 with a desktop Chrome user agent, no JavaScript, redirects followed, response saved as bytes. We searched the head for a canonical link and an og:url meta tag, recorded the raw values, and compared them after removing the scheme, the leading www. and any trailing slash. Three of the 30 requested sites returned a challenge or a stub under 10 KB and are excluded, which leaves 27.
Which one does Google read?
The canonical link. Google documents rel="canonical" as one of the ways to indicate a preferred URL, and lists it among the methods that influence canonicalization. The og:url property is not mentioned in that documentation, because it is an Open Graph property for social sharing rather than a search signal.
Do I need both?
Not necessarily. Google says a site will often do fine without specifying a canonical preference, and several sites on this panel declared only one of the two. If you share pages to social platforms or chat apps, og url is what those consumers read; if you only care about search, the canonical is the one that matters.
Is a missing trailing slash a problem?
We cannot say from this data. The three sites that differ do so only by a trailing slash, and both forms resolve to the same page on each of them. Treat it as a consistency question rather than a bug: pick one form and use it in both tags.
What did you not measure?
Behaviour, and anything a crawler does with the values. We did not test how a search engine or a social platform resolves a trailing-slash difference, and we did not verify that the URL in either tag returns the same content as the page that declared it. This article is about what the head says, nothing more.
The counts of how many homepages declare each signal, and the sizes of the images they point at, are in the canonical tag survey and the Open Graph tags survey. If you want to see what a non-rendering client receives from the same head, the crawler accessibility check answers that question.


