You've probably heard that "75% of resumes are rejected by ATS before a human sees them." That number gets repeated everywhere, and nobody has ever produced the study behind it.
The real picture is less scary and more useful: an applicant tracking system (ATS) mostly parses your resume into fields and lets recruiters search and filter them. You don't get "rejected by a robot" so much as not found: the parser mangled your details, or your resume didn't contain the words the recruiter searched for.
Both problems are fixable. Here's how an ATS actually handles a developer resume, and what to change.
Quick answer: An ATS-friendly resume is a single-column, text-based resume (PDF or DOCX) with standard section headings (Summary, Experience, Projects, Skills, Education), consistent dates, and the exact skill keywords from the job description used inside your bullet points. It lets applicant tracking software parse your details correctly and show your resume when recruiters search.
What is an ATS?
An applicant tracking system (ATS) is software companies use to collect job applications, store candidate details and let recruiters search and filter applicants. Common examples are Workday, Greenhouse, Lever, iCIMS, SAP SuccessFactors and Zoho Recruit.
What an ATS does with your resume
When you click Apply, roughly this happens:
- Parsing. The ATS extracts text from your file and tries to sort it into fields: name, contact, job titles, companies, dates, skills, education.
- Storing. You become a candidate record in a database, often searchable for months or years.
- Filtering. The recruiter may apply knock-out questions (location, work authorisation, notice period) and sort or filter by keywords.
-
Searching. A recruiter types something like
React AND TypeScript AND "Node.js"and reads whoever comes up. - Human review. Only now does a person look at your resume, usually for a few seconds.
Some newer systems add AI ranking or match scores, but they still depend on step 1. If parsing fails, everything after it fails too.
Part 1: Make it parse cleanly
Use one column
Two-column designs look great and parse badly. Many parsers read straight across the page, so your sidebar skills get glued into the middle of your job titles. A single column, top to bottom, is the safest layout.
Keep text as text
Parsers can't read:
- Skill bars, star ratings or charts
- Icons used instead of words (a phone icon with no "Phone:")
- Text inside images or text boxes
- Content in the document header or footer (put your contact details in the body)
Use the section names every parser knows
| Use this | Not this |
|---|---|
| Summary | About Me, Profile Snapshot |
| Experience | My Journey, Where I've Been |
| Projects | Things I've Built |
| Skills | Toolbox, Superpowers |
| Education | Academics, Learning |
Write dates consistently
Jan 2025 – Mar 2026 or 01/2025 – 03/2026. Pick one format and use it everywhere. Parsers use dates to calculate your experience; "Summer '25" confuses them.
PDF or DOCX?
Most modern ATS read text-based PDFs fine. If the job posting asks for DOCX, send DOCX. Never send a scanned PDF or an image; there's no text to parse.
Two-minute test: open your PDF, press Ctrl+A, copy, and paste into a plain text editor. If your name, titles and dates come out in a sensible order, a parser will most likely read it the same way. If it's jumbled, so is your candidate record.
If you'd rather start from a layout that already follows these rules, there are ATS-friendly resume templates you can adapt instead of designing your own.
Part 2: Get found in recruiter searches
Parsing gets you into the database. Keywords get you into the results.
Mirror the job description's exact wording
Recruiters search with the terms in their own job description. If the posting says "REST APIs" and you wrote "backend web services", a literal search won't match.
For every application:
- Paste the job description into a notes file.
- Pull out the hard skills and tools: languages, frameworks, databases, cloud, testing, practices.
- For each one you genuinely have, use the same wording in your resume.
Watch for variants: Node.js vs NodeJS, PostgreSQL vs Postgres, CI/CD vs continuous integration. Spell out acronyms once: "Continuous Integration (CI/CD)".
Put keywords where they carry weight
A skills list alone is weak evidence. The same keyword inside a project or job bullet shows you've used it:
Skills: React, TypeScript, Node.js, PostgreSQL, Docker
Project: Built a TypeScript + React dashboard backed by a Node.js REST API and PostgreSQL; containerised with Docker and deployed via GitHub Actions.
Use both: the list for quick scanning and searches, and the bullets for proof.
Don't game it
- White text keyword stuffing (hidden words in white font) gets parsed as visible text in the candidate record. Recruiters see it, and it ends the application.
- Pasting the whole job description at the bottom: same result.
- Listing skills you can't discuss: you'll pass the filter and fail the interview.
Part 3: An ATS-friendly developer resume, section by section
Here's the structure that parses cleanly and reads well in a 7-second human scan:
FIRSTNAME LASTNAME
Backend Developer (Node.js, PostgreSQL)
City, Country · email@example.com · +91 xxxxx xxxxx
github.com/username · linkedin.com/in/username · portfolio.dev
SUMMARY
2–3 lines: role, years or level, strongest proof, what you want next.
SKILLS
Languages: JavaScript, TypeScript, SQL
Backend: Node.js, Express, REST APIs, GraphQL
Data: PostgreSQL, Redis
DevOps: Docker, GitHub Actions, AWS (EC2, S3)
EXPERIENCE
Job Title – Company, City / Remote Mon YYYY – Mon YYYY
- Action verb + what you built + measurable result.
- 3–5 bullets per role, most impressive first.
PROJECTS
Project Name – one-line description Stack, Stack, Stack
- What it does, who uses it, and one result.
- Live link · GitHub link
EDUCATION
Degree, Field – College, City YYYY – YYYY
For freshers, move Projects above Experience. Projects are your strongest evidence. For more on structuring bullets and choosing projects as a developer, this software engineer resume guide goes deeper.
Three ATS myths to stop worrying about
"You need a different resume for every ATS." No. Workday, Greenhouse, Lever and the rest all handle a clean single-column resume. Tailor for the job, not the software.
"ATS rejects resumes over one page." Length isn't a parsing problem. One page is a recommendation for freshers because humans skim, not because software cuts you off.
"Fancy formatting gets you noticed." By humans, maybe. By parsers, it gets you garbled. If you want design, put it in your portfolio and keep the resume clean.
The ATS checklist
Run this before every application:
- [ ] Single column, no tables or text boxes for core content
- [ ] Contact details in the body, not the header or footer
- [ ] Standard section headings
- [ ] Consistent date format everywhere
- [ ] Text-based PDF (or DOCX if asked)
- [ ] Copy-paste test comes out in order
- [ ] Job description keywords you genuinely have, in the same wording
- [ ] Key skills appear in bullets, not just the skills list
- [ ] No hidden text, no pasted job description
- [ ] File named
Firstname-Lastname-Resume.pdf
If you want the full format reference with every section explained, I'd point you to this ATS-friendly resume format guide.
FAQ
How do I check if my resume is ATS-friendly?
Copy all the text from your PDF and paste it into a plain text editor. If your name, job titles, dates and skills appear in a sensible order, most ATS will parse it correctly. Also check the "review your application" screen after uploading: if fields are empty or mixed up, fix the layout.
Is PDF or Word better for ATS?
Most modern ATS read text-based PDFs well, and PDF keeps your formatting intact. Send DOCX only when the job posting asks for it. Never upload a scanned PDF or an image, because there is no text for the ATS to read.
Can ATS read a two-column resume?
Some can, many can't reliably. Parsers often read straight across the page and mix the columns together. A single-column layout is the safest choice for every ATS.
What keywords should a software developer put on a resume?
Use the hard skills named in the job description that you genuinely have: languages (JavaScript, Python), frameworks (React, Spring Boot), databases (PostgreSQL), cloud and DevOps tools (AWS, Docker, CI/CD) and practices (REST APIs, unit testing). Match the posting's exact spelling.
Do I need a new resume for every job?
Keep one master resume, then tailor each application by reordering projects, adjusting your summary and matching the job description's keywords. It takes 10 to 15 minutes and noticeably improves your chances of showing up in recruiter searches.
Have you ever had a resume come out garbled in an ATS preview, the "review your application" screen after uploading? What broke it? Tell me in the comments.
Disclosure: I work on CareerCtrl, which publishes the templates and guides linked above. The advice in this post applies whatever tool you use.
Top comments (0)