RefolkCandidates

ATS resume checker

An ATS resume checker that tells you what an ATS really does

Applicant tracking systems do not read your resume and reject you. They store it, parse it badly, and let a human search it. That changes what is worth fixing: not a mystical keyword score, but eight mechanical things that decide whether your resume survives parsing and holds a screener past the first twenty seconds.

Free to start. No card.

An illustration of a resume being checked. 6 mechanical checks: Parses cleanly (pass), Reachable (pass), Bullets lead with the outcome (warn), Achievements carry numbers (pass), No filler phrases (fail), Written without pronouns (pass).

checks, and each one is deterministic
8
a screener spends on the first pass
~20s
invented match percentages
0

157 boards I read every day, straight from the source

StripeDatabricksAnthropicDoorDashDatadogMongoDBSamsaraBrexCloudflareElasticPinterestScale AIRedditTwilioAirbnbAffirmFigmaCoinbaseLyftAsanaRobinhoodInstacartGustoDiscordAirtableDropboxSumUpOktaHelloFreshLucid MotorsZiplineCelonisAdyenRobloxGitLabRiot GamesDoctolibFlixFlexportEpic GamesGrafana LabsNetskopeIntercomPostmanRubrikTideNuroN26MonzoFaireAbnormal SecurityChainguardDuolingoChimePelotonCartaTogether AIMercuryGetYourGuideFastlyCabifyTailscaleSweetgreenCogniteFREENOWMixpanelAmplitudeAlgoliaMarqetaBettermentFeedzaiKomodo HealthRaisinGoStudentWebflowCulture AmpContentfulTruecallerKhan Academy
GlossierGreenhousePagerDutyDataikuGinkgo BioworksMotiveHootsuiteCalendlySquarespaceUdemyTypeformTaskRabbitLatticeOpenAIElevenLabsSierraRampCursorVantaReplitModalLinearAirwallexSnowflakeHarveyDeliverooCheckout.comCohereDecagonPreplyPlaidAlanNubankLangChainPerplexity1PasswordHeadwaySupabaseAshbyThumbtackBenchlingSentryTrainlineHopperMiroPleoAbridgeThought MachineJobberWealthsimpleMollieQontoRenderConfluentSafetyCulturePoshmarkMultiverseTeleportAwayMarshmallowZapierSubstackFortoPatreonImprobableLedgerPineconeMaterial SecurityGopuffIncluded HealthSpotifyFarfetchdLocalRoZopaSwileContentsquareWealthfront

What an applicant tracking system actually does

The folklore says a robot scores your resume and bins it below a threshold. That is not how the software works. An applicant tracking system is a database with a search box: it stores applications, chops your resume into fields so a recruiter can filter on them, and shows them a list. The rejections are done by people, or by filters those people set, and the filters are usually blunt.

  • Parsing is the part that genuinely breaks. Your resume is chopped into name, contact, employment history, education, and skills, and a layout it cannot follow produces a mangled record before a human sees anything.
  • Search is the part that decides. A recruiter filters on a title, a location, a skill keyword, or a work authorisation answer, and reads what comes back.
  • Knockout questions do auto-reject, and they are questions you answered in the form, not text on your resume. Work authorisation and years of experience are the usual two.
  • There is no industry-standard score inside the system that decides your fate. Third-party checkers that quote you a percentage against a posting invented that number themselves.

The eight checks worth running

These are the mechanical ones, which means they are deterministic: the same resume always scores the same, so editing toward a pass is a real change rather than a reroll. None of them requires a model to judge, which is exactly why they can be trusted.

  • Length. A resume with real content runs about 400 to 600 words per page. Under 260 reads as underwritten; over about 1,100 is a screener skimming rather than reading.
  • Quantified bullets. At least 40% of your bullets should contain a number. A figure is what turns a claim into evidence.
  • Outcome-first bullets. Anything starting with responsible for, worked on, helped, assisted, or involved in describes a duty rather than a result.
  • Filler. Results-driven, team player, passionate about, detail-oriented, proven track record. Each one is a line a screener skips.
  • Pronouns. A resume drops them: Led the migration, not I led the migration.
  • Reachable. An email address in the body text, not in a header or footer where parsers routinely drop it.
  • Parseable. No tables, no images, no text inside graphics. Each of those turns into a mangled field or nothing at all.
  • Skill coverage. The skills you claim have to appear in the words on the page, because a keyword filter reads the text, not your intentions.

What actually breaks a resume in a parser

Almost every parsing failure is a layout decision that looked good in a document editor. The failure is silent, which is what makes it expensive: nothing tells you your last two jobs landed in the education field, and the recruiter never sees a record worth searching.

  • Two-column layouts. Many parsers read straight across, interleaving your skills sidebar into your job descriptions line by line.
  • Contact details in the page header or footer. A common parser drops both entirely, so your application arrives with no email on it.
  • Tables, including invisible ones used for alignment. A row becomes one run-on line, or nothing.
  • Text inside an image or a logo. It is not text, and no amount of it counts as a keyword.
  • A PDF exported as a scan or built out of vector outlines, which is an image of a resume rather than a resume.
  • Creative section headings. Where I Have Been is not recognised as Experience. Boring headings parse.
  • Dates written in a format nobody else uses. Month Year to Month Year is the one that survives.

