Job Posting Schema Generator
Jobs Google can read.
Fill in one job. Get the JobPosting markup Google's job search reads, checked against Google's rules as you type.
- Free
- No sign-up
- Runs in your browser
- Copy or download
Or start with your job title. Fields marked with a star are required by Google.
See your markupSample job
A sample job for YOUR BRAND. Replace every field with your real job before you copy the markup.
Saves in this browser only, with your description. Nothing is sent to us.
Your markup.
Paste it into the HTML of the job's own page, script tags included.
Required 0 of 5
Recommended 0 of 5
Test it: Google Rich Results Test (opens in a new tab) · Schema Markup Validator (opens in a new tab). Paste the code there yourself. We send nothing.
Errors and warnings
Sent
Got it. A person sends your copy within one business day.
How to use it
Fill it in. Check it. Paste it.
The markup panel shows what's missing as you type. When it turns yellow, you're ready to test.
New to Google's job search? How to post jobs on Google explains how it finds your openings.
Fill in the five required fields.
Start with the job title, as it reads on the posting. Paste the full description. The checklist fills in as you go.
Add pay, job type and a closing date.
They're recommended, not required. Use the same pay the job page shows.
Press Check markup.
Fix anything marked "!" first. Anything marked "▲" is a warning: read it, then decide.
Paste it into the job's own page.
Copy the whole block, script tags included, into the HTML of that one job's page.
Test it. Keep it current.
Run the live page through Google's Rich Results Test. When the job closes, take the markup down (see Closing jobs).
Where the code goes
One job. One page.
Job posting schema markup only counts on the right page, with the right text. These are Google's rules.1
One job per page.
Use JobPosting markup only on a page that shows a single job.
The job's own page.
Put it on the most detailed page, the one for that job, not on a list of jobs.
The same text as the posting.
Everything in the markup has to be visible on that page. If the markup has pay, the page shows it too.
No login to read it.
People must be able to see the job details without logging in.
Jobs on your ATS?
If your jobs live on pages your applicant tracking system hosts, check whether it adds markup already (see the FAQ). Then test the code, and test the live page's URL once it's published.
Field reference
Every field, and Google's rule for it.
Summarized from Google's JobPosting documentation, checked November 2026.1 The generator applies each rule as you type. Google also lists three beta properties this tool leaves out: educationRequirements, experienceRequirements and experienceInPlaceOfEducation.
Closing jobs
Job closed? The markup comes down.
Google doesn't allow expired job postings. When a job is no longer open, Google says to expire it in one of three ways.1
- Set validThrough to a date in the past.
- Remove the page, so it returns a 404 or 410 status code.
- Remove the JobPosting markup from the page.
Google says that not acting on expired jobs in time may lead to a manual action. So set validThrough when you know the closing date. If you don't know it, leave it out, as Google asks. Then take the page or the markup down on the day the job closes.
For job pages, Google recommends its Indexing API over sitemaps. It prompts Google to crawl the page sooner after a change.1 Your developer or your applicant tracking system can tell you if it's set up.
What the generator checks
If the closing date has passed, the generator marks it as an error. It can't see your live page, so check the page too.
Our ads follow the same rule. They run only on open jobs. When a job closes, its ad pauses.
Get my free hiring planDo I need this if my ATS adds markup?
Maybe not. Open one of your live job pages in Google's Rich Results Test. If it finds a job posting, your applicant tracking system or careers-site builder is adding the markup already. Then use this tool as a checklist: compare the fields it fills, like pay and closing date, with what the page shows. If the test finds no job posting, build the markup here and add it to the page.
Where do I paste JSON-LD?
Into the HTML of the job's own page, script tags included. Use one block per job page. In most site builders, that's a custom-code or embed box for the page. The markup has to be on the same page as the job description people can read.
Why isn't my job showing on Google?
Google doesn't guarantee that structured data shows up in search results. Start with these checks. Is every required field there? Does the markup match what the page shows? Can people read the posting without logging in? Has the job expired? Then test the live page in the Rich Results Test, and look at the rich result status report in Search Console.
Can I add salary as a range?
Yes. Give a minimum and a maximum instead of one amount. In the markup they're minValue and maxValue, with a unitText of HOUR, DAY, WEEK, MONTH or YEAR. Google asks for the actual base salary from the employer, not an estimate. Show the same range on the job page.
Sources
- 1Google Search Central, "Job posting (JobPosting) structured data for Job Search", checked November 2026. Required and recommended properties, content and remote-job rules, logo ratio, direct apply, the Indexing API and how to remove expired jobs.
Last reviewed November 2026.
Recruitment marketing, handled
Want every job found on Google?
Markup gets your job pages read. Hireloud is the recruitment marketing team that puts those jobs in front of people the moment they search, at every location. You approve. We handle the rest, and you get people in your interview seats.
Free. No call needed. A sample ad in your brand, in your inbox within 3 business days.
Month-to-monthNo long-term contractsProcurement-friendly
Admit oneYour free hiring planLet's fill your interview seats.
Tell us who you're hiring and where. We'll email you:
A sample ad for your hardest role, in your brand
Where we'd run it, and the budget we'd use
What to fix in the job ads you run now
In your inbox within 3 business days.
