How to Write a Software Engineer CV That Gets Past ATS in 2025
Your CV could be the strongest in the pile — but if it doesn't pass an applicant tracking system (ATS), no human will ever read it. In 2025, the majority of tech companies — from startups to FAANG — route applications through ATS software before a recruiter lays eyes on them. Understanding how these systems work is no longer optional; it's a core job-search skill.
This guide walks you through exactly how to write a software engineer CV that clears the ATS filter and still impresses a human reader on the other side.
What Is an ATS and Why Does It Matter?
An applicant tracking system is software that companies use to collect, organise, and filter job applications. When you submit your CV online, an ATS typically parses it — extracting text from your file — and then scores it against the job description, usually by looking for keyword matches, relevant experience, and formatting cues.
In practice, this means a CV that's beautifully designed with tables, icons, and custom columns can be completely unreadable to the ATS. It may score near zero and never reach a recruiter — regardless of your actual experience.
The good news: a few structural and keyword decisions can make a dramatic difference.
Choose the Right File Format
PDF is almost always the safest choice. Modern ATS platforms — Greenhouse, Lever, Workday, Taleo — handle PDF well, and it preserves your formatting on the human-review side. However, if a job posting explicitly requests a Word document (.docx), follow those instructions.
Avoid submitting your CV as an image or using heavily styled templates from Canva or Adobe InDesign. These often produce PDFs that ATS parsers can't extract text from properly.
Use a Simple, Clean Layout
ATS parsers read top-to-bottom, left-to-right, in a single column. Anything that breaks that flow — multi-column layouts, tables, text boxes, headers and footers — can be misread or dropped entirely.
A safe structure for a software engineer CV:
- Your name and contact details at the top
- A short professional summary (2–4 sentences)
- Skills section
- Work experience (reverse chronological)
- Education
- Optional: projects, certifications, publications
Stick to standard section headings. "Work Experience" parses reliably; "Where I've Been" does not.
Mirror the Job Description's Language
This is the single biggest lever you have with ATS. The system is looking for keywords — specific terms from the job description — and scoring your CV based on how many it finds.
If the job description says "React.js" and your CV says "ReactJS", you may score lower. If it says "CI/CD pipelines" and you wrote "continuous integration", the ATS might not connect them.
How to do this practically:
- Read the job description carefully and highlight the technical terms, tools, and frameworks they use.
- Make sure your CV uses the same spelling and capitalisation where you genuinely have that skill.
- Don't keyword-stuff skills you don't have — this backfires in the interview.
Pay attention to role-specific language too. "Software Engineer", "Software Developer", and "SWE" are all common but may be scored separately by different ATS configurations.
Write a Strong Skills Section
ATS systems specifically look for a dedicated skills section. For software engineers, this should include:
- Programming languages (Python, TypeScript, Java, Go, etc.)
- Frameworks and libraries (React, Django, Spring Boot, etc.)
- Cloud platforms and DevOps tools (AWS, GCP, Kubernetes, Terraform, Docker)
- Databases (PostgreSQL, MongoDB, Redis, etc.)
- Testing tools and methodologies
- Relevant methodologies (Agile, Scrum, TDD)
List them in a clear, comma-separated or bulleted format. Avoid rating yourself with bars or percentages — ATS can't parse those, and hiring managers find them arbitrary.
Quantify Your Experience
Once your CV clears the ATS filter, a human reads it. That's when specificity becomes critical. Generic descriptions like "worked on backend services" don't stand out. Quantified achievements do.
Examples:
- Reduced API response time by 40% by refactoring the caching layer using Redis
- Led migration of monolithic codebase to microservices, cutting deployment time from 4 hours to 25 minutes
- Built CI/CD pipeline with GitHub Actions, reducing release cycle from 2 weeks to 3 days
Use the formula: action verb + what you did + the measurable result. Even rough numbers ("~30% improvement") are better than none.
Tailor for Each Application
A one-size-fits-all CV is a significant handicap in a competitive market. Tailoring doesn't mean rewriting from scratch — it means spending 10–15 minutes per application to:
- Adjust your professional summary to reflect the specific role
- Reorder or emphasise skills that match the job description
- Add a keyword or two from the posting that you genuinely qualify for
- Make sure your most relevant experience is front and centre
Keep a master version of your CV with all your experience, and create tailored versions for each target role. This alone can meaningfully increase your interview rate.
Watch Out for Common ATS Failure Points
- Headers and footers: contact info placed in a Word document header may not be parsed by the ATS.
- Text boxes: content inside text boxes is often invisible to ATS parsers.
- Tables for layout: use line breaks and spacing instead.
- Images and logos: ATS ignores them entirely.
- Unusual fonts: stick to Arial, Calibri, Helvetica, or Georgia.
- Fancy bullet points: use standard bullet characters rather than custom symbols or icons.
Test Your CV Before Submitting
Several free tools let you check how an ATS might read your CV:
- Jobscan: paste your CV and job description to get a keyword match score
- Resume Worded: gives structural and keyword feedback with specific suggestions
- Enhancv ATS checker: checks formatting and readability for common ATS platforms
Running a quick check before each major application takes five minutes and can reveal issues you'd never spot visually.
Conclusion
Passing an ATS is about playing by the rules of the system — clean formatting, targeted keywords, and standard structure — without sacrificing the quality that wins over a human reader. Software engineers have a natural advantage here: the technical precision required to write good code translates directly into writing a precise, well-structured CV.
Take the time to tailor your CV for each role, use the language of the job description, and make your achievements concrete. That combination gives you the best chance of clearing the ATS filter and landing the interview.