LaTeX Resume: How to Make One (Templates, Overleaf, ATS)

What a LaTeX resume is, how to make one in Overleaf step by step, popular LaTeX resume templates (Jake's, Awesome-CV, moderncv, RenderCV) and ATS caveats.

S
resume LaTeX Overleaf templates ATS
Single-line ink drawing of curly braces that flows into the outline of a document, with one splash of blue ink

A LaTeX resume is a resume (CV) written as a plain-text .tex file and compiled into a PDF by a typesetting engine, instead of being laid out by hand in Word or Google Docs. Engineers and academics like it because the output looks the same every time, the source lives in git, and the templates are free. Most recruiters neither notice nor care which tool produced the PDF. The parser behind the application form sometimes does, and that is the part most LaTeX resume guides skip.

This guide covers what a LaTeX resume is, how to make one in Overleaf step by step, the templates people use (checked against their GitHub repositories in October 2026), and the text-extraction problems that can cost you a keyword match, with a test you can run in a minute.

What is a LaTeX resume?

LaTeX is a document preparation system built on the TeX typesetting engine. You write content and structure in a markup file, with commands such as \section{Experience} and \textbf{Design Engineer}, and a compiler (pdfLaTeX, XeLaTeX or LuaLaTeX) turns the file into a PDF. Formatting decisions live in the preamble and in macros, so changing the spacing between entries is a one-line edit rather than a drag through every entry.

A LaTeX resume uses that system for a one- or two-page job application document. In practice this means a template: a .tex file someone has already styled, where you replace the sample content with your own. The output is a PDF that you upload like any other.

Why engineers and academics like it

  • Consistent typography. Alignment, spacing and font sizes follow rules, so the page looks finished without manual nudging.
  • Plain text. The source goes in git. You can diff two versions, keep a branch per job type, and recover any bullet you deleted last month.
  • Free and portable. Overleaf runs in the browser; TeX Live runs on any OS. Templates are shared as code under open licences.
  • Academic CVs. Long publication lists, BibTeX integration and multi-page CVs are where LaTeX has no real competition.
  • It signals the tribe. In some engineering and research circles, the look of a Computer Modern resume reads as “one of us”. There is no way to measure what that is worth, so treat it as a tie-breaker and nothing more.

The costs

  • A learning curve on day one, and a slower edit loop on day thirty. Changing one bullet means recompiling.
  • Templates that look sharp on screen can extract as broken text (see the ATS section).
  • Converting to Word, when an application form insists on .docx, has no clean path.

How to make a resume in LaTeX with Overleaf

Overleaf is a browser-based LaTeX editor with a template gallery, and it needs no installation. A free account is enough for a resume (Overleaf plans).

1. Pick a template

Open Overleaf’s CV and résumé template gallery and choose one, or jump straight to a known template such as Jake’s Resume or the sb2nov software engineer resume. The next section compares the popular ones.

2. Open it as your own project

On the template page, click Open as Template. Overleaf copies the project into your account (Overleaf, Creating a project from a template). The editor opens with the source on the left and the compiled PDF on the right.

3. Read the file before editing it

A resume template has three parts:

  • the \documentclass line and the preamble, where packages are loaded and page margins, fonts and colours are set;
  • a block of custom commands such as \resumeSubheading or \cventry, which define how one job or one project is laid out;
  • the body, between \begin{document} and \end{document}, where the sample content lives.

Leave the first two alone on your first pass. Edit only the body.

4. Replace the content

Swap the name and contact line first, then work section by section. Keep the macro structure the template uses, because that is what keeps the alignment consistent. A plain-LaTeX entry, without template macros, looks like this:

\section{Experience}
\textbf{Design Engineer} \hfill Jun 2023 to present \\
\textit{Vellore Climate Systems, Pune}
\begin{itemize}
  \item Redesigned the air handler frame from 62 welded parts to 41,
        cutting unit cost 11\% and assembly time by 35 minutes per unit.
\end{itemize}

Five characters need a backslash in front of them in normal text: %, &, #, $ and _. An unescaped % comments out the rest of the line, so “cut cost 11% and” loses “and” and everything after it without an error. An unescaped & in a company name (“Smith & Co”) stops the compile with an error about alignment.

5. Recompile and read the log

Click Recompile. If the PDF does not update, open the log. Most first-time errors are a missing }, one of the five characters above, or a \item outside a list. Fix the first error in the log and recompile; later errors are often side effects of the first.

6. Download the PDF

Use the download icon next to the Recompile button, or Menu then Download then PDF (Overleaf, Exporting your work). Name the file Firstname-Lastname-Resume.pdf.

