English | Français | Deutsch | Español | Português | Bahasa Indonesia | 日本語 | 简体中文 | 繁體中文
News: YAMLResume v0.15 is out with curated sample resumes in 12 locales and AI-powered resume generation. Also check out the YAMLResume GitHub Action to automate PDF builds in CI/CD.
Writing resumes may not be hard, but it is definitely not fun and it's tedious.
YAMLResume lets you manage and version-control your resumes as plain-text YAML and turn them into beautifully typeset, professional documents with a single command.
This project started as the core typesetting engine for PPResume, a LaTeX-based, pixel-perfect resume builder. After careful consideration, we decided to open source it so people can always say no to vendor lock-in.
YAMLResume follows Separation of Concerns:
- Content lives in plain-text YAML.
- Structure and validation are enforced by the compiler and a strict schema.
- Presentation is handled by pluggable layout engines (LaTeX, HTML, Markdown, DOCX).
You edit the what; YAMLResume handles the how.
- One source, multiple outputs. From a single
resume.ymlgenerate pixel-perfect PDFs (via LaTeX), clean Markdown, responsive HTML, and Microsoft Word DOCX files. - A real resume compiler. Parse, validate, transform, and render. Catch errors early with Zod runtime validation and JSON Schema editor integration.
- Great developer experience. Watch mode with
yamlresume dev, environment diagnostics withyamlresume doctor, and instant schema validation. - AI-powered generation. Bootstrap a complete resume from a job title and
locale with
yamlresume ai generate. - Flexible layouts. Rename and reorder sections, switch templates, tune typography, paper size, line spacing, and toggle icons.
- Global i18n. Built-in support for 10 languages across 12 locale codes.
- Rich ecosystem. Docker image, Homebrew formula, GitHub Action, embeddable Playground, curated samples, and a JSON Resume converter.
The fastest way to try YAMLResume is with Docker. The image ships with the CLI, XeTeX, and recommended fonts:
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml
docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume build my-resume.ymlYou can also install yamlresume with your favorite package manager (Node.js
= 22 is required):
# npm
npm install -g yamlresume
# pnpm
pnpm add -g yamlresume
# yarn
yarn global add yamlresume
# bun
bun add -g yamlresume
# Homebrew (macOS)
brew install yamlresumeVerify the installation and check your environment:
yamlresume help
yamlresume doctorFor detailed installation steps, including how to set up a typesetting engine, see the installation guide.
You can create your own resume by cloning one of our sample resumes here. Once you have the sample resume on your computer, you can generate a PDF with:
$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.
$ yamlresume build my-resume.yml
✔ Generated resume tex file successfully: my-resume.tex
◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume pdf file successfully: my-resume.pdf
✔ Generated resume docx file successfully: my-resume.docx
✔ Generated resume markdown file successfully: my-resume.md
✔ Generated resume html file successfully: my-resume.htmlYou can also use the dev command to
rebuild the resume on each file change, which provides a modern web
development-like experience:
$ yamlresume dev my-resume.yml
✔ Generated resume tex file successfully: my-resume.tex
◐ Generating resume pdf file with command: xelatex -halt-on-error my-resume.tex...
◐ Watching file changes: my-resume.yml...
✔ Generated resume pdf file successfully: my-resume.pdf
✔ Generated resume docx file successfully: my-resume.docx
✔ Generated resume markdown file successfully: my-resume.mdCheck out the generated PDF here.
PPResume Gallery provides a showcase of all the possible types of resumes, categorized by languages and templates.
Layouts decouple your content from presentation. Add as many output formats as
you need in resume.yml:
layouts:
- engine: latex
template: moderncv-banking
typography:
fontSize: 11pt
- engine: markdown
- engine: html
template: calm
- engine: docx
template: calmLearn more about each engine:
Use yamlresume dev to rebuild your resume automatically as you edit the YAML
file:
yamlresume dev my-resume.ymlThis gives you a tight feedback loop similar to modern web development: save the
file and the PDF updates moments later. You can pass --no-pdf or
--no-validate to speed things up during drafting.
YAMLResume provides a built-in schema that validates your resume before rendering. Add the schema header to your YAML file for IDE autocomplete, hover documentation, and real-time format checks:
# yaml-language-server: $schema=https://yamlresume.dev/schema.jsonRun yamlresume validate my-resume.yml for clang-style diagnostics:
New in v0.14, yamlresume ai generate creates a complete, schema-valid resume
from a position and language:
export OPENAI_API_KEY=sk-...
yamlresume ai generate --position "Software Engineer" --language en resume.ymlSupported providers include OpenAI, DeepSeek, Kimi, and Ollama. Read the AI documentation for setup details.
YAMLResume ships with a growing set of templates across engines:
| Engine | Templates |
|---|---|
| LaTeX | moderncv-banking, moderncv-casual, moderncv-classic, jake |
| HTML | calm, vscode |
| DOCX | calm |
Run yamlresume templates list to see everything that is installed.
YAMLResume supports localization out of the box. Set your locale in
resume.yml:
locale:
language: enSupported languages include English, Chinese (Simplified, Traditional TW/HK), Spanish, French, Norwegian, Dutch, Japanese, German, Indonesian, and Brazilian Portuguese. See the locale docs for the full list.
YAMLResume provides a set of tools to help you create, convert, and manage your resumes more efficiently:
@yamlresume/ai— Programmatic AI-powered resume generation.@yamlresume/playground— Embeddable React component for building your own resume editor. It powers the official Playground.@yamlresume/samples— Curated sample resumes for common positions in 12 locales.yamlresume/action— GitHub Action for automating resume builds in CI/CD.create-yamlresume— Scaffold a new YAMLResume project with one command.json2yamlresume— Convert JSON Resume files to YAMLResume format.- Docker image and Homebrew formula for easy installation.
YAMLResume is under active development and new features land regularly. Contributions are deeply appreciated. Please read the guidelines before submitting a pull request.
- more resume templates
- more layout engines (typst, and others)
- more languages and locales
- ATS optimization features
If you find YAMLResume helpful, please consider supporting the project:






