A LaTeX resume from a well-chosen template tells a hiring manager something before they read a single word: this person knows their tools. For software engineers, quantitative researchers, and academics, that signal matters. What most LaTeX resume guides miss is that the template choice also determines whether your resume parses cleanly in the ATS standing between you and that hiring manager.
Why Developers and Academics Use LaTeX Resumes
Typography precision
LaTeX produces professionally typeset output that standard word processors cannot match. Character spacing, line height, hyphenation, and font rendering are handled by a typesetting engine rather than a WYSIWYG interface. The result is a document that looks like it came from a print production environment, not a consumer software tool.
Version control compatibility
LaTeX source files are plain text. This means you can track every change to your resume in Git, diff versions, branch for different job types, and maintain a clean history. For engineers who already live in terminal-and-editor workflows, this is a natural fit. Resume.docx in Dropbox is not.
Industry signaling
In software engineering, data science, quantitative finance, and academic research, a LaTeX resume is a soft signal that the candidate is technically competent and pays attention to detail. Hiring managers at tech companies and research institutions recognize the format. Jake's Resume became a de facto community standard in these circles.
Consistency across machines
A LaTeX-compiled PDF renders identically on every device. There are no font-substitution issues, no spacing shifts when opened in a different version of Word, no layout changes between Windows and Mac. For a document you are sending to dozens of employers, rendering consistency matters.
The ATS Compatibility Reality
LaTeX itself is not the ATS problem. Layout choices are. Here is what passes and what fails:
What passes ATS
- Single-column layouts compiled with pdflatex: Text flows in a single logical column, ATS reads it top-to-bottom, content is extracted correctly.
- Standard PDF text encoding: pdflatex embeds fonts in a way that makes text copy-pasteable from the PDF. If you can select and copy your name and work history from the PDF viewer, the ATS text extraction will work.
- Standard section headers: "Experience," "Education," "Skills" are universally recognized by ATS parsers. Custom headers like "Where I Have Worked" or "Things I Know" confuse some systems.
What fails ATS
- XeLaTeX and LuaLaTeX: These compilers are preferred for custom font loading and multilingual support, but they produce PDF output that some ATS parsers cannot extract text from reliably. Use pdflatex for job applications unless you have a specific reason to use XeLaTeX.
- Multi-column layouts: A two-column resume presents contact information or skills on the left and work history on the right. ATS systems typically read PDF text in the order it appears in the file, which for two-column layouts is often horizontally across the full width rather than within each column. The result is garbled output where "Python" and "2019-2022" appear mid-sentence in extracted work history.
- Custom fonts loaded as images: Some decorative templates embed font glyphs as vector images rather than text characters. These produce beautiful printed output but are completely invisible to text extraction.
- Graphics, tables, and text boxes: Content inside LaTeX table environments or TikZ graphics is often not extracted at all. Contact information placed in a header graphic is particularly dangerous: the ATS may have no way to identify your name or email.
- Unusual Unicode symbols: Decorative bullets, custom section separators using Unicode characters, and special glyphs may not be recognized by ATS character sets.
See how your resume scores against the job
We optimize it for ATS automatically, no manual fixes, and show your match score in seconds.
The Best LaTeX Resume Templates Compared
| Template | Best For | Style | ATS Risk | GitHub Stars / Usage |
|---|---|---|---|---|
| Jake's Resume | Software engineers, CS students | Minimal, single-column | Very low | Community standard in software engineering |
| Awesome-CV | Polished professional look | Modern, colored header | Low (if pdflatex) | Widely forked; Overleaf gallery |
| Moderncv | Academic and research roles | Clean, multiple theme options | Low to moderate (classic theme) | Long-established; CTAN package |
| Deedy CV | Design-forward two-page CVs | Two-column, dense | Higher (two-column layout) | Popular in CS academic circles |
| SWE Resume Template | Software engineers, new grads | Single-column, structured | Very low | Specifically built for ATS safety |
Jake's Resume (deep dive)
Jake's Resume is the closest thing to a community standard for software engineering resumes. It is a single-column, minimal template that has been widely adopted across the industry. The reason for its dominance is not just aesthetics: it is genuinely ATS-safe by design.
The template uses pdflatex-compatible fonts, a clean single-column layout, standard section headers, and no graphical elements. Contact information is in plain text at the top. Every element is extractable by ATS parsers.
Here is the core structure of Jake's Resume so you can understand what makes it work:
\documentclass[letterpaper,11pt]{article}
\usepackage{latexsym}
\usepackage[empty]{fullpage}
\usepackage{titlesec}
\usepackage{marvosym}
\usepackage[usenames,dvipsnames]{color}
\usepackage{verbatim}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
\usepackage{fancyhdr}
\usepackage[english]{babel}
\usepackage{tabularx}
\begin{document}
%----------HEADING----------
\begin{center}
{\Huge \scshape Your Name} \\ \vspace{1pt}
City, State $|$ \small \href{mailto:you@email.com}{you@email.com} $|$
\href{https://linkedin.com/in/yourprofile}{linkedin.com/in/yourprofile} $|$
\href{https://github.com/yourusername}{github.com/yourusername}
\end{center}
%-----------EDUCATION-----------
\section{Education}
\resumeSubHeadingListStart
\resumeSubheading
{University Name}{City, State}
{Bachelor of Science in Computer Science}{Aug. 2018 -- May 2022}
\resumeSubHeadingListEnd
%-----------EXPERIENCE-----------
\section{Experience}
\resumeSubHeadingListStart
\resumeSubheading
{Company Name}{Month Year -- Month Year}
{Job Title}{City, State}
\resumeItemListStart
\resumeItem{Accomplishment one with quantified impact}
\resumeItem{Accomplishment two using relevant keywords}
\resumeItemListEnd
\resumeSubHeadingListEnd
%-----------SKILLS-----------
\section{Technical Skills}
\begin{itemize}[leftmargin=0.15in, label={}]
\small{\item{
\textbf{Languages}{: Python, Java, C++, JavaScript} \\
\textbf{Frameworks}{: React, Node.js, Django, FastAPI} \\
\textbf{Tools}{: Git, Docker, Kubernetes, AWS}
}}
\end{itemize}
\end{document}
Key observations: no graphics, no two-column layout, no custom fonts, contact information in plain text at the top, technical skills in a plain text list. Every element passes the copy-paste test.
Awesome-CV
Awesome-CV produces a polished, visually distinctive resume with a colored header bar and clean section dividers. It is widely available on Overleaf and popular in professional circles. The ATS risk is low when compiled with pdflatex and when the header color is implemented as LaTeX color rather than an image. Verify with the copy-paste test before submitting to ATS-heavy portals.
Moderncv
Moderncv is an established LaTeX package (available via CTAN) with several themes: classic, banking, casual, and oldstyle. The classic and banking themes are single-column and ATS-safe. The package is widely used in academic circles, where CV formatting conventions differ from industry resumes. For PhD applications, research roles, and academic job markets, Moderncv's structured format is appropriate.
Deedy CV
Deedy CV is visually distinctive and popular in computer science PhD programs. Its two-column layout, however, is a known ATS parsing risk. If you use Deedy CV for industry applications, test your output with the copy-paste method before submitting. For academic applications where the document goes directly to a faculty committee rather than through an ATS portal, this risk is less relevant.
The Three Edits That Fix Almost Any LaTeX Template
Community LaTeX templates are optimized for how they look, not for how they parse, and the authors were right to do that: most were written before parser screening was the default and were shared as typography, not as job-search infrastructure. The good news is that the failure modes repeat. Across the popular templates, three edits resolve the overwhelming majority of parsing problems, and none of them requires understanding the template's internals.
Edit 1: Delete the icon package
Templates that show a little phone or envelope beside your contact details are loading FontAwesome or a similar glyph package. Those glyphs occupy the same position as text but frequently extract as replacement characters or as nothing, which can take your phone number and email out with them. Look near the top of the file for a line resembling one of these:
\usepackage{fontawesome} % or fontawesome5, academicons, etc.
% ...then further down, in the contact line:
\faPhone\ (512) 555-0142 \quad \faEnvelope\ jordan.avery@email.com
Remove the \usepackage line, then delete each \fa... command where it appears, leaving the text beside it intact. The result reads as plain characters and loses nothing a reader needs.
Edit 2: Collapse any side-by-side construction
This is the edit that matters most, because reading order damage is the failure that destroys meaning rather than just dropping a field. Search the file for minipage, multicol, tabular, and paracol. A tabular holding a genuine data table is fine. A tabular or minipage pair that positions your skills beside your experience is the problem:
% BEFORE: two streams, extracted in an unpredictable order
\begin{minipage}[t]{0.62\textwidth}
\section{Experience} ...
\end{minipage}
\hfill
\begin{minipage}[t]{0.34\textwidth}
\section{Skills} ...
\end{minipage}
% AFTER: one stream, unambiguous order
\section{Experience}
...
\section{Skills}
...
You lose the sidebar look and gain a document whose sections arrive in the sequence you intended. If the template used the sidebar to keep the resume to one page, recover the space by tightening margins with geometry rather than by restoring the columns.
Edit 3: Rename invented section headings
Designer-oriented templates like renaming sections. "Odyssey" for work history and "Arsenal" for skills look distinctive and leave the content underneath unlabeled, because classification looks for the conventional words. Change them back to Experience, Education, Skills, Projects. This is a pure find-and-replace and it costs you nothing that a hiring decision depends on.
One caveat on dates. Several templates place the date in a right-hand table cell, which detaches it from its role during parsing and can attach it to the wrong entry. Setting dates inline with \hfill on the same line as the job title avoids the problem entirely and looks identical.
| Template | Needs edit 1 (icons) | Needs edit 2 (columns) | Needs edit 3 (headings) | Effort to make safe |
|---|---|---|---|---|
| Jake's Resume | No | No | No | None, ships safe |
| Awesome-CV | Yes | No | No | Minutes |
| Moderncv (classic) | Yes, theme dependent | No | No | Minutes |
| Moderncv (casual/banking) | Yes | Theme dependent | No | Moderate, prefer classic |
| Deedy CV | No | Yes, core to the design | Some variants | High, the layout is the template |
| Friggeri CV | Yes | Yes, graphic sidebar | Yes | Not worth it, start elsewhere |
Read the last column as the actual recommendation. When a template needs all three edits, what remains afterwards is no longer that template, and you would have been faster starting from a single-column base. Our Overleaf CV template guide carries a complete minimal document you can paste into a blank project for exactly that case.
How to Use LaTeX Resume Templates on Overleaf
Overleaf is a browser-based LaTeX editor that requires no local installation. The free plan is sufficient for resume building. Here is the step-by-step process:
- Create a free Overleaf account at overleaf.com. No credit card required for the free tier.
- Browse the template gallery at overleaf.com/gallery and filter by "CV." Jake's Resume, Awesome-CV, and Moderncv are all available.
- Click "Open as Template" on your chosen template. Overleaf creates a copy in your account that you can edit directly.
- Edit the .tex source file in the left panel. Replace placeholder text with your actual information. The preview panel on the right updates automatically.
- Verify the compiler setting. In Overleaf, go to Menu (top left) and confirm "Compiler" is set to pdfLaTeX. This is the ATS-safe option.
- Compile and download. Click the green "Recompile" button to generate the PDF. Download via the PDF icon. The file is ready to submit.
- Run the copy-paste test on your downloaded PDF before submitting to any application portal.
Compile Errors You Will Hit, and What They Actually Mean
The gap between downloading a LaTeX template and having a resume is usually one confusing error message. LaTeX errors are notoriously bad at pointing to the real problem: the line number it reports is where the compiler finally gave up, which is often far from where you broke something. Five errors account for most of what goes wrong on a resume template, and each has a reliable fix.
| Error | What it usually means | Fix |
|---|---|---|
Undefined control sequence |
You used a command the document does not know, most often because you deleted a \usepackage line that defined it, or the template expects a package Overleaf has not loaded. |
Read which command it names. If you removed the package deliberately, remove its commands too rather than restoring it. |
Missing $ inserted |
An unescaped special character in ordinary text. Almost always a bare %, &, #, or _ in a company name or a metric. |
Escape it with a backslash: write \%, \&, \#, \_. This is the single most common resume-specific error, because achievements are full of percent signs. |
File ... not found |
The template references an asset you do not have, typically a logo, a photo, or a .cls class file that lived in the original repository. |
Upload the missing file, or delete the line that includes it. For a resume, a missing logo is usually one you did not want anyway. |
\begin{itemize} ended by \end{document} |
An unclosed environment. You deleted an \end{itemize} while removing a bullet, so LaTeX ran to the end of the file looking for it. |
Find the section you last edited and check every \begin has a matching \end. The reported line number is not where the problem is. |
Overfull \hbox |
A warning rather than an error, and the document still compiles. Something is too wide for the line, usually a long URL or an unbroken skill list. | Safe to ignore unless you can see text running into the margin. If you can, shorten the line or wrap the URL in \url{}. |
The escaping rule deserves emphasis because it bites resume writers specifically. Quantified achievements are exactly where a bare percent sign appears, and LaTeX treats % as the start of a comment. Write "reduced churn by 30%" unescaped and LaTeX silently swallows the rest of that line, so the bullet compiles without error and comes out truncated. That is worse than a crash, because nothing tells you it happened. Always write 30\%.
One workflow habit prevents most of this: recompile after every small edit rather than making ten changes and then building. When the document breaks you will know exactly which change did it, which turns a twenty-minute hunt into a five-second undo.
LaTeX vs Word vs Google Docs: When to Use Each
| Situation | Recommended Format | Reason |
|---|---|---|
| Software engineering (new grad / internship) | LaTeX (Jake's Resume) | Industry standard; ATS-safe; signals competence |
| Academic applications (PhD, postdoc, faculty) | LaTeX (Moderncv or Awesome-CV) | Expected format; CV conventions differ from industry |
| Quantitative finance, data science | LaTeX or Word | Either accepted; LaTeX preferred for research-adjacent roles |
| Corporate / non-technical roles | Word (.docx) or Google Docs | DOCX parses more reliably across legacy ATS systems |
| Recruiter submission (staffing agency) | Word (.docx) | Recruiters often edit candidate resumes; .docx is required |
| Creative / design roles | PDF from InDesign or Canva | Visual presentation outweighs ATS concerns for these roles |
| Federal government applications | Plain text or USAJobs builder | USAJobs has specific format requirements; LaTeX is overkill |
ATS Testing Your LaTeX Resume
Compiling successfully and producing a PDF is not the same as passing ATS. Here is the three-step testing process:
Step 1: The copy-paste test
Open your compiled PDF. Select all text (Ctrl+A / Cmd+A). Paste into a plain text editor. Check: Is your name at the top? Does your work history read in chronological order? Are your skills listed coherently? If the pasted text is scrambled or missing sections, your ATS extraction will fail.
Step 2: Application portal preview
Many ATS portals (Workday, Greenhouse, Lever) show a preview of the parsed resume before you submit. Use this preview to check that your contact information, work history, and skills sections appear as expected. If the portal shows garbled or missing text in the preview, do not submit until you resolve the issue.
Step 3: Job-specific ATS scoring
Even a perfectly parsed LaTeX resume can score poorly against a specific job if it lacks the right keywords, skill terminology, or job title alignment. After confirming your PDF parses cleanly, run it through an ATS checker against the actual job description you are targeting.
Resume Optimizer Pro's free ATS checker scores your resume against the specific job posting using the seven-category model enterprise ATS platforms use: skills, job titles, education, certifications, management level, industries, and languages. This is the step most LaTeX resume guides skip entirely.
Frequently Asked Questions
\usepackage{fontawesome} line and remove each \fa... command, leaving the text beside it. Your contact line then reads as plain characters and no human reader misses the icons.
minipage, multicol, paracol and a layout tabular all carry the same problem. Extraction flattens the page into one linear stream, and a two-column design gives that stream no reliable sequence: your job titles can interleave with your skills. The content is all technically present, which is what makes this failure so hard to notice. Two-column LaTeX is fine when a human opens the PDF directly, such as an emailed attachment or a conference handout.