7. Test the text layer

Before you upload it anywhere, run the copy-paste test in the ATS section below. This is the step that separates a LaTeX resume that reads well from one that only looks good.

8. Keep the source

Menu then Download then Source gives you a zip of the project. Put it in a git repository. From there you can also compile offline with TeX Live (pdflatex resume.tex) or with Docker; the sb2nov repository ships a Dockerfile for that purpose.

Each entry below was checked against its GitHub repository and README in October 2026. Star counts are rounded and will drift.

Template Repository Licence Engine Notes
Jake’s Resume jakegut/resume MIT pdfLaTeX Single column. Based on sb2nov/resume. The repository is archived (last push August 2024) and the README marks the Overleaf template “Not updated”. About 2.8k stars.
sb2nov/resume sb2nov/resume MIT (format; the sample data belongs to the author) pdfLaTeX “A single-page, one-column resume for software developers.” Overleaf template, Dockerfile, still updated in 2026. About 7k stars.
Awesome-CV posquit0/Awesome-CV LPPL-1.3c XeLaTeX CV, résumé and cover letter in one template, with Font Awesome icons. The README assumes a full TeX distribution and compiles with xelatex; Overleaf links for both the résumé and the cover letter. About 28.7k stars.
moderncv moderncv/moderncv LPPL-1.3c pdfLaTeX (XeLaTeX or LuaLaTeX if you use academicons) A document class on CTAN, included in TeX Live, with five styles: classic, casual, banking, oldstyle and fancy. This repository is the maintained fork of the original xdanaux/moderncv. About 1k stars.
RenderCV rendercv/rendercv MIT Typst You write YAML, run rendercv render, and get a PDF. Its changelog says it switched from LaTeX to Typst in version 2.0 (January 2025), so it is a LaTeX alternative rather than a LaTeX template today. Themes include classic, sb2nov, moderncv and engineeringresumes. Version 2.8 as of March 2026. About 17.7k stars.

Which one to choose

  • One-page, ATS-first, engineering or software: sb2nov/resume, or Jake’s Resume if you already have it. Both set \pdfgentounicode=1 in the preamble, which matters in the next section.
  • Academic CV, cover letter, icons and colour: Awesome-CV or moderncv. Both can extract in order, but icons and sidebars need the copy-paste test each time you change the layout.
  • Plain-text input without learning TeX: RenderCV. You get the LaTeX-style output from YAML, and the themes mimic the templates above.

ATS caveats for LaTeX PDFs

An applicant tracking system reads the text layer of your PDF, not the picture. LaTeX produces excellent pictures. The text layer is where things go wrong, in four ways.

Ligatures

Most LaTeX fonts replace letter pairs such as “fi”, “fl” and “ff” with a single combined glyph. If the PDF does not carry a mapping from that glyph back to the two letters, a text extractor returns a missing or odd character, and “efficient” comes out as “e cient”, or with the three middle letters replaced by one ligature character (ffi). A recruiter searching for “financial” or “workflow” then misses your resume, even though the word is on the page.

In pdfLaTeX the fix is two lines in the preamble, which both Jake’s Resume and sb2nov/resume already include, with the comment “Ensure that generated PDF is machine readable/ATS parsable” in the source (sb2nov/resume, sourabh_bajaj_resume.tex):

\input{glyphtounicode}
\pdfgentounicode=1

Under XeLaTeX and LuaLaTeX those commands do not apply, and the result depends on the engine and the TeX Live version. A 2018 report on the TeX Live mailing list showed a ligature mapping present in a PDF from TeX Live 2017 and missing from the same document compiled with XeLaTeX in TeX Live 2018, while LuaLaTeX kept it in both (tex-live list, May 2018). The lesson is to test the PDF you are about to upload, rather than trust a template’s claim.

Columns, minipages and tables

Two-column LaTeX templates are built from minipage, multicol or tabular. The PDF stores the text in whatever order the engine emitted it, which may be row by row across both columns. Roche’s resume parsing FAQ describes the effect from the employer’s side: “Since ATSs are programmed to read left to right, some will read columns straight across” (Roche, Resume Parsing FAQ). The same page lists tables and text boxes among the things to avoid.

Jake’s and sb2nov’s templates use tabular* for the heading rows (title on the left, dates on the right). In their case the row is short and extracts as one line, which is harmless. Problems start when a whole skills sidebar sits in a column beside the experience section.

Icons

Font Awesome icons for email, phone and GitHub are glyphs from an icon font. In extracted text they show up as a private-use character or disappear. That is fine as long as the text next to the icon carries the information: github.com/yourname as text, not an icon alone. Check the contact line in your pasted output.

