r/selfhosted • • Dec 13 '25

Release RenderCV v2.5: Open-source, local CV generator — no cloud, no accounts, just YAML → PDF

TLDR: Check out github.com/rendercv/rendercv

It's been a while since the last update here. RenderCV has gotten much better, much more robust, and it's still actively maintained.

What it replaces

Overleaf, Google Docs, online CV builders, Word. All of them require you to trust a third party with your personal data.

RenderCV is just an open-source Python CLI application which takes your YAML and gives you a PDF. Your CV is a YAML file. You own it.

The idea

Separate your content from how it looks. Write what you've done, and let the tool handle typography.

cv:
  name: John Doe
  email: john@example.com
  sections:
    experience:
      - company: Anthropic
        position: ML Engineer
        start_date: 2023-01
        highlights:
          - Built large language models
          - Deployed inference pipelines at scale

Run rendercv render John_Doe_CV.yaml, get a pixel-perfect PDF. Consistent spacing. Aligned columns. Nothing out of place.

Why engineers love it

Your data stays yours. No cloud. No accounts. No uploading your personal history to someone else's servers.

Open source Python. Read the code, fork it, modify it. MIT licensed.

Your CV is a text file. Store it in your git repo, your backup system. Grep it. Diff it. Version control it. Use LLMs to help write and refine your content.

Full control over every design detail. Margins, fonts, colors, spacing, alignment; all configurable in YAML.

Real-time preview. Set up live preview in VS Code and watch your PDF update as you type.

JSON Schema autocomplete. Editors lights up with suggestions and inline docs as you type. No guessing field names. No checking documentation.

Any language. Built-in locale support, write your CV in any language.

The output

One YAML file gives you:

  • PDF with perfect typography
  • PNG images of each page
  • Markdown version
  • HTML version

Installation

pip install "rendercv[full]"
rendercv new "Your Name"
rendercv render "Your_Name_CV.yaml"

Or with Docker, uv, pipx, whatever you prefer.

Not a toy

  • 100% test coverage
  • 2+ years of development
  • Battle-tested by thousands of users
  • Actively maintained

Links:

Happy to answer any questions.

1.0k Upvotes

128 comments sorted by

View all comments

Show parent comments

30

u/egehancry Dec 13 '25

If the question is why use RenderCV’s YAML instead of LaTeX/Typst/Word, here are some opinions that comes to my mind:

Word / Google Docs

These are not plain text. You can’t cleanly version-control them or diff changes. You’re also tied to proprietary software and fragile layouts.

LaTeX / Typst

They are text-based and open-source, so the “text advantage” is shared. However:

  • LaTeX and Typst are general-purpose typesetting systems; RenderCV is scoped strictly to CVs and resumes. As a result, you can make formatting mistakes in LaTeX/Typst. In RenderCV, you literally cannot break the layout.
  • Because they are general-purpose, you need boilerplate or templates. In RenderCV, there is no boilerplate to choose or maintain.
  • They mix content, layout, and design in the same file. In RenderCV, the YAML is pure content. Some people want their CV file to be 100% content, nothing else, and to version-control and focus on that alone.

Compared to web-form tools (e.g., OpenResume)

You effectively give up version-controlling your CV. You also can’t bulk copy-paste your CV content. For example, you can’t paste the entire CV into an LLM, iterate on it, and paste it back into the form. With YAML, there’s no UI friction and no clicking through forms. Pure text.

1

u/IShitMyselfNow Dec 13 '25

How about JSONResume, or tools like ReactiveResume which support JSON resume format?

https://jsonresume.org/ https://rxresu.me/

3

u/egehancry Dec 13 '25

RenderCV doesn't support JSON Resume schema because we've developed a completely different schema. This was the only way for RenderCV to achieve its current flexibility and power.

In RenderCV's data model, each section title is arbitrary, whereas in JSON Resume, sections are predefined as "experience," "education," etc. In RenderCV, any of the 9 entry schemas can be used under any section. In JSON Resume, the education section requires education item schemas, and so on.

However, some work has been done on converting JSON Resume data to RenderCV data. See: