cvmakeover.ai

Published

Best Font for Resume in 2026: 14 Fonts Through an ATS Parser

We ran 14 resume fonts, Aptos and a Calibri twin included, through two PDF text extractors. All 14 survived. Letter spacing, icon fonts and outlines did not.

A resume page beside a magnifying glass; under the lens, one heading has its letters drifting apart while the body lines stay intact

TL;DR: The best font for a resume is any standard text font you find easy to read at 10–12 pt: Aptos, open-source stand-ins for Calibri, Arial and Times New Roman, and EB Garamond all came through our parser test intact. What breaks an ATS read is typography around the font: wide letter spacing on headings, icon fonts beside your contact details, characters your font doesn't contain, and text exported as outlines. Pick for the reader, then check what the parser gets.

Does the font on your resume matter to an ATS?

An applicant tracking system reads characters, not letter shapes. Before any parsing or keyword search, it pulls the text out of your file, and every later step works on that text. Font choice matters to an ATS only if it changes which characters come out.

Text extraction: the step where software reads the characters stored in a PDF or Word file, as opposed to the shapes drawn on the page. In a PDF each font carries a map (the ToUnicode table) from the glyphs it draws back to the letters they stand for.

That map is why "ATS-safe font" lists miss the point. A font is safe when the file you export carries a correct map for every glyph you used. Ligatures show how this works. When a font joins "f" and "i" into a single "fi" glyph, a correct ToUnicode entry maps that one glyph back to two code points, and the extractor recovers "fi". When the entry is missing, the extractor has nothing to map that glyph back to, and the letters it stands for can drop out of the text.

So the useful question is narrower than "which font": does your font, as exported by your tool, give back the exact characters you typed? We tested that directly instead of repeating the usual top-ten list.

The test used the same open-source pipeline cvmakeover.ai builds its templates with: react-pdf writes the PDF, then two independent extractors read it back. One is PDF.js, Mozilla's PDF engine, called through pdf-parse. The other is pdftotext from Poppler. We could not test the extraction code inside commercial ATS products, so treat our two extractors as two samples of how parsers behave, not as a copy of any one product.

We ran 14 fonts through two extractors: all 14 survived

Each font set the same four CV lines at 11 pt. The lines were written to stress the weak spots: ligature pairs ("office", "fluent", "efficiency", "affiliate"), accented names ("Zürich, Malmö, Málaga") and a percentage. We then checked whether every line came back verbatim from PDF.js and from pdftotext.

Proprietary Microsoft fonts can't be bundled into a test like this, so we used open fonts with matching metrics where they exist. Carlito is metric-compatible with Calibri, and Liberation Sans and Liberation Serif aim at metric compatibility with Arial and Times New Roman. Aptos we tested as itself: Microsoft offers it as a free download.

FontStands in forLigature glyphs usedPDF.jspdftotextWidth vs Arial metricsx-height (em)
Aptositself94/4 lines4/4 lines−3.3%0.476
CarlitoCalibri134/4 lines4/4 lines−8.7%0.478
Liberation SansArial04/4 lines4/4 linesreference0.528
Liberation SerifTimes New Roman04/4 lines4/4 lines−6.6%0.459
Arimo(open sans-serif)04/4 lines4/4 lines±0.0%0.528
Tinos(open serif)04/4 lines4/4 lines−6.6%0.459
Caladea(open serif)04/4 lines4/4 lines−7.8%0.467
Interitself04/4 lines4/4 lines+7.1%0.546
Robotoitself94/4 lines4/4 lines−0.5%0.528
Latoitself94/4 lines4/4 lines−2.2%0.506
Open Sansitself94/4 lines4/4 lines+4.6%0.535
Source Serif 4itself94/4 lines4/4 lines+7.9%0.475
Merriweatheritself94/4 lines4/4 lines+9.2%0.555
EB GaramondGaramond-style94/4 lines4/4 lines−13.3%0.400

Nine of the 14 fonts replaced letter pairs with single ligature glyphs in our sample (Carlito even joins "t" and "i"), and both extractors still returned the original letters, because react-pdf wrote a correct ToUnicode entry for each ligature. Ligatures are a risk only when the tool that writes your PDF skips that entry, and the plain-text check at the end of this article catches that in a few seconds.

The two right-hand columns don't affect parsing at all. They describe how the font reads to a human, and they come back in the section on choosing a font.

How much letter spacing is too much for an ATS?

