Currently viewing the human version
Switch to AI version

Why JSON Resume Exists (And Why You Might Want It)

I switched jobs in March 2024 and spent an entire weekend updating my resume everywhere - LinkedIn, my company bio, personal site, plus like 6 other places I'd forgotten about. Same fucking data, different formats every time. JSON Resume fixes this by letting you write your resume once as structured data, then generate whatever format you need.

JSON Resume Template Example

The Real Problem It Solves

You know the drill: you land a new gig, update your LinkedIn, then remember your company website needs updating, then your PDF resume is out of date, then your personal site... JSON Resume makes this suck less. Write your career history once in a standardized JSON format, then generate HTML, PDF, Word docs, or whatever else you need.

There's this schema thing that covers the usual resume stuff - work history, education, skills, whatever. Here's what a basic JSON resume looks like:

{
  "basics": {
    "name": "Jane Developer",
    "label": "Full Stack Engineer",
    "email": "jane@example.com",
    "phone": "(555) 123-4567",
    "url": "https://janedev.com",
    "summary": "I debug production issues at 3am and somehow still love this job"
  },
  "work": [{
    "name": "TechCorp",
    "position": "Senior Engineer",
    "startDate": "2023-01-15",
    "endDate": "2024-12-01",
    "summary": "Built some microservices, they broke constantly"
  }],
  "skills": [{
    "name": "Backend",
    "keywords": ["Node.js", "Python", "Docker", "PostgreSQL"]
  }]
}

What Actually Works Well

Version Control: Your resume becomes part of your development workflow. I keep mine in Git alongside my dotfiles - when I change jobs, it's a simple commit and push. Branch for different roles, merge when you land something.

Theme Swapping: There are tons of themes but most are garbage. Maybe 20 actually work without breaking on real data. The elegant theme and stackoverflow theme are solid choices.

Automated Generation: Set up a GitHub Action to regenerate your resume whenever you push changes. Deploy to GitHub Pages, update your PDF automatically, sync to your portfolio site.

ATS Compatibility: JSON resumes export to clean HTML/PDF that actually parses correctly in applicant tracking systems. No more wondering if your fancy formatting broke the parser.

The Parts That Kinda Suck

Setup Complexity: You need Node.js, understand JSON syntax, and be comfortable with command-line tools. The resume-cli works but assumes you know what you're doing.

Theme Quality: Most themes haven't been updated since 2019. The ones that work often break when you use real data instead of the sample data. Pro tip: test themes with your actual content before committing.

JSON Syntax Hell: One missing comma and everything dies. Spent like 3 hours debugging why my education section vanished - turns out the elegant theme wanted an array but I had a single object. The error? "ValidationError: child 'education' fails" - super fucking helpful, right?

JSON Document Structure

Export Limitations: PDF generation is hit-or-miss depending on your theme and data. Some themes generate gorgeous HTML but terrible PDFs. You'll end up manually tweaking CSS for print styles.

This tool makes sense if you're a developer who already lives in JSON/Git/CLI world. If you just need to update a resume twice a year, stick with Google Docs or Canva. JSON Resume is infrastructure for people who treat their career data like code.

Actually Setting This Thing Up (And What Will Go Wrong)

Installation: The Easy Part

Node.js Logo

Install the resume-cli globally. You need Node.js installed (obviously):

npm install -g resume-cli

If you hit permission errors on macOS/Linux (EACCES: permission denied), either fix your npm permissions or use nvm like a civilized person. On Windows, newer Node versions sometimes break the CLI - if it crashes, try Node 16.x or just use WSL2.

There's also resumed which is a modern rewrite, but the original CLI is fine for most people. Don't overthink it.

JSON Editor Interface

Creating Your First Resume: The Fun Begins

Generate a starter file:

resume init

This creates resume.json with sample data. The generated file is complete garbage - delete everything and start with someone else's real resume as a template. Trust me, it's faster than fighting with the schema documentation.

The official schema has the usual stuff - name, email, job history, education, skills. Plus some optional crap like volunteer work and interests that nobody reads anyway.

Validation: Where Things Break

Test your JSON syntax:

resume validate

This catches basic JSON errors but won't help with the logical problems. Common fuckups:

  • Trailing commas: \"skills\": [\"JavaScript\", \"Python\",] breaks everything
  • Date formats: Use YYYY-MM-DD format or shit breaks
  • Missing required fields: Some themes break if you don't have certain fields
  • Unicode characters: Fancy quotes from copy-pasting will break validation

