Job-AgentJob-Agent
BlogStart free →
ATS Guide·5 min read·

What an ATS Actually Reads from Your PDF

The ATS reads a text layer, not your visual layout. Here is where that layer breaks, and how to check yours in thirty seconds before your next application.

The ATS reads a text layer you cannot see. Understanding how that layer is built, and where it breaks, explains most unexplained rejections.

What the ATS actually reads

When you open a PDF in Acrobat, you see a rendered page: fonts, layout, columns. The ATS does not see that. It reads an embedded text stream, a flat sequence of characters extracted from the file, with no awareness of your visual grid.

The rendering and the text layer are independent. A PDF can look perfect on screen while its text stream is incomplete, garbled, or empty. The ATS never sees the visual version.

Where the text layer breaks

Multi-column layouts. PDF extraction reads left to right, top to bottom across the whole page, not column by column. A two-column CV with your job title in the left column and your dates in the right will often extract as a single mangled line: “Software Engineer 2019-2024 Python | React Senior Developer...” The ATS cannot tell which text belongs to which role.

Headers and footers. Many PDF parsers skip content in repeating document headers and footers. If your name, phone number, or email is in a header element, the contact field in the ATS record comes back empty. Some systems deprioritise or reject records with incomplete contact fields before a human reviewer ever sees them. Contact details belong in the body of the document.

Text boxes and tables. Objects outside the main text flow, floating text boxes and table cells, are either skipped entirely or extracted in insertion order, which may have nothing to do with reading order. A skills section built as a three-column table often extracts as one long unstructured row.

Icons and graphical skill representations. Any competency rendered as a star rating, a progress bar, or a language proficiency wheel is an image. Images have no text layer. The ATS reads nothing from them.

Fonts with incomplete Unicode mappings. The root cause here is the ToUnicode CMap table embedded in the font. A font can render any glyph on screen while mapping that glyph to a Unicode codepoint that means nothing on extraction, or to nothing at all. This is why FontAwesome icons come out as private-use-area characters or empty strings in the extracted text. It is also why some ligatures, fi, fl, ffi, extract as a single unrecognised character rather than two letters: the font renders the ligature glyph correctly, but the ToUnicode mapping points to a private codepoint. Design-first PDF exporters, Canva included, often embed fonts this way. The file looks perfect; the text layer is junk.

Scanned documents. A PDF created by scanning a paper document is an image file with a PDF wrapper. It has no text layer. The ATS will not apply OCR to your CV on your behalf. If you are working from a scanned version of an old resume, it is effectively blank to the system.

How to check yours

Command line: pdftotext yourcv.pdf - prints the extracted text to your terminal. What you see is what the parser gets.

Without a terminal: open the PDF, press Ctrl+A (Cmd+A on Mac) to select all text, copy, and paste into a plain text editor.

Look for contact information at the top, roles and dates in a readable sequence, skills listed as plain text. Any section that comes out garbled, out of order, or missing entirely is a section the ATS cannot score. If you cannot select any text at all, the file has no text layer and will return nothing regardless of its contents.

What this tells you about template choice

The templates most often recommended for their visual impact, two-column layouts, infographic-style designs, creative formats with icons and bars, are also the most likely to produce a broken text layer.

A one-column document, with body text (not text boxes), no tables, no graphical skill representations, and contact details in the body rather than a header, will extract cleanly on every parser. Clean extraction is the precondition for everything else: keyword matching, scoring, ranking. A visually impressive CV that extracts as garbage scores zero.

The format question

The question is not which template looks best in Canva. It is which file produces a text layer the parser can read. For most applications, that means a single-column PDF exported from a word processor or a purpose-built resume tool, with no embedded images for content, no headers or footers carrying key information, and no table-based layout.

The check above costs thirty seconds and tells you exactly where you stand before your next application.

Stop rewriting your resume from scratch

Job-Agent analyses every job description you apply for, extracts the exact ATS keywords, and rewrites your resume to match, all in under 60 seconds per application.