Keywords, without the keyword stuffing

Keywords matter for one narrow reason: a recruiter filtering a database on a term will not find a resume that does not contain it. That is a real effect and it is much smaller than the advice industry suggests. What it does not justify is a block of white text at the bottom of the page, which is the single fastest way to be dropped by the human who finds it.

  • Use the employer's word for the thing, where you honestly have the thing. If the posting says PostgreSQL and your resume says relational databases, say PostgreSQL.
  • Put the skill next to the work it was used for, not only in a list. A skills list nobody can attach to a job reads as decoration.
  • Do not synonym-launder. One tool is not another because the posting asked for the second one, and the interview is where that gets found out.
  • White text, hidden keywords, and keyword blocks in a footer are detectable and are treated as what they are.

Fixing it in the order that pays

The checks are not equally valuable. Two of them decide whether your resume exists as a searchable record at all, and the rest decide whether a human keeps reading. Do them in that order.

  • First, anything that breaks parsing: columns, tables, images, headers. A resume that parses badly cannot be rescued by better bullets.
  • Second, contact details as plain text near the top.
  • Third, the bullets: outcome first, then a number wherever your work supports one.
  • Fourth, the words the posting uses, where you honestly have the thing behind them.
  • Last, length. Cut the oldest roles to a line each rather than trimming the recent ones, because length signals scope.

How to check a resume against an applicant tracking system

  1. 1

    Strip the layout

    Copy your resume and paste it into a plain text editor. What you see is roughly what a parser sees. If the order is scrambled or your contact details vanished, that is the problem, and it is a layout problem rather than a writing one.

  2. 2

    Run the mechanical checks

    Length, quantified bullets, outcome-first openers, filler phrases, pronouns, a reachable email, no tables or images, and skills that appear in the text. Each one is objective and each one has a specific fix.

  3. 3

    Compare against one posting

    Read the requirements and mark each as covered, partly covered, or absent. The absent ones are your real gaps, and closing them in an interview is a different job from hiding them on a resume.

  4. 4

    Rewrite, do not restructure

    Use the employer's word for anything you honestly have. Move the matching work up. Leave the gaps as gaps.

  5. 5

    Re-run before every send

    Tailoring per posting reintroduces problems: a bullet moved up loses its number, a skill list grows past what you can defend. Checking is cheap and sending a broken file is not.

17.3k
open right now
157
companies hiring right now
30%
of those openings are remote
Mostly in

San Francisco, New York, London

Counted by Refolk from the public job boards of 157 companies, refreshed through the day. These are live openings, not a forecast, so the numbers move as roles are posted and filled.

FAQ

Do applicant tracking systems automatically reject resumes?
Not on the strength of the resume text. They auto-reject on knockout questions you answered in the application form, usually work authorisation or a minimum years-of-experience answer. Everything else is a recruiter filtering the database and reading what comes back, which is why parsing cleanly and containing the right words matters more than any score.
Is my resume ATS-friendly?
Paste it into a plain text editor. If the reading order is scrambled, your contact details disappear, or a table collapses into a run-on line, it is not, and no rewriting of the bullets will fix that. If the plain text version reads in the right order with your email near the top, the layout is fine and the remaining work is in the writing.
PDF or Word?
PDF, unless the posting asks for Word, and as long as it is a real text PDF rather than a scan or an export made of outlines. Select the text in your PDF: if you cannot, neither can the parser. Some older systems still prefer .docx, which is the one case worth honouring the instruction on the form over your own preference.
What ATS score should I aim for?
There is no score inside the system to aim for. Third-party checkers that quote a match percentage against a posting made that number up, and the number moves if you paste the same resume twice. Judge the mechanical checks, which are objective, and judge the gap list against the posting, which is actionable.
Do columns and templates really break parsing?
Columns, yes, often, because many parsers read straight across a page and interleave a sidebar into the body line by line. Templates break it when they achieve their layout with tables, text boxes, or graphics. A single-column layout with standard headings and no tables is boring and it survives every parser.
Should I tailor keywords to each job?
Use the employer's exact word for anything you honestly have, and put it next to the work where you used it. That is tailoring. Adding terms for things you have not done is not tailoring, it is a problem you have deferred to the interview.
Does it work on a resume I wrote somewhere else?
Yes. Paste it in, it is read into a structured profile first, and the checks run against the text from there. You do not have to rebuild anything to find out what is wrong with what you already have.

Related

The rest of the toolkit

Paste your career in once.

Everything above runs off one profile: the resume, the version per job, the letter, the score, and the record of what you sent.

Get started