cv['ATS']
ATS-friendly resume: what matters and what doesn't
cv[0]9 min read
In short
An ATS-friendly resume is one a parser can read: contact details and dates as real text, standard section headings, one reading order, and no text trapped inside images or icons. Most of the work is structure rather than design, and it takes about ten minutes. No checker can promise you a particular employer's ranking.
Search for an ATS-friendly resume and you will find template after template, many of them sold with a warning: choose the wrong one and a robot throws your application away. The useful version of that advice is smaller and cheaper. A resume is ATS-friendly when software can pull your name, contact details, employers, job titles, dates and skills out of the file without guessing. That is a question of structure, not decoration — and most of it you can fix yourself, with the document you already have.
What parsers break on
An applicant tracking system is the database a company uses to collect and search applications. When your file arrives, the system tries to parse it: read the document, recognise what it can, and copy those values into fields on your candidate record. Greenhouse describes parsing as scanning an imported resume and auto-filling "appropriate fields with information it detects". Workable lists the fields it looks for in an uploaded CV: candidate name, email and contact information, social links, profile picture.
When a parse fails, your application does not vanish. It arrives with the file attached and the fields empty, and someone has to type your employers and dates by hand. Sometimes they do. Sometimes the record sits in the pile with no searchable employer name, which means you are not in the filtered list the next recruiter builds.
The failures vendors actually document
Greenhouse publishes a list of formatting causes, and they are more ordinary than the fear marketing suggests:
- a resume uploaded as an image rather than a document
- graphics, photos or word art
- tables, headers and footers
- a columned layout
- the name and contact details placed in the header, footer or a text box
- headings typed with spaces between the letters
- no clear sections, with a different format in each one
- incomplete job titles, such as "Sr. Account Exec" instead of "Senior Account Executive"
- a file above 2.5 MB, which is Greenhouse's own limit for parsing
That is one vendor's list, and vendors differ. Workable says its parser handles image-based CVs and CVs in any language; Greenhouse lists a resume uploaded as an image among the causes of a failed parse. So the goal is not to satisfy Greenhouse. The goal is the plainest possible document, so that even a literal parser gets it right on the first pass.
| What your file contains | What can happen | What to do instead |
|---|---|---|
| A two-column layout with a skills sidebar | The sidebar is read before or after the main text, so skills land in the middle of a job | One column, skills as their own section |
| Name and phone in the page header | Greenhouse lists contact details in a header, footer or text box as a cause of a failed parse | Put contact details in the body of page one |
| Skill bars, star ratings, icon sets | The rating carries no words, so nothing is extracted | Write the skill and the years or the context |
| A table used for layout | Cells are read out of order, or not at all | Use tabs or spacing, not table cells |
| A scanned or photographed page | There is no text layer to read at all | Retype it, or export a real PDF |
| "S R E N G I N E E R" as a spaced heading | Letters are read separately and the word is lost | Type the heading normally, then letter-space visually if you must |
Why columns cause trouble
A parser reads a PDF in the order the text was written to the page, not the order your eye follows. In a two-column layout, the software often reads the whole left column before the right one. If your sidebar holds the skills and your main column holds the jobs, the result can be a record where "Kubernetes, Terraform, Go" appears inside a paragraph about your last employer. Dates and titles drift out of alignment in the same way.
The fix is not ugly. Use one column, a clear type hierarchy and generous spacing. Nothing about a single-column page stops it from looking considered.
A ten-minute checklist
Work through this on the file you would send today.
- Contact details in the body of page one. Name, email, phone, city, and one link if you have one. Not in the header, not in a text box, not only in the footer.
- Standard section headings. Summary, Experience, Education, Skills. Greenhouse lists "Resumes without clear sections and differing formats throughout each section" as a parsing problem, so the boring words are doing real work. "My journey" and "Where I've been" are for the human, if there is one.
- Job titles written out. "Senior Backend Engineer", not "Sr. Backend Eng." Include the level if the title carries one.
- Dates on every role, month and year: "Mar 2021 – Jun 2023". Be consistent: "Present" is fine, but use it the same way each time.
- One column, top to bottom. No sidebar, no text boxes floating beside the main text.
- Bullets as text. A list or a typed hyphen both read fine; bullets inside a table or drawn as icons do not.
- No meaning trapped in an image. Logos, flags, icons, charts and skill dots all carry information a parser cannot read. If the icon matters, write the word next to it.
- No layout tables. A small table of languages or certifications can survive, but the facts that matter most should not depend on a cell.
- A real PDF. Export from your editor with selectable text. Do not print to an image, and do not send a photo of a printed page.
- A sensible file size and name. A few hundred kilobytes is normal; several megabytes of images is not.
Firstname-Lastname-CV.pdftells a person something before they open it.
CV_2026.pdf
★ Reduced cloud spend by 22% by moving batch jobs to spot instances ✅
cv['senior platform engineer']
Cut cloud spend by 22% by moving 14 nightly batch jobs to spot instances.
The words were never the problem. The star and the tick are not words at all: at best a parser ignores them, at worst they arrive as noise attached to the line, and Greenhouse does list resumes with graphics among the ones that fail to parse. Dropping them costs nothing, and the saved space buys the scope a reader actually wants.
Templates vs structure
A template controls type, spacing and page count. It cannot make content parseable, and a clean template is not automatically an ATS-friendly one. Length norms also differ by market — a German CV often runs to two pages where a US resume runs to one — which is a separate question from parsing, covered in resume vs CV. The costliest layout is the "modern" one with a coloured sidebar: elegant in a portfolio, hostile to a text extractor.
You can usually tell a template is selling fear rather than function by its claims. "Passes all ATS" is not a testable statement, because there is no single ATS and no shared standard for what passing means. "ATS score: 98" is a number produced by that vendor's own rules, not by any employer's system. Greenhouse and Workable describe different behaviour on the same input — an image-based resume — which is enough to see why a universal score cannot exist.
What a template should do for you:
- hold one column and a readable type size
- keep headings and dates in consistent positions
- fit your history into one or two pages, the usual length in most markets, without shrinking the font below about 10 points
- export a PDF with a real text layer, every time
Design is not the enemy. Colour, a serif name line, a thin rule under section headings: all fine, all invisible to a parser. Put decoration in the margins and the words in the flow.
Test it yourself
You do not need an account anywhere to run the test that matters. It takes two minutes and it tests roughly what a parser does: whether the text comes out, and in what order.
The copy-paste test
- Open your PDF in a viewer, select the whole document and copy it.
- Paste it into a plain text editor with no formatting.
- Read what comes out.
You are looking for four things:
- Your contact details are present and in one piece. A missing email means the parser may not find it either.
- The order makes sense. If the skills section appears in the middle of a job description, your layout is being read column-wise.
- Dates and titles sit next to their employer. If "Jun 2023" is stranded on its own line far from the role, the relationship may be lost.
- Nothing important is missing. Logos and text inside images simply will not appear.
A second check, in the PDF viewer: search for your email address and one employer name. If the search finds nothing, that text is not text, and no parser will find it either.
What the test cannot tell you: whether a particular employer's system will rank you well, or whether a recruiter will like the page. It tells you only whether the file is readable. That is the part you control.
What cv[0] checks, and what it can't
cv[0] exports a typeset PDF with clean structure: real text, real headings, dates and bullets, in one reading order. Before you send, it also checks the basics that parsers trip on — a missing name, email or phone number, a missing summary or experience section, roles with no bullets, decorative symbols in the text.
It does not give you a score, and it does not simulate any named ATS product. No outside tool can tell you how a specific company's system will treat your file, because the configuration is theirs, not yours, and it changes. A number that claims otherwise is describing its own formula.
The part that is worth your time is the honest gap. If a posting asks for a tool you have genuinely used, name it in the bullet where you used it. If it asks for something you have not used, leave it out and spend the space on what you have. The keyword check lists which of the posting's required, preferred and nice-to-have terms your CV contains and which it does not, including variants such as "k8s" for Kubernetes. Fixing a real gap with a real sentence is worth more than any formatting trick.
Once the file parses, the next question is whether each line answers the posting. That is tailoring, and it is a different job from formatting.
If you want the structure check to run on your own history, start with your CV at cv[0]: upload a PDF or DOCX, or begin from a blank page, and the page you edit is the page you export. Pricing is on the same page.