YAMLResume is an open-source command-line tool that turns YAML resume data into typeset PDF, DOCX, HTML, Markdown, and LaTeX files using LaTeX as its default typesetting engine.
What is YAMLResume?
YAMLResume is a command-line tool that takes a YAML resume file as input and produces output in five formats — .tex, .pdf, .docx, .md, and .html — through the build command. It was originally the core typesetting engine behind PPResume and was open-sourced so users can avoid vendor lock-in. The project is written in TypeScript, uses a pnpm workspace, and is distributed via npm, Yarn, pnpm, Bun, Homebrew, and Docker.
What makes YAMLResume stand out?
YAMLResume separates resume content from layout, following the separation of concerns principle used in HTML and CSS. The YAML file holds only content; layout adjustments such as font sizes and page margins are configured separately.
- YAML-first resume drafting — content stays in human-readable YAML, which the project argues is more readable and writable than JSON.
- Five output formats from one file — the build command emits LaTeX source, PDF, DOCX, Markdown, and HTML in a single pass.
- Pluggable typesetting engines — LaTeX is the default; HTML/CSS layout engines are also supported, with typst and docx engines on the roadmap.
- Live watch mode — the dev command rebuilds the resume whenever the YAML file changes.
- Built-in schema validation — the validate command checks resumes against the YAMLResume schema to catch mistakes before typesetting.
- Multi-platform install — the Docker image bundles all dependencies; package manager installs include npm, Yarn, pnpm, Bun, and Homebrew.
- Ecosystem tools — includes @yamlresume/playground React component for building resume editors, a GitHub Action for CI/CD PDF generation, create-yamlresume scaffolding, and json2yamlresume for converting JSON Resume exports.
Who should use YAMLResume?
Software developers who want to version-control their resume in Git and generate PDFs locally or through CI. Job seekers who prefer writing structured YAML over fiddling with word processors. Technical writers and career advisors who maintain resume templates for multiple people. Anyone wanting to avoid vendor lock-in from proprietary resume builders.
What can you do with YAMLResume?
You can keep resumes in a version-controlled YAML project, generate PDFs automatically in CI, convert existing JSON Resume files, and embed a resume editor in your own web app.
- Version-controlled resumes: Store resume YAML in Git, track changes over time, and produce PDFs on demand.
- CI/CD resume generation: Use the yamlresume GitHub Action to build PDFs automatically for every commit.
- Convert from JSON Resume: Use json2yamlresume to migrate an existing JSON Resume export into YAMLResume format.
- Build custom resume editors: Use the @yamlresume/playground React component to embed a browser-based resume editor.
How does YAMLResume work?
Install the CLI and a typesetting engine (XeTeX or Tectonic), then run yamlresume new my-resume.yml to create a sample resume. Edit the YAML file, run yamlresume build my-resume.yml to generate all output files, or use yamlresume dev for watch mode. The doctor command checks that your environment has the required dependencies.
FAQ
Does YAMLResume require LaTeX?
Generating PDFs requires a typesetting engine: XeTeX or Tectonic must be installed separately. The Docker image includes YAMLResume and all its dependencies, so Docker users do not need to install LaTeX on the host system.
What output formats does YAMLResume generate?
Running the build command produces a .tex file, a .pdf, a .docx, a .md, and an .html file from a single YAML input. The default engine is LaTeX; HTML/CSS layout engines are supported as an alternative.
Is YAMLResume free?
YAMLResume is open source and publicly available on GitHub. No paid tier is mentioned on the repository page; the project accepts donations via Buy Me a Coffee.








