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
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.
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
| Keyword | From the job description | Weight | Why it counts | In your resume | Points if added | Show the lines |
|---|---|---|---|---|---|---|
| Looker Studio | What you'll do, twice | Standard | Listed skill | Missing | +7 | |
| Sales operations | Requirements, once | Must have | Listed skill | Missing | +5 | |
| Pipeline management | Requirements, once | Must have | Listed skill | Missing | +5 | |
| Written communication | Requirements, once | Must have | Listed skill | Missing | +5 | |
| Sales leaders | About the role, twice | Standard | Repeated phrase | Missing | +5 | |
| Forecasting | What you'll do, once | Standard | Listed skill | Missing | +3 | |
| Dashboards | What you'll do, once | Standard | Listed skill | Missing | +3 | |
| Power BI | Nice to have, once | Nice to have | Listed skill | Missing | +2 | |
| Documentation | Nice to have, once | Nice to have | Listed skill | Missing | +2 | |
| Revenue operations | Requirements, twice | Must have | Listed skill | Near the top | None | |
| HubSpot | Requirements, twice | Must have | Listed skill | In Experience | None | |
| Salesforce | Requirements, twice | Must have | Listed skill | Skills section only | None | |
| SQL | Requirements, once | Must have | Listed skill | In Experience | None | |
| Google Sheets | Requirements, once | Must have | Listed skill | In Experience | None | |
| Data analysis | Requirements, once | Must have | Listed skill | Skills section only | None | |
| Sales | About the role, 4 times | Standard | Repeated phrase | In Experience | None | |
| Analyst | Job description, twice | Standard | Repeated phrase | In Experience | None | |
| Report | About the role, twice | Standard | Repeated phrase | In Experience | None | |
| Customer success | What you'll do, once | Standard | Listed skill | In Experience | None | |
| Zapier | What you'll do, once | Standard | Listed skill | In Experience | None |
Points are rounded, so they may not add up exactly.
Readability checks
Email
PassedFound an email address.
Phone
PassedFound a phone number.
Experience heading
PassedFound: Work experience
Education heading
PassedFound: Education
Skills heading
PassedFound: Skills
Dates
Warning3 date ranges under Experience, in mixed formats.
Give every job a date range in one format, such as Jan 2023 to Mar 2025.
-5 pointsGarbled characters
PassedEvery character reads as text.
Length
Passed265 words.
Bullets
Passed12 bullets under Experience.
Numbers in bullets
Passed6 of 12 bullets hold a number.
Icons
PassedNo icon characters next to contact details.
Real text
Not checkedPasted text is already text.
Columns, Layout tables, Text boxes, Contact only in header or footer
Not checkedPasted 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.
- 01Example candidate
- 02Revenue operations analyst
- 03candidate@example.com | +1 555 010 0199 | Bangalore
- 04Section: SummarySummary
- 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.
- 06Section: ExperienceWork experience
What to do next
- 01Add Looker Studio to an Experience bullet: about +7 keyword points.
- 02Add Sales operations to an Experience bullet: about +5 keyword points.
- 03Add Pipeline management to an Experience bullet: about +5 keyword points.
Hiring at volume? See resume screening automated
What your browser sent
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.
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
- 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.
- 02239 common English words and 148 job-ad words (such as "experience", "strong" and "team") never become keywords.
- 03Names from the skills list (365 entries with their other names) are matched first, longest name first, as whole words.
- 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.
- 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.
- 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".
- 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
| Check | When it applies | Points off |
|---|---|---|
| Real textNeeds the file | Under 200 characters of text per page | Points off: Score 0, check stops |
| ColumnsNeeds the file | Two groups of line starts side by side on the page, each holding at least 25% of the lines | Points off: 15 |
| Layout tablesNeeds the file | A Word table holds over 30% of the text | Points off: 10 |
| Text boxesNeeds the file | Any Word text box holds text | Points off: 10 |
| Contact only in header or footerNeeds the file | Email or phone found only in the page header or footer | Points off: 10 |
| No email address anywhere | Points off: 10 | |
| Phone | No phone number (8 or more digits; + ( ) - and spaces allowed) | Points off: 5 |
| Experience heading | None of: experience, work experience, professional experience, employment history, work history | Points off: 10 |
| Education heading | None of: education, education and training, academic background, education and qualifications | Points off: 5 |
| Skills heading | None of: skills, technical skills, key skills, core competencies | Points off: 5 |
| Dates | No date ranges under Experience, or date formats mixed (Jan 2024 next to 01/2024 or 2024) | Points off: 5 |
| Garbled characters | Over 1% of characters are replacement, private-use or control characters | Points off: 10 |
| Length | Under 250 words (10); over 1,200 words or 3 pages (5) | Points off: 10 or 5 |
| Bullets | Fewer than 3 bullets under Experience | Points off: 5 |
| Numbers in bullets | Under 20% of bullets contain a number | Points off: 3 (a tip) |
| IconsNeeds the file | Private-use characters (icon fonts) next to contact details | Points 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.
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.
| Check | What it checks | Status |
|---|---|---|
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. | 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. | Not yet |
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. | The shared injection strings pasted as the job description and as the resume: they are read as plain text and change nothing. | Not yet |
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. | Sending the same input twice, or rerunning after a crash, never doubles a record, a message or a payment. | Not needed Runs in your browser: no server |
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. | 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. | Not needed Runs in your browser: no server |
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. | A 6 MB file, an 11-page file, a 20,001-character job description, a Word zip bomb and 50 checks back to back. | Not yet |
ST6Failure alert Not needed Runs in your browser: no server If a run fails, a named person gets an email saying which step failed. | If a run fails, a named person gets an email saying which step failed. | Not needed Runs in your browser: no server |
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. | Nothing reaches a customer, a candidate or a money system without a person, unless a fixed rule allows it. | Not needed Runs in your browser: no server |
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. | 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. | Not needed No AI step |
No upload Not yet The network log during a full check: no request may hold resume text, job text or file bytes. | The network log during a full check: no request may hold resume text, job text or file bytes. | Not yet |
0 passed, 5 not needed, 4 not yet. We show what we tested, never the test data.
What we test04Changes
What changed
- First version, from the free tools architecture.
- Built the checker, its example result and its unit tests.
05Questions
Questions about the checker.
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.
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.
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.
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.
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