My Tool Studio
Schema

Job Posting Schema Generator

This job posting schema generator builds the JobPosting JSON-LD that Google for Jobs reads: title, description, date posted, employment type, hiring organization, location and salary. Choose on-site, fully remote or hybrid, and the tool adds jobLocationType TELECOMMUTE and the countries applicants may live in. Salary can be exact or a range. Add a job ID, the company logo, directApply, several office locations, several employment types, and the education and experience a candidate needs. Recruiters and small HR teams use it when the careers page is plain HTML. You can also paste JobPosting markup from your applicant tracking system to check and fix it. The Validation panel lists what Google requires and recommends.

Always freeNo sign upRuns in your browser
Import existing JSON-LD(paste code or read it from a URL)

Paste a JobPosting JSON-LD block, several script tags or a whole page's HTML. The form fills with what it finds so you can edit and improve it.

Job details

Several employment types (optional, overrides the one above)

Workplace & location

More office locations for the same job

Compensation

Salary is written as a MonetaryAmount with a nested QuantitativeValue: value for an exact amount, minValue and maxValue for a range.

Requirements and details

  • JobPostingMissing required title.
  • JobPostingMissing required description.
  • JobPostingMissing required datePosted.
  • JobPostingMissing required hiringOrganization.
  • JobPostingMissing required jobLocation or applicantLocationRequirements.
  • JobPostingRecommended: add validThrough.
  • JobPostingRecommended: add baseSalary.
  • JobPostingRecommended: add identifier.
  • JobPostingRecommended: add directApply.
  • Add the office city and country. Google needs them for jobLocation.
Output
<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "employmentType": "FULL_TIME"
}
</script>
Test in Google Rich Results TestValidate at validator.schema.orgThe test links copy your code first. Paste it into the tester's Code tab.

How to use

01

Fill in the job details

Enter the job title, date posted, employment type, valid through date, hiring organization and its URL, the job page URL and the full description that appears on the page.

02

Set workplace and pay

Pick On-site, Fully remote or Hybrid. Add the office address, the countries remote applicants may live in, or both. Choose Exact amount or Range and set currency and unit.

03

Copy and test

Add requirements if you have them, clear the errors in the Validation panel, press Copy script and paste the block on the job page. Use Test in Google Rich Results Test to confirm the posting is eligible.

Why Job Posting Schema Generator

Required and recommended JobPosting properties

This table follows Google's JobPosting documentation and shows where each property comes from in this form. Education and experience requirements are newer Google properties that help match candidates.

Google also expects the markup to sit on the page that shows the full job description, one job per page, and to be removed or expired once the position is filled.

PropertyGoogle statusField here
titleRequiredJob title
descriptionRequiredJob description
datePostedRequiredDate posted
hiringOrganizationRequiredHiring organization and URL
jobLocationRequired unless fully remoteOffice address
jobLocationTypeRecommended, needed for remoteWorkplace: remote or hybrid
applicantLocationRequirementsRecommended, needed for remoteCountries applicants may live in
baseSalaryRecommendedCompensation
employmentTypeRecommendedEmployment type
validThroughRecommendedValid through
identifierRecommendedJob ID and ID system
directApplyRecommendedCan people apply on this page?
hiringOrganization.logoRecommendedOrganization logo URL
educationRequirements, experienceRequirementsOptionalRequirements and details

Example: a fully remote job

Say a company hires a support engineer who can live in the United States or Canada, paid 60,000 to 75,000 US dollars a year. Choose Fully remote, type US, CA in the countries box, choose Range and enter 60000 and 75000 with USD and Yearly.

The output then contains jobLocationType TELECOMMUTE, an applicantLocationRequirements array with two Country objects named US and CA, and a baseSalary MonetaryAmount in USD whose QuantitativeValue has minValue 60000, maxValue 75000 and unitText YEAR. There is no jobLocation, because the job has no office. If the same company also had an office people could use, Hybrid would add that address back as jobLocation.

Paste the block on the job's own page, not on the careers index, and test it with Test in Google Rich Results Test before publishing.

Common questions

What fields does Google require in job posting schema?
title, description, datePosted, hiringOrganization and jobLocation. A fully remote job can replace jobLocation with jobLocationType TELECOMMUTE plus applicantLocationRequirements. Google recommends baseSalary, employmentType, validThrough, identifier and directApply.
How do I mark up a remote job in JobPosting schema?
Choose Fully remote and list the countries applicants must live in, such as US, CA. The tool writes jobLocationType TELECOMMUTE and one applicantLocationRequirements Country per entry, and leaves out jobLocation. Google needs at least one country for a remote job.
How do I mark up a hybrid job that is partly remote?
Choose Hybrid. The tool writes the office address as jobLocation and also adds jobLocationType TELECOMMUTE, with applicant countries if you list them. Google's documentation allows both together for jobs that can be done on site or from home.
How do I add a salary range to job posting schema?
Choose Range (min to max) under Compensation and enter the minimum and maximum. They are written as minValue and maxValue inside a QuantitativeValue, with unitText such as YEAR or HOUR. The tool warns when the maximum is lower than the minimum.
Which employment types does the JobPosting generator support?
All eight values Google lists: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM and OTHER. Pick one in the dropdown, or tick several under Several employment types, such as FULL_TIME and PART_TIME, and they are written as an array.
Is validThrough required in a JobPosting?
It is recommended, not required. Set it when the role has a closing date. When the job is filled, remove the markup or the page, or set validThrough to a past date, so Google stops showing an expired listing.
What are directApply and identifier in JobPosting schema?
directApply says whether people can apply on the page itself without extra steps. identifier is your internal job ID, written as a PropertyValue with the company or system name. Google recommends both, and the form now has fields for them.
Why isn't my job showing in Google for Jobs after adding the schema?
Common causes are indexing delay, a missing required field, a description that does not match the page, or a closed role. Google also expects one job per page and a real way to apply. Test the live URL and request indexing in Search Console.
What goes in the JobPosting description field?
The full job description as it appears on the page, including responsibilities and requirements. Google accepts basic HTML such as paragraphs and lists in this field. Do not paste a one-line summary, since Google expects the complete text.

More Schema tools

View all