Skip to content

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
Try a sample job

Or start with your job title. Fields marked with a star are required by Google.

See your markup

Saved draft

You saved a draft on this device on an earlier visit.

Sample job

A sample job for YOUR BRAND. Replace every field with your real job before you copy the markup.

Required · 5 fields

What Google needs.

The job title only, as it reads on the posting. Leave out pay, the company name, the location, job codes and dates.

Paste the full posting, as job seekers see it. Each line becomes a paragraph. Lines that start with - or * become a bulleted list.

0 words · 0 characters

The date the job first went up. Today's date is filled in.

The company's name, not the location that's hiring. For a confidential search, Google accepts the word confidential.

The logo is a link to the image file. Google asks for a width-to-height ratio between 0.75 and 2.5.

Location

Where the person reports to work. Add each location this posting covers, up to 10. Country is a 2-letter code, such as US.

Location 1

1 of 10 locations

Locations above are now optional. Keep one only if people can choose to work there instead.

Where applicants can live and work. 2-letter code.

Only if applicants must be in certain states. Separate them with commas.

Recommended · 5 fields

What makes it complete.

Valid through

When the posting closes. If the job has no end date, or you don't know it, leave the date blank. Google says to leave it out then.

We fill in your browser's offset for the closing date, so daylight saving time is covered. Change it if the job is in another time zone.

Employment type

Pick all that apply.

Base salary

The actual base pay from the employer, not an estimate. Show the same pay on the job page.

Numbers only, such as 18.50 or 52,000.

Job ID

Your own ID for this job, such as a requisition number. The name defaults to the hiring organization.

Direct apply

Pick Yes only if people apply on your site without having to click apply, fill in a form or sign in more than once along the way. That's how Google defines direct apply.

Save draft on this device

Saves in this browser only, with your description. Nothing is sent to us.

Your markup.

Not eligible yet

JSON-LD

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

    Email me this

    Send this markup to your inbox.

    Optional. The tool works without it. We send the markup as it is when you press the button.

    A person sends it within one business day. We send your copy, then nothing else unless you ask. By sending this you agree to our privacy notice.

    Thank you! Your submission has been received!
    Oops! Something went wrong while submitting the form.

    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.

    1. 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.

    2. Add pay, job type and a closing date.

      They're recommended, not required. Use the same pay the job page shows.

    3. Press Check markup.

      Fix anything marked "!" first. Anything marked "▲" is a warning: read it, then decide.

    4. Paste it into the job's own page.

      Copy the whole block, script tags included, into the HTML of that one job's page.

    5. 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.

    Property
    Required?
    Google's rule
    title
    Required? Required
    Google's rule: The title of the job only. No job codes, addresses, dates, salaries or company names.
    description
    Required? Required
    Google's rule: A complete description of the job, not the same as the title. Google reads <p>, <ul> and <li>.
    datePosted
    Required? Required
    Google's rule: The original posting date, in ISO 8601 format, such as 2026-11-08.
    hiringOrganization
    Required? Required
    Google's rule: The company, not the location that's hiring. A logo's width-to-height ratio is between 0.75 and 2.5.
    jobLocation
    Required? Required, unless 100% remote
    Google's rule: Include addressCountry, and as many other address properties as you can. Several locations go in an array.
    jobLocationType
    Required? Required if 100% remote
    Google's rule: Only for jobs that are remote 100% of the time, and the description has to say so.
    applicantLocationRequirements
    Required? Required if 100% remote
    Google's rule: At least one country.
    validThrough
    Required? Recommended; required if the posting expires
    Google's rule: ISO 8601. Leave it out if the job doesn't expire or you don't know when.
    employmentType
    Required? Recommended
    Google's rule: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER. Case-sensitive.
    baseSalary
    Required? Recommended
    Google's rule: The actual base salary from the employer, not an estimate. unitText is HOUR, DAY, WEEK, MONTH or YEAR. A range uses minValue and maxValue.
    identifier
    Required? Recommended
    Google's rule: The hiring organization's unique identifier for the job.
    directApply
    Required? Recommended
    Google's rule: It isn't direct apply if people have to click apply, fill in a form or sign in more than once along the way.

    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

    1. Set validThrough to a date in the past.
    2. Remove the page, so it returns a 404 or 410 status code.
    3. 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 plan

    Quick answers.

    Anything else? A person replies within one business day.

    • 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.

    • 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.

    • 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.

    • 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

    1. 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

    Let'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.

    Free Hiring Plan

    Required

    Who are you hiring? (required)

    Pick all that apply.

    How many locations? (required)

    For example: forklift operator, 2nd shift, Dallas

    We'll send your plan here.

    Free. No call needed. Your plan lands in your inbox within 3 business days.

    Month-to-monthNo long-term contractsProcurement-friendly

    By sending this you agree to our privacy notice.

    Thank you! Your submission has been received!
    Oops! Something went wrong while submitting the form.