Skip to content
ATSPrep
Build my resume

Resume headers and footers in PDF and DOCX text extraction

We put a resume's contact details in a header and page numbers in a footer, then read the PDF and DOCX with three extractors. Here's where they landed.

From Where each reader put the header and footer
In this guide

A header or footer is text that repeats on every page, outside the body. In our fixtures it was never lost from a PDF, but it moved: pdf.js returned a printed header at the end of each page, pdftotext returned it first and then again in the middle of the text. Our checker used to find the email but not the name, and our DOCX importer used to miss Word's header entirely; we fixed both on 20 October 2026 after these tests.

The short version

  • pdf.js returned the header and the “Page N of 2” footer as the last two lines of each page: lines 37 to 38, then 54 to 55 of 55.
  • pdftotext and our checker read the header first, then repeated it straight after page 1's footer.
  • With name, email and phone on one header line, our checker used to find the email and phone but no name. Since our fix on 20 October 2026 it finds all three.
  • From a DOCX with the contact details in Word's header, our importer used to find no name, email or phone: the header is a separate part of the file. Since the fix it reads that part too.
  • Greenhouse lists name and contact information in the header or footer as a cause of failed parses.

Where each reader put the header and footer

Two fixtures: a two-page PDF printed by Chromium with a running header and a page-number footer, and a Word DOCX with the name and contact line in its header and a PAGE field in its footer, also exported to PDF.

Fixturepdf.jspdftotextATSPrep checker
Print header and footer, 2 pages (Chromium)header and footer at the end of each pageheader first, again after “Page 1 of 2”name, email and phone found (name missed before the fix)
Word header and footer (DOCX)not a PDFnot a PDFname, email and phone found (none before the fix)
The same Word file saved as PDFheader first, footer on line 3header first, footer lastname, email and phone found
Headers and footers by reader

Headers and footers in a PDF

PDF 32000 §14.8.2.2 (checked 19 October 2026) classes these as "Pagination artifacts. Ancillary page features such as running heads and folios (page numbers)", and notes that a reader "probably should not speak running heads or page numbers when the page is turned". In an untagged PDF nothing marks them, so each extractor places them by its own rule.

pdf.js follows the order the text was drawn in. Chromium draws its print header and footer after the page body, so they came back as the last lines of each page. pdftotext and our checker sort by position, so the header came first, and on page 2 it came back again, wedged between page 1's footer and the rest of the experience section.

Our checker also used to miss the name on that header line, because the name, email and phone shared one line. Since our fix on 20 October 2026 it takes the words before the email as the name when they read like one.

  1. 01• Cut weekly reporting time from 6 hours to 40 minutes by automating SQL pipelines
  2. 02• Built a churn model that three regional sales teams now use to plan renewals
  3. 03Maya Ortiz | maya.ortiz@example.com | (555) 010-4477
  4. 04Page 1 of 2
Before: end of page 1 (pdf.js 6.3.289, header-footer.pdf)
  1. 01• Built a churn model that three regional sales teams now use to plan renewals
  2. 02Page 1 of 2
  3. 03Maya Ortiz | maya.ortiz@example.com | (555) 010-4477
  4. 04• Trained 12 analysts on dbt and code review
Before: the page break (the ATSPrep checker, header-footer.pdf)
  1. 01Maya Ortiz
  2. 02maya.ortiz@example.com | (555) 010-4477 | Denver, CO
  3. 03EXPERIENCE
  4. 04Senior Data Analyst, Northwind Traders Inc. | 2021 - Present
After: contact details in the body (the ATSPrep checker, order-single-column.pdf)

Headers and footers in a DOCX

A DOCX keeps its header and footer in separate parts of the file (word/header1.xml and word/footer1.xml), outside the main document. Our importer used to read only the main document, so it never saw the name, email or phone, and it took the first heading, “Experience”, as the name. We fixed that on 20 October 2026 after these tests: it now reads the header part first and keeps contact details from the footer, and skips page numbers. Whether another parser reads those parts is up to that parser.

