Skip to main content

Free ATS resume checker

Drop in a PDF and we will run 20 compatibility checks against the failure modes that real applicant tracking systems break on. Workday, Taleo, Greenhouse, Lever, iCIMS, and SmartRecruiters all extract PDF text first, then run a parser on top. Most resume problems happen at that first step.

Your resume never leaves your browser. Parsing runs locally with pdfjs. Once you close or refresh the page, the file is gone. We cannot see your resume even if we wanted to.

100% client-side. Your PDF is parsed in your browser using pdfjs. No bytes are uploaded, no analytics, no telemetry. Refresh the tab and everything is gone.

Upload resume

What an ATS actually does

An applicant tracking system ingests your resume, extracts structured fields (name, email, employer, dates, skills), and indexes the result so recruiters can search and filter. Modern stacks like Workday and SmartRecruiters use ML parsing on top of text extraction; older ones like Taleo use rule-based dictionaries. Both stages still depend on the PDF text-extraction step, which reads glyphs in document order. If your layout breaks that order, the downstream parser never gets a chance to recover.

This tool flags the layout and content signals that break that first step. It does not score against a specific job description, it does not check spelling, and it does not produce a fake AI confidence number. The score is mechanical and explainable: we subtract a fixed penalty per failed check and show you exactly what failed and why.

What we check, and why

Each check is grounded in the documented behaviour of a major ATS. We track failures that affect real candidates, not folklore. The categories are formatting (layout that survives text extraction), structure (sections and page count), content (bullets, dates, achievements), keywords (technical terms present), and contact (recoverable email, phone, links).

  • Contact info hidden in PDF headers or footers

    Workday and several iCIMS tenants strip the PDF header region during text extraction. An email or phone there disappears entirely from the parsed candidate profile.

  • Multi-column or sidebar layouts

    Every major ATS reads PDFs in document order. Two-column resumes interleave sidebar text into the main column mid-sentence, scrambling your work history.

  • Tables for layout

    Workday and Taleo concatenate cells across rows. Right-aligned dates inside a single-row table usually survive; nested tables routinely merge employer names with the next row's dates.

  • Stylised bullet glyphs (arrows, diamonds, stars)

    Taleo and older iCIMS tenants either drop these characters or split a single bullet into separate job entries. Stick to a round bullet, hyphen, or asterisk.

  • Custom fonts with broken embeddings

    If a font is not embedded fully, glyphs come through as question marks. Use Arial, Calibri, Helvetica, Times, Georgia, Verdana, Open Sans, or Roboto.

  • Exotic date formats

    Parsers want 'January 2020' or '01/2020'. 'Jan 20', 'Q1 2020', or '2020.01' are routinely flagged as unparsable.

  • Non-standard section headers

    Dictionary-based parsers skip the whole section if the heading is a cute synonym. 'Where I have Worked' or 'My Story' will not register as Experience.

  • Images for icons, headshots, or logos

    Best case the image is ignored. Worst case the ATS runs OCR over it and injects noise into the searchable index, hurting keyword ranking.

How the score works

Start at 100. Subtract 25 per failed blocker, 8 per failed warning, 2 per failed info item. Floor at 0. Blockers are issues that stop a parser cold: missing contact info, no recognisable name, three or more pages. Warnings degrade match quality: tables, images, multi-column layouts, inconsistent fonts. Info items are polish: weak verbs, filler buzzwords, missing LinkedIn URL.

We deliberately do not produce a 0-100 score with fake confidence intervals. Every point has a reason you can read in the issues list above.

Common questions

What is an ATS scan, and what does it check?
An applicant tracking system does not read your resume the way a person does. It extracts the raw text first, in the order the glyphs sit in the file, then runs a parser over that text to pull out your name, contact details, employers, dates, and skills. An ATS scan checks whether that first step survives your layout. Most rejections people blame on keywords are actually extraction failures: the text came out in the wrong order, or a field never came out at all, so the parser had nothing to work with.
Is this ATS resume checker free?
Yes, and there is no account, no trial, and no paywalled result. You get the full score, every failed check, and the reason each one failed. Nothing is held back behind an upgrade.
Does it work for a CV as well as a resume?
Yes. The checks are about structure and extraction rather than the name of the document, so a CV runs through exactly the same way. Length is the one thing to watch: the page-count check is tuned for the one to two page convention common in tech hiring, so an academic CV that runs longer will flag on that check even though the length is correct for its field. Read that particular flag in the context of the role you are applying for.
Does my resume get uploaded anywhere?
No. The file is parsed in your browser with pdfjs and never leaves your device. There is no upload step and no copy kept on a server, so the content is gone as soon as you close or refresh the page.
What score should I be aiming for?
Treat anything with zero blockers as the real bar. Blockers are the checks that stop a parser outright, such as contact details that cannot be recovered or no recognisable name, and clearing those matters far more than the headline number. Warnings are worth fixing when they are cheap, and info items are polish. A resume at 100 with a dull set of bullets will still lose to one at 85 that shows concrete outcomes.
My resume scores well here but I still get rejected. Why?
Because this checks whether the system can read you, not whether the company wants you. A clean parse gets your application into the pile intact; it does not make you a match for the role, and it cannot help with the far more common reasons for rejection, which are competition, a genuine gap against the requirements, or a role that was already close to filled. Fix the mechanical failures here, then put the effort into the evidence in your bullets.

Resume tips by role

Role-specific guides on which keywords ATS keyword search prioritises, which bullets recruiters skim first, and which sections to cut for senior versus junior positioning.