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

> What an applicant tracking system actually reads in your CV, which formatting choices cost you the rejection, and how to test your own file in two minutes.

Source: https://cvizo.com/en/blog/how-to-write-a-cv-that-gets-through-an-ats
Language: en_GB
Author: The Cvizo team
Published: 2026-09-15
Updated: 2026-11-04
Topics: The job search, CVs, ATS

---

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.

## 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](../../_assets/ats-parsing.jpg "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](/en/blog/personal-information-on-a-cv).

## 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 says | Write this in your CV | Why |
| --- | --- | --- |
| React Native | React Native (RN) | The full phrase plus the abbreviation, both present in the text |
| Team management | Managed a team of 6 | The phrase survives, the number gives a human something to read |
| SQL | PostgreSQL, SQL | The specific tool and the general term the filter looks for |
| English C1 | English C1 | Unchanged, 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:

```bash
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.
