How an ATS parses a resume
Updated 26 October 2026. An employer applicant tracking system and the ResumeATS builder are not the same program. The employer system receives a file, turns it into text, and tries to fill a candidate record. This site never receives the file. You can still inspect the parts of that pipeline that do not require pretending to be Workday, Greenhouse, or Lever.
What “parse” means
Parsing is a sequence, not a score. First the system has to get characters out of the container. A PDF with a real text layer yields characters from the page content. A scanned PDF yields a picture, and a parser that does not run OCR gets an empty record. A DOCX yields paragraphs from the document XML, and it stores text boxes, tables, headers, and footers as separate stories that some importers skip or append in a surprising order. A plain-text file yields the characters already on screen, in the order they were written. If this first step drops a column, later keyword search cannot find a phrase that was never stored.
Second, the text is split into lines and something looks for section labels. On this site the paste lint treats a line as a heading candidate when it is 3 to 40 characters long, does not end in a period, question mark, or exclamation point, does not start with a bullet, has at most five words, and either is all capitals or starts with a capital letter. It then accepts only a fixed list. Experience, Work Experience, Professional Experience, Employment History, Work History, and Employment count as the jobs section. Education and Academic Background count as school. Skills, Technical Skills, Core Competencies, and Core Skills count as skills. Summary, Professional Summary, Profile, Objective, Certifications, Licenses, Licenses and Certifications, Projects, Languages, Awards, Volunteer, Volunteer Experience, Publications, Contact, and Contact Information are also accepted. The comparison is done after the line is lowercased and a trailing colon is removed. “MY JOURNEY” fails. “EXPERIENCE” passes.
Third, fields are guessed from what remains. Email is a pattern. Phone is a run of digits. In this builder a phone counts once it has at least seven digits, and an email counts when it has one @, a dot in the domain, and a lettered ending of at least two characters. Dates are classified only from the date boxes in the form, not from a number written inside a bullet. A month name plus a four-digit year, such as Jan 2021, is one family. A numeric month and a four-digit year, such as 01/2023, is another. A four-digit year alone is a third. Present and Current are allowed as an end date. 01/23 is rejected because a two-digit year is ambiguous. Anything else is rejected as “other.” The sample uses Jan 2021 through Present on every role and Aug 2012 through May 2016 on the degree, so every filled date is the month-name family and the date row passes.
What the sample looks like after the split
Load the sample resume. The preview is not a file yet. It is HTML in one column: the name Jordan Avery, the latest title Senior Marketing Operations Manager, then email, phone, city, and the LinkedIn path, then three sections whose headings are Experience, Education, and Skills. Those headings are real text, not shapes drawn in a design tool. The score does not read the heading words. The paste lint does not read them either while the paste box is empty. With the box empty, the heading row stays green and the note says the builder headings are Experience, Education, and Skills.
Choose Download .txt when you want the linear version a paste box receives. The file starts with the name, then the latest title, then the four contact fields joined by a space, a vertical bar, and a space. After a blank line comes the literal heading EXPERIENCE, then each role as title and company on one line, a date line such as Jan 2021 – Present, and bullets that start with a hyphen and a space. EDUCATION and SKILLS follow the same pattern. Skills are one comma-separated line. That order is the order a top-to-bottom reader stores. It is the order to expect when an application says “paste your resume,” which is a different problem from printing a PDF. The plain-text guide walks the download itself. The file-type guide shows what breaks when that text is poured back into a lint box or into a designed PDF.
What this checker will not infer
The match report does not build a structured employment history. It counts tokens from the job description against tokens from the form, including skills and bullets, and it ignores the date boxes. The score does not open the PDF you might later print. It scores the form: a valid email is 10 points, a phone is 5, two or more roles is 15, three bullets on every role is 10, action verbs on at least 70 percent of bullets is 15, at least three quantified bullets is 15, eight skills is 10, the single-column layout is 10, and 300 to 900 words is 10. The sample reaches 100 because those nine checks pass, not because an employer system returned a receipt. The points are explained in how ATS resume scoring works.
A parser also does not know whether a bullet is true. “Increasing qualified pipeline 38%” satisfies the metric check because it contains a percent sign and a number. It does not answer a human who asks what the baseline was. Keyword overlap has the same limit. A term can match because the same letters appear in a different sense. Keep the truth of the sentence separate from the fact that a token was stored.
How to watch the pipeline on your own file
- Rebuild the resume in the builder, or paste plain text into the lint box. Do not paste a screenshot. A picture of a resume has no headings for the lint to read.
- Read the six lint rows before you read the ring. Headings, dates, contact, bullet length, glyphs, and tables are the parse questions. The ring ignores date format, emoji, and pasted tables, so a 100 can sit next to a red row.
- If you only have a designed PDF, try to select a sentence with the cursor. If you cannot, the file has no text layer. Recreate the content here and use the browser print path, which writes selectable text instead of a flattened image.
- Download the .txt and read it in a plain editor. If a role title and a company have been glued to the same line, that is the download’s layout, not a second job. If a section you cared about is missing, it was never in the form.
- Only then paste a job description into the match box. Parsing answers “can the text be stored.” Matching answers “which stored words also appear in this posting.” They are sequential, not substitutes.
If the heading row fails, rename the label instead of restyling it. If the date row fails, pick one family and retype the boxes. If the contact row fails, the candidate record has nothing reliable to file the person under. Those three fixes are the whole of “make it parse” for this checker. Design choices that do not change the text do not change the parse.
Related reading: how ATS resume scoring works and ATS parsing failures by file type. Run a file in the ResumeATS builder.
Questions
Does ResumeATS parse my resume the way an employer ATS does?
No. ResumeATS never uploads the file. It checks the form and any text you paste: headings against a fixed list, dates against one format family, contact fields, bullet length, glyphs, and table-like lines. An employer parser may use different heading names and may drop text this page never sees.
Which part of the sample is the parsed text?
The preview is HTML in one column, headed Experience, Education, and Skills. Download .txt writes the same facts in order: name, latest title, contact fields separated by vertical bars, then EXPERIENCE, EDUCATION, and SKILLS.
Does a score of 100 mean the file parsed?
No. The 100 is nine form checks. Date format, emoji, and pasted tables are lint rows, not points. A 100 can sit beside a failing lint row, and a passing lint row is still not a receipt from an employer system.