Aug 6, 2026 / SEO & Growth / 6 min read
Job Title Schema Markup: Which Property You Actually Need
Two different schema.org properties get called "job title markup" and they are not interchangeable. If you are marking up a job opening you want JobPosting.title. If you are marking up a person's role you want Person.jobTitle. This page covers both, starting with the one that causes almost all the trouble.
The Short Answer
For a job opening, put the plain role title in title and nothing else. Google's documentation states it directly: the title of the job, not the title of the posting, with "Software Engineer" and "Barista" given as examples.
Everything people habitually cram in alongside it already has a home. The employer goes in hiringOrganization, the city in jobLocation, the pay in baseSalary, the requisition code in identifier. Google specifically advises against putting job codes, addresses, dates, salaries, or company names in the title.
Which Property Do You Need?
| You are marking up | Property | Lives on |
|---|---|---|
| A job opening, so the role being advertised | title | A JobPosting object on a single job detail page |
| A person, so the role someone holds | jobTitle | A Person object on an about page, team page, or article byline |
If you landed here for the second row, skip to Person.jobTitle further down. Everything between here and there is about job openings.
What Google Expects in JobPosting.title
The rule is narrower than most people assume, and it is easiest to hold as a single question: would a candidate type this into a search box? "Registered Nurse" yes. "Join our award-winning care family" no. That is essentially the whole standard.
Google's stated guidance adds three things to avoid. Do not include job codes, addresses, dates, salaries, or company names. Do not use clickbait or promotional phrasing, where the documentation gives "Apply now for IT job -FRENCH speaker in Bucharest" as a not-recommended example against the suggested "Market Specialist, French speaker". And do not use excessive special characters such as exclamation marks and asterisks, which can read as spam.
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Software Engineer",
"hiringOrganization": {
"@type": "Organization",
"name": "Acme Corp"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX",
"addressCountry": "US"
}
},
"identifier": {
"@type": "PropertyValue",
"name": "Acme Corp",
"value": "REQ-4471"
}
}
Note where the requisition code went in that example. identifier takes a PropertyValue, so you keep the reference without it ever touching the field Google matches searches against.
Before and After
These are the patterns that show up over and over in imported feeds and hand-written listings.
| Instead of this | Use this | What was wrong |
|---|---|---|
| Join Our Rockstar Team! | Senior Software Engineer | Describes the ad, not the job. Nobody searches for "rockstar team", and Google has nothing to match a query against. |
| Senior Software Engineer at Acme Corp | Senior Software Engineer | The employer belongs in hiringOrganization. Repeating it here duplicates data Google already has. |
| Senior Software Engineer, Austin TX, $150k | Senior Software Engineer | Location belongs in jobLocation, pay in baseSalary. Google explicitly advises against putting addresses or salaries in the title. |
| URGENT!! Nurse needed ***Apply Now*** | Registered Nurse | Promotional language plus excessive special characters, which Google flags as a potential spam signal. |
| REQ-4471 Software Engineer II | Software Engineer II | Job codes are for your ATS. Put the reference in identifier if you need it in the markup at all. |
| Apply now for IT job, FRENCH speaker in Bucharest | Market Specialist, French speaker | This pairing comes straight from Google's own documentation, where the first is marked not recommended and the second is the suggested form. |
On a job board the fix is almost never per-listing. These titles arrive from employers or feeds already malformed, so the durable answer is a normalization step at import: strip trailing employer names, pull bracketed codes into identifier, and flag titles carrying currency symbols or runs of punctuation for review.
Why This Affects Matching, Not Validation
This is the part that makes bad titles persist for years. A validator only checks that title exists and is a string. "Join Our Rockstar Team!" passes the Rich Results Test exactly as cleanly as "Senior Software Engineer", so nothing in your tooling ever complains.
The cost lands somewhere no report shows you. Google for Jobs matches candidate queries against the role, and candidates search job titles. A posting whose title contains no job title has nothing to match against, so it competes for almost nothing and quietly underperforms while looking perfectly healthy in Search Console. If you are chasing errors in that report, see what each Google for Jobs schema message means, but understand that this particular problem will never appear there.
The Other One: Person.jobTitle
Different property, different purpose, and much simpler. jobTitle is a plain text property on a Person, used to say what role a named individual holds. It appears on about pages, team pages, and author bylines, and it helps search engines connect a person to an organization and a field of expertise.
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Simon Gingras",
"jobTitle": "Founder, Kardow",
"url": "https://kardow.com/author/simon-gingras"
}
That example is not hypothetical. This article's own byline emits exactly that markup, so you can view source on this page and find the Person object with its jobTitle in the Article structured data.
One thing to keep straight: Person.jobTitle has no role in Google for Jobs. It will not make a job appear, and adding it to a job posting page does nothing for job search. If you are trying to get listings into Google for Jobs, JobPosting.title is the property you want.
Getting It Right by Default
Our job posting schema generator gives the title its own field, separate from employer, location, and salary, so there is nowhere to cram the extras even if you wanted to. Worth being clear about the limit though: it does not rewrite what you type. If you paste marketing copy into the title box, marketing copy is what comes out. The structure nudges you toward the right shape and the required properties, and the judgement stays yours.
For the wider picture, including how the title interacts with everything else Google needs before a listing becomes eligible, see the full JobPosting schema guide. If you are earlier than that and just need the concept, structured data for job postings explained from scratch is the starting point.
The plumbing handled for every listing
Kardow emits JobPosting markup on every job page with the title in its own property, the job reference in identifier as a PropertyValue, employment type mapped to Google's allowed values, and the real publication date rather than a re-sync timestamp.
Frequently Asked Questions
What should go in the JobPosting title property?
The job title on its own, exactly as a candidate would search for it. Google's documentation puts it plainly: the title of the job, not the title of the posting, giving "Software Engineer" and "Barista" as examples. Keep out the employer name, the location, the salary, the requisition code, and any promotional wording. Each of those has its own property, and Google advises against putting them in the title.
What is the difference between JobPosting.title and Person.jobTitle?
They describe different things. JobPosting.title is the role being advertised in a job opening, and it belongs on a job detail page. Person.jobTitle is the role a named individual holds, and it belongs on an about page, a team page, or an article byline. They are unrelated properties on unrelated types, so they are never interchangeable, even though both are commonly called "job title schema markup".
Does a bad title stop my job appearing in Google for Jobs?
Not usually as a hard error, which is what makes it easy to miss. If the title property is present, validators pass it whatever it contains. The damage is to matching: Google uses the title to decide which searches a job is relevant to, so a title like "Join Our Rockstar Team" leaves nothing to match against real queries. Heavy promotional language and excessive special characters can also read as spam signals, which is a separate and larger risk.
Should the schema title match the visible page title exactly?
They should agree, and the cleanest approach is to display the real role title on the page as the job heading and use that same string in the markup. If your page heading is marketing copy, fix the page rather than inventing a different value for the markup. Google requires that information in the markup be visible on the page, so a title that appears nowhere on screen is a mismatch.
Can I add seniority or specialism to the title?
Yes, when it is genuinely part of the role. "Senior Software Engineer", "Software Engineer II", and "Market Specialist, French speaker" are all fine because a candidate would plausibly search them. The test is whether the extra words describe the job or sell the advert.
Where does the requisition or job code go instead?
Use the identifier property, as a PropertyValue with your organization as the name and the code as the value. That keeps the reference in the markup where it can be useful to you without polluting the field Google matches candidate searches against.
Keep reading
More articles
You may also like
August 6, 2026 • SEO & Growth
Job Posting Structured Data: Plain English Guide
Structured data is a machine-readable summary of your page. What that means for job postings, the five fields Google requires, and how to add them.
August 6, 2026 • SEO & Growth
Fix Google for Jobs Schema Errors and Warnings
Every Search Console and Rich Results Test error for JobPosting markup, what each message means, and the fix. Plus the warnings you can safely ignore.
April 29, 2026 • SEO & Growth
Job Board SEO vs. General SEO: Why Traditional Playbooks Fail
Running a job board requires a completely different SEO strategy than a traditional website. Learn how to manage expiring content, dual audiences, and Google for Jobs.