Wide tracking on headings is the font-adjacent setting that did fail. We set four uppercase headings (EXPERIENCE, EDUCATION, SKILLS, CERTIFICATIONS) and two names (Jane Doe, AVERY WATSON) in Inter and in EB Garamond at 9, 11 and 14 pt, with letter spacing from 0 to 3 pt, and extracted every version with both tools.

Heading sizeLargest spacing that came back as wordsSmallest spacing that splitPDF.js at that pointpdftotext at that point
9 pt0.5 pt1 pt6 of 6 strings split3 of 6 strings split
11 pt1 pt1.25 pt6 of 6 strings split3 of 6 strings split
14 pt1.25 pt1.5 pt6 of 6 strings split3 of 6 strings split

Both fonts produced identical results, and both extractors broke at the same point. Up to 0.091 em of extra spacing (a little under a tenth of the font size), every string came back whole. From 0.107 em upward, PDF.js put a space between every letter and returned "E X P E R I E N C E" and "J a n e D o e". Poppler's pdftotext held on to EXPERIENCE, SKILLS and Jane Doe but split the three strings that contain letter pairs fonts kern tighter (AT, AV, WA), returning "E D U C AT I O N" with the kerned pair still glued together.

A split heading is no longer a heading. Greenhouse lists "a resume with spaces between the letters" among the causes of an unsuccessful resume parse, because its parser "won't recognize the separate letters as a single word". The fix is cheap: keep tracking on headings under 0.1 em (under 1 pt on 10 pt type, under 1.2 pt on 12 pt), or drop it and mark headings with weight and size instead.

The same failure turned up in cvmakeover.ai's own templates, which used wide tracking on some section headings and now cap it at 0.4 pt. Our two-column resume test shows what one of those templates did to a candidate's name before the fix.

Icon fonts, missing characters and outlines: what came out as garbage

Three more font-related choices broke extraction in the same pipeline, and none of them is about which typeface you pick.

Icon fonts next to contact details. We placed Font Awesome's envelope and phone icons in front of an email address and a phone number. Both extractors returned the icons as U+F0E0 and U+F095, code points in Unicode's Private Use Area, which by definition carry no agreed meaning. Whatever parser reads the file gets a meaningless symbol glued to your email address and phone number. Google's Material Icons behave worse: they draw an icon from its name through a ligature, so the extracted text read "phone +358 40 765 4321", with the word "phone" injected into your contact details.

Characters your font doesn't contain. We set "Łukasz Dvořák, Kraków" in a font build that lacks "Ł" and "ř". PDF.js returned "A ukasz DvoY ák" (with tab characters in the gaps), and pdftotext split the name across three lines. The same text in a font build that covers Central European letters came back intact. If your name, a former employer or a city you lived in uses letters outside basic Latin, check that your font includes them.

Text converted to outlines. Some exports turn text into vector shapes. We converted a test PDF with Ghostscript's NoOutputFonts switch, which stores all text as vectors instead of fonts. The page looked unchanged; both extractors returned 0 of the 215 characters.

Word files behave differently. A .docx stores your characters as text, and formatting sits beside them as properties. In our DOCX test, read back with Mammoth, small caps, all caps and 3 pt character spacing all came back as typed ("Work experience", "Education", "Skills"). The exception was again symbol fonts: a Wingdings envelope inserted as a symbol came back as the pictograph 🖂 (U+1F582), and a "(" typed in Wingdings, which Wingdings draws as a telephone, came back as a bare "(" in front of the phone number.

Calibri, Arial, Aptos or Times New Roman: choosing for the human reader

Since the parser treats all 14 fonts the same, pick the font for the recruiter who reads the printout or the screen. Two measurements from the table decide most of it.

