We built a free ATS resume checker that runs entirely in the browser
Every placement season, students in India pay for "ATS score" tools or upload their resumes to sites they've never heard of, hoping for a magic number. Most of those tools score keyword density, which isn't how applicant tracking systems actually work.
We run Hirastra, a site that lists fresher IT jobs verified on 1,300+ companies' own careers pages. Our users kept asking "is my resume ATS-friendly?", so we rebuilt our checker from how real ATS software screens resumes. It's free, and the resume never leaves your browser.
Try it: **hirastra.com
What real ATS software actually does
Before writing code, we read the documentation of the systems Indian employers use (Workday, Greenhouse, Lever, SuccessFactors, iCIMS) and how recruiters use them. Three things matter far more than "keyword score":
1. Knock-out questions, not resume wording. Most automatic rejections come from the application form: graduating batch, degree or branch, CGPA cut-offs, backlogs. The resume text rarely rejects anyone on its own.
2. Parsing. The ATS turns your PDF into fields (name, education, experience, skills). If parsing breaks (two columns read in the wrong order, text inside images, a table that scrambles your degree and year), recruiter search and any AI matching never see the real you.
3. Recruiter search and matching. Recruiters filter and search for skills and titles. Newer matching features compare your resume with the job requirement by requirement: a required skill counts more than a preferred one, and a skill you used in a dated project or internship counts more than one you only listed.
We wrote that up in more detail here: How ATS software really screens fresher resumes.
So instead of one magic number, the checker gives four separate answers:
- Eligibility flags (batch, degree, years): pass or fail, never averaged into a score.
- Parse health: Clean, Risky or Broken, with the exact text a parser would see.
- Resume strength (without a job): weighted toward what has evidence behind it, like real internships or projects, measurable results and spelling.
- Job match (with a job description): requirement by requirement, required before preferred, used skills before listed ones. Repeating a keyword earns nothing.
Why it runs in the browser
A resume has your phone number, email, address and college. We didn't want to store any of that, so everything happens on the device:
- PDF reading uses PDF.js in the page. We read the text items with their positions, which lets us detect things a parser struggles with: multi-column layouts (we compare the natural reading order with a naive left-to-right reading), tables (rows of 3+ cells whose x-positions line up across rows), text hidden behind icons, and links attached to icons rather than written out.
- Skills are matched against a dictionary of roughly 270 tech skills with their aliases ("JS" and "JavaScript", "Postgres" and "PostgreSQL"), with care for ambiguous words ("Go", "R", "C").
- Spelling uses nspell with an English dictionary loaded on the client, plus a list of tech terms so "Kubernetes" isn't flagged.
- Job match reads the job's requirements and checks each one against where the skill appears in the resume (a dated experience or project bullet, or only a skills list).
Your resume is never sent to a server. The page only downloads things to your browser (the PDF reader, the spelling dictionary and a public list of open jobs to suggest matches); the resume itself is read and scored on your device.
Things that broke on real resumes
Real student resumes taught us more than any spec:
- Letter-spaced headings. Many templates write headings like W O R K E X P E R I E N C E or use small caps that PDF.js returns as W ORK E XPERIENCE. Our section detection missed them, so the checker said "no experience" to students who had internships. We now normalise spaced and split headings before matching section names, and if there's no heading at all, any dated entry with a job title counts as experience.
- Numbers before nouns. "Built 5+ production REST APIs" is a measurable result, but our first metric detector only looked for "%" and "₹". It now understands counts with words before the noun.
- Skills on a project's stack line. "Stack: React, Node, MongoDB" under a project means the skill was used, not just listed. Treating it as a listed skill under-scored good projects.
- "Low match" for good fits. Our first version suggested open jobs by skill overlap alone, then scored them lower on the real match. Now suggestions are re-scored with the full requirement-by-requirement match, ineligible jobs (wrong batch, too many years, student-only internships for graduates) are dropped, and nothing below 60 is shown.
What it doesn't do
We'd rather be honest about limits:
- It can't know a specific company's knock-out questions or internal ranking; it shows the patterns the major systems share.
- Scanned (image) PDFs have no text to read; the checker tells you, but can't fix them.
- A high score isn't a promise of a shortlist. It means a parser can read your resume and a recruiter searching for the job's skills will find them.
Try it
- Free ATS resume checker: **hirastra.com
- Verified fresher IT jobs with direct company apply links: **hirastra.com
- Our method for verifying openings: **hirastra.com
If you try it on your resume and something looks wrong, tell us in the comments. Every bug report from a real resume has made it better.
The Hirastra team
Mentions
We built a free ATS resume checker that runs entirely in the browser Every placement season, students in India pay for "ATS score" tools or upload their resumes to sites they've never heard of, hoping for a magic number. Most of those tools score keyword density, which isn't how applicant tracking systems actually work. We run Hirastra, a site that lists fresher IT jobs verified on 1,300+ companies' own careers pages. Our users kept asking "is my resume ATS-friendly?", so we rebuilt our checker from how real ATS software screens resumes. It's free, and the resume never leaves your browser. Try it: **hirastra.com What real ATS software actually does Before writing code, we read the documentation of the systems Indian employers use (Workday, Greenhouse, Lever, SuccessFactors, iCIMS) and how recruiters use them. Three things matter far more than "keyword score": 1. Knock-out questions, not resume wording. Most automatic rejections come from the application form: graduating batch, degree or branch, CGPA cut-offs, backlogs. The resume text rarely rejects anyone on its own. 2. Parsing. The ATS turns your PDF into fields (name, education, experience, skills). If parsing breaks (two columns read in the wrong order, text inside images, a table that scrambles your degree and year), recruiter search and any AI matching never see the real you. 3. Recruiter search and matching. Recruiters filter and search for skills and titles. Newer matching features compare your resume with the job requirement by requirement: a required skill counts more than a preferred one, and a skill you used in a dated project or internship counts more than one you only listed. We wrote that up in more detail here: How ATS software really screens fresher resumes. So instead of one magic number, the checker gives four separate answers: - Eligibility flags (batch, degree, years): pass or fail, never averaged into a score. - Parse health: Clean, Risky or Broken, with the exact text a parser would see. - Resume strength (without a job): weighted toward what has evidence behind it, like real internships or projects, measurable results and spelling. - Job match (with a job description): requirement by requirement, required before preferred, used skills before listed ones. Repeating a keyword earns nothing. Why it runs in the browser A resume has your phone number, email, address and college. We didn't want to store any of that, so everything happens on the device: - PDF reading uses PDF.js in the page. We read the text items with their positions, which lets us detect things a parser struggles with: multi-column layouts (we compare the natural reading order with a naive left-to-right reading), tables (rows of 3+ cells whose x-positions line up across rows), text hidden behind icons, and links attached to icons rather than written out. - Skills are matched against a dictionary of roughly 270 tech skills with their aliases ("JS" and "JavaScript", "Postgres" and "PostgreSQL"), with care for ambiguous words ("Go", "R", "C"). - Spelling uses nspell with an English dictionary loaded on the client, plus a list of tech terms so "Kubernetes" isn't flagged. - Job match reads the job's requirements and checks each one against where the skill appears in the resume (a dated experience or project bullet, or only a skills list). Your resume is never sent to a server. The page only downloads things to your browser (the PDF reader, the spelling dictionary and a public list of open jobs to suggest matches); the resume itself is read and scored on your device. Things that broke on real resumes Real student resumes taught us more than any spec: - Letter-spaced headings. Many templates write headings like W O R K E X P E R I E N C E or use small caps that PDF.js returns as W ORK E XPERIENCE. Our section detection missed them, so the checker said "no experience" to students who had internships. We now normalise spaced and split headings before matching section names, and if there's no heading at all, any dated entry with a job title counts as experience. - Numbers before nouns. "Built 5+ production REST APIs" is a measurable result, but our first metric detector only looked for "%" and "₹". It now understands counts with words before the noun. - Skills on a project's stack line. "Stack: React, Node, MongoDB" under a project means the skill was used, not just listed. Treating it as a listed skill under-scored good projects. - "Low match" for good fits. Our first version suggested open jobs by skill overlap alone, then scored them lower on the real match. Now suggestions are re-scored with the full requirement-by-requirement match, ineligible jobs (wrong batch, too many years, student-only internships for graduates) are dropped, and nothing below 60 is shown. What it doesn't do We'd rather be honest about limits: - It can't know a specific company's knock-out questions or internal ranking; it shows the patterns the major systems share. - Scanned (image) PDFs have no text to read; the checker tells you, but can't fix them. - A high score isn't a promise of a shortlist. It means a parser can read your resume and a recruiter searching for the job's skills will find them. Try it - Free ATS resume checker: **hirastra.com - Verified fresher IT jobs with direct company apply links: **hirastra.com - Our method for verifying openings: **hirastra.com If you try it on your resume and something looks wrong, tell us in the comments. Every bug report from a real resume has made it better. The Hirastra team
@no_cluesafe Не нужно, язык легко определяется по тексту - github.com/wooorm/franc/tree/main , или любой ИИшкой, либа может перепутать русский с болгарским, ИИшка распознает.