Résumé as code

Write your résumé in YAML. Get a typeset PDF.

yaml-resume is a tiny CLI and a JSON Resume plugin: author in readable YAML, validate against the official schema, and render through any JSON Resume theme.

MIT licensed Node ≥ 20 No LaTeX No browser download
resume.yaml
basics:
  name: Jordan Lee
  label: Full Stack Software Engineer
work:
  - name: Northstar Labs
    position: Senior Software Engineer
    startDate: 2021-06-01
$ yaml-resume build resume.yaml → resume.json + resume.pdf

Two ways to use it

The same engine, whichever way you think about it.

Standalone tool

A zero-config résumé compiler

Install it, write a resume.yaml, run yaml-resume build, and get a clean A4 PDF — no LaTeX, no browser download, no config. There's a programmatic API too, with TypeScript types.

JSON Resume plugin

YAML for the JSON Resume ecosystem

Under the hood it's 100% JSON Resume: validated with @jsonresume/schema (the same validator resume-cli uses) and rendered with any jsonresume-theme-*. Your YAML converts straight to a standard resume.json.

Try it — right here

Author in YAML, JSON, TOML, or XML — or import an existing résumé from a GitHub gist. It validates against the official JSON Resume schema and renders live with any theme. It all runs in your browser — then export to a selectable-text PDF, PNG, HTML, or Word .docx.

yaml-resume · live
resume.yaml
PNG preview of résumé

                  
📄

Microsoft Word

A clean, editable .docx built straight from your résumé — easy to tweak and friendly to recruiters and applicant-tracking systems.

A full résumé toolset

Built on the JSON Resume standard — and inspired by the best of its community projects. Everything runs in your browser, and most of it on the CLI too.

🧙

Guided wizard

New to YAML? Answer a few questions and we write the JSON Resume for you, previewed live. Open →

Import from GitHub

Pull an existing résumé from a gist, a GitHub username, or any resume.json URL — right into the editor.

🔁

Author in any format

Write in YAML, JSON, TOML, or XML and convert between them on the fly — all the same JSON Resume underneath.

🎨

130 themes

Preview live and switch instantly, from clean classics to a terminal view. Browse the gallery →

📄

Export anywhere

A selectable-text, ATS-readable PDF, plus PNG, HTML, and an editable Word .docx.

Résumé review

Beyond schema validation: a completeness score and practical tips. On the CLI too — yaml-resume lint.

What you get

Small surface, careful details.

Schema-validated

Every build checks your résumé against the official JSON Resume schema before rendering. Invalid input never reaches the PDF.

🎨

Any theme

Render through any jsonresume-theme-*. Switch looks with one flag, or set a default in meta.theme.

📄

One source, many formats

Compile a single résumé to a typeset A4 PDF, HTML, PNG, JSON, LaTeX (.tex), or Markdown — all from real JSON Resume packages.

🔁

Pipe-friendly

Read from stdin with - and write to stdout with --stdout. Fits any pipeline.

🧩

Typed API

import { build } from 'yaml-resume' — ships TypeScript declarations generated from the source.

🚀

No browser download

Renders with a Chromium binary from npm, so it works in sandboxed and offline environments out of the box.

Quickstart

Node 20+. One install, four commands.

terminal
npm install -g yaml-resume

yaml-resume validate resume.yaml   # check against the JSON Resume schema
yaml-resume convert  resume.yaml   # → resume.json (add --stdout to pipe)
yaml-resume html     resume.yaml   # → resume.html (no browser needed)
yaml-resume build    resume.yaml   # → resume.json + resume.pdf

How it works

A short, linear pipeline — each stage independently tested.

1 · Parse YAML → object
yaml
2 · Validate against the JSON Resume schema
@jsonresume/schema
3 · Convert object → resume.json
JSON Resume
4 · Render theme → PDF / HTML
jsonresume-theme-* + Chromium

Same résumé, different themes

Rendered from the very same examples/resume.yaml — just a different --theme.

Résumé rendered with the stackoverflow theme
--theme stackoverflow PDF ↗
Résumé rendered with the flat theme
--theme flat PDF ↗