Job Posting Schema Generator
Generate JobPosting JSON-LD for Google’s job search, with salary, location or remote, and a closing date.
No sign-up. Runs entirely in your browser.
Start with these 4. The rest are optional.
JobPosting JSON-LD
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "JobPosting",
"employmentType": "FULL_TIME"
}
</script>Markup for one role. Site Audit checks structured data coverage across every page it crawls.
Try Site AuditWhat this markup does today
The markup behind Google’s job search experience. Remove it, or set validThrough, when the role closes: expired postings left live are a common reason for a manual action.
What you get
- Valid JobPosting JSON-LD
- On-site address or remote with a country
- A salary range as a MonetaryAmount
- Employment type and closing date
- That title, description, datePosted and hiringOrganization, which Google requires, are present.
- That an on-site role has a jobLocation address, and a remote role uses TELECOMMUTE with an applicant country instead.
- That a salary range is a MonetaryAmount with a currency and a unit such as YEAR.
- That employment type and a closing date are set, so the posting expires on time.
How to use the Job Posting Schema Generator
Enter the title, description and employer
Use the full job description as it appears on the page.
Set location or remote
An office address for on-site roles; for remote roles, the country applicants must be in.
Add salary and a closing date
Then paste the block into the job’s own page, one block per role.
Why job pages need markup
It is how roles reach job search.
Google’s job search experience is built from JobPosting markup. Without it, a role is just a page.
Remote needs saying explicitly.
A fully remote role is marked TELECOMMUTE with the countries applicants may be in, not given a fake office address.
Salary gets clicks.
Candidates filter by pay. A salary range in the markup is shown where the role is shown.
Expired roles must go.
Leaving markup live after a role closes breaks Google’s guidelines. Set a closing date or remove it.
What to do with the result
Job markup is what puts a role into Google’s job search, and it carries strict rules: one posting per page, real locations, and removal when the role closes. Generating it from the same data as the job page, with the closing date set, keeps it inside the rules without anyone remembering to take it down.
Site AuditFrequently asked questions
Set jobLocationType to TELECOMMUTE and add applicantLocationRequirements with the country applicants must be in. Leave out jobLocation for fully remote roles rather than inventing an office.
More free tools
Person Schema Generator
Describe an author, founder or expert as an entity, with their role, employer, expertise and profiles.
Software Application Schema Generator
Generate SoftwareApplication JSON-LD with category, operating system, price and rating for your product pages.
Sitemap Validator
Check an XML sitemap for the problems that make crawlers skip URLs: duplicates, other hosts, http and bad dates.
See where you actually stand.
A free tool checks one thing once. Veritas watches all of it, continuously, across every engine that decides whether you get cited.
GOOGLE · CHATGPT · PERPLEXITY · GEMINI · AI OVERVIEWS