\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{SuperLede} \pdfinfo{ /Title (ats-friendly-resume-formatting.pdf) /Creator (Cheatography) /Author (SuperLede) /Subject (ATS-Friendly Resume Formatting Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{ATS-Friendly Resume Formatting Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{SuperLede} via \textcolor{DarkBackground}{\uline{cheatography.com/219377/cs/48581/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}SuperLede \\ \uline{cheatography.com/superlede} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 8th November, 2026.\\ Updated 8th November, 2026.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{About these notes}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Numbers come from tests by ReadableResume (I run it): one sample resume with 46 fields, built in Google Docs, downloaded as a PDF and read by OpenResume, an open-source resume parser. 10 layouts and 32 fonts were tested, changing one thing at a time.\{\{nl\}\}\{\{nl\}\}It's one parser. Workday, Greenhouse, iCIMS and other hiring systems may behave differently, and a misread field is not the same as a rejection.% Row Count 9 (+ 9) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.43873 cm} x{2.53827 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Layout}} \tn % Row 0 \SetRowColor{LightBackground} One column & 46/46 fields read \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Photo next to the name & 46/46 \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} Icons in the contact line & 46/46 \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} Skill rating bars & 46/46 \tn % Row Count 6 (+ 1) % Row 4 \SetRowColor{LightBackground} Contact details in the page header & 46/46 from the Google Docs PDF \tn % Row Count 8 (+ 2) % Row 5 \SetRowColor{white} Two columns (table or Format \textgreater{} Columns) & 42/46. Lines that wrapped in the narrow column were cut or misread \tn % Row Count 12 (+ 4) % Row 6 \SetRowColor{LightBackground} Name and contact in a text box & 34/46. Exported as a picture \tn % Row Count 14 (+ 2) % Row 7 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{Photos and skill bars didn't lower the score in this test. Check they leave room for dates and degree titles to stay on one line.} \tn % Row Count 17 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Fonts that parsed cleanly}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{9 of 32 fonts kept every character and read 46/46 after a Google Docs PDF export:\{\{nl\}\}\{\{nl\}\}Arial · Book Antiqua · Calibri · Cambria · EB Garamond · Garamond · Georgia · Times New Roman · Trebuchet MS% Row Count 5 (+ 5) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.89126 cm} x{3.08574 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Fonts to watch}} \tn % Row 0 \SetRowColor{LightBackground} Letter pairs (ligatures) & 16 fonts, including Roboto, Lato and Open Sans, stored pairs such as "fi" and "fl" as one character \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} Lost spaces & In 15 of those, the parser dropped the space before the word: `checks first` → `checksfirst` \tn % Row Count 9 (+ 4) % Row 2 \SetRowColor{LightBackground} Aptos & Google Docs drew it in Arial. The company name was read onto the date line (36/46) \tn % Row Count 13 (+ 4) % Row 3 \SetRowColor{white} Helvetica & Google Docs drew it in Helvetica Neue \tn % Row Count 15 (+ 2) % Row 4 \SetRowColor{LightBackground} Inter & Brackets and hyphen in the phone number saved as private-use characters; phone field empty \tn % Row Count 19 (+ 4) % Row 5 \SetRowColor{white} Tahoma, Roboto Slab & Company name read onto the date line \tn % Row Count 21 (+ 2) % Row 6 \SetRowColor{LightBackground} Courier New & Words run together, 10/46 \tn % Row Count 23 (+ 2) % Row 7 \SetRowColor{white} Page length & 15 fonts pushed the one-page sample onto two pages at the same sizes \tn % Row Count 26 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.43873 cm} x{2.53827 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Sizes}} \tn % Row 0 \SetRowColor{LightBackground} Body text & 10.5–11 pt \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Section headings & 11–12 pt, bold \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} Your name & 18–22 pt, bold \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} Never below 10 pt & Cut a line instead \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{One font for the whole page. Use size and bold for hierarchy.} \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Text boxes}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Google Docs exported the text box as a {\bf{picture}}. The words were visible but not in the PDF's text.} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{The parser found no name, email, phone or links, and took the heading `EDUCATION` as the name.} \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{The .docx download of the same document still held the text, inside the text box.} \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{Fix:}} move contact details into the body of the document.} \tn % Row Count 9 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.04057 cm} x{2.93643 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Dates}} \tn % Row 0 \SetRowColor{LightBackground} Dates in a wide table column & 46/46 \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Same column, too narrow & Dates wrapped; the year on line 2 was read as the company (`2025`). 40/46 \tn % Row Count 6 (+ 4) % Row 2 \SetRowColor{LightBackground} Rule of thumb & Keep each date range on one line \tn % Row Count 8 (+ 2) % Row 3 \SetRowColor{white} Short months (Jan, Aug) & OpenResume doesn't treat them as months, but the year carried the date and it still read correctly \tn % Row Count 13 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.84149 cm} x{3.13551 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Export from Google Docs}} \tn % Row 0 \SetRowColor{LightBackground} PDF & File \textgreater{} Download \textgreater{} PDF Document \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} Print to PDF & Turn off {\bf{Headers and footers}} under More settings, or the date and doc URL get printed \tn % Row Count 6 (+ 4) % Row 2 \SetRowColor{LightBackground} Word & File \textgreater{} Download \textgreater{} Microsoft Word (.docx) \tn % Row Count 8 (+ 2) % Row 3 \SetRowColor{white} Don't & Convert a PDF to Word. Converters rebuild lines as text boxes and tables \tn % Row Count 11 (+ 3) % Row 4 \SetRowColor{LightBackground} Don't & Send a screenshot or image \tn % Row Count 13 (+ 2) % Row 5 \SetRowColor{white} Header contact in .docx & Fine in the PDF, but in the .docx the name and contact sit in the header part, outside the main body \tn % Row Count 17 (+ 4) % Row 6 \SetRowColor{LightBackground} File name & \seqsplit{`Firstname-Lastname-Resume}.pdf` \tn % Row Count 19 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Parser limits worth knowing}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Phone numbers: only US style, e.g. (555) 555-5555. +44 7700 900123 was not recognised.} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Locations: expects "City, ST". "Manchester, England" was not recognised.} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Links: only one is kept. A second link stays in the text, not the link field.} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Headings: English section headings only.} \tn % Row Count 7 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Two pages: the last line of page 1 is joined to the first line of page 2. Harmless between bullets; breaks the entry between jobs.} \tn % Row Count 10 (+ 3) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Names: José Álvarez and Иван Петров read correctly; 王小明 left the name field empty.} \tn % Row Count 12 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Self-check before you apply}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{1.}} Open the PDF, select all, paste into a plain text editor.} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{2.}} Name, email and phone at the top? If not, look for a text box or image.} \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{3.}} Each date range on one line?} \tn % Row Count 5 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{4.}} Any words joined together, or bullets turned into boxes? Change the font.} \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{5.}} Same page count as in Google Docs?} \tn % Row Count 8 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{6.}} Run the PDF through a parser to \{\{link="https://readableresume.com/ats-resume-checker"\}\}see what an ATS parser reads from your resume\{\{/link\}\}. It runs OpenResume in the browser; the file isn't uploaded.} \tn % Row Count 13 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}