Width sets how much fits on a line. At the same point size, Carlito (Calibri's metrics) set our sample 8.7% narrower than Arial's metrics, and the Times New Roman equivalent 6.6% narrower. Aptos lands between them at 3.3% narrower than Arial. If your resume runs a few lines over a page, a narrower font recovers them without dropping below a readable size; the CV length guide covers when two pages is the better answer.

x-height (the height of lowercase letters as a share of the type size) decides how large text looks at 10–11 pt. Fonts with a tall x-height, such as Liberation Sans (0.528 em) or Merriweather (0.555 em), look larger at the same point size than Garamond-style faces. EB Garamond's 0.400 em means its lowercase letters at 11 pt are as tall as Liberation Sans letters at about 8.3 pt (0.400 × 11 ÷ 0.528), so set Garamond-style faces at 11.5 or 12 pt.

Size guidance from university career centers is consistent. CU Denver's career and writing centers advise 10–12 pt, with 11 pt recommended for body text, and Texas Tech's 2026 checklist asks for a 10–12 point size that is easy to read.

On defaults: Calibri, designed by Lucas de Groot, became the default font in Office in 2007. Steve Matteson designed Aptos as the new default Office font to replace Calibri, and in July 2023 Microsoft announced it would start appearing as the new default across Word, Outlook, PowerPoint and Excel. A resume in Aptos looks current; one in Calibri looks like the familiar default it was for 15 years. Neither choice affects the parse.

A short list that passed our test and reads well at 10–12 pt:

  • Sans-serif: Aptos, Calibri (via Carlito), Arial (via Liberation Sans), Lato, Roboto, Inter.
  • Serif: Times New Roman (via Liberation Serif), Source Serif 4, Merriweather; Garamond-style faces at 11.5 pt or larger.

Use one family for the whole document, two at most (one for headings, one for body). The parser doesn't care either way, but a mixed page reads as unplanned.

How to check what your font did to your resume

The test that matters is the one run on your own exported file, because the export tool (Word, Google Docs, Canva, a resume builder) decides how glyphs are mapped back to letters.

  1. Export the exact file you will upload. Each export route writes font data its own way, so test the final file, not a draft from another tool.
  2. Select all text in the PDF, copy it and paste it into a plain-text editor. Look for split headings ("E X P E R I E N C E"), boxes or odd symbols before your email and phone, missing letters in your name, and words like "phone" or "mail" that you didn't type.
  3. Search the pasted text for three words a recruiter would search: your job title, one core skill and your surname. If one of them doesn't match, a recruiter's keyword search in the ATS can miss it too.
  4. Run a parser over the file. The free cvmakeover.ai ATS checker extracts your upload the way a parser does, shows you the raw text it read, and flags letter-spaced headings and unreadable characters by name.

If step 2 already looks clean, your font is fine, whichever one it is. Layout is a separate question (columns, tables, Word headers, section labels), covered in the ATS-friendly resume format guide.

Is Aptos ATS-friendly?+

Yes. We embedded Aptos, downloaded from Microsoft, in a test PDF and both extractors we used (PDF.js and Poppler's pdftotext) returned every character, including the ff, fi and fl ligatures Aptos substitutes. As with any font, check your own export by copying the text out of the PDF.

Which font is better for a CV, Calibri or Arial?+

Both parse cleanly, so choose by space and taste. Calibri's metrics (tested through Carlito) set our sample about 9% narrower than Arial's (tested through Liberation Sans), which fits more on a page. Liberation Sans also has the taller x-height of the two stand-ins (0.528 vs 0.478 em), so Arial-style text looks larger at 10–11 pt.

Is the Cambria font good for a resume?+

We didn't test Cambria itself because it is not freely redistributable. Nothing in our results suggests a standard serif text font is a parsing risk; the failures we found came from letter spacing, icon fonts, missing characters and outlined text. Copy the text out of your exported PDF to confirm.

Is 8.5 pt too small for a resume?+

For body text, yes by the usual guidance: university career centers such as CU Denver and Texas Tech recommend 10–12 pt, with 11 pt suggested for body text. Small sizes also tolerate less letter spacing: in our test, 1 pt of tracking split 9 pt headings but not 11 pt ones.

Which fonts should you avoid on a resume?+

Avoid icon and symbol fonts (Font Awesome, Material Icons, Wingdings) for anything a parser needs to read, fonts that lack the letters in your name, and decorative display faces that are hard to read at 10–12 pt. Avoid wide letter spacing on headings in any font.

Key takeaways

  • An ATS reads characters, not letter shapes. In our test, 14 of 14 standard fonts, Aptos and Calibri's metric twin included, came back character for character from two different extractors.
  • Ligatures were harmless in a correctly written PDF: nine fonts used them and every "fi", "fl" and "ffi" was recovered. The plain-text paste test shows whether your export tool wrote the mapping.
  • Heading letter spacing is the real font-related risk. Both extractors began splitting headings into single letters once tracking reached about 0.1 em of the font size, and Greenhouse names spaced-out letters as a parse-failure cause. Keep tracking under 0.1 em.
  • Icon fonts inject private-use characters or stray words ("phone") into your contact line, and a font missing a letter in your name corrupts the name. Both are fixed by plain text in a font that covers your characters.
  • Choose the face for the human reader: 10–12 pt body text, one or two families, and a narrower font such as Calibri or Times New Roman when you need a few more lines on the page.