Why some resumes don't read in cleanly (and what ATS compliance means)

The file properties that break text extraction, what we do about each one, and why the same properties get resumes filtered out before a human reads them.

If a section came back empty, or your bullets arrived as one run-on paragraph, the problem is almost never the content of your resume. It is how the file stores it.

That matters well beyond us. The same properties that stop our parser reading a file stop an applicant tracking system reading it, and an ATS reads your resume before any person does. So this article is two things at once: why an upload came out wrong, and why the shape of your file is worth caring about.

What a readable resume file actually is

There are five properties, in rough order of how much damage each one does when it is missing:

  1. The text is real, selectable text, not a picture of text.
  2. The document is not password protected or security restricted.
  3. The body is one column, top to bottom.
  4. Nothing important lives in a table, a text box, a header, or a footer.
  5. The font has real space characters.

Everything below is one of those five going wrong.

Text stored as an image

This is the most complete failure and the most common one: a scan, a phone photo, or a design tool export where the text has been flattened into artwork. There is no text in the file to extract, so nothing comes out.

We check the PDF's own metadata for this and name it when we can. A file produced by Canva, Photoshop, Illustrator, Figma, Sketch, Affinity, CorelDRAW, Inkscape, GIMP, or PowerPoint gets a Design-Based PDF Detected dialog. One produced by a scanner app gets Scanned PDF Detected. If neither is identifiable, a PDF carrying at least as many images as it has pages is treated as scanned.

Image coming soon

The fix is to recreate the resume in Google Docs or Microsoft Word and export it as a .docx or .pdf from there.

If you can select and copy the text yourself, that is not proof it is real text. macOS and iOS run text recognition over images automatically, which is why the text looks selectable to you. Hiring software does not do that.

Password protection and security restrictions

A PDF with a password or a permissions restriction on it cannot be opened for reading, so extraction stops before it starts. Most hiring software cannot open one either, which means the application can be filtered out without anyone seeing it.

Open the PDF in Adobe Acrobat or Preview, remove the protection, save, and upload again.

Fonts without real spaces

This one is subtler, and it is the reason a resume that looks perfect on screen can come back as SeniorProductManagerAcmeCorp.

Some fonts, especially in design tool exports, position each word by coordinate instead of writing space characters between them. Pull the text out and the words are glued together.

We test for it by measuring the average length of the words we extracted. Above 12 characters on average, the text is treated as run together, and the file is re-extracted with a different engine. Whichever attempt scores better wins.

Two things follow from that. Very short documents are not judged this way, because an average taken over fewer than 20 words is not reliable. And the repair is a second extraction attempt rather than a guess at where the spaces belong, so if both engines produce glued text, the file needs re-exporting from a different font.

Two columns, and the order words come out in

A two-column layout is stored as two independent streams of text sitting side by side. Nothing in the file says which one to read first. Read it wrong and your job titles interleave with your skills list.

We run two passes over every PDF and compare them. The structured pass is thrown away if it covers less than 90 percent of the words the plain pass found, or if it loses 5 or more real words, or if it puts more of the text out of reading order than the plain pass does.

We also reattach bullet glyphs to the lines they belong to, including bullets drawn as small graphics rather than typed as characters, and we deliberately read text that sits on top of a background image rather than dropping it.

All of that is repair work on a layout that should not have needed repairing. An ATS will not do any of it. Keep the body of your resume one column. If you want columns, the one place they are safe is inside your skills list, which is also the only place our own templates offer them.

Tables

Tables are a layout tool, and they survive badly as text because extraction has to flatten a grid into lines.

In a .docx, we convert the document to HTML first, and a table row collapses into one line with a single space between the cells. A row holding a job title in one cell and dates in the other comes out as Senior Analyst 2019 - 2022, which is usually salvageable.

In a legacy .doc it is worse: each cell becomes its own line, with a blank line between rows, so the relationship between the cell and its label is lost.

Headers, footers, and text boxes

In a PDF, we remove one thing from headers and footers: a Page 1 of 2 style page number. Everything else stays, in the position it was found, in the middle of your text.

In a .docx, headers are moved to the top of the document and footers to the bottom, and where a document has several headers we keep only the fullest one. So contact details in a header do survive, but not necessarily where you would expect them.

Text boxes and shapes are the hard failure. In a .docx, drawings and graphics are dropped outright. In a legacy .doc, text stored inside shapes or embedded objects cannot be extracted at all, and you get an Unreadable .doc File dialog. The fix is to open it in Word and save it as a .docx.

Put your contact details in the body of the document.

Things that are fine, so you can stop worrying about them

  • Unusual section headings. We do not match your headings against a list of approved names. Content is sorted into sections by the parser's schema, and your section order is recovered from where each heading appeared in your file. "Where I've Worked" is fine.
  • Ligatures. The fi and fl characters some fonts substitute are normalized back to ordinary letters.
  • Word splitting its own text. Word can split a single word across several internal runs whenever formatting changes mid-word. We rejoin those.
  • Decorative rules and horizontal lines. Stripped before parsing.

What we do so our own output is readable

Everything above is the argument for ATS compliance. Here is what the product does about it, which is more useful than the phrase itself:

  • Every template renders plain, structured text. No tables, no text in images, no multi-column body, no headers or footers.
  • The only column layout offered anywhere is inside the Skills section.
  • PDF export is rendered by a real browser engine and contains real, selectable text. It is never an image of a page.
  • DOCX export writes real Word bullet formatting rather than typed bullet characters.

Those are the properties this article spends its length showing an ATS needs, and exporting from here is the shortest way to get all of them at once.

More on ATS compatibility

Everything above is about one file. For what applicant tracking systems do to a resume generally, see the ATS resume checker page.