🟢
Updated recently
Last updated:

Quick Answer: How to write tech resume for ATS: To write a tech resume for ATS, write a single-column document with standard section headings, no tables, no graphics, no text boxes, no headers or footers, and every acronym spelled out at least once. Most failures are layout failures, not content failures – the resume parses but the content never reaches the recruiter.

What Breaks ATS Parsing in Tech Resumes

Applicant tracking systems do two things: they parse your document into fields, and they rank it against a job description. Both steps fail more often than candidates expect, and they fail silently. You see no error, you hear nothing, and the assumption is that you were rejected on quality.

The reason this happens so often in technology is that tech professionals tend to treat the resume as a design document. A two-column layout, a coloured header, a skills bar chart, icons next to section titles – all of it is readable to a human and invisible or hostile to a parser. The result is that the strongest technical candidates in the market are systematically filtered out by their own formatting.

Element What ATS systems do with it Verdict What to do instead
Two-column layout May read across columns and merge lines Avoid Single column, standard flow
Tables and text boxes Often skipped entirely Avoid Plain paragraphs and bullet lists
PDF text layer Usually fine, but risky from some generators Usually fine Save as PDF from Word, not from a design tool
Graphics and skill bars Ignored No value Plain text skill lists
Section headings Matched against expected labels Essential Work Experience, Education, Skills, Projects
Acronyms and buzzwords Keyword matched Useful Spell out once, then abbreviate
File name Used as a label in some systems Minor FirstName_LastName_Resume.pdf
Job titles Matched as keywords Important Use the market’s title, not your internal one

Almost every row on that list reduces to one principle: the document must read as plain text in a single column. A resume that satisfies that will parse in essentially any system, and it is also a better document to read.

How to Write Tech Resume for ATS: The Format That Parses Reliably

Build the document in Word or Google Docs, use the standard headings, keep it single column, and save as a PDF with a text layer. Do not build the resume in a design tool, do not export an image, and do not use a template with decorative structure. This is not an aesthetic preference – it is a compatibility requirement, and the cost of getting it wrong is total silence.

Write the job titles the market uses. If you were a ‘Software Engineer II’ internally and the postings you want call the role ‘Backend Engineer’ or ‘Software Engineer’, use the market’s wording. Title matching is a keyword operation, and you want to be findable under the terms recruiters actually search.

Spell out every acronym at least once. A parser looking for ‘Kubernetes orchestration’ will not reliably match ‘K8s’. Write ‘Amazon Web Services (AWS)’, ‘Continuous Integration and Continuous Deployment (CI/CD)’, ‘Representational State Transfer (REST)’ once, then use the short form freely afterwards. This single habit adds keywords without adding a single word of fluff.

Then mirror the posting’s language in your skills section. Read the job description and extract the actual terms it uses – ‘REST APIs’, ‘CI/CD pipelines’, ‘Terraform’, ‘PostgreSQL’ – and make sure those exact strings appear somewhere in your document. Do not claim skills you do not have; the point is that you already have them and the system cannot see them.

# Test that your resume parses in the right order - paste it into a text editor
# If the columns interleave here, they interleave in the parser too
python3 - <<'PY'
import pathlib
raw = pathlib.Path("resume.txt").read_text()
lines = [l.strip() for l in raw.splitlines() if l.strip()]
print(f"lines: {len(lines)}   characters: {len(raw)}")
print("first five lines the recruiter sees:")
for l in lines[:5]:
    print("  ", l)
PY

# Check the required skills appear as exact strings - the parser matches strings
cat > required.txt <<'TXT'
Python
SQL
PostgreSQL
AWS
Docker
CI/CD
REST API
Kubernetes
TXT

while read -r skill; do
  if grep -qiF -- "$skill" resume.txt; then
    echo "FOUND    $skill"
  else
    echo "MISSING  $skill"
  fi
done < required.txt

# Spell acronyms out once - it adds keywords without adding a word of fluff
# AWS -> "Amazon Web Services (AWS)"
# CI/CD -> "Continuous Integration and Continuous Delivery (CI/CD)"
# REST API -> "Representational State Transfer (REST) API"

The Section Structure That Works for Tech Roles

The order should follow the strength of your material. For an experienced engineer, experience first. For a career changer or a graduate, a brief summary or education first, then a projects section that carries the weight. For anyone applying to a role where the projects are the evidence, projects can go first entirely.

The summary, if you include one, should be three lines of specific facts rather than adjectives. ‘Backend engineer, four years in Python and AWS, cut p95 latency from 1.2s to 300ms on a payments service’ is a summary. ‘Passionate problem solver with strong communication skills’ is a space that would be better deleted.

The projects section deserves more attention than most candidates give it. Each project gets three or four bullets: what it does, the stack, and the one technical decision a hiring manager would want to discuss. A link to a deployed URL and the repository. That is enough, and it is what the interview will be about.

And the skills section should be two or three lines, grouped by category, listing only what you would be comfortable being interviewed on. A long keyword-stuffed list reads as padding to a human reviewer and does nothing for a parser beyond what a short, accurate list already achieves.

How to Test Your Resume Before Sending It

The simplest test is to copy your resume text and paste it into a plain text editor. If the reading order is wrong, columns have interleaved, or bullets have merged into paragraphs, the parser will see the same thing. This takes two minutes and catches most of the problems that cost candidates months.

