LaTeX Resume: Templates, Pros and How It Parses in an ATS

We ran three popular LaTeX resume templates through three text extractors. What broke, the setting that fixes each problem, and when to skip LaTeX.

3D illustration of a typesetting tray of blank type blocks beside a resume card, one fused block out of line
Illustrative image, generated with AI.
On this page 9 sections
  1. Why engineers use LaTeX
  2. Our parse test: three templates through pdftotext
  3. Ligatures, columns and icon fonts
  4. Settings that fix each problem
  5. Templates worth starting from
  6. When to skip LaTeX
  7. Check your own LaTeX PDF
  8. Frequently asked
  9. Sources

A LaTeX resume can parse perfectly well in an applicant tracking system, but whether it does depends on the template, not on LaTeX itself. We tested that on 18 October 2026: we put the same invented resume into three popular LaTeX templates (Jake's Resume, Awesome-CV and AltaCV), compiled each one, and ran the PDFs through three open-source text extractors. The single-column template came out almost clean. The others showed every problem people worry about: ligatures that turn "office" into "office", two columns shuffled into one, contact icons extracted as junk characters, and dates that drift away from the job they belong to. Each problem has a setting or a layout change that fixes it, and those are listed below with the ones we tested marked.

No ATS publishes its parser, so the extractors here stand in for the text extraction step every ATS runs first. They are not any one vendor's system.

Why engineers use LaTeX

LaTeX resumes are common among software engineers and researchers for reasons that have little to do with ATS parsing.

  • The source is plain text. You can keep it in git, diff it, and keep one master file with a branch per kind of role.
  • The typesetting is consistent. Spacing, alignment and hyphenation are handled by the engine, not by dragging boxes around in a word processor.
  • The templates are free and popular. On 18 October 2026, the GitHub API showed 28,739 stars for Awesome-CV, 7,047 for sb2nov/resume (the template Jake's Resume is based on), 3,355 for latexcv, 2,827 for Jake's Resume and 1,583 for AltaCV. Overleaf's CV and resume gallery ran to 36 pages the same day.

The cost is that a PDF's appearance and its extractable text are two separate things, and LaTeX gives you full control of the first and very little visibility into the second. One fact surprised us: when we read the bullet lines of all three PDFs with space inference turned off, they contained no space characters at all. Every word break in the extracted text was inferred by the extractor from the gap between letters, which is one reason layout choices matter so much.

Our parse test: three templates through pdftotext

Method. We wrote one invented resume (a software engineer named Renée Lindqvist, with a placeholder phone number and an example.com email) and set it in each template using the template's own commands. The bullets were chosen to catch common failures:

Cut office workflow time 30% by fixing fifty financial filings in the official file. Built C++ and C# tools; shipped Node.js and .NET services with 99.9% uptime. Saved $1.2M in cloud spend by moving batch jobs to Kubernetes.

We compiled on TeXLive.net, which ran TeX Live 2026 (pdfTeX 1.40.29). Jake's Resume and AltaCV were compiled with pdfLaTeX. Awesome-CV's README tells you to compile with XeLaTeX, but XeLaTeX on that server could not find its fonts by name, so we compiled it with LuaLaTeX. We then extracted the text with Poppler's pdftotext 26.04.0 (default, -layout and -raw modes), pdfminer.six 20231228 and PyMuPDF 1.23.21.

Template, version testedEngineLayoutResult
Jake's Resume, commit of 14 September 2020pdfLaTeXOne column, dates right-aligned in a tableText, ligatures and symbols intact. Right-aligned dates and locations detached from their jobs in two tools. Accented "é" split in two tools.
Awesome-CV, commit of 14 September 2026LuaLaTeXOne column, icons, custom fontsLigatures and accents intact. Icons became emoji and words in two tools. Dates and skill labels detached in two tools. Spaces lost in pdftotext's raw mode.
AltaCV v1.7.4pdfLaTeXTwo columns, icons, custom fontsLigatures broke in all three tools. Columns interleaved in two tools. Icons became junk characters in two tools.

What came through everywhere: C++, C#, .NET, $1.2M, 99.9% and the email address survived in every template and every tool. Ordinary text in LaTeX is not the problem. Layout and fonts are.

Ligatures, columns and icon fonts

Ligatures

A ligature joins letter pairs such as "fi" into one glyph. In the PDF, each glyph needs a map back to the letters it stands for. When that map points at a single Unicode ligature character instead of the separate letters, a keyword search for "office" may not match what the parser stored.

  • AltaCV (Lato font, pdfLaTeX): all three extractors returned "Cut office workflow time 30% by fixing fifty financial filings in the official file". Every "ffi", "fl" and "fi" came out as one ligature character.
  • Jake's Resume with its optional Roboto font: the same failure, eight ligature characters in pdftotext. Jake's template offers six commented-out font packages. We tried each: Fira Sans, Noto Sans, Source Sans Pro, Cormorant Garamond and Charter extracted "office" correctly; Roboto did not.
  • Jake's Resume with its default Computer Modern font: clean, because the template adds \input{glyphtounicode} and \pdfgentounicode=1, under a comment saying they make the PDF "machine readable/ATS parsable".

That last pair of lines matters less than it used to. On TeX Live 2026, a bare pdfLaTeX document already reports \pdfgentounicode as 1, and removing both lines from Jake's template produced the same fonts with Unicode maps. When we switched the setting off on purpose (\pdfgentounicode=0) to mimic an older installation, pdftotext still read "office", but pdfminer.six and PyMuPDF returned "Office" style ligatures and "Ren´ee" with the accent split off. Keep the two lines; they are harmless on new systems and protect you on old ones.

Columns and right-aligned dates

pdftotext's default mode and pdfminer.six read a page by grouping nearby text into blocks. Text that sits far to the right becomes its own block.

  • AltaCV's two columns were interleaved. In pdftotext's default mode, the right column's headings landed inside the left column's bullets. The first bullet was cut after "in the", followed by the "LANGUAGES" heading, then the second bullet, then "English" and "Swedish", and only then "official file." pdfminer.six interleaved them in a similar way. PyMuPDF and pdftotext's -raw mode read the left column first and then the right, as written.
  • Right-aligned dates drifted. Jake's template puts the job title on the left and the dates on the right of a table row. In pdftotext's default mode, the experience dates and location came out after all three bullets, and the education dates came out at the very end of the page, after the skills section. pdfminer.six collected every date and location at the end. Awesome-CV did the same, and also separated its skill labels ("Languages", "Tools") from the skill lists next to them. -layout mode and PyMuPDF kept each date on its own line.

The pattern is the point. The same PDF read correctly in one tool and out of order in another, and you do not get to choose the tool. Greenhouse's help article on an unsuccessful resume parse lists "resumes that have a columned layout", "complex resumes with tables, headers, and footers" and resumes with the name and contact information in a header or text box among the causes.

Icon fonts

Both icon templates draw the phone, email, LinkedIn and GitHub symbols with Font Awesome. Both also attach replacement text to the icons, which only pdftotext used.

  • AltaCV: pdftotext returned labelled lines such as "email: mailto:" before the address and "phone: tel:" before the number. pdfminer.six returned "(cid:131)" before the phone number, "§" before the GitHub handle and "*" before the location. PyMuPDF returned similar stray characters. The LinkedIn and GitHub URLs shrank to the bare handle in both.
  • Awesome-CV: pdftotext returned "tel:", "mailto:", "GitHub: @" and "LinkedIn: /in/" prefixes. pdfminer.six and PyMuPDF returned a mobile phone emoji, an envelope symbol, and the words "GITHUB-SQUARE" and "LINKEDIN" in front of the handles.

A parser looking for a phone number will usually still find the digits. A parser filling a "LinkedIn URL" field from "LINKEDIN renee-sample" may not.

Two smaller findings

  • Fake small caps split words. Jake's template sets the name and section headings in small caps. With the Charter font option, which has no true small caps, pdftotext returned "R EN ÉE L INDQVIST" and "E XPERIENCE", the same split that letter-spaced headings cause in our resume font test. Greenhouse lists "a resume with spaces between the letters" as a parse failure too.
  • Spaces vanished in one mode. In pdftotext's -raw mode, the Awesome-CV file lost many word breaks ("Cutoffice", "time30%byfixingfifty"). The default mode and both other tools kept them. This is the cost of every space being inferred, described above.

Settings that fix each problem

We retested each fix marked "tested" on the same content.

ProblemFixStatus
Accents split ("Ren´ee") in pdfminer.six and PyMuPDFAdd \usepackage[T1]{fontenc} and \usepackage{lmodern} to the preambleTested on Jake's Resume: "Renée" in all three tools
Ligature characters ("office")Add \usepackage{microtype} and \DisableLigatures{encoding = *, family = *}Tested with pdfLaTeX on AltaCV and on Jake's Resume with Roboto: "office" in all three tools
Missing Unicode maps on an older TeX installKeep \input{glyphtounicode} and \pdfgentounicode=1Tested by switching it off and on
Dates and locations detached from the jobPut them on the same line as the title with a separator, for example Software Engineer | Jun 2023 to Present, instead of a right-aligned table cellTested: inline dates stayed with the job in all three tools. Using \hfill on one line did not help
Two columns interleavedUse one column. No compile setting fixes reading order across parsersObserved: one-column templates kept sections in order
Icon junk in the contact lineDelete the icon commands and write plain text: the number, the email, linkedin.com/in/yournamePlain text in Jake's template extracted cleanly everywhere
Fake small caps splitting wordsReplace \scshape with \bfseries in the section and name formattingTested with Charter: "Experience" intact

Two notes on the table. \DisableLigatures was tested with pdfLaTeX only. Under LuaLaTeX, Awesome-CV's ligatures already extracted correctly, so we had nothing to fix there. And the inline-date fix moved the bullet symbols slightly out of place in pdftotext's default mode, while the bullet text stayed correct; the dates were worth it.

Templates worth starting from

TemplateLayoutEngineStart here if
Jake's ResumeOne column, no iconspdfLaTeXYou want the safest base. Add the T1 encoding and move dates inline
sb2nov/resumeOne columnpdfLaTeXYou want the original that Jake's is based on (not tested here)
Awesome-CVOne column, icons, colored accentsXeLaTeX or LuaLaTeXYou like the design and will replace the icons with plain text
AltaCVTwo columns, icons, skill ratingspdfLaTeX, XeLaTeX or LuaLaTeXYou need a visual CV for a person to read, not for an upload form
latexcvSeveral, including sidebar and two-columnVariesYou want options; for uploads, pick a layout without a sidebar or second column (not tested here)

AltaCV's own README is honest about this. Under "Is this template ATS-friendly?", it says "no actual claims are made, because we don't really know how each ATS system works", and suggests running pdftotext -raw to see the text-only version. That is good advice for any template.

For the rest of the layout choices (section names, order, length), see our guide to the ATS friendly resume format and the software engineer resume guide.

When to skip LaTeX

  • The employer or recruiter wants Word. Greenhouse accepts .doc, .docx, .pdf, .rtf and .txt, so a PDF is fine there, but agency recruiters often want to edit your file. LaTeX does not export a clean DOCX, so you would maintain two versions.
  • You will tailor heavily. Rewriting bullets for each posting is slower when every edit is a compile, and slower again if a template error stops the build. Our guide on how to tailor a resume covers what to change per job.
  • You are on Overleaf's free plan with a heavy template. Overleaf announced in June 2025 that free compiles time out after 10 seconds, against 4 minutes on premium plans. A one-page resume is usually fine; a template that loads many fonts, images or a bibliography may not be.
  • You want a two-column design for uploads. Our test and Greenhouse's documentation point the same way. Keep the two-column version for handing to people, and upload a one-column one.

If none of those apply, LaTeX is a fine choice. Most of the problems above are one line in the preamble or a layout decision.

Check your own LaTeX PDF

  1. Run pdftotext resume.pdf - and read the output top to bottom. Each job's title, employer, dates and bullets should appear together and in order.
  2. Run pdftotext -raw resume.pdf - and check that words are still separated.
  3. Search the output for "fi" or "ffi". If either appears, add the ligature fix.
  4. Read your contact line. There should be no stray symbols, emoji or icon names before the phone, email or links.
  5. If you have Python, python -c "import fitz; print(fitz.open('resume.pdf')[0].get_text())" shows what PyMuPDF reads. Agreement between two tools is a good sign.

ApplyEze, the product this blog belongs to, writes a resume and cover letter for every posting, as PDF and DOCX, and reads each one back with a parser check before upload.

Frequently asked

Is a LaTeX resume ATS friendly?

It can be, but the template decides it more than LaTeX does. In our test a single-column template with plain contact text extracted cleanly once two small changes were made, while a two-column template with icons scrambled its columns and turned "office" into a ligature character. Greenhouse's own help center lists columned layouts, tables and contact details in headers among the causes of unsuccessful parses.

Is Jake's Resume template ATS friendly?

Mostly. In our test its text, ligatures and symbols came through intact, but its right-aligned dates and locations were detached from their jobs in two of the three extractors, and its accented letters split in two of them. Adding the T1 font encoding and putting dates on the same line as the title, rather than in a right-aligned table cell, fixed both.

Should I submit a LaTeX resume as a PDF?

Yes, unless the employer asks for Word. Greenhouse, for example, accepts .doc, .docx, .pdf, .rtf and .txt files, and its help center says it cannot parse resumes larger than 2.5MB, so a compiled PDF with no large images is the right file. Keep a DOCX copy for employers and recruiters who ask for one.

Is Overleaf free for making a resume?

Overleaf has a free plan, and a one-page resume normally compiles well within its limits. Overleaf announced in June 2025 that free compiles are cut off after 10 seconds, while premium plans get 4 minutes, so a template that loads many fonts or images can occasionally time out on the free plan.

Sources