Write your resume in YAML. Render it beautifully.
# resume.yaml
basics:
name: Jane Smith
label: Senior Software Engineer
email: jane@example.com
summary: >-
Passionate engineer with 8+ years
building scalable distributed systems.
work:
- name: Acme Corp
position: Lead Engineer
startDate: 2020-01-15
highlights:
- Reduced deploy time by 60%
- Led team of 12 engineersresuml render --resume resume.yaml --theme stackoverflow --output resume.htmlYour YAML becomes a polished, professional resume — ready to share, print, or export to PDF.
| YAML | JSON | |
|---|---|---|
| Comments | ✅ # explain your choices |
❌ Not supported |
| Multi-line strings | ✅ summary: >- block syntax |
❌ Escape everything |
| Readability | ✅ Clean, minimal syntax | |
| Diffing | ✅ Clean git diffs | |
| Compatibility | ✅ Valid JSON Resume schema | ✅ Native |
YAML is a superset of JSON — your resume stays fully compatible with the JSON Resume ecosystem while being far more pleasant to write and maintain.
- Node.js >= 20.0.0
- npm >= 10.0.0
npm install -g resuml- Create a YAML file for your resume (e.g.,
resume.yaml) - Validate your resume data:
resuml validate --resume resume.yaml
- Convert to JSON:
resuml tojson --resume resume.yaml --output resume.json
- Render with a theme:
resuml render --resume resume.yaml --theme stackoverflow --output resume.html
| Command | Description |
|---|---|
validate |
Validate resume data against the JSON Resume schema |
tojson |
Convert YAML resume data to JSON format |
render |
Render the resume using a specified theme |
dev |
Start a development server with hot-reload |
| Option | Alias | Description |
|---|---|---|
--resume |
-r |
Input YAML file(s) or directory |
--output |
-o |
Output file path |
--theme |
-t |
Theme to use for rendering |
--port |
-p |
Port for dev server (default: 3000) |
--language |
Language code for localization (default: en) |
|
--debug |
Enable debug mode for detailed errors |
Resuml supports themes from the JSON Resume ecosystem. Install a theme, then pass its name to --theme:
npm install jsonresume-theme-stackoverflow
resuml render --resume resume.yaml --theme stackoverflow| Theme | Install | Style |
|---|---|---|
| stackoverflow | npm i jsonresume-theme-stackoverflow |
Clean, professional |
| elegant | npm i jsonresume-theme-elegant |
Modern, elegant |
| kendall | npm i jsonresume-theme-kendall |
Minimal, classic |
| flat | npm i jsonresume-theme-flat |
Flat design |
| onepage | npm i jsonresume-theme-onepage |
Single page |
Browse all themes at jsonresume.org/themes — any
jsonresume-theme-*package works with resuml.
For detailed examples and usage instructions, see the examples/README.md file.
basics:
name: John Doe
label: Software Engineer
email: john@example.com
summary: Experienced software engineer...
location:
city: San Francisco
countryCode: US
profiles:
- network: GitHub
url: https://github.com/johndoe
work:
- company: Tech Corp
position: Senior Engineer
startDate: 2020-01
endDate: Present
summary: Led development of...Use GitHub Actions to automatically rebuild your resume when you push changes:
# .github/workflows/resume.yml
name: Build Resume
on:
push:
paths: ['resume.yaml', 'resume/*.yaml']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g resuml
- run: npm install jsonresume-theme-stackoverflow
- run: resuml render --resume resume.yaml --theme stackoverflow --output resume.html
- run: resuml tojson --resume resume.yaml --output resume.json
- uses: actions/upload-artifact@v4
with:
name: resume
path: |
resume.html
resume.jsonYou can use resuml programmatically from Node.js:
import {
processResumeData,
loadResumeFiles,
loadTheme,
themeRender
} from 'resuml';
// Load YAML files
const { yamlContents } = await loadResumeFiles('resume.yaml');
// Validate and merge
const resume = await processResumeData(yamlContents);
// Load a theme
const theme = await loadTheme('stackoverflow');
// Render HTML
const html = await theme.render(resume, { locale: 'en' });See the CLI and API for more details.
-
Validation Errors
- Ensure your YAML follows the JSON Resume schema
- Check for proper indentation in your YAML file
- Verify all required fields are present
-
Theme Rendering Issues
- Make sure the theme is properly installed
- Check if all required theme dependencies are installed
- Try running with
--debugflag for more information
-
Development Server Issues
- Ensure the specified port is available
- Check if you have proper permissions to access the port
- Try a different port if the default is blocked
Contributions are welcome! Please feel free to submit a Pull Request.
ISC