Skip to content

Free ATS resume checker: match your resume to a job description

For job seekers: check how well your resume's words match one job description, and which layout choices resume parsers often misread.

Rule-basedInstant, rule-based result.

Check it yourself: every request this page makes

Every request this page has made since you opened it

The list fills in once the page has loaded.

Downloads bring the tool to you. Nothing has been sent. Your file and your text are not in any of these.

Offline

Not loaded yet: the checker loads when you start using it

Or open your browser's developer tools, choose Network, run the tool and watch: your file never appears.

Your data. Runs in your browser. Your resume and the job description are never uploaded. How we handle data

1Your resume

How to add your resume

Drop a PDF or Word file here, or choose one.An old .doc file? Save it as .docx or PDF first.

PDF or Word .docx, up to 5 MB and 10 pages.

2

0 of 20,000 characters, at least 300. Include the requirements.

Fixed rules, no model. Your resume and the job description stay on this device.

Example result from made-up data

From the made-up sample. Press Load a sample to run it yourself. Your first check replaces it.

Read cleanly

Checked: keyword match 64 out of 100, readability 95 out of 100.

Keyword and structure match. Not a prediction of hiring odds.

Keyword match
Measures word overlap with this job description, not your chances of being hired. 11 of 20 keywords found.
Readability
Measures how cleanly resume parsers can read your file, from the fixed checks below.

There is no standard ATS score. Employers' systems differ, so use this to find gaps, not to hit a number.

Keywords from the job description

Missing keywords first, by the points each would add. 11 of 20 found in your resume.
KeywordFrom the job descriptionWeightWhy it countsIn your resumePoints if addedShow the lines
Looker StudioWhat you'll do, twiceStandardListed skillMissing+7
Sales operationsRequirements, onceMust haveListed skillMissing+5
Pipeline managementRequirements, onceMust haveListed skillMissing+5
Written communicationRequirements, onceMust haveListed skillMissing+5
Sales leadersAbout the role, twiceStandardRepeated phraseMissing+5
ForecastingWhat you'll do, onceStandardListed skillMissing+3
DashboardsWhat you'll do, onceStandardListed skillMissing+3
Power BINice to have, onceNice to haveListed skillMissing+2
DocumentationNice to have, onceNice to haveListed skillMissing+2
Revenue operationsRequirements, twiceMust haveListed skillNear the topNone
HubSpotRequirements, twiceMust haveListed skillIn ExperienceNone
SalesforceRequirements, twiceMust haveListed skillSkills section onlyNone
SQLRequirements, onceMust haveListed skillIn ExperienceNone
Google SheetsRequirements, onceMust haveListed skillIn ExperienceNone
Data analysisRequirements, onceMust haveListed skillSkills section onlyNone
SalesAbout the role, 4 timesStandardRepeated phraseIn ExperienceNone
AnalystJob description, twiceStandardRepeated phraseIn ExperienceNone
ReportAbout the role, twiceStandardRepeated phraseIn ExperienceNone
Customer successWhat you'll do, onceStandardListed skillIn ExperienceNone
ZapierWhat you'll do, onceStandardListed skillIn ExperienceNone

Points are rounded, so they may not add up exactly.

Readability checks

  1. Email

    Passed

    Found an email address.

  2. Phone

    Passed

    Found a phone number.

  3. Experience heading

    Passed

    Found: Work experience

  4. Education heading

    Passed

    Found: Education

  5. Skills heading

    Passed

    Found: Skills

  6. Dates

    Warning

    3 date ranges under Experience, in mixed formats.

    Give every job a date range in one format, such as Jan 2023 to Mar 2025.

    -5 points
  7. Garbled characters

    Passed

    Every character reads as text.

  8. Length

    Passed

    265 words.

  9. Bullets

    Passed

    12 bullets under Experience.

  10. Numbers in bullets

    Passed

    6 of 12 bullets hold a number.

  11. Icons

    Passed

    No icon characters next to contact details.

  12. Real text

    Not checked

    Pasted text is already text.

  13. Columns, Layout tables, Text boxes, Contact only in header or footer

    Not checked

    Pasted text has no layout.

What the parser read

Your resume as a list of lines, in the reading order our parser rebuilt, with the headings it found.

  1. 01Example candidate
  2. 02Revenue operations analyst
  3. 03candidate@example.com | +1 555 010 0199 | Bangalore
  4. 04Section: SummarySummary
  5. 05Analyst with four years of keeping sales data clean and reports on time for software teams. Comfortable in spreadsheets, SQL and the CRM, and happiest when a manual report becomes a scheduled one.
  6. 06Section: ExperienceWork experience

What to do next

  1. 01Add Looker Studio to an Experience bullet: about +7 keyword points.
  2. 02Add Sales operations to an Experience bullet: about +5 keyword points.
  3. 03Add Pipeline management to an Experience bullet: about +5 keyword points.

