Markdown Resume — A Complete Guide from Writing to PDF Export
Why Write Your Resume in Markdown
If you're a developer or someone who works with technical documentation regularly, writing your resume in Markdown might be the most natural choice. No need to fire up Word and fiddle with formatting, no time wasted on layout — just open a text editor and start writing.
Markdown resumes have several clear advantages:
- Plain text management: Your resume is just a
.mdfile. Track versions with Git and revisit your edit history anytime. - Focus on content, not layout: Headings, lists, bold text — the syntax handles formatting automatically, so you can focus on what to write.
- Cross-platform compatibility: The same file looks identical on Windows, macOS, and Linux. No more "the layout broke when I opened it on another computer."
- ATS-friendly: Most ATS (Applicant Tracking Systems) parse structured plain text content most accurately.
By the way, if you're not yet familiar with basic Markdown syntax, you might want to check out Markdown Header Syntax and Markdown List Syntax first. This tutorial will dive straight into building a resume.
Basic Structure of a Markdown Resume
A standard Markdown resume typically includes these sections, separated by ## headings:
# 张三
北京 | zhangsan@email.com | 138-0000-0000 | [GitHub](https://github.com/zhangsan) | [LinkedIn](https://linkedin.com/in/zhangsan)
## 个人简介
5 年经验的全栈工程师,专注于 React 和 Node.js 技术栈...
## 工作经验
### 高级前端工程师 — ABC 科技有限公司
*2022.03 - 至今 | 北京*
- 主导公司核心产品的前端架构重构,页面加载速度提升 40%
- 搭建前端组件库,覆盖 30+ 业务组件,团队开发效率提升 25%
- 技术栈:React、TypeScript、Next.js、Tailwind CSS
## 教育背景
### 计算机科学与技术 — 北京大学
*2015.09 - 2019.06 | 硕士*
## 技能
- **编程语言**:JavaScript、TypeScript、Python、Go
- **前端框架**:React、Vue.js、Next.js
- **后端技术**:Node.js、Express、PostgreSQL、Redis
- **工具平台**:Git、Docker、AWS、CI/CDThe structure is straightforward: your name and contact info sit at the very top, followed by sections in the order of Summary, Experience, Education, then Skills. This sequence isn't arbitrary — ATS systems parse content from top to bottom, so placing your most relevant work experience first helps the system match keywords faster.
Complete Markdown Resume Template
Here's a full template you can copy and use right away. I've tailored it for technical roles:
# 你的姓名
城市 | email@example.com | 电话号码 | [GitHub](https://github.com/yourname) | [个人网站](https://yoursite.com)
## 个人简介
3 年经验的后端工程师,擅长分布式系统设计和高并发场景优化。在电商和社交领域有丰富经验,主导过日活百万级系统的架构设计。
## 工作经验
### 职位名称 — 公司名称
*起始时间 - 结束时间 | 工作地点*
- 用"动词 + 做了什么 + 结果"的方式描述每条经验
- 设计并实现了订单系统的微服务拆分,系统吞吐量提升 3 倍
- 搭建了完善的监控告警体系,故障平均响应时间从 2 小时缩短到 15 分钟
- 技术栈:Go、gRPC、Kubernetes、MySQL、Redis
### 之前的职位 — 之前的公司
*起始时间 - 结束时间 | 工作地点*
- 负责核心 API 网关的设计与开发,日均处理请求 500 万+
- 优化了数据库查询性能,慢查询数量减少 80%
- 技术栈:Java、Spring Boot、MongoDB
## 项目经验
### 开源项目名称
*项目链接*
一句话描述这个项目解决了什么问题。
- 核心功能和亮点
- GitHub Star 数或用户量等数据
## 技能
- **编程语言**:Go、Java、Python
- **框架**:Gin、Spring Boot、Django
- **数据库**:MySQL、PostgreSQL、Redis、MongoDB
- **工具**:Docker、Kubernetes、Prometheus、Git
## 教育背景
### 专业名称 — 学校名称
*起始时间 - 结束时间 | 学位*
## 证书(可选)
- AWS Solutions Architect Professional — 2024
- Kubernetes Administrator (CKA) — 2023Honestly, this template looks pretty plain — but that simplicity is exactly the strength of a Markdown resume. ATS systems don't like flashy layouts. A single-column, structured, plain-text format is the most machine-readable option out there.
Key Markdown Syntax for Resumes
You don't need many syntax features when writing a resume, but a few details are worth paying attention to:
Bold — wrap keywords with double asterisks, especially for job titles and skill categories. Using Markdown bold syntax strategically in your resume helps recruiters quickly scan for key points. Just don't overdo it — bolding everything is the same as bolding nothing.
Links — use these for GitHub profiles, personal websites, and project URLs. Stick with the standard Markdown link syntax format [display text](URL). ATS systems can extract the URL from links.
Lists — this is the workhorse of resume formatting. Use unordered lists (-) for achievements under each job entry, keeping each bullet to 1-2 lines. Markdown list syntax supports nesting, but you generally won't need multiple nesting levels in a resume — keeping it flat makes it easier to read.
Horizontal rules — you can add a --- between your contact info and the main content for visual separation. Check out Markdown horizontal rule syntax for details.
How to Export Your Markdown Resume as PDF
Once you've written your resume in Markdown, you'll need to export it as a PDF for submitting applications. There are several approaches, each with its own strengths.
Method 1: Online Tools (Fastest to Get Started)
If you want to get things done quickly, online tools are the easiest option:
MarkdownResume.app — paste your Markdown content, pick a template, and export to PDF. It supports live preview and the interface is very intuitive.
Resumey.Pro — offers 10 ATS-optimized templates with one-click style switching. The free tier lets you edit; PDF export requires a paid plan.
Oh My CV — an open-source online Markdown resume editor with a clean interface and support for multiple export formats.
The advantage of online tools is zero configuration — they work right out of the box. The downside is that template styles are limited to what the platform offers, so customization options are restricted.
Method 2: Typora Editor (WYSIWYG)
Typora is one of the Markdown editors I use most often, and its resume export workflow is very smooth:
- Write your resume
.mdfile in Typora - Go to File, Export, then PDF
- Adjust page settings in the print dialog (I recommend A4 paper size with slightly reduced margins)
Typora's export quality is excellent, especially for Chinese font rendering. I once exported a bilingual Chinese-English resume with Typora, and it looked noticeably better than what online tools produced — sharper fonts and cleaner list indentation.
Method 3: Pandoc Command-Line Tool (Most Flexible)
If you're comfortable with the command line, Pandoc is the most powerful option:
# Basic export
pandoc resume.md -o resume.pdf
# Specify PDF engine and custom CSS
pandoc resume.md -f markdown -t pdf \
--pdf-engine=wkhtmltopdf \
-c resume-style.css \
-s -o resume.pdf
# Export to HTML (then print to PDF from browser)
pandoc resume.md -f markdown -t html \
-c resume-style.css \
-s -o resume.htmlPandoc requires additional dependencies (LaTeX or wkhtmltopdf), and the setup can be a bit involved. But the upside is that you can fully control the output styling through CSS, and you can integrate it into automated workflows.
By the way, if you're a VS Code user, you can also install the "Markdown PDF" extension to export directly from the editor. Fair warning though — this extension occasionally has issues with Chinese character support, so double-check the output before sending it out.
Export Method Comparison
| Method | Difficulty | Customization | Chinese Support | Best For |
|---|---|---|---|---|
| Online tools | Low | Medium | Varies by platform | Quick results, no installation |
| Typora | Low | Medium | Good | WYSIWYG preference |
| Pandoc | Medium | High | Requires setup | CLI users who want full control |
| VS Code extension | Low | Medium | Occasional issues | Already using VS Code |
ATS Optimization for Markdown Resumes
ATS is a topic you can't avoid in today's job market. Over 98% of large companies use some form of ATS to screen resumes. So no matter how well-written your resume is, if the ATS can't parse it, recruiters will never see it.
Why Markdown Resumes Are ATS-Friendly
ATS systems parse resumes by extracting the document content into plain text, then classifying it into fields (name, contact info, work experience, skills, etc.). Markdown resumes are inherently structured plain text — heading levels, lists, and paragraphs all help the ATS more accurately identify each section.
MarkdownResume.app ran a test: the same resume content exported as a single-column Markdown PDF had about 30% higher ATS parsing accuracy compared to a two-column Word format. The reason is that two-column layouts in PDF get parsed line by line, causing content from left and right columns to get mixed together.
ATS Optimization Checklist
- Use standard section names: Stick with "Experience," "Education," "Skills" — don't get creative here. ATS matches sections by keyword.
- Consistent date formatting: Use either
2022.03 - 2024.06or2022-03 to 2024-06throughout — don't mix formats. - Avoid tables and complex layouts: Markdown naturally avoids complex layouts, which actually works in your favor.
- Cover relevant keywords: Read the JD (job description) carefully and naturally weave its technical keywords into your resume.
- Contact info at the top: Place phone number, email, and city right below your name.
I once helped a friend review their resume. They had a gorgeous two-column Word resume, but when we ran it through a free ATS simulation tool, the "Skills" section wasn't recognized at all — the ATS had mashed the left and right columns together during parsing. After reformatting the exact same content into a single-column Markdown layout, the parsing accuracy shot right up.
Differences Between Chinese and English Markdown Resumes
If you're targeting international companies or need to submit an English resume, a few details are worth keeping in mind:
Section names: Use standard English labels like Summary, Experience, Education, and Skills.
English resume example:
# SAN ZHANG
Beijing, China | zhangsan@email.com | +86 138-0000-0000 | [GitHub](https://github.com/zhangsan)
## Summary
Full-stack engineer with 5 years of experience specializing in React and Node.js...
## Experience
### Senior Frontend Engineer — ABC Tech Co., Ltd.
*Mar 2022 - Present | Beijing*
- Led the frontend architecture refactoring of the core product, improving page load speed by 40%
- Built a component library covering 30+ business components, increasing team development efficiency by 25%
- Tech Stack: React, TypeScript, Next.js, Tailwind CSS
## Education
### M.S. Computer Science — Peking University
*Sep 2015 - Jun 2019*
## Skills
- **Languages**: JavaScript, TypeScript, Python, Go
- **Frontend**: React, Vue.js, Next.js
- **Backend**: Node.js, Express, PostgreSQL, Redis
- **Tools**: Git, Docker, AWS, CI/CDFont issues: When mixing Chinese and English text, PDF rendering engines may not handle Chinese fonts well. If you encounter garbled Chinese characters or display issues, try explicitly specifying a Chinese font in your CSS, like font-family: "Source Han Sans", "Microsoft YaHei", sans-serif;.
Date format: Chinese resumes use 2022.03 - 至今, while English resumes use Mar 2022 - Present.
Recommended Markdown Resume Tools
Online Editors
- MarkdownResume.app: A dedicated Markdown resume editor with built-in templates and free PDF export. All templates are ATS-optimized with a single-column design.
- Resumey.Pro: Offers 10 ATS-optimized templates with one-click switching. Free to edit, paid export.
- Oh My CV: Open-source online editor with Markdown live preview and multiple export formats.
Local Tools
- Typora: A WYSIWYG Markdown editor with high-quality PDF export and solid Chinese language support.
- VS Code + Markdown PDF extension: If you're already using VS Code, just install the extension and export directly.
Command-Line Tools
- Pandoc: The universal document conversion tool. Pair it with CSS for complete control over output styling. Great for integrating your resume export into an automated workflow.
- wkhtmltopdf: An optional engine for Pandoc's PDF export. Based on WebKit rendering, it offers better CSS support than LaTeX.
Open-Source Templates
- junian/markdown-resume: A GitHub project with 559+ Stars, providing CareerCup-style resume templates with PDF and DOCX export support.
- mszep/pandoc-resume: A classic Pandoc resume template, ideal for command-line users.
Frequently Asked Questions
Can Markdown resumes pass through ATS?
Yes, and they actually perform better than most Word resumes. As I mentioned earlier, Markdown's structured content helps ATS accurately identify each section. The key is to maintain a single-column layout, standard section names, and consistent date formatting.
Are Markdown resumes only for developers?
Not at all. Markdown resumes work well for anyone who wants a clean, structured resume. That said, the syntax is definitely more intuitive for technical folks. Non-technical users might need to spend a little time learning the basics, or they can use online editors to lower the barrier to entry.
What if the exported PDF looks too plain?
Plain doesn't mean bad. Many recruiters — especially technical teams — actually appreciate a simple resume format. If you really need a more polished appearance, you can:
- Use an online tool with styled templates (like Resumey.Pro)
- Load custom CSS through Pandoc
- Export to HTML and manually fine-tune the styles
How many pages should a resume be?
For junior to mid-level positions, aim for 1 page. Senior roles or academic resumes can go up to 2 pages. ATS systems don't have a particular preference for page count, but recruiters generally prefer concise resumes.
References
- CommonMark Specification — The standard specification for Markdown syntax
- GitHub Flavored Markdown Spec — GitHub's extended Markdown syntax specification
- Pandoc User's Guide — Official documentation for the Pandoc document conversion tool
- JSON Resume Schema — Standard specification for structured resume data
- CareerCup Resume Template — A widely referenced resume format guide