Markdown Resume: Write and Export Your CV in Markdown

September 11, 2026 · 10 min read

Markdown Resume: Write and Export Your CV in Markdown

A markdown resume is a CV written as a plain-text .md file and exported to PDF or Word when you apply. You get a single-column layout that applicant tracking systems parse cleanly, a file that diffs in Git, and an edit-to-PDF loop measured in seconds. This guide gives you the full template, explains each element, and shows the export options.

Is Markdown Good for Resumes?

Yes, for most people and most jobs. The structure Markdown forces on you (one column, real headings, bulleted achievements, no text boxes) is the structure resume parsers read best. A Word file with two columns and a sidebar can scramble job titles and dates when an ATS extracts the text. A Markdown export can't, because there's nothing to scramble.

It's also the easiest resume to maintain. Add a role, commit, export. Keep one source file and generate a PDF for the application form and a DOCX for the recruiter who asks for Word. Tailoring per application is a copy and a few deleted bullets. Git shows you exactly what changed between the version you sent in March and the one you're sending now.

The trade-off is design control: no custom fonts, no two-column layout, no icons. If you're applying for a visual design role where the resume is a portfolio piece, write it in a design tool. For engineering, product, research, writing and operations roles, we'd pick Markdown every time.

A Complete Markdown Resume Template

Copy this into a file called resume.md. Every element is explained in the next section.

# Priya Nair

Backend Engineer | Bengaluru, India  
priya@example.com | +91 98765 43210 | github.com/priyanair | linkedin.com/in/priyanair

## Summary

Backend engineer with 6 years building payment and ledger systems in Go and Postgres. Led the migration of a 40M-transaction-per-day ledger to event sourcing with zero downtime.

## Experience

### Senior Backend Engineer, Finlay Payments

| | |
|:--|--:|
| Bengaluru | Mar 2022 to present |

- Designed the double-entry ledger service handling 40M transactions a day at p99 under 30 ms
- Cut settlement batch time from 4 h to 25 min by moving to partitioned tables
- Mentored four engineers; two promoted to senior

### Backend Engineer, Kavi Labs

| | |
|:--|--:|
| Remote | Jul 2019 to Feb 2022 |

- Built the webhook delivery system (99.98 percent success across 12M events a month)
- Introduced contract tests that removed a class of API regressions

## Skills

**Languages:** Go, Python, SQL  
**Infrastructure:** Postgres, Kafka, Kubernetes, AWS  
**Practices:** Event sourcing, observability, incident review

## Education

### B.Tech, Computer Science, NIT Trichy

2015 to 2019

## Projects

