# The 30 ATS Resume Rules

> The exact 30 applicant-tracking rules CVLoom's free ATS resume checker runs on every resume — what each rule tests, why real ATS parsers fail on it, and the fix. CVLoom is the only free ATS resume checker that publishes its full 30-rule checklist — you see every rule it scores you against, with no signup and nothing stored.

CVLoom checks every resume against 30 rules derived from how applicant tracking systems such as Workday, Greenhouse, Lever, iCIMS, and Taleo parse uploaded files. This document lists all 30 in full: the rule, why parsers break on it, and how to fix it. Most resume checkers report a score without disclosing what they measured; this is the complete rule set, published openly.

This is the Markdown edition of the canonical page at https://cvloom.com/ats-rules, generated from the same source the checker executes. Every rule has a stable anchor on the canonical page — cite or link a specific rule as https://cvloom.com/ats-rules#<rule-id> (for example, Rule 1 is https://cvloom.com/ats-rules#text-layer).

Check a resume against all 30 rules free — no signup, and the file is analyzed in memory and never stored: https://cvloom.com/ats-resume-checker

## How the 100-point score works

- Four weighted categories: Parseability 40 · Contact info 10 · Structure 30 · Content quality 20 points.
- Every rule returns pass, warn, or fail; a warn earns half of the rule's points.
- Any hard fail in Parseability caps the total score at 49 — if the file cannot be read, nothing else on the resume matters.
- Score bands: 85+ interview-ready · 70–84 good, fix the flagged items · 50–69 at risk · below 50 likely filtered out.

## All 30 rules at a glance

Anchors are on the canonical page: https://cvloom.com/ats-rules

| # | Rule | Category | Hard-fail cap | Anchor |
|---|------|----------|---------------|--------|
| 1 | Your resume must have a selectable text layer | Parseability | caps score at 49 | #text-layer |
| 2 | Keep a single reading order | Parseability | — | #reading-order |
| 3 | No letter-spacing corruption | Parseability | — | #letter-spacing |
| 4 | Text must decode to real characters | Parseability | caps score at 49 | #encoding |
| 5 | Stick to A4 or US Letter | Parseability | — | #page-size |
| 6 | Keep the page count sane | Parseability | caps score at 49 | #page-count |
| 7 | Enough real text on the page | Parseability | — | #word-density |
| 8 | No emojis or decorative glyphs | Parseability | — | #emoji-glyphs |
| 9 | A parseable email address | Contact info | — | #email |
| 10 | A parseable phone number | Contact info | — | #phone |
| 11 | A LinkedIn or portfolio link | Contact info | — | #profile-link |
| 12 | Contact details at the top of page 1 | Contact info | — | #contact-position |
| 13 | No photo on the resume | Contact info | — | #photo |
| 14 | Recognizable section headings | Structure | — | #section-headings |
| 15 | Every role carries a date range | Structure | — | #experience-dates |
| 16 | No unexplained gaps | Structure | — | #date-gaps |
| 17 | An education section exists | Structure | — | #education |
| 18 | A skills section with real keywords | Structure | — | #skills |
| 19 | Achievements in bullets, not paragraphs | Structure | — | #bullets-used |
| 20 | Length matches your experience | Structure | — | #length |
| 21 | Word count in the 300–900 range | Structure | — | #word-count |
| 22 | A short summary up top | Structure | — | #summary |
| 23 | Bullets open with action verbs | Content quality | — | #action-verbs |
| 24 | Impact is quantified | Content quality | — | #quantified |
| 25 | No first-person pronouns | Content quality | — | #pronouns |
| 26 | No empty buzzwords | Content quality | — | #buzzwords |
| 27 | Past roles in past tense | Content quality | — | #tense |
| 28 | Bullets stay under two lines | Content quality | — | #bullet-length |
| 29 | No personal data that invites bias | Content quality | — | #overshare |
| 30 | A professional file name | Content quality | — | #filename |

## Parseability — rules 1–8 (40 points, 5 each)

Can an applicant tracking system read the file at all? These eight rules catch the failures that happen before your content is even considered — the file-level problems behind most silent rejections. Because nothing downstream matters if the parser receives garbage, a hard failure in this category caps the total score at 49.

Category anchor: https://cvloom.com/ats-rules#parseability

### Rule 1 — Your resume must have a selectable text layer

We extract the PDF's text layer and count what comes back; fewer than 300 characters of real text means the file is a picture of a resume, not a resume. This is the single most fatal ATS failure: tracking systems read the embedded text stream, so a scanned or photographed page hands the parser an empty document and the application dies silently no matter how strong the content is.

**The fix:** Export a text PDF directly from your editor — never print-and-scan, never a screenshot — and confirm you can select and copy text in any PDF viewer.

**Severity:** a hard fail on this rule caps the total score at 49.

**Cite this rule:** https://cvloom.com/ats-rules#text-layer

### Rule 2 — Keep a single reading order

We cluster where each line starts on page 1; when two or more x-positions each anchor a meaningful share of the lines, the page is running multiple columns. A PDF stores text as positioned fragments with no column markers, so many ATS parsers read straight across the page and interleave your sidebar into your work history mid-sentence — dates attach to the wrong jobs and skill lists dissolve into noise. CVLoom's own importer reconstructs columns before checking anything else; plenty of production ATS parsers do not.

**The fix:** Use a single-column layout for anything you upload to a job portal — in CVLoom, switching to a single-column template is one click.

**Cite this rule:** https://cvloom.com/ats-rules#reading-order

### Rule 3 — No letter-spacing corruption

Stylish letter-spacing ("A L E X  M O R G A N") destroys word boundaries in the text layer: extraction tools receive every character as its own token, so the line reads as gibberish and matches no keyword search. We only flag spaced-out lines that are not standard section headings, because heading keywords are recoverable — our parser collapses "S U M M A R Y" back to "Summary" and even resolves two spaced headings that a two-column layout fused into one row. A letter-spaced name, job title, or employer has no such safety net.

**The fix:** Reserve tracking effects for standard section headings at most; emphasize everything else with bold or size instead.

**Cite this rule:** https://cvloom.com/ats-rules#letter-spacing

### Rule 4 — Text must decode to real characters

We measure the share of unreadable replacement characters in the extracted text; more than 1% fails. Decorative display fonts, missing character maps, and text converted to outlines produce a PDF that looks perfect on screen but decodes to boxes and junk — the ATS indexes garbage where your job titles should be.

**The fix:** Re-export with standard, properly embedded fonts for body text, then copy-paste a paragraph out of the final PDF to confirm real characters come through.

**Severity:** a hard fail on this rule caps the total score at 49.

**Cite this rule:** https://cvloom.com/ats-rules#encoding

### Rule 5 — Stick to A4 or US Letter

We read the page dimensions and expect A4 (595 × 842 points) or US Letter (612 × 792 points). Anything else usually means the file came off a design-tool artboard at a custom pixel size — a signal strongly correlated with image-heavy, parser-hostile exports, and a nuisance for the preview and printing pipelines on the hiring side.

**The fix:** Set the document to A4 or US Letter before exporting; every resume editor and word processor offers both.

**Cite this rule:** https://cvloom.com/ats-rules#page-size

### Rule 6 — Keep the page count sane

More than four pages fails outright. Recruiters give a resume one to three minutes, extra pages dilute every keyword's relevance in ranking, and some parsing pipelines simply truncate what they read after the first few pages.

**The fix:** Cut to two pages at most — one if you have under about eight years of experience — by trimming the oldest roles to a single line.

**Severity:** a hard fail on this rule caps the total score at 49.

**Cite this rule:** https://cvloom.com/ats-rules#page-count

### Rule 7 — Enough real text on the page

Fewer than 120 extractable words on a full resume means most of the page is graphics: skill meters, timelines, icons, charts. Every one of those elements is invisible to a parser, so the profile the ATS builds is nearly empty even though the design looks rich to a human.

**The fix:** Keep every substantive fact — skills, dates, achievements — as plain text; treat graphics as decoration, never as data.

**Cite this rule:** https://cvloom.com/ats-rules#word-density

### Rule 8 — No emojis or decorative glyphs

We scan the text layer for emoji and decorative symbol ranges. Older ATS builds run on limited text encodings and turn these glyphs into mojibake that can corrupt neighboring words in the index — and even where they survive, symbols carry zero keyword value while making the resume read informal.

**The fix:** Use plain round or hyphen bullets and ordinary words; save the emojis for LinkedIn posts.

**Cite this rule:** https://cvloom.com/ats-rules#emoji-glyphs

## Contact info — rules 9–13 (10 points, 2 each)

The five-second question: can a recruiter reach you, and does the parser file your details into the right fields of the candidate record? The point weight is small, but failures here are uniquely expensive — a perfect resume with an unparseable email address wins an interview for nobody.

Category anchor: https://cvloom.com/ats-rules#contact

### Rule 9 — A parseable email address

We look for a plain-text email address the parser can lift into the ATS contact record. The most common failure is decorative: the address lives inside a designed header image or icon graphic, so it extracts as nothing — and an application the system cannot attach an email to is a dead record no recruiter will chase.

**The fix:** Write your email as plain text near the top of page 1, next to — not inside — any icon or graphic.

**Cite this rule:** https://cvloom.com/ats-rules#email

### Rule 10 — A parseable phone number

We check that a phone number with at least seven digits parses out of your contact block. Numbers styled with unusual separators, split across lines, or embedded in graphics fail extraction, leaving the ATS phone field blank — and many recruiters treat an unreachable candidate as a skip rather than a research project.

**The fix:** Write the number plainly with country code, like +1 (415) 555-0142, on one line in the header.

**Cite this rule:** https://cvloom.com/ats-rules#phone

### Rule 11 — A LinkedIn or portfolio link

We look for a LinkedIn, GitHub, portfolio, or academic profile URL (Google Scholar, ORCID, ResearchGate) anywhere in the text. This one is advisory rather than fatal — but many recruiters open the LinkedIn profile before finishing the resume, and ATS candidate records have a URL field they fill from exactly this line. A link that exists only as a click annotation on styled text often extracts as nothing.

**The fix:** Add one line with your LinkedIn URL — and GitHub or portfolio if relevant — written out as visible text, not hidden behind a hyperlink.

**Cite this rule:** https://cvloom.com/ats-rules#profile-link

### Rule 12 — Contact details at the top of page 1

We check that your email appears within the first few lines of the first page. Parsers map the top of the document to the candidate-record header zone and expect identity and contact fields there; details pushed into a footer, sidebar, or page 2 routinely land in the wrong field or vanish from the record entirely.

**The fix:** Keep name, email, and phone together in the top block of page 1, as plain text.

**Cite this rule:** https://cvloom.com/ats-rules#contact-position

### Rule 13 — No photo on the resume

We detect raster images painted on page 1. A photo cannot be parsed into any field and inflates the file — but the real problem is bias compliance: to avoid discrimination exposure, some ATS pipelines strip photos and others penalize or reject the resume outright, which is why photo-free resumes are the norm across the US and UK.

**The fix:** Remove photos and decorative images before applying through any portal; keep the headshot for LinkedIn and design portfolios.

**Cite this rule:** https://cvloom.com/ats-rules#photo

## Structure — rules 14–22 (30 points, 3.3 each)

Parsers and skimming humans share the same expectations: standard section names, dated roles, listed skills, scannable bullets, sane length. These nine rules measure whether your resume's skeleton matches what both audiences are trained to find.

Category anchor: https://cvloom.com/ats-rules#structure

### Rule 14 — Recognizable section headings

We count how many conventional headings — Experience, Education, Skills, and their standard synonyms — the parser recognizes; three or more passes. Parsers map your content into database fields by heading keyword, so a creative label like "My Journey" dumps everything under it into an unclassified bucket that field-based filters never search. Our matcher is deliberately forgiving — it recognizes headings that a two-column layout fused side by side into one row, and headings run inline with their own content ("SKILLS Languages: Java…") — but it still needs the conventional words.

**The fix:** Label sections with the boring standard names: Experience, Education, Skills, Projects, Certifications.

