# JobPosting Schema Not Showing in Google for Jobs? 2026 Fix > Your JobPosting schema validates but Google for Jobs still will not show your listings. It is rarely the JSON-LD. The real causes: canonical conflicts, stale jobs, thin pages, and markup that does not match what visitors see. [Articles](/articles) Apr 28, 2026 / SEO & Growth / 8 min read Updated Jul 27, 2026 # JobPosting Schema Not Showing in Google for Jobs? 2026 Fix [ Simon Gingras](/author/simon-gingras) Simon Gingras Founder, Kardow Simon built Kardow after years in B2B SaaS. He has launched niche job boards, writes about job board strategy, SEO, and monetization, and ships product daily. [View profile →](/author/simon-gingras) [LinkedIn ↗](https://www.linkedin.com/in/simon-gingras/) If your job postings have valid schema but still aren't appearing in Google for Jobs, the fix usually isn't in your JSON-LD at all. Google needs to trust the real page first. Here is exactly how to structure your job pages, avoid duplicate content penalties, and write structured data that actually ranks. _New to this and don't have markup yet? Start with [job posting structured data explained from scratch](/articles/job-posting-structured-data-guide) and come back here when it validates._ ## Quick Answer JobPosting schema only works when it exactly watches the visible details on a single, public job page. If your page validates but still isn't getting indexed, you don't need another schema field. You need to fix the URL structure, remove expired jobs faster, or ensure the visible data perfectly mirrors your JSON-LD. **Just need the markup?** Use the [free job posting schema generator](/tools/job-posting-schema-generator). It builds valid JobPosting JSON-LD in your browser in about a minute. Come back here if the markup validates and your jobs still are not appearing, because that is a different problem and the rest of this page is about solving it. ### Before adding more schema, check these 5 things first: - Make sure each job has exactly **one canonical detail URL**. - Make sure you aren't adding JobPosting tags to search or category pages. - Check that the visible title, employer, and location match the markup. - Make sure remote jobs have explicit location requirements. - Remove schema markup from jobs the moment they expire. ## Generate the Markup If you just want valid markup fast, use the generator below, or open it on its own page at [the job posting schema generator](/tools/job-posting-schema-generator). Fill in the fields and it builds a clean, Google-ready **JobPosting** JSON-LD block for you. No code and no sign-up. It runs entirely in your browser, so nothing you type is sent anywhere. **Non-technical?** Copy the output and hand it to whoever manages your site, or paste it into your job page's head section. **On a real job board?** You should not be pasting these by hand at all. Your platform should output this markup automatically for every listing and keep it in sync as jobs open and close. Either way, the checks further down decide whether the job actually shows up. Free JobPosting schema generator Fill in the fields. Valid JSON-LD updates live. No sign-up, runs in your browser. Job title Job description Employer name Employer website Date posted Valid through (optional) Employment type Full time Part time Contractor Temporary Intern Volunteer Per diem Other Location type On-site Hybrid Fully remote City Region / state Postal code Country (e.g. US) Applicants may work from (country) Currency Salary min Salary max Per Hour Day Week Month Year Only add salary if it is real and visible on the job page. job-posting.jsonld Paste the copied `