**[ledgerkit](https://github.com/priyanair/ledgerkit)**: an open source double-entry ledger library in Go, 1.2k stars

That's a one-page resume at default PDF settings. Three roles or a long publications list push it to two pages, which is fine for senior and academic applications. If you're over two pages, cut the oldest role to a single line under Experience rather than shrinking margins.

The Summary is optional but useful for parsers and skim readers alike. Two sentences: what you do and the one result you're proudest of. Skip the objective statement; nobody reads it and it pushes the first job title below the fold on a phone.

Which Markdown Element Goes Where?

Each structural choice in the template is deliberate, because parsers and humans both read the heading hierarchy.

Your name is the H1. One # heading at the top, nothing else at that level. ATS tools and the PDF's document outline both treat it as the title.

Contact details are a plain paragraph. Two lines with pipe separators, directly under the name. Keep it text, not a table, so phone and email extract cleanly. Write the email as text rather than a mailto: link; some PDF converters underline links in blue.

Sections are H2s. Summary, Experience, Skills, Education, Projects. Use those conventional names. A parser looking for "Experience" won't find "Where I've Been".

Each role is an H3. Title first, then a comma, then the company. Dates go on the next line, right-aligned with a two-cell table (explained below). The heading guide covers why skipping from H2 to H4 breaks the outline.

Achievements are bullets with numbers. Three to five per role, each starting with a verb and ending with a measurable result. Avoid nested bullets; they render inconsistently across PDF converters.

Skills are bold labels on separate lines. Each line ends with two trailing spaces so it breaks without becoming a list, which keeps the block compact.

Edit the Resume Template in the Editor

Paste the template into the editor below to see it rendered, then swap in your own details. The bold skill labels and the heading hierarchy should already look correct in the preview. One caveat: our editor's preview stylesheet keeps table cells left-aligned, so the date row shows as a plain two-cell row here even though GitHub and Pandoc honour the right alignment. If you export from our tools, use the div form described in the next section for the dates instead.

Priya Nair

Backend Engineer | Bengaluru, India
priya@example.com | github.com/priyanair

Experience

Senior Backend Engineer, Finlay Payments

Bengaluru Mar 2022 to present
  • Designed the ledger service handling 40M transactions a day
  • Cut settlement batch time from 4 h to 25 min

Skills

Languages: Go, Python, SQL
Infrastructure: Postgres, Kafka, AWS

62 words398 characters20 lines
Markdown

What Markdown Cannot Do for Resume Layout

Be honest with yourself about four gaps before you commit, because each has a workaround with a cost.

Right-aligned dates. Markdown has no alignment syntax for paragraphs. The template uses a two-cell table with an empty header row and a --: delimiter, which the GFM tables extension defines as right alignment. GitHub and Pandoc honour it, though some themes draw a table border around the row, and stylesheets that force cell alignment (ours included) show it as a plain left-aligned row. The alternative is inline HTML: <div align="right">Mar 2022 to present</div> right-aligns in our editor and on GitHub, but Pandoc's DOCX output ignores the attribute. Pick the form that matches the converter you export with. Our table guide covers alignment in depth.

Two columns. Not possible in Markdown, and only possible in HTML with CSS that most PDF converters partially support. If you need a sidebar, you've outgrown the format.

Fonts and spacing. The converter decides. Our PDF export applies its own stylesheet, Pandoc uses LaTeX defaults unless you pass a template, and browser print uses whatever page styles are active. Pick one converter and stick with it so the layout is predictable.

Icons and photos. Skip them. Most parsers ignore images, and a photo is a liability in several hiring markets.

None of these gaps affect what the resume says, which is what gets you the interview. Spend the time you save on layout rewriting bullets so each one names a result, a number and the tool you used. Parsers match keywords from the job description, so use the job's own terms for skills: write "Kubernetes", not "container orchestration". Put them in the Skills section, where extraction is most reliable.

How Can I Convert a Markdown File to a PDF for My Resume?

You have three good options, and the right one depends on who's receiving the file.

  1. Browser export. Paste the file into the Markdown to PDF converter and download. This is the fastest route and needs nothing installed. Open the result and try to select a line of text: if it highlights, the PDF is text-based and an ATS can read it.
  2. Pandoc. pandoc resume.md -o resume.pdf produces a PDF through LaTeX, which means a TeX engine must be installed, per the Pandoc manual. Add -V geometry:margin=2cm to tighten margins. The output is text-based by default.
  3. Word for recruiters. pandoc resume.md -o resume.docx writes a DOCX with real heading styles, or use the Markdown to Word converter in the browser. Recruiters who reformat resumes for clients will thank you.

Whichever route you take, name the file with your name (priya-nair-resume.pdf) and check the page count before uploading. The full set of PDF methods, including browser print and VS Code extensions, is in our Markdown to PDF guide. The Word side is in the Markdown to Word guide.

There's a fourth output that costs nothing extra: a web version. Push resume.md to a public GitHub repository or a gist. GitHub renders the headings, bullets and the date table, including the right alignment and the align attribute if you used the HTML form. Link that page from your LinkedIn profile or email signature. A resume markdown file hosted this way is always current, because updating it is the same commit you already make before exporting the PDF.

Common Markdown Resume Mistakes

Tables for the whole layout. A resume built as one big table looks tidy in preview and parses as a jumble of cells. Use tables only for the date row.

Skipping heading levels. Jumping from the H1 name straight to H3 roles leaves a parser with no section boundaries. Keep the H2 section headings even when a section has one entry.

A link on every line. Underlined blue text across a whole resume is hard to read in print. Link the GitHub and portfolio URLs once, in the contact block or Projects, and leave the rest as plain text.

Markdown Resume FAQ

A markdown resume gives you a document that parsers read cleanly and that you can update in thirty seconds before an application. Use the template above, keep the heading hierarchy intact, right-align dates with the two-cell table, and export to PDF or DOCX from the editor. The layout limits are real, but for most roles they're limits you'll never notice.