# RenderCV
*CV/resume generator for academics and engineers*
[](https://github.com/rendercv/rendercv/actions/workflows/test.yaml)
[](https://coverage-badge.samuelcolvin.workers.dev/redirect/rendercv/rendercv)
[)](https://docs.rendercv.com)
[)](https://pypi.python.org/pypi/rendercv)
[)](https://pypistats.org/packages/rendercv)
Write your CV or resume as YAML, then run RenderCV,
```bash
rendercv render John_Doe_CV.yaml
```
and get a PDF with perfect typography. No template wrestling. No broken layouts. Consistent spacing, every time.
With RenderCV, you can:
- Version-control your CV — it's just text.
- Focus on content — don't wory about the formatting.
- Get perfect typography — pixel-perfect alignment and spacing, handled for you.
A YAML file like this:
```yaml
cv:
name: John Doe
location: San Francisco, CA
email: john.doe@email.com
website: https://rendercv.com/
social_networks:
- network: LinkedIn
username: rendercv
- network: GitHub
username: rendercv
sections:
Welcome to RenderCV:
- RenderCV reads a CV written in a YAML file, and generates a PDF with professional typography.
- See the [documentation](https://docs.rendercv.com) for more details.
education:
- institution: Princeton University
area: Computer Science
degree: PhD
date:
start_date: 2018-09
end_date: 2023-05
location: Princeton, NJ
summary:
highlights:
- "Thesis: Efficient Neural Architecture Search for Resource-Constrained Deployment"
- "Advisor: Prof. Sanjeev Arora"
- NSF Graduate Research Fellowship, Siebel Scholar (Class of 2022)
...
```
becomes one of these PDFs. Click on the images to preview.
| [](https://github.com/rendercv/rendercv/blob/main/examples/John_Doe_ClassicTheme_CV.pdf) | [](https://github.com/rendercv/rendercv/blob/main/examples/John_Doe_EngineeringresumesTheme_CV.pdf) | [](https://github.com/rendercv/rendercv/blob/main/examples/John_Doe_Sb2novTheme_CV.pdf) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [](https://github.com/rendercv/rendercv/blob/main/examples/John_Doe_ModerncvTheme_CV.pdf) | [](https://github.com/rendercv/rendercv/blob/main/examples/John_Doe_EngineeringclassicTheme_CV.pdf) |  |
## JSON Schema
RenderCV's JSON Schema lets you fill out the YAML interactively, with autocompletion and inline documentation.

## Extensive Design Options
You have full control over every detail.
```yaml
design:
theme: classic
page:
size: us-letter
top_margin: 0.7in
bottom_margin: 0.7in
left_margin: 0.7in
right_margin: 0.7in
show_footer: true
show_top_note: true
colors:
body: rgb(0, 0, 0)
name: rgb(0, 79, 144)
headline: rgb(0, 79, 144)
connections: rgb(0, 79, 144)
section_titles: rgb(0, 79, 144)
links: rgb(0, 79, 144)
footer: rgb(128, 128, 128)
top_note: rgb(128, 128, 128)
typography:
line_spacing: 0.6em
alignment: justified
date_and_location_column_alignment: right
font_family: Source Sans 3
# ...and much more
```

> [!TIP]
> Want to set up a live preview environment like the one shown above? See [how to set up VS Code for RenderCV](user_guide/how_to/set_up_vs_code_for_rendercv.md).
## Strict Validation
No surprises. If something's wrong, you'll know exactly what and where. If it's valid, you get a perfect PDF.

## Any Language
Fill out the locale field for your language.
```yaml
locale:
language: english
last_updated: Last updated in
month: month
months: months
year: year
years: years
present: present
month_abbreviations:
- Jan
- Feb
- Mar
...
```
## Get Started
Install RenderCV (Requires Python 3.12+):
```
pip install "rendercv[full]"
```
Create a new CV yaml file:
```
rendercv new "John Doe"
```
Edit the YAML, then render:
```
rendercv render "John_Doe_CV.yaml"
```
For more details, see the [user guide](user_guide/index.md).