schema

Author bylines and Person schema

A visible byline, an author page, and Person JSON-LD that agrees with both. What Google documents for author markup, and how to audit it across a site.

Authorship on a page has three parts, and they have to agree. There is the visible byline a reader sees, the author page that byline links to, and the Person object in the page’s structured data that names the same person and points to the same page. When all three say the same thing, a machine reading the page can tell who wrote it without guessing. When they disagree, or one is missing, it has to infer, and inference is where authorship gets attributed to the publisher, to the wrong person, or to nobody.

This post covers each part: what belongs in the byline, what an author page needs, what Google documents for author markup on articles, and what sameAs is for. Then it covers the audit, by hand on one page and across a site. It sits under Citability and entity signals: a GEO guide, which places authorship among the other signals a source is judged by.

None of this makes a page more likely to be cited by any particular system. It makes the page’s authorship legible, which is the part you control.

What does Google say about bylines?

Google’s guidance on helpful content asks two questions about authorship: “Do pages carry a byline, where one might be expected?” and whether bylines “lead to further information about the author or authors involved.” It says Google “strongly encourage[s] adding accurate authorship information, such as bylines to content where readers might expect it,” and, in the same breath, to “avoid using deceptive authorship information.”

That page also states that “E-E-A-T itself isn’t a specific ranking factor.” So a byline is not a ranking lever in Google’s description of it. It is information a reader expects, and the guidance treats it that way. The same logic applies to any system trying to decide whether a page is a credible source: it can only weigh authorship it can find.

What should the visible byline contain?

A byline should contain the author’s name as it appears everywhere else, a link to that author’s page, and the date. Optionally it carries a short role or credential when one is relevant to the subject (“Staff engineer, robotics controls”). Keep the name and the role separate in the markup, because Google’s markup guidance asks for the name alone in author.name.

Where the byline sits matters as much as what it says. Put it inside the main content block, directly under the headline, as text in the HTML. Three placements cause most of the trouble:

  • Sidebar or footer only. An author box repeated on every post by that author looks like template furniture to a main-content extractor. Boilerplate ratio explains why repeated blocks get discarded.
  • Image only. An author photo with the name baked into the image, or set only in alt text, isn’t a byline a text extractor will read.
  • Injected by script. A byline rendered by client-side JavaScript isn’t in the response a non-rendering crawler receives.

If a page has more than one author, show every one of them. Google’s guidance says to “make sure that all the authors that are presented as authors on the web page are also included in markup,” so the visible list and the structured list should match name for name.

What does Google document for article author markup?

Google’s Article structured data documentation says “there are no required properties” for Article, NewsArticle, or BlogPosting, and lists author, author.name, author.url, dateModified, datePublished, headline, and image as recommended. Its author markup best practices are specific:

PracticeWhat Google’s documentation says
Type”Use the Person type for people, and the Organization type for organizations.”
Name”In the author.name property, only specify the name of the author.” No job title, honorific, publisher name, or “posted by.” Use jobTitle, honorificPrefix, or honorificSuffix for those.
Multiple authorsList “each author in their own author field.” Don’t merge several authors into one.
CoverageInclude every author shown on the page in the markup.
Identifying URLauthor.url is “a link to a web page that uniquely identifies the author of the article,” such as a social media page, an “about me” page, or a bio page.
sameAs”You can use the sameAs property as an alternative,” and “Google can understand both sameAs and url when disambiguating authors.”

The most common deviation from this table on real sites is author set to an Organization on every post, because the template was written once with the company name. If a person wrote it, that is the wrong type, and the documentation says so directly.

What does the Person JSON-LD look like?

The author property on the article holds a Person with a name, a URL for the author page, and sameAs links to the author’s profiles elsewhere. The example below is illustrative: the person, site, and profiles are fictional.

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Choosing a payload class for a collaborative arm",
  "datePublished": "2026-09-14",
  "dateModified": "2026-10-02",
  "author": {
    "@type": "Person",
    "name": "Dana Okafor",
    "url": "https://www.example.com/authors/dana-okafor/",
    "jobTitle": "Staff engineer, robotics controls",
    "sameAs": [
      "https://www.linkedin.com/in/dana-okafor-example",
      "https://github.com/dana-okafor-example"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Robotics",
    "url": "https://www.example.com/"
  }
}

Three things to notice. name is the bare name; the role went into jobTitle. url points to an internal author page, which is the page the visible byline links to. And the publisher is a separate Organization, so the company is still credited without being mistaken for the author. Dates belong here too, and Freshness signals and honest dateModified covers keeping them consistent with the visible page.

What belongs on an author page?

An author page should state who the person is, what they do, why they are qualified to write about the site’s subjects, and where else they can be found. It should list or link the pieces they have written. It is the page author.url points to, so it has to identify one person clearly.

Google documents ProfilePage markup for this kind of page. Its ProfilePage documentation requires mainEntity (the person or organization the page is about) and mainEntity.name, and recommends alternateName, description, identifier, image, and sameAs, among others. Its guideline is that “the primary focus of the page must be a single person or organization that is affiliated with the overall website,” and it lists an author page on a news site as a valid use. The Article documentation itself recommends this: if author.url points to an internal profile page, mark that author up with profile page structured data.

An illustrative, fictional example:

{
  "@context": "https://schema.org",
  "@type": "ProfilePage",
  "mainEntity": {
    "@type": "Person",
    "name": "Dana Okafor",
    "description": "Staff engineer on Example Robotics' controls team.",
    "image": "https://www.example.com/authors/dana-okafor.jpg",
    "sameAs": [
      "https://www.linkedin.com/in/dana-okafor-example",
      "https://github.com/dana-okafor-example"
    ]
  }
}

What should sameAs point to?

sameAs should point to other pages that are unambiguously about the same person: a professional profile, a code repository profile, a conference speaker page, a university faculty page. Each link is a claim that the entity on this page and the entity on that page are one and the same. Google’s guidance is to “use valid URLs for the url or sameAs properties.”

Use the same set of links in the article’s author object and on the author page, and keep them current when a profile moves. Don’t add links to pages that only mention the person, to the company’s own social accounts, or to profiles that belong to someone with the same name. A sameAs list is useful in proportion to how unambiguous it is.

How to check one page by hand

This takes about five minutes per template.

  1. Read the page. Is there a byline under the headline, with a name, a link, and a date?
  2. View source. Open view-source: and search for the author’s name. If it’s not in the raw HTML, the byline is rendered by script.
  3. Find the JSON-LD. Search the source for "author". Confirm the @type is Person, that name contains only the name, and that it matches the visible byline exactly.
  4. Validate. Paste the URL into a structured-data validator and confirm the block parses.
  5. Follow the link. Click the byline. Confirm the author page exists, returns 200, is about one person, and that its URL matches author.url.

Check one article per template and one post per author if authors have different setups. Templates fail together, so one URL usually stands for hundreds.

How to check it across a site

The site-wide question is whether every article has a visible byline and structured authorship, and whether the two agree.

With crawler custom extraction. Most desktop crawlers accept XPath or CSS extraction rules. Add three:

  • Visible byline: the selector your template uses, for example //*[@rel='author'] or //*[contains(@class,'byline')].
  • Byline link: //*[@rel='author']/@href, or the href inside your byline element.
  • JSON-LD block: //script[@type='application/ld+json'], extracted as text.

Export to a spreadsheet. In a new column, test whether the byline name appears in the JSON-LD text, for example =IF(ISNUMBER(SEARCH(B2, D2)), "match", "check"). Filter for empty bylines, for "check" rows, and for JSON-LD that contains Organization but not Person, which on an article usually means the template credits the company as author. Then collect the distinct byline URLs, crawl them, and confirm each returns 200.

GEOBee checks the same property on every URL. Its GEO lens includes an Author / E-E-A-T signal worth 15 of 100, which looks for “a visible author byline or Person schema” (the three lenses), and its structured-data check detects Person and Article-family types and flags blocks that are invalid or partial. A page missing both raises the warning “No author byline or author schema,” with the fix “Add a visible author and Person structured data” (Findings & fixes). The consistency check between byline and JSON-LD is still the spreadsheet step above.

What good authorship buys you

A correct byline and matching Person markup make one fact about a page unambiguous: who wrote it. That is necessary for any system that weighs sources by who produced them, and What makes a page citable covers the other half, which is what on the page is worth quoting. Neither guarantees a citation. Authorship nobody can find is simply authorship that can’t be counted.

Once the author is legible, the next layer is the organization behind the site, whose entity markup follows the same logic with different properties. Before that, AI Overviews eligibility is worth a read for a reminder that none of this markup is required for Google’s AI features. It is there for clarity, not for admission.

To find every URL missing a byline or author schema in one crawl, download GEOBee and run it on your site during the 7-day trial.

On this page