Overview

JSON Resume can be rendered to HTML using command-line tools. The recommended CLI is resumed, a lightweight, fully-tested Node.js tool that renders your resume using any compatible theme.

All official JSON Resume themes are compatible with resumed and can be used to generate beautiful HTML resumes from your resume.json file.

Installation

Install resumed globally using npm:

npm install -g resumed

Or use it directly with npx (no installation required):

npx resumed --help

Basic Usage

The basic command to render a resume requires a resume.json file and a theme:

# Render to HTML (outputs to stdout) resumed render resume.json --theme jsonresume-theme-even  # Save to a file resumed render resume.json --theme jsonresume-theme-even > resume.html  # Or use the --output flag resumed render resume.json --theme jsonresume-theme-even --output resume.html

Using Themes

Themes are npm packages that transform your JSON Resume into HTML. To use a theme, first install it:

# Install a theme npm install jsonresume-theme-even  # Then render with it resumed render resume.json --theme jsonresume-theme-even

Theme Naming Convention

All JSON Resume themes follow the naming pattern jsonresume-theme-{name}. When specifying a theme, you can use either the full package name or just the theme name:

# These are equivalent resumed render resume.json --theme jsonresume-theme-even resumed render resume.json --theme even

Using Local Themes

You can also use themes from a local directory, which is useful during theme development:

# Use a local theme resumed render resume.json --theme ./path/to/my-theme  # For themes with a build step, use the dist directory resumed render resume.json --theme ./my-theme/dist

Official Themes

JSON Resume provides many official themes that are tested and maintained. Here are some popular ones:

Scoped Themes (@jsonresume)

These themes are published under the @jsonresume scope on npm:

# Install scoped themes npm install @jsonresume/jsonresume-theme-professional npm install @jsonresume/jsonresume-theme-creative-studio npm install @jsonresume/jsonresume-theme-consultant-polished npm install @jsonresume/jsonresume-theme-tokyo-modernist  # Use them resumed render resume.json --theme @jsonresume/jsonresume-theme-professional

Community Themes

Many community-maintained themes are available on npm. Search for jsonresume-theme on npm to discover more:

# Popular community themes npm install jsonresume-theme-even npm install jsonresume-theme-elegant npm install jsonresume-theme-kendall npm install jsonresume-theme-stackoverflow npm install jsonresume-theme-macchiato

Preview Themes Online

You can preview how your resume looks with different themes on the JSON Resume Registry. Just host your resume and append ?theme={name} to the URL.

PDF Export

To generate a PDF, you can use browser-based tools or Puppeteer. The resumed CLI supports PDF generation with Puppeteer:

# Install Puppeteer (required for PDF) npm install puppeteer  # Generate PDF resumed render resume.json --theme jsonresume-theme-even --type pdf --output resume.pdf

Alternatively, you can render to HTML and use any HTML-to-PDF tool:

# Using wkhtmltopdf resumed render resume.json --theme jsonresume-theme-even | wkhtmltopdf - resume.pdf  # Using Chrome headless resumed render resume.json --theme jsonresume-theme-even > resume.html google-chrome --headless --print-to-pdf=resume.pdf resume.html

Validation

Before rendering, you can validate your resume.json against the official JSON Resume schema:

# Validate your resume resumed validate resume.json  # The command exits with code 0 if valid, non-zero otherwise resumed validate resume.json && echo "Valid!" || echo "Invalid!"

Programmatic API

You can also use resumed programmatically in your Node.js applications:

import { render } from 'resumed'; import * as theme from 'jsonresume-theme-even'; import { readFileSync } from 'fs';  // Load your resume const resume = JSON.parse(readFileSync('resume.json', 'utf-8'));  // Render to HTML const html = await render(resume, theme);  console.log(html);

Using Themes Directly

Each theme exports a render function that you can call directly:

import { render } from 'jsonresume-theme-even'; import { readFileSync } from 'fs';  const resume = JSON.parse(readFileSync('resume.json', 'utf-8')); const html = render(resume);  // Write to file import { writeFileSync } from 'fs'; writeFileSync('resume.html', html);

Creating Your Own Theme

Want to create a custom theme? Check out our Theme Development Guide to learn how to build themes that work with resumed and the JSON Resume ecosystem.

The basic requirements for a theme are:

  • Export a render(resume) function that returns HTML
  • Name your package jsonresume-theme-{name}
  • Publish to npm for others to use
// Minimal theme example export function render(resume) {  return `  <!DOCTYPE html>  <html>  <head>  <title>${resume.basics?.name || 'Resume'}</title>  </head>  <body>  <h1>${resume.basics?.name}</h1>  <p>${resume.basics?.label}</p>  <!-- Add more sections... -->  </body>  </html>  `; }

Troubleshooting

Theme Not Found

Make sure the theme is installed in your project or globally:

# Install locally npm install jsonresume-theme-even  # Or globally npm install -g jsonresume-theme-even

Module Errors

Some themes require peer dependencies. Install them if you see module errors:

# Common peer dependencies npm install react react-dom styled-components

Getting Help

If you encounter issues, check the resumed GitHub issues or the JSON Resume repository.

Quick Reference

# Install resumed npm install -g resumed  # Validate resume resumed validate resume.json  # Render to HTML resumed render resume.json --theme jsonresume-theme-even --output resume.html  # Render to PDF (requires puppeteer) resumed render resume.json --theme jsonresume-theme-even --type pdf --output resume.pdf  # List available options resumed --help resumed render --help