Hiring at volume? See resume screening automated

What your browser sent

The checker's line: read your resume, match keywords and check readability, all in this browser, ending at the Your results platform. The route to a server is not taken and ends at a buffer stop. No check has run yet.

After you run a check, this lists every request your browser made during it, from the browser's own timing data.

01How it works

How the checker reads your resume.

Fixed rules, printed in full below. No model is called at any step, and nothing leaves your browser.

How it works

Paste a job description and add your resume as a PDF, a Word file or pasted text. The checker reads the job description, weights its lines by section, so requirements count more than nice-to-haves, and keeps the 25 terms that matter most. It then looks for each one in your resume by name, common alias and word stem, whole words only.

You get two scores side by side, never one ATS score: keyword match, which measures word overlap with this job description, and readability, which starts at 100 and loses points for layouts that resume parsers often misread, such as two columns, tables, text boxes or contact details only in the page header.

Each missing keyword shows how many points it would add, and What the parser read shows your resume in the order our parser rebuilt it. Fixed rules do all of this in your browser. No model is called, and your resume and the job description are never uploaded.

Method

Every rule below is printed from the checker's own settings, so this is exactly what runs. Version .

1. Keywords from the job description

  1. 01Both texts are normalised the same way: one form for look-alike Unicode characters, lower case, straight quotes, one kind of dash, no bullets, invisible or control characters. Tokens longer than 40 characters are ignored, and c++, c#, node.js and ci/cd stay whole.
  2. 02239 common English words and 148 job-ad words (such as "experience", "strong" and "team") never become keywords.
  3. 03Names from the skills list (365 entries with their other names) are matched first, longest name first, as whole words.
  4. 04Other words count when they appear 2 or more times, or once under a must-have heading. Phrases of 2 to 3 words count when they appear 2 or more times. A word already inside a kept keyword is not kept again.
  5. 05Each keyword scores: section weight × 1.5 if it is on the skills list × how often it appears, counted up to 3. The top 25 are kept. With fewer than 5, the check stops and asks for the requirements.
  6. 06In your resume, a keyword matches by its name and its other names, as whole words: "java" never matches inside "javascript". Words outside the skills list also match by a light word stem, so "reports" matches "reporting".
  7. 07Short names that are also everyday words ("go", "r", "pm", "ml", "c") count in a job description only when written with a capital in a list, and match your resume in that short form only when the job description used it.

2. Section weights

Nice to have: weight 1
Headings with "nice to have", "nice-to-have", "bonus", "preferred", "a plus", "good to have"
Must have: weight 2
Headings with "requirements", "required", "must have", "must-have", "what you'll need", "what you will need", "qualifications", "what we're looking for", "what we are looking for"
Not counted
Headings with "benefits", "perks", "what we offer", "about us", "about the company", "equal opportunity", "how to apply", "salary", "compensation"
Standard: weight 1.5
Lines before any heading, and under every other heading

3. The two scores

