How to write a CV that gets through an ATS to a human

The Cvizo team4 min read

An applicant tracking system takes your file apart into fields, and only those fields reach the recruiter. A field it cannot find stays empty, and an empty field is missing data rather than a low score. Format so the parser finds what you wrote.

A guilloche rosette struck on a dark ink field, in the security-print register

In short

  • The parser fills a fixed set of fields. Whatever it cannot find is simply absent from the record.
  • A PDF generated from text, not a scan. If you cannot select the text, nothing can read it.
  • One column. Many parsers read a page line by line, so a sidebar lands inside the main column.
  • Match the exact phrase from the posting. React Native is a hit, RN is not.
  • Test your own file by extracting its plain text and reading it in the order it came out.

Before a person sees your CV, a program reads it. An applicant tracking system takes the file apart into fields, and only those fields reach the recruiter. If the parse goes wrong, strong experience does not matter, because nobody sees it.

Formatting for an ATS is how you stop it from losing things you actually have.

What an ATS really does with your CV

The parser gets a file and tries to pull a fixed set of fields out of it: name, contact details, job titles, dates, companies, education, skills. Every field it cannot find stays empty. An empty field is missing data, which is worse than a low score: a recruiter filtering for “at least 3 years of Java” never sees a candidate whose years-of-experience field is blank.

A column of CV text, a parser, and a list of fields with three left unfilled
The candidate has all three. The parser never found them.

So the only question that matters when you format a CV is whether the parser will find what you wrote, where it expects to find it. Which fields you should be filling at all is a separate question, and some of them work against you.

File format and page layout

A PDF generated from text, not a scan. A scan is a picture, and a picture is empty as far as the parser is concerned. If you are not sure which one you have, try selecting the text in a PDF reader. If you cannot select it, nothing can read it.

One column. A two-column layout looks good on screen, but many parsers read the page line by line from left to right, so the sidebar lands in the middle of sentences from the main column. The result is glued-together phrases like “Python Senior developer 2021”, and a job-title field the parser no longer recognises.

What to avoid

  • Tables used for layout. A table in a PDF is a grid of coordinates, not a structure.
  • Text in the page header and footer. Some parsers skip both entirely, and that is exactly where people put their phone number.
  • Icons instead of labels. An envelope glyph means “email” to a human eye and to nothing else.
  • Invented section names. “My professional journey” is nothing to a parser. “Experience” is a field.
  • Vector artwork where text should be, because text converted to outlines stops being text.

Keywords without keyword stuffing

Matching happens at the level of a phrase, not a single word, and almost always against the exact wording in the posting. If the posting says “React Native”, then “RN” is not a hit.

The posting saysWrite this in your CVWhy
React NativeReact Native (RN)The full phrase plus the abbreviation, both present in the text
Team managementManaged a team of 6The phrase survives, the number gives a human something to read
SQLPostgreSQL, SQLThe specific tool and the general term the filter looks for
English C1English C1Unchanged, the level is part of the phrase

List a skill when you can talk about it for ten minutes. A list of twenty technologies where you know four passes the filter and falls apart in the first interview.

A recruiter scans a CV in a few seconds on the first pass. The parser decides whether that pass happens at all.

How to test your own CV in two minutes

The simplest test needs nothing beyond what is already on your disk. Pull the plain text out of the file and read it in the order it came out:

pdftotext -layout cv.pdf - | head -60

If the output reads like your CV, the parser will manage too. If you see merged columns, lost dates, or nothing where your header should be, you have an exact list of things to fix. Without -layout you see the raw order of the text stream, which is roughly what the simplest parser gets.

The second thing to check is dates. 03/2021 - 06/2023 is unambiguous. spring 2021 is not, and it usually ends as an empty years-of-experience field.

One CV per posting

This advice costs the most time, and it is the one that moves results. Postings describe the same role in different words, and matching happens on words. One CV sent to thirty companies is tailored to none of them.

Doing it by hand is about twenty minutes per posting: read the requirements, reorder the bullets, add two phrases in exactly the wording the posting uses. At ten applications a week that is half a day, which is why almost nobody does it.

Common questions

Do tables break an ATS?

A table used for layout usually does, because in a PDF it is a grid of coordinates rather than a structure, and the parser reads across the row instead of down the column. A simple two-column skills table often survives. The test is the one this article gives: pull the text out and read the order it came in.

Will a template from a design site pass?

Frequently not, and for reasons that have nothing to do with taste. Icons instead of labels, text in the header and footer, and headings converted to outlines are all common in those files, and all three remove information the parser was looking for.

Does keyword stuffing work?

It gets you past a filter and loses you the interview behind it. A list of twenty technologies where you know four survives the search and falls apart in the first conversation about any of the other sixteen.

Stop rewriting the same CV

You fill in your profile once. Cvizo builds a separate version of it for every posting, and you check it and send it.

Start free