**Cite this rule:** https://cvloom.com/ats-rules#section-headings

### Rule 15 — Every role carries a date range

We check that each experience entry has a machine-readable range such as "May 2024 – Jul 2025" or "05/2024 – Present". Dates are how an ATS computes tenure, orders your history, and answers years-of-experience filters — a role without a parseable range is unverifiable, and gets sorted wrong or dropped from the profile.

**The fix:** Give every role an explicit start and end (or "Present"), in one consistent format throughout the resume.

**Cite this rule:** https://cvloom.com/ats-rules#experience-dates

### Rule 16 — No unexplained gaps

We line your dated roles up chronologically and flag any gap longer than six months. Modern ATS dashboards compute employment gaps automatically and surface them to recruiters, and an unexplained one invites the least charitable guess at exactly the moment a screener is looking for reasons to move on.

**The fix:** Keep the gap, add the explanation: one line for study, freelancing, caregiving, or a career break beats a suspicious silence.

**Cite this rule:** https://cvloom.com/ats-rules#date-gaps

### Rule 17 — An education section exists

We check that at least one education entry parses out of the document. Degree fields are hard requirements in many ATS filter queries — "Bachelor's or higher" is one of the most common screens — and when no education section is detected, that filter treats you as a non-match rather than an unknown.

**The fix:** Add an Education section even if it is one line — and if you are self-taught, list certifications and courses under that standard heading.

**Cite this rule:** https://cvloom.com/ats-rules#education

### Rule 18 — A skills section with real keywords

We count discrete skills across your skill groups; five or more passes. The skills section is the densest keyword surface on a resume — it is where ATS keyword matching and recruiter boolean searches look first, and a resume that buries its stack in prose loses matches to one that lists it plainly.

**The fix:** List concrete, searchable names — languages, frameworks, tools, methods — not adjectives like "hardworking".

**Cite this rule:** https://cvloom.com/ats-rules#skills

### Rule 19 — Achievements in bullets, not paragraphs

We count bullet points across your experience; fewer than three means the history reads as paragraph walls. Bullets give parsers clean units to segment into individual achievements and give skimming recruiters an entry point — dense paragraphs are where good accomplishments go to be un-read.

**The fix:** Break every role into two to five single-idea bullets, each leading with the achievement.

**Cite this rule:** https://cvloom.com/ats-rules#bullets-used

### Rule 20 — Length matches your experience

We compare page count to the total span of your dated experience: under about eight years, one page; over it, two. Extra pages do not buy extra consideration — they spread the same one to three minutes of recruiter attention across more paper and dilute keyword density in ranking.

**The fix:** Cut the oldest roles to one line each and delete anything that does not support the job you want next.

**Cite this rule:** https://cvloom.com/ats-rules#length

### Rule 21 — Word count in the 300–900 range

We count extracted words and expect between 300 and 900. Under 300 there is too little signal for keyword matching or for a recruiter to evaluate; over 900 the resume reads as unedited, and relevance ranking suffers because the terms that matter are swimming among ones that do not.

**The fix:** Too thin: add quantified achievements, tools, and outcomes. Too thick: cut filler and compress the oldest roles.

**Cite this rule:** https://cvloom.com/ats-rules#word-count

### Rule 22 — A short summary up top

We look for a summary or profile of at least a couple of lines near the top. Recruiters decide in under 30 seconds, and the summary is the one part of the resume whose reading order you fully control — it frames everything below it, and ATS profile views often surface it as your preview snippet.

**The fix:** Open with two or three lines: who you are, your strongest evidence, and what you are aiming at — no adjectives you cannot prove.

**Cite this rule:** https://cvloom.com/ats-rules#summary

## Content quality — rules 23–30 (20 points, 2.5 each)

The file parses and the structure holds — now does each line actually sell? Eight rules for the writing itself: verbs, numbers, tense, and the filler phrases that cost you credibility with every screener who has read ten thousand resumes.

Category anchor: https://cvloom.com/ats-rules#content-quality

### Rule 23 — Bullets open with action verbs

