---
title: Useful Tools and Libraries for JavaScript Projects
date: '2025-05-06T20:19:55.341Z'
---

Tools and libraries I would use in my JavaScript projects. This is kind of my personal "Awesome" list.

## Markdown and HTML

### 1. Turndown

[NPM](https://www.npmjs.com/package/turndown "Turndown")<span style="padding: 0px 10px;">•</span>[GitHub](https://github.com/mixmark-io/turndown "Turndown GitHub")

HTML to Markdown converter.

- **Environment**: Works in Node.js, Edge runtime, and browser.
- **Lightweight**: Turndown is just `4.33 kB` minified and gzipped.
- **Customizable**: It has support for custom rules and plugins that allows to extend its functionality.

Installation:

```bash
npm install turndown
```

Basic usage:

```javascript
// For Node.js
var TurndownService = require('turndown')

var turndownService = new TurndownService()
var markdown = turndownService.turndown('<h1>Hello world!</h1>')
//=> # Hello world!
```

---

### 2. Markdown-it

[NPM](https://www.npmjs.com/package/markdown-it "Markdown-it") <span style="padding: 0px 10px;">•</span> [GitHub](https://github.com/markdown-it/markdown-it "Markdown-it GitHub")

Markdown to HTML converter. Supports CommonMark and GitHub-Flavored Markdown.

Installation:

```bash
npm install markdown-it
```

Basic usage:

```javascript
import markdownit from 'markdown-it'
const md = markdownit()
const result = md.render('# Hello world!');
console.log(result)
//=> <h1>Hello world!</h1>
```

---

### 3. Cheerio
[NPM](https://www.npmjs.com/package/cheerio "Cheerio")<span style="padding: 0px 10px;">•</span>[GitHub](https://github.com/cheeriojs/cheerio "Cheerio GitHub")

The fast, flexible, and elegant library for parsing and manipulating HTML and XML. It can be large for some projects, but it is invaluable for web scraping and DOM manipulation in Node.js.

Installation:

```bash
npm install cheerio
```

Basic usage:

```javascript
import * as cheerio from 'cheerio';
const $ = cheerio.load('<h2 class="title">Hello world</h2>');

$('h2.title').text('Hello there!');
$('h2').addClass('welcome');

$.html();
//=> <html><head></head><body><h2 class="title welcome">Hello there!</h2></body></html>
```

---

### 4. DOMPurify
[NPM](https://www.npmjs.com/package/dompurify "DOMPurify")<span style="padding: 0px 10px;">•</span>[GitHub](https://github.com/cure53/DOMPurify "DOMPurify GitHub")

DOMPurify is a fast, tolerant XSS sanitizer for HTML, MathML, and SVG. It is a great library to sanitize user input before rendering it in the DOM.


> I am still building th