Keyword match
100 × (sum of the scores of the keywords found in your resume) ÷ (sum of the scores of all kept keywords), rounded
Points if added
100 × (the missing keyword's score) ÷ (sum of the scores of all kept keywords), rounded
Readability
Starts at 100 and loses the points below, never under 0
Skills section only
A keyword found only under Skills counts as found, with the tip to also show it in an Experience bullet

There is no target score and no band such as good or poor. The two scores are never added together.

4. Readability deductions

Readability deductions, from 100
CheckWhen it appliesPoints off
Real textNeeds the fileUnder 200 characters of text per pagePoints off: Score 0, check stops
ColumnsNeeds the fileTwo groups of line starts side by side on the page, each holding at least 25% of the linesPoints off: 15
Layout tablesNeeds the fileA Word table holds over 30% of the textPoints off: 10
Text boxesNeeds the fileAny Word text box holds textPoints off: 10
Contact only in header or footerNeeds the fileEmail or phone found only in the page header or footerPoints off: 10
EmailNo email address anywherePoints off: 10
PhoneNo phone number (8 or more digits; + ( ) - and spaces allowed)Points off: 5
Experience headingNone of: experience, work experience, professional experience, employment history, work historyPoints off: 10
Education headingNone of: education, education and training, academic background, education and qualificationsPoints off: 5
Skills headingNone of: skills, technical skills, key skills, core competenciesPoints off: 5
DatesNo date ranges under Experience, or date formats mixed (Jan 2024 next to 01/2024 or 2024)Points off: 5
Garbled charactersOver 1% of characters are replacement, private-use or control charactersPoints off: 10
LengthUnder 250 words (10); over 1,200 words or 3 pages (5)Points off: 10 or 5
BulletsFewer than 3 bullets under ExperiencePoints off: 5
Numbers in bulletsUnder 20% of bullets contain a numberPoints off: 3 (a tip)
IconsNeeds the filePrivate-use characters (icon fonts) next to contact detailsPoints off: 5

5. Limits and stops

Resume file
PDF or Word .docx, up to 5 MB; PDF up to 10 pages
Word file contents
Read in steps, stopping at 5 MB of unzipped text per part and 20 MB in total
Pasted resume
Up to 30,000 characters; layout checks are skipped
Job description
300 to 20,000 characters
Time limit
30 seconds, then the job stops
English only
Stops when under 15% of words are common English words
Same text twice
Stops when the two texts share over 80% of their 5-word sequences
Copied from the job description
A warning, no deduction: a run of 12 or more words copied, or one keyword used more than 8 times
Broken fragments
A warning, no deduction: over 30% of lines are under 3 characters

Assumptions

  • Thresholds are starting values, checked against made-up fixtures, and may change with a new version.
  • Resume parsers differ. These checks flag layouts that parsers often misread; they do not copy any one product.
  • The skills list is written by hand (365 entries), so a real skill missing from it can still count as a word or phrase.
Version
Cite it as
Todkett, ATS resume checker, version 25 Oct 2026, https://todkett.com/tools/ats-resume-checker/

02Limits

What it does not do

  • It measures word overlap with one job description, not your chances of being hired.
  • There is no standard ATS score; employers' systems differ.
  • English resumes and job descriptions only.
  • A resume that is a scanned image cannot be read.

03Stress test

How we test this tool.

The same checks as every automation on this site. Checks that need a server or a model say Not needed, with the reason.

ATS resume checker, check by check

Not yet0 of 4 checks that apply have passed

No recorded test run yet.

Checks marked Not yet are still open.

Stress test for the ATS resume checker: each check, what it checks and its status
Check

ST1Test set

Not yet

The unit tests and the made-up resume files: one column, two columns, scanned, a Word table layout, contact details in the header, locked and damaged.

What this means: Test set

ST2Prompt attack

Not yet

The shared injection strings pasted as the job description and as the resume: they are read as plain text and change nothing.

What this means: Prompt attack

ST3Run twice

Not needed

Runs in your browser: no server

Sending the same input twice, or rerunning after a crash, never doubles a record, a message or a payment.

What this means: Run twice

ST4Failure recovery

Not needed

Runs in your browser: no server

A failed call is retried a set number of times. If it still fails, the item is parked for a person. Nothing is dropped silently.

What this means: Failure recovery

ST5Load and limits

Not yet

A 6 MB file, an 11-page file, a 20,001-character job description, a Word zip bomb and 50 checks back to back.

What this means: Load and limits

ST6Failure alert

Not needed

Runs in your browser: no server

If a run fails, a named person gets an email saying which step failed.

What this means: Failure alert

ST7Human sign-off

Not needed

Runs in your browser: no server

Nothing reaches a customer, a candidate or a money system without a person, unless a fixed rule allows it.

What this means: Human sign-off

ST8Rules around the AI

Not needed

No AI step

Fixed rules run before the AI and check its answer after. If the AI fails or is down, the workflow falls back to a safe result.

What this means: Rules around the AI

No upload

Not yet

The network log during a full check: no request may hold resume text, job text or file bytes.

Check it yourselfWhat this means: No upload

0 passed, 5 not needed, 4 not yet. We show what we tested, never the test data.

What we test

04Changes

What changed

  1. First version, from the free tools architecture.
  2. Built the checker, its example result and its unit tests.

05Questions

Questions about the checker.

  1. Is my resume uploaded?

    No. The file is read inside your browser and never sent anywhere. You can watch your browser's network panel while it runs to check.

  2. Does a model or chatbot score my resume?

    No. Fixed rules match words and check the layout. The rules and weights are printed in the Method block on this page.

  3. What score should I aim for?

    There is no target. Employers' systems differ, and there is no standard ATS score. Use the results to find gaps, not to hit a number.

  4. Which files can I check?

    PDF and Word (.docx) files up to 5 MB and 10 pages, or pasted text. Save an old .doc file as .docx or PDF first.

  5. Does it work in other languages?

    No. It reads English resumes and job descriptions only, and stops rather than give a wrong result.

From one resume to every applicant.

Each workflow page walks through the whole job step by step: the fixed rules, the one AI step and what a person checks. Build it yourself in n8n, and book a call if you get stuck.

07Credits

Credits and licenses

Reading PDF files
PDF.js by Mozilla, pdfjs-dist version 6.4.299, in its own Worker in your browser
Apache License 2.0
Unzipping Word files
fflate by Arjun Barrett, version 0.8.3, in the checker's Worker
Expat license, permissive
Skills list
365 names of tools, methods and skills, with their other names, written by Todkett
No third-party data