Remember JSON Resume is just a schema. Our method of theming is purely recommended if you wish to be compatibable with the official tooling and hosting.

Getting started

The basic philosophy is that you create a new NPM module that follows the naming convention of jsonresume-theme-{name}

The module should export a function called render that takes a resume.json

The render function should return a string which is generally in the format of html

In its most basic form it should look like this

  const render = (resume) => {
    return '<h1>' + + '</h1>'

  export { render }


  • All assets and css has to be inline the output
  • Gotta base64 encoding your images and other assets
  • The render function should be pure, as in, it should have no side effects. Which means to say it shouldn't read or write from disk or the network. So do not import fsor http(or any modules that depend on those) into your theme.
  • Your theme is in control of the build process so do whatever you may there
  • Feel free to share any opinions on this process in the repoistory


Here are some good example repositories to see how others have built themes

If there are any official themes you like, find their source and see if you can learn from them

Publishing / Hosting

If you want to add a theme to the official list, you need to publish an NPM module namedjsonresume-theme-{name}. That module needs to export a function called `render` that takes a `resume.json` and returns a plain HTML string.