sameAs is how you tell a machine that the LinkedIn page, the Crunchbase record and the Wikidata item are all the same company as your homepage.
sameAs is an array of URLs. That is the entire feature. It is also, per minute spent, the most valuable markup you can add, because it is the only place you get to tell a machine which other pages on the internet are you rather than hoping it works it out.
"sameAs": [
"https://www.linkedin.com/company/northstar-analytics",
"https://www.crunchbase.com/organization/northstar-analytics",
"https://www.wikidata.org/wiki/Q12345678",
"https://x.com/northstarhq",
"https://github.com/northstar",
"https://www.youtube.com/@northstaranalytics"
]
Why a declared link beats an inferred one
Without sameAs, a machine finding a LinkedIn page for "Northstar Analytics" has to guess whether it is your company, the consultancy in Auckland with the same name, or the defunct one from 2014. It guesses using name similarity and whatever links exist, and it holds the conclusion with low confidence.
With sameAs, you have asserted it from a domain you demonstrably control. Confidence goes up, the profiles start reinforcing your record instead of competing with it, and — this is the part people miss — the facts on those profiles become usable as facts about you. Your Crunchbase founding date, your LinkedIn employee count, your Wikidata industry classification all attach to the right record.
Which links to include
Ranked by what they actually do:
Tier one — identity anchors. Wikidata, Crunchbase, LinkedIn. These are structured records that other systems read programmatically. One of them is worth several social profiles. More on getting them.
Tier two — heavily crawled and clearly yours. GitHub for a developer tool, YouTube if you publish there, X, Facebook, Instagram. Include the ones you actually maintain.
Tier three — context-specific. Your Google Business Profile or Maps listing if you have a location. App Store and Play Store listings if you ship an app. Industry registries and professional bodies. A Stack Overflow or npm org for a dev tool.
Which links to leave out
- Profiles you do not control.
sameAsmeans "this is us." A review page about you is not a profile of you; it belongs in your content, not in this array. - Dead or empty profiles. An X account with four followers and nothing since 2022 is a signal, and not a good one. Delete the profile or leave it out.
- Personal profiles of the founder on the company's
Organizationnode. That is aPersonentity. If you want the connection, model it properly with afounderfield. - Padding. Fourteen directory listings do not beat four real profiles. This is not a volume metric, and a long array full of thin listings dilutes the strong ones.
The consistency requirement
A sameAs link to a profile that contradicts your site is worse than no link, because you have personally vouched for the contradiction.
Before you add a URL, open it and check three things:
- The name matches the
namein your schema. Not "close enough" — the same string. - The description says the same thing your homepage description says. Not identical wording, the same facts about category and audience.
- The website field points back at the same canonical URL your schema uses.
That third one is the reciprocal link, and it is what makes the assertion verifiable rather than merely claimed. A machine can check that the profile you named also names you.
A short workflow
- List every profile your company has. Include the ones nobody has logged into for a year.
- Kill or claim the dead ones.
- Update the survivors so name, description and website match your canonical set.
- Add the URLs to
sameAs, tier one first. - Check each profile links back to your canonical domain.
An hour, maybe two. It is the least glamorous item in this entire blog and one of the two or three that moves the needle most, because almost nobody bothers.
Checking it
Our scan reports which recognised profile types it found linked from your homepage and which are missing, so you get the gap as a list rather than having to remember what a complete set looks like. But you can do the same check by hand: view source, find your JSON-LD, and read the array. If it is not there, that is your answer.