We check each bullet's first word against a dictionary of roughly 200 strong verbs; 60% or more passes. "Responsible for maintaining" describes a duty, while "Maintained", "Rebuilt", or "Automated" claims an act — verb-led bullets are how both screeners and resume-scoring tools tell an achievement list from a job description.

**The fix:** Start every bullet with the verb — Built, Reduced, Led, Shipped — and delete "Responsible for" everywhere it appears.

**Cite this rule:** https://cvloom.com/ats-rules#action-verbs

### Rule 24 — Impact is quantified

We measure the share of bullets containing a number, percentage, or currency amount; 30% or more passes. Numbers are what survive the skim — "Cut API latency 35%" is evidence while "Improved performance" is a claim — and recruiters reliably recall the quantified lines after the rest blur together.

**The fix:** Attach a magnitude to each strong bullet: users served, revenue moved, percent improved, hours saved — honest estimates and ranges count.

**Cite this rule:** https://cvloom.com/ats-rules#quantified

### Rule 25 — No first-person pronouns

We scan bullets and the summary for "I", "me", and "my". Resumes are written in implied first person — "Led a team of four", not "I led a team of four" — and pronouns both waste the line's most valuable position (the verb slot) and read as unfamiliarity with professional convention.

**The fix:** Delete the pronoun and start at the verb; the sentence still works.

**Cite this rule:** https://cvloom.com/ats-rules#pronouns

### Rule 26 — No empty buzzwords

We match against the cliché list every screener has learned to skip: "team player", "results-driven", "go-getter", "guru", "passionate about", "responsible for". These phrases carry zero keyword value in matching and negative signal with humans, because they occupy space where evidence should be.

**The fix:** Replace each claim with its proof — instead of "team player", the cross-team project you shipped; instead of "detail-oriented", the error rate you cut.

**Cite this rule:** https://cvloom.com/ats-rules#buzzwords

### Rule 27 — Past roles in past tense

We check that bullets under previous roles read as past tense ("Built", "Managed", "Shipped") while the current role stays in present. Mixed tense is one of the fastest sloppiness tells for a human reader, and consistent tense helps parsers and reviewers separate your current responsibilities from your history.

**The fix:** Sweep once before export: previous roles in past tense, current role in present, no exceptions.

**Cite this rule:** https://cvloom.com/ats-rules#tense

### Rule 28 — Bullets stay under two lines

We flag bullets longer than about 220 characters — past two rendered lines. A bullet is a headline, not a paragraph: multi-line bullets bury the achievement in the middle where a skimmer never arrives, and usually contain two accomplishments competing for one line's worth of attention.

**The fix:** One idea per bullet, two lines maximum; split anything longer or cut the setup.

**Cite this rule:** https://cvloom.com/ats-rules#bullet-length

### Rule 29 — No personal data that invites bias

We scan for date of birth, marital status, parents' names, religion, nationality, and ID numbers such as passport, Aadhaar, or PAN. These fields are holdovers from older resume formats — still common in India — that modern hiring treats as bias and compliance liabilities: they can trigger redaction pipelines, and no ATS field wants them.

**The fix:** Remove them all — name, city, phone, email, and links are the complete list of personal data a resume needs.

**Cite this rule:** https://cvloom.com/ats-rules#overshare

### Rule 30 — A professional file name

We check the file's name for the patterns that undermine a first impression: "final", "copy", version numbers, "(3)", "WhatsApp", "scan", or anything over 60 characters. Recruiters see the file name in their inbox and in the ATS document list before they see the resume — resume_final_v7 (3).pdf tells its own story.

**The fix:** Name the file Firstname-Lastname-Resume.pdf before you upload it.

**Cite this rule:** https://cvloom.com/ats-rules#filename

---

About CVLoom: CVLoom (https://cvloom.com) is a free ATS resume builder and checker — 15 ATS-safe templates, live in-browser editing, selectable-text PDF export with no watermark, and this 30-rule check. No signup required; uploaded resumes are analyzed in memory and never stored. Contact: contact@cvloom.com

Reuse: quote or reference these rules with attribution and a link to https://cvloom.com/ats-rules (per-rule anchors preferred).