The second test is against the actual posting. Count how many of the required skills appear in your document as exact strings. A posting listing eight required technologies, where six appear nowhere in your resume, is a resume problem rather than a qualification problem, and it is fixable in ten minutes.

Then have a human read it in ten seconds and see what they remember. If they cannot say what you do after ten seconds, the top third is not working – and in both human and machine review, the top third is what gets read.

How to Handle the Résumé Formatting Rules at Companies That Use Human Review

The single-column rule costs you nothing and occasionally helps you with humans too. Dense two-column layouts are popular because they look designed, but they make long documents harder to read on a screen and on paper, and at tech companies the simplest readable layout is usually the best-received one anyway.

What is genuinely worth customising for a human reviewer is the ordering and the top third. Put your most relevant work first, keep the summary to two lines, and make sure the first third of the page communicates what you do and what you have built. Human reviewers read the top of a resume first, even when they claim to read the whole thing.

And keep a master version with everything, plus tailored versions that trim. A master resume at three pages is a perfectly good artefact – you do not need to compress it to one page if you have eight years of experience, because the constraint on early-career resumes is content, not length. The format rules are about parsing; the content rules are separate.

How to Check Your Resume Against the Posting Without Rewriting It

Build a simple two-column list. On the left, every requirement and named skill from the posting. On the right, where in your resume that item appears. Anything on the left with nothing on the right is either something you do not have or something you have but have not made findable, and the second case is the common one.

The most common version of this problem is the acronym. The posting says ‘Kubernetes’ and your resume says ‘K8s’, or the posting says ‘CI/CD’ and yours says ‘continuous integration’. Both are invisible to a search. Writing the long form once, in parentheses, fixes it and costs six words.

Then check the job title. If the posting says ‘Backend Engineer’ and your resume says ‘Software Engineer’, you are fine if you list both with a clear scope line – ‘Software Engineer (backend: Python, PostgreSQL, AWS)’. That way both the exact title and the skill keywords are present, and a human reading it sees the scope immediately.

A Candidate Who Was Filtered by a Two-Column Layout

A senior backend engineer with strong experience applied for 150 roles over two months and received two interviews, both from referral rather than from applying.

When he finally exported his resume as plain text to debug it, the problems were immediate. His two-column layout had interleaved – the left column of one section ran into the right column of the next – his job titles read ‘SRE II’ and ‘Tech Lead (IC4)’ rather than the market’s terms, and his skills section was a set of five-column rating bars that contained no readable text at all.

He rebuilt it single column in Google Docs, rewrote the titles to the market’s wording, spelled out eight acronyms, and turned the skills bars into three grouped lines. He applied to sixty roles with the new document. He got fourteen screens. Nothing about his ability had changed – the previous document simply never reached the people who were deciding.

Why This Matters Outside the United States

ATS behaviour is the same everywhere, which makes this one of the few genuinely universal career pieces in the set – and a strong global-reach target.

ATS parsing behaviour is consistent across the major platforms used in the United States, and the same rules apply to applications through European and Asian employers using the same tooling, so this is one of the most transferable job-search skills there is. The one thing that does vary is whether a given employer uses an ATS at all – smaller firms and direct hires frequently do not, and the same formatting advice is harmless in those cases.

How to Read These Numbers

The formatting problems listed are drawn from the parsing behaviour of the applicant tracking systems most widely used by US employers. In practice, plain single-column documents with standard headings parse correctly in essentially all of them, which is why the recommendation is conservative rather than optimised.

Keyword guidance follows the standard behaviour of automated matching, which looks for exact term occurrences rather than concepts. Spelling out an acronym once is the cheapest and most reliable way to add a matching term without adding content.

Key Terms Used Above

Term What it means in practice
ATS Applicant tracking system – software that parses, stores and ranks job applications.
Parsing Converting a document into structured fields. Failures here are silent and total.
Keyword matching Comparing terms in a resume against terms in a posting. Exact strings, not meaning.
Single column One text flow, which every parser reads correctly.
Text layer The selectable text inside a PDF, as opposed to a scanned image of a page.
Recruiter screen The initial human review, often brief, which happens after parsing.

Test by copying your resume into a plain text editor. If the reading order is wrong there, it is wrong in the system too, and it takes two minutes to check.

Related Reading

If you want the wider context, start with our guide to job descriptions, skills and resumes, then the full guide, then the full guide. Each of these covers a different part of the same decision.

Training Resources

For a structured path rather than scattered free material, the SkilBrill training programme covers the practical side of this topic with the same framing employers use. For a broader foundation, the related SkilBrill course covers the surrounding concepts so you are not learning this topic in isolation.

FAQ

How do I write a tech resume that passes an ATS?

Use a single-column layout, standard section headings, no tables, no headers or footers, no text boxes, and save as a plain document or PDF produced from one. Put the skills section in plain text where a parser can read it.

Do ATS systems really reject resumes for formatting?

Yes. Multi-column layouts, text in headers, charts and graphics, and unconventional section titles are the most common causes of a resume parsing into an unreadable record.

How do I include keywords for ATS without sounding robotic?

Mirror the language of the job description in the skills and experience sections, and use the exact technology names from the posting. A recruiter reads the same posting, so matching it is not dishonest.

What should I do if I keep getting rejected with no interviews?

Get the resume parsed by a free parsing tool and read the output as a stranger would. If the extracted text is jumbled or missing sections, that is the defect – and it is often cheaper to fix than to keep applying.