The PDF export from LibreOffice 26.8.1.1 put the header text on the page, and all three readers found it at the top. pdf.js placed the footer's “Page 1” on line 3, before the experience section.

  1. 01Maya Ortiz
  2. 02maya.ortiz@example.com | (555) 010-4477 | Denver, CO
  3. 03EXPERIENCE
  4. 04Senior Data Analyst, Northwind Traders Inc. | 2021 - Present
Since the fix: Word header, read from the DOCX (the ATSPrep checker, header-word.docx)
  1. 01Maya Ortiz
  2. 02maya.ortiz@example.com | (555) 010-4477 | Denver, CO
  3. 03Page 1
  4. 04EXPERIENCE
  5. 05Senior Data Analyst, Northwind Traders Inc. | 2021 - Present
The same file as PDF (pdf.js 6.3.289, header-word-pdf.pdf)

What ATS vendors say about headers and footers

Greenhouse's article on unsuccessful resume parses (checked 19 October 2026) lists both "Complex resumes with tables, headers, and footers" and "Resumes with the name and contact information in the header, footer, or text box".

How to fix headers and footers

  • Put your name on the first line of the body and your email, phone and city on the next.
  • Leave Word's header and footer empty, or keep only a page number in the footer.
  • On a two-page resume, don't repeat your name in a running header; it reappears mid-text when extracted.
  • Write the name on its own line rather than joined to the email with separators.
  • Check the export: the first lines a reader returns should be your name and contact details.

How we tested

We built every fixture from the same fictional one-page resume, changing one thing at a time. PDFs come from Chromium 153.0.8010.12 (printed through Playwright 1.63.0) and from LibreOffice 26.8.1.1 converting our DOCX files, the way Word users export. Each file was read three ways: pdf.js 6.3.289 getTextContent, poppler pdftotext 26.10.0 in its default mode, and the importer the ATSPrep checker runs in your browser. DOCX files have no PDF text layer, so only our importer reads them. The code blocks on this page are the readers' output, copied by script; private-use and control characters are written as [U+XXXX] because they would otherwise be invisible.

These are three common open readers, not any employer's applicant tracking system. Commercial parsers use their own extractors, so treat a failure here as a risk to remove, not a prediction of what a specific system will do.

Common questions

Do ATS read headers and footers in a resume?

Some do and some don't, and the ones that do may put the text somewhere unexpected. In our PDF test pdf.js returned the header at the end of each page and pdftotext returned it first and again mid-text. From a DOCX, our importer didn't read Word's header at all until we fixed it on 20 October 2026.

Should I put my contact information in the header of my resume?

No. Greenhouse lists contact information in the header, footer or a text box as a cause of failed parses, and in our DOCX fixture our importer missed the header's name, email and phone entirely until we fixed it. Other parsers may still miss them. Put them in the first lines of the body.

Do page numbers in the footer hurt ATS parsing?

They add stray lines. pdf.js returned “Page 1 of 2” between the experience entries of a two-page PDF, and on a one-page Word export it put “Page 1” before the experience section. A one-page resume doesn't need them.

Why does my name appear twice in my resume's extracted text?

A running header repeats on every page, so a two-page resume carries it twice. In our test pdftotext and the ATSPrep checker returned the header at the top and again straight after page 1's footer.

Sources and further reading

  1. PDF 32000-1:2008, §9.10 Extraction of Text Content and §14.8.2 Logical Structure, Adobe / ISO
  2. Unsuccessful resume parse, Greenhouse Support
  3. PDFPageProxy.getTextContent, PDF.js API, Mozilla
  4. pdftotext(1) manual page, poppler-utils, Debian
  5. Test fixture: header-footer.pdf, ATSPrep
  6. Test fixture: header-word.docx, ATSPrep
  7. Test fixture: header-word-pdf.pdf, ATSPrep

Put it into practice on a real resume.

Each example is a complete resume with role keywords and bullets that show proof. Open one in the Studio and make it yours, then download it. The first download needs no account.

See what a parser reads in your own file.

The ATS checker reads your PDF or Word file with the same importer tested on this page and shows every line it got back, in order. It runs in your browser and the file isn't uploaded.

$0 forever · No watermark · No card · First download needs no account