CV2LaTeX
Transform your CV into a professionally formatted LaTeX document in seconds. Perfect for international students, graduates, and professionals who want to stand out with a polished, ATS-friendly resume.
Why CV2LaTeX?
- No signup required - Just paste your CV and get LaTeX code instantly
- Free forever - No hidden costs or premium features
- Privacy-first - Your data never leaves your browser
- Works with Overleaf - Copy the output directly to Overleaf and compile
Live Demo
Try it now: https://tirth8205.github.io/CV2Latex/
Features
- Instant Conversion: Paste your CV and get LaTeX code immediately
- Multiple Templates: Choose from Professional, Modern, or Academic styles
- Section Reordering: Drag-and-drop to customize section order
- Live Preview: See a rendered preview with template-specific styling (fonts, colors) without needing Overleaf
- Markdown Support: Use
**bold**and[links](url)formatting - 100% Content Fidelity: All your original content is preserved exactly
- Syntax Highlighting: LaTeX output is highlighted for easy reading
- Copy & Download: One-click copy to clipboard or download as
.texfile - Dark Mode: Toggle between light, dark, and system themes
- Auto-Save: Your input is automatically saved to local storage
- File Upload: Upload
.txtor.mdfiles directly - Sample CV: Load a sample CV to see how it works
- Keyboard Shortcut: Press
Ctrl+Enter(orCmd+Enteron Mac) to convert - Parsing Feedback: Get helpful tips and warnings about your CV structure
Templates
| Template | Description |
|---|---|
| Professional | Clean, traditional design with serif font and underlined sections. Best for corporate roles. |
| Modern | Sans-serif Helvetica with blue section headers and gray dates. Great for tech and startups. |
| Academic | Palatino font with small caps headers and page numbers. Ideal for academic positions. |
Switch between templates to see visual differences in the live preview - no need to compile in Overleaf first.
Supported Sections
- Contact Information (name, email, phone, LinkedIn, GitHub, website)
- Professional Summary
- Technical Skills
- Professional Experience
- Industry Projects
- Education
- Achievements/Awards
- Certifications
- Publications
- Languages
- Interests
Quick Start
Prerequisites
- Node.js 18+
- npm or yarn
Installation
# Clone the repository
git clone https://github.com/tirth8205/CV2Latex.git
# Navigate to the project
cd CV2Latex
# Install dependencies
npm install
# Start the development server
npm run devOpen http://localhost:5173 in your browser.
Build for Production
npm run buildThe built files will be in the dist/ directory.
Run Tests
# Run tests
npm test
# Run tests with coverage
npm run test:coverageUsage
- Paste your CV in the left panel (plain text or Markdown format)
- Or click "Sample" to load an example CV
- Or click "Upload" to load a
.txtor.mdfile
- Select a template from the dropdown (Professional, Modern, or Academic)
- Click "Convert to LaTeX" button (or press
Ctrl+Enter) - Reorder sections (optional) - click the Reorder button to drag-and-drop sections
- Preview - switch to the Preview tab to see a rendered version
- Copy or Download the generated LaTeX code
- Compile the
.texfile using pdflatex or any LaTeX editor (Overleaf, TeXShop, etc.)
Input Format Example
# Your Name
London, UK | your.email@example.com | linkedin.com/in/yourprofile | github.com/yourprofile
## Professional Summary
Software engineer with 3+ years of experience building scalable web applications.
## Technical Skills
**Languages**: Python, JavaScript, TypeScript
**Frameworks**: React, Node.js, Django, FastAPI
**Cloud**: AWS, Azure, Docker, Kubernetes
## Professional Experience
**Software Engineer** | Company Name | London | Sept 2022 - Present
- Built RESTful APIs handling **2M+ requests/day** with 99.9% uptime
- **Reduced latency by 40%** through optimization initiatives
- Mentored 2 junior developers through code reviews
## Education
**MSc Computer Science** | University Name | Sept 2021 - Sept 2022
Grade: Distinction
## Certifications
**AWS Certified Cloud Practitioner** (2024)Bold Text in Output
To get bold text in your LaTeX output, use **double asterisks** in your input:
- I **designed and built** a system that **improved performance by 50%**
Becomes:
\resumeItem{I \textbf{designed and built} a system that \textbf{improved performance by 50\%}}Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Enter / Cmd+Enter |
Convert CV to LaTeX |
Tech Stack
- React 18 - UI framework
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- Prism.js - Syntax highlighting
- @dnd-kit - Drag-and-drop functionality
- Vitest - Unit testing
LaTeX Templates
The app includes three professionally designed templates:
Professional (Default)
- Computer Modern font at 11pt
- 0.5in margins
- Rule underlines for section headers
- Classic, ATS-friendly design
Modern
- Helvetica font at 10pt
- 0.6in margins
- Colored section headers
- Contemporary look for tech roles
Academic
- Palatino font at 12pt
- 1in margins
- Small caps section headers
- Traditional academic styling
Project Structure
cv2latex/
├── src/
│ ├── components/ # React components
│ │ ├── InputPanel.tsx
│ │ ├── OutputPanel.tsx
│ │ ├── PreviewPanel.tsx
│ │ ├── TemplateSelector.tsx
│ │ └── SectionOrderModal.tsx
│ ├── hooks/ # Custom React hooks
│ │ ├── useLocalStorage.ts
│ │ ├── useTheme.ts
│ │ └── useLatexPreview.ts
│ ├── utils/ # Core logic
│ │ ├── parser.ts # CV parsing
│ │ ├── parser.test.ts # Parser unit tests (65 tests)
│ │ ├── latexGenerator.ts
│ │ ├── escapeLatex.ts # LaTeX special character handling
│ │ └── escapeLatex.test.ts # Escape tests (40 tests)
│ ├── templates/ # LaTeX templates
│ │ ├── index.ts
│ │ ├── professional.ts
│ │ ├── modern.ts
│ │ └── academic.ts
│ ├── data/
│ │ └── sampleCV.ts # Sample CV content
│ ├── types/
│ │ └── cv.ts # TypeScript interfaces
│ ├── App.tsx
│ └── main.tsx
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions deployment
├── vitest.config.ts # Test configuration
├── index.html
├── package.json
├── vite.config.ts
├── tailwind.config.js
└── tsconfig.json
Deployment
This project is automatically deployed to GitHub Pages using GitHub Actions. Every push to the main branch triggers a new deployment.
To deploy your own fork:
- Fork this repository
- Go to repository Settings > Pages
- Under "Build and deployment", select "GitHub Actions"
- Push any change to trigger deployment
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Connect
Built by Tirth Kanani. Connect with me on LinkedIn.