ATS Parsing · 7 min read · Published 2026-08-22

Are LaTeX Resumes ATS-Friendly? The Two Traps and the Fix

LaTeX resumes parse better than most, with two specific traps: ligatures that break keyword matching and icon fonts that extract as garbage. From the founder of a resume parser, with the packages that fix both and a one-line check.

Are LaTeX resumes ATS-friendly? Usually better than Word exports: a real text layer, embedded fonts and single-column templates. Two invisible traps: ligatures (fi, fl, ff typeset as single glyphs can extract as one special character, so 'Financial' no longer contains 'fi' and keyword searches miss it) and icon fonts in the contact line that extract as garbage. Fixes: T1 fontenc plus lmodern plus the cmap package, or disable ligatures with microtype or fontspec's Ligatures=NoCommon; remove FontAwesome icons; choose a single-column template, not AltaCV or Deedy; verify with pdftotext.

An engineer asked me this in a thread this morning and I realised nobody answers it properly: I run a resume parser, pdfTeX files come through it regularly, and the honest answer is that LaTeX resumes parse better than the average Word export, with two traps that are invisible on screen and catch exactly the people who care most about getting it right. Here is what I see, why it happens, and the three lines of preamble that fix it.

Key takeaways
  • LaTeX PDFs have a real text layer, embedded fonts and, in most templates, a single column. That is three of the four things that matter, so they land in the clean group more often than not.
  • Trap 1, ligatures: pdfTeX merges "fi", "fl", "ff" into single glyphs. Some extractors return them as one special character, so "Financial" no longer contains the string "fi" and a keyword search for "financial" misses it.
  • Trap 2, icon fonts: the FontAwesome envelope and phone symbols in the contact line extract as garbage characters, the same failure as icon bullets in Word.
  • The fix is a few preamble lines plus the right template choice. Then one terminal command tells you exactly what a parser will receive.
  • Two-column LaTeX templates scramble exactly like two-column Word files. AltaCV, Deedy and their cousins look superb and read in the wrong order.

Why LaTeX starts ahead

A parser does not see your resume. It extracts the text layer of the file and fills a database from it, in whatever order the file hands the text over. Most of the damage I see in the live data comes from layout decisions: skills in tables, text in headers, two columns, decorative bullets, fonts that never got embedded. LaTeX avoids several of those by default. The text layer is real, fonts are embedded, and the templates engineers reach for first, Jake's resume, moderncv, the plain article class with a few custom commands, are single-column documents with ordinary section headings. I see those files come through and parse close to perfectly.

So if you already have a one-column LaTeX resume, you are most of the way there. The remaining problems are the ones you cannot see by looking at the PDF.

Trap 1: ligatures

TeX typesets "fi", "fl", "ff", "ffi" and "ffl" as single ligature glyphs because that is what fine typography does. The problem is downstream: when a parser extracts that text, it depends on the PDF carrying a proper mapping from glyph back to characters. With some pdfTeX font setups that mapping is incomplete, and the extractor returns the ligature as one special character rather than two letters. On screen "Financial" looks perfect. In the database it may be stored as F-fi-n-a-n-c-i-a-l, and a recruiter's search for "financial" returns nothing, because the string "fi" is not in it. The same goes for "efficient", "profile", "workflow", "staff", "office" and every other word in your vocabulary that happens to contain one of those pairs.

Three ways to fix it, pick by engine:

  • pdflatex: load \usepackage[T1]{fontenc}, \usepackage{lmodern} and \usepackage{cmap}. The cmap package writes a ToUnicode map into the PDF so ligature glyphs extract as their letters. T1 encoding also fixes accented characters, which in the old OT1 default extract as a base letter plus a floating accent.
  • Belt and braces on pdflatex: \usepackage{microtype} then \DisableLigatures{encoding = *, family = *}. No ligatures are typeset at all, so there is nothing to mis-extract. The microtype documentation covers the option.
  • XeLaTeX or LuaLaTeX with fontspec: \setmainfont{YourFont}[Ligatures=NoCommon]. Same outcome, one option.

A resume is not a novel. Nobody on an admissions committee or a hiring panel will notice the absence of an "fi" ligature. A keyword filter will absolutely notice its presence.

Trap 2: icon fonts in the contact line

Templates love a small envelope before the email address and a phone glyph before the number, usually from FontAwesome via \faEnvelope and friends. To a human that reads as polished. To a parser the icon is a character from a symbol font with no meaningful Unicode mapping, so it extracts as a stray glyph glued to your email address. In the worst case the parser's contact detection, which is looking for a clean email pattern, fails on the line entirely. This is the LaTeX version of the icon-bullets failure that affects 18 percent of the resumes I see. Fix: drop the icons and write the labels, or just the values. "Email: you@example.com" parses. A tiny envelope does not.

The template decision that matters more than both

Everything above is a preamble fix. The template choice is structural. The beautiful two-column LaTeX resumes, AltaCV, Deedy, the Awesome-CV sidebar variants, produce PDFs whose text layer is read top to bottom, one column at a time. The sidebar's skills land in the middle of your work history, dates detach from their jobs, and the result is the two-column scramble I wrote about in are two-column resumes ATS-friendly. LaTeX does not rescue you from that; it just renders the scramble in Computer Modern. Pick a single-column template, keep the headings boring, and use the full width.

Two smaller points from the same family: put dates on the same line as the job title, right-aligned with a tab stop rather than in a separate column (the date format guide has the safe patterns), and keep section headings as plain text, not small caps in a custom font, so the parser can classify them.

The one-line check

You compiled it, so you have a terminal. Run:

pdftotext resume.pdf - | head -40

That prints roughly the text layer a parser receives. Read the first screen. If your name is on the first line, the contact line is clean, the first job title has its dates next to it, and "Financial" comes out as F-i-n-a-n-c-i-a-l, you are done. If you want the strict version, with the failures named and the extracted text shown next to your original, the free scan does the same thing in the browser with no signup. Either way you are checking the layer that matters, which is the one the PDF viewer never shows you. (The copy-paste version of the same test, for people without a terminal, is in the copy-paste ATS test.)

Where engineers actually lose

Not in the parse, usually. The files I see from LaTeX users are structurally fine far more often than the Canva ones. Where they lose is the content underneath: bullets that list technologies without outcomes, and the assumption that a clean compile means a strong resume. The parse check above takes a minute. The harder work is the part covered in ATS resumes for software engineers, and no package fixes that.

Frequently asked questions

Are LaTeX resumes ATS-friendly?

Usually yes, and often more so than Word exports, because the PDF has a real text layer, embedded fonts and, in most popular templates, a single column. The two traps are ligatures, which can extract as single special characters and break keyword matching, and icon fonts in the contact line, which extract as garbage. Both are fixed with a few preamble lines.

Is Jake's resume template ATS-friendly?

Structurally, yes: single column, plain headings, dates on the title line. Apply the ligature fix (T1 fontenc, lmodern and the cmap package, or disable ligatures) and avoid adding icon fonts to the contact line, and it parses cleanly.

Why do ligatures in a LaTeX PDF matter for ATS?

pdfTeX typesets fi, fl, ff, ffi and ffl as single glyphs. If the PDF lacks a proper ToUnicode mapping, a parser may extract the ligature as one special character, so a word like 'Financial' no longer contains the letters 'fi' and a keyword search for 'financial' misses it. The cmap package or disabling ligatures prevents this.

Do FontAwesome icons in a LaTeX resume break parsing?

They can. Icons are glyphs from a symbol font with no meaningful text mapping, so they extract as stray characters glued to your email or phone number, and some parsers then fail to detect the contact details at all. Use plain labels or bare values instead.

How do I check what an ATS sees in my LaTeX resume?

Run pdftotext resume.pdf - | head -40 in a terminal and read the output: that is close to the text layer a parser receives. Check the name is first, the contact line is clean, dates sit next to titles and ligature words extract as normal letters. A browser-based parser scan shows the same thing with the failures named.

Share:LinkedInX (Twitter)

Free tools that pair with this article

Bullet Rewriter
Score any bullet 0-100. STAR / XYZ / PAR rewrites.
Keyword Extractor
Pull top weighted keywords from any JD.
Cover Letter Checker
Score length, weak phrases, and JD match.
Resume Length Checker
Word count, page estimate, trim/expand verdict.
Related links

Run your resume through the ATS, free

See exactly what an ATS reads (or doesn't). Takes just seconds.

Scan my resume free →
Syed Muhammad Tanzeel Hayder
Written by
Syed Muhammad Tanzeel Hayder
Founder, ATS Verification · ACCA

I built ATS Verification. I'm an ACCA-qualified finance leader, and I've sat on the hiring side, screening and rejecting resumes, so I know how fast a real filter moves. I also ran the MBA admissions gauntlet myself (five admits across two cycles, now heading to London Business School), so I've stared at my own resume the way an adcom and an ATS both would. I got tired of tools that invent an “ATS score” out of 100 when no real ATS publishes one, so I built a scanner that shows you the exact text a system actually extracts from your file. Everything I write here comes from testing real resumes against the parsing engines behind Workday, Greenhouse, Lever, Taleo and iCIMS. Receipts, not made-up grades.

Published August 22, 2026·7 min read
Try the free ATS scanner →About the founderQuoted in College Recruiter

Related articles

Scan my resume, free →