Fonts and headers

pdfLaTeX embeds the standard Type 1 fonts, and copy-paste from Computer Modern or Latin Modern works with the ligature fix above. If you load an unusual font through fontspec, test it. Put contact details in the body rather than in a fancyhdr page header, for the reason Roche gives: “Information in the header and footer sometimes gets dropped by the ATS completely.” If the template loads hyperref, set pdftitle and pdfauthor so the file’s metadata carries your name.

How to test a LaTeX PDF in one minute

  1. Open the PDF in any viewer, select all, copy, and paste into a plain text editor.
  2. Search the pasted text for “fi”, “fl” and “ff” words you know are on the page: “efficient”, “workflow”, “financial”, “offline”.
  3. Check that your email and phone are present and that sections appear top to bottom in the order you expect.
  4. For a second opinion, run pdftotext resume.pdf - from the command line (part of Poppler, available through most Linux package managers and through Homebrew on macOS). The output is close to what a parser sees.
  5. Search that output for the posting’s key terms. If a term is on the page but not in the output, fix the source before you apply.

Everything above is about text extraction, which you can verify yourself. Claims that a template “passes” a named ATS cannot be verified from the outside, and this article makes none.

A LaTeX look without LaTeX

Resume Matcher is a free, open-source app (Apache 2.0) that you download and run on your own machine. It tailors a master resume to each job description using your own AI model (Claude, ChatGPT, Gemini, DeepSeek or a local model through Ollama), with code-level guardrails that lock your employers, titles and dates and revert any number the model invents. There is no hosted website, and it is not an ATS checker.

Its builder includes seven templates, one of which, LaTeX, is an HTML template with the look of a classic LaTeX resume. Like the other six, it exports a text-based PDF printed from real web-page text in a headless Chrome browser, on A4 or US Letter, with margins, spacing and font controls. It does not produce a .tex file. If you want the look without a compiler, it is the quickest route; if you want the source, use the LaTeX versions below or one of the templates above. Previews are on the PDF templates page.

The same seven designs as LaTeX templates

All seven of the app’s designs are also available as standalone LaTeX projects in resume-matcher-templates, under Apache 2.0. Each one compiles with pdfLaTeX, with no shell escape and no font downloads. To use one on Overleaf:

  1. Download one template’s ZIP from the repository. On GitHub, open the ZIP’s file page and use Download raw file.
  2. In Overleaf, choose New project → Existing project (.zip) and upload it.
  3. Set the main document to main.tex and the compiler to pdfLaTeX.
  4. Replace the sample content in resume.tex, including the example.com profile links, and the PDF title and author in main.tex.

Each project needs three files together: main.tex, resume.tex and resume-matcher.sty. A single .tex file pasted into a blank project will not compile. The two-column designs carry the same extraction caveat as any two-column layout, so run the copy-paste test above on your PDF.

The template is the small part of either route. Tailoring the content to each posting is what moves a resume up the list; the method is in how to match your resume to a job description, and the vocabulary work is in the resume keywords guide.

FAQ

Is a LaTeX resume ATS-friendly? It can be. A single-column template compiled with pdfLaTeX and \pdfgentounicode=1 extracts as clean text. A two-column template with icon fonts might not. The copy-paste test above tells you which you have.

Do recruiters care that my resume is made in LaTeX? They see a PDF. Some engineering and academic readers recognise the style; most readers do not think about it. Content and clean extraction matter more than the tool.

pdfLaTeX, XeLaTeX or LuaLaTeX? Use what the template’s README says. Jake’s and sb2nov compile with pdfLaTeX; Awesome-CV compiles with XeLaTeX; moderncv works with pdfLaTeX unless you add academicons. Overleaf lets you switch the compiler in the project menu.

Can I convert a LaTeX resume to Word? There is no reliable path that preserves the layout. If an application form demands .docx, keep a parallel Word version with the same content, or build that version in a tool that exports it.

How do I keep one version per job? Put the project in git and use a branch or a copy of the .tex per posting, sharing the preamble. RenderCV’s YAML input makes the same workflow easier to diff. Resume Matcher does the same job through its builder, keeping a master and a tailored copy per application.

If this guide helped, star Resume Matcher on GitHub. Saurabh Rai builds it; follow him on GitHub, X and LinkedIn.

[This article was drafted, edited and formatted with the help of AI. Product facts were checked against the Resume Matcher source code, and outside sources are linked where they are used.]

Enjoyed this post? Star Resume Matcher on GitHub and follow along