JSON Schema Validation Error

The error messages are fucking useless. Spent 2 hours last week debugging what turned out to be a missing comma. Use jsonlint.com or get a JSON linter in your editor before you lose your mind.

Theme Hunting: The Disappointment Phase

Browse available themes and prepare for disappointment. Most haven't been updated since Obama was president - seriously, check the commit dates. The 'modern' theme's last commit was 2019. Here's what actually works in 2024:

elegant: Clean, professional. Works with real data.

stackoverflow: Familiar design for developers.

kendall: Modern, good for tech roles.

StackOverflow Theme Preview

Test themes locally:

resume serve --theme elegant

This starts a dev server at http://localhost:4000. The theme looks great until you use your actual data and everything breaks.

Export Reality Check

Generate different formats:

resume export resume.pdf --theme elegant
resume export resume.html --theme elegant
resume export resume.docx --theme elegant

JSON Resume to PDF Workflow

PDF Export Issues:

  • Print styles are often broken or missing
  • Fonts don't match the HTML version
  • Page breaks happen in weird places
  • Some themes generate 20-page PDFs from 2 pages of data

HTML Export: Usually works fine, but check mobile responsiveness

Word Export: Exists but the formatting is fucked - bullet points become weird Unicode chars, margins disappear. Use HTML and convert through Google Docs if you absolutely need .docx

Hosting Options That Don't Suck

GitHub Gist Method: Create a public gist named resume.json, get automatic hosting at registry.jsonresume.org/yourusername. Works but you're stuck with their default theme.

Self-Hosting: Generate HTML and upload to Netlify, Vercel, or GitHub Pages. More control but you handle the deployment.

Hosting Platform Comparison

GitHub Actions: Set up automated builds to regenerate your resume on every push. Overkill but satisfying.

Integration With Your Actual Workflow

Keep your resume.json in a private GitHub repo with your dotfiles. When you change jobs:

  1. Update the JSON file
  2. Commit and push
  3. Regenerate exports
  4. Update your portfolio site
  5. Send recruiters the PDF version because they don't know what JSON is

The whole point is updating once and generating multiple formats. If you're manually editing different versions, you're doing it wrong.

JSON Resume vs The Rest (Honest Comparison)

Feature

JSON Resume

PDF Resume

Word Document

LinkedIn Profile

Setup Difficulty

🔴 Need Node.js + JSON skills

🟢 Open template, type

🟢 Open template, type

🟢 Fill out web form

Version Control

🟢 Git diffs work perfectly

🔴 Binary blobs, no diffs

🔴 Track Changes is garbage

🔴 No version history

Automation

🟢 CLI tools + GitHub Actions

🔴 Manual updates forever

🟡 Mail merge if you're lucky

🟡 API exists but limited

Multiple Formats

🟢 One JSON → many formats

🔴 Stuck with PDF

🟡 Export options vary

🔴 LinkedIn only

Theme Quality

🟡 Like 20 good themes, hundreds of broken ones

🔴 Start from scratch

🟢 Tons of templates

🔴 Can't customize much

ATS Compatibility

🟢 Clean HTML/PDF export

🟡 Hit-or-miss parsing

🟡 Depends on formatting

🟢 Integrates directly

Recruiter Acceptance

🔴 "What's a JSON?"

🟢 Everyone expects PDF

🟢 Standard format

🟢 Where recruiters live

Data Ownership

🟢 It's your file

🟢 It's your file

🟢 It's your file

🔴 LinkedIn owns everything

Collaboration

🟢 Pull requests work

🔴 Email versions around

🟢 Real-time editing

🔴 One person only

Error Detection

🟢 JSON validation catches bugs

🔴 Spell check only

🟡 Grammar suggestions

🔴 No validation

Mobile Editing

🔴 CLI tools don't work on phone

🔴 PDF editors suck on mobile

🟡 Office mobile apps exist

🟢 Mobile app works great

Privacy

🟢 Self-host or keep private

🟢 Send to who you want

🟢 Send to who you want

🔴 Public by default

Industry Standard

🔴 Only developers know this

🟢 Universal acceptance

🟢 HR departments love it

🟢 Required for job hunting

Time Investment

🔴 2-4 hours setup + learning

🟢 30 minutes

🟢 30 minutes

🟢 1 hour

Questions Developers Actually Ask

Q

Do employers actually accept JSON resumes?

A

Hell no. 99% of companies want a PDF. JSON Resume is for generating PDFs and managing your data

  • not for submitting raw JSON to job applications. You'll get weird looks if you attach resume.json to an email. Export to PDF first.
Q

How do I not accidentally commit my phone number to GitHub?

A

Keep sensitive info in a separate file or use environment variables. I learned this the hard way when my phone number got scraped by recruiters in 2023. Now I have resume-public.json and resume-private.json

  • the private one has my actual contact info, the public one on GitHub just has my email.
Q

What if JSON Resume gets abandoned?

A

It's just a JSON file. Even if the entire project died tomorrow, your data is still readable and you could build your own tools in a weekend. The schema is on GitHub and it's simple enough that you could maintain it yourself. This is way better than being locked into a proprietary platform.

Q

Can my designer friend use this?

A

Only if they're comfortable editing JSON by hand. There are visual JSON editors but honestly, most non-developers find the format intimidating. If your designer insists on using this, they'll probably ask you to update it anyway.

Q

How do I use this with my React/Next.js/Vue site?

A

Import the JSON file directly:

import resume from './resume.json';

function About() {
  return (
    <div>
      <h1>{resume.basics.name}</h1>
      <p>{resume.basics.summary}</p>
    </div>
  );
}

For Jekyll or Hugo, drop the file in _data/ or data/ and access it in templates. For Gatsby, use gatsby-source-filesystem.

Q

Why doesn't my theme look like the preview?

A

Because you have real data and the preview uses fake data. Most theme previews use perfect sample data with exactly the right amount of text. I switched to the elegant theme because the preview looked clean, then my 15 skills broke the layout completely and my summary wrapped weird. Test themes with your actual data before committing

  • save yourself the frustration.
Q

Can I have different resumes for different jobs?

A

Yeah, but manage it properly.

I keep branches in Git: frontend-focus, backend-focus, devops-focus.

Or maintain separate files: resume-frontend.json, resume-backend.json. Don't manually edit 5 different files

  • that's the problem you're trying to solve.
Q

Why does PDF export look like shit?

A

Because most themes don't have proper print styles. The elegant theme actually exports decent PDFs, but many others are HTML-only. Check the theme's GitHub repo for PDF issues before using it. Some themes generate 10-page PDFs from 1 page of content.

Q

How do I back this up?

A

It's a text file. Put it in Dropbox, Google Drive, i

Cloud, whatever. The real backup is version control

  • keep it in a private Git repo and you have infinite history. I also export PDFs periodically and save them with timestamps as "point in time" snapshots.
Q

The JSON syntax is breaking and I hate it

A

Use a proper editor with JSON validation.

VS Code, Sublime Text, even online tools like JSONLint. The most common error is trailing commas

  • JSON doesn't allow them but Java

Script does, so you get Unexpected token , errors. Install a JSON formatter/linter extension and save yourself hours of debugging invisible Unicode characters copy-pasted from LinkedIn.

Q

Is this just over-engineering a simple problem?

A

Maybe. If you update your resume twice a year, just use Google Docs. JSON Resume makes sense if you're constantly updating your career info across multiple places (portfolio site, LinkedIn, PDF exports, team bios). The automation pays off if you use it regularly.

Related Tools & Recommendations

news
Recommended

OpenAI Thinks They Can Fix Job Hunting (LOL)

Another tech company convinced they can solve recruiting with AI, because that always goes well

Microsoft Copilot
/news/2025-09-06/openai-jobs-platform-linkedin-rival
60%
news
Recommended

OpenAI Launches AI-Powered Hiring Platform to Challenge LinkedIn

Company builds recruitment tool using ChatGPT technology as job market battles intensify

Microsoft Copilot
/news/2025-09-07/openai-hiring-platform-linkedin
60%
troubleshoot
Recommended

Bun's Peer Dependency Hell - What Actually Works

When Bun breaks your ESLint setup and you want to throw your laptop out the window

Bun
/troubleshoot/bun-npm-compatibility/peer-dependency-resolution
60%
news
Recommended

NPM снова в говне - червь "Shai-Hulud" жрет пакеты как ебанутый

Очередной кошмар для JS-разработчиков: самовоспроизводящийся малварь ползет по NPM как песчаный червь из Дюны

OpenAI GPT-5-Codex
/ru:news/2025-09-19/npm-shai-hulud-malware-attack
60%
news
Recommended

npmワーム出現、マジでヤバい - Shai-Huludが大暴れ中

GitHubトークン盗んで勝手に広がる

Oracle Cloud Infrastructure
/ja:news/2025-09-21/shai-hulud-npm-worm-attack
60%
tool
Popular choice

jQuery - The Library That Won't Die

Explore jQuery's enduring legacy, its impact on web development, and the key changes in jQuery 4.0. Understand its relevance for new projects in 2025.

jQuery
/tool/jquery/overview
60%
tool
Popular choice

Hoppscotch - Open Source API Development Ecosystem

Fast API testing that won't crash every 20 minutes or eat half your RAM sending a GET request.

Hoppscotch
/tool/hoppscotch/overview
57%
tool
Popular choice

Stop Jira from Sucking: Performance Troubleshooting That Works

Frustrated with slow Jira Software? Learn step-by-step performance troubleshooting techniques to identify and fix common issues, optimize your instance, and boo

Jira Software
/tool/jira-software/performance-troubleshooting
55%
news
Recommended

Microsoft Word Now Auto-Saves to Cloud by Default: Privacy Nightmare or Productivity Win? - August 29, 2025

Microsoft decided your documents belong in their cloud whether you want it or not

NVIDIA GPUs
/news/2025-08-29/microsoft-word-cloud-default
54%
tool
Popular choice

Northflank - Deploy Stuff Without Kubernetes Nightmares

Discover Northflank, the deployment platform designed to simplify app hosting and development. Learn how it streamlines deployments, avoids Kubernetes complexit

Northflank
/tool/northflank/overview
52%
tool
Popular choice

LM Studio MCP Integration - Connect Your Local AI to Real Tools

Turn your offline model into an actual assistant that can do shit

LM Studio
/tool/lm-studio/mcp-integration
50%
tool
Popular choice

CUDA Development Toolkit 13.0 - Still Breaking Builds Since 2007

NVIDIA's parallel programming platform that makes GPU computing possible but not painless

CUDA Development Toolkit
/tool/cuda/overview
47%
news
Popular choice

Taco Bell's AI Drive-Through Crashes on Day One

CTO: "AI Cannot Work Everywhere" (No Shit, Sherlock)

Samsung Galaxy Devices
/news/2025-08-31/taco-bell-ai-failures
45%
tool
Similar content

Technical Resume Builders - Stop Getting Rejected by Robots

Master technical resume building to beat ATS systems and impress recruiters. Get expert tips, compare top builders, and learn from 200+ applications to secure y

CV Compiler
/tool/technical-resume-builders/overview
45%
tool
Similar content

gitconnected Resume Builder - Your GitHub is Your Resume

Stop manually updating your resume every time you learn a new framework. Automatically syncs your GitHub repos to build your resume.

gitconnected Resume Builder
/tool/gitconnected-resume-builder/overview
45%
news
Popular choice

AI Agent Market Projected to Reach $42.7 Billion by 2030

North America leads explosive growth with 41.5% CAGR as enterprises embrace autonomous digital workers

OpenAI/ChatGPT
/news/2025-09-05/ai-agent-market-forecast
42%
integration
Recommended

Claude API Code Execution Integration - Advanced Tools Guide

Build production-ready applications with Claude's code execution and file processing tools

Claude API
/integration/claude-api-nodejs-express/advanced-tools-integration
42%
tool
Recommended

MongoDB Node.js Driver Connection Pooling - Fix Production Crashes

depends on MongoDB Node.js Driver

MongoDB Node.js Driver
/tool/mongodb-nodejs-driver/connection-pooling-guide
42%
review
Recommended

Which JavaScript Runtime Won't Make You Hate Your Life

Two years of runtime fuckery later, here's the truth nobody tells you

Bun
/review/bun-nodejs-deno-comparison/production-readiness-assessment
42%
news
Popular choice

Builder.ai's $1.5B AI Fraud Exposed: "AI" Was 700 Human Engineers

Microsoft-backed startup collapses after investigators discover the "revolutionary AI" was just outsourced developers in India

OpenAI ChatGPT/GPT Models
/news/2025-09-01/builder-ai-collapse
40%

Recommendations combine user behavior, content similarity, research intelligence, and SEO optimization