Have ideas to improve npm?Join in the discussion! »


1.0.0 • Public • Published

NodeJS Character Encodings

List of character encodings supported by NodeJS.

Table of Contents

  1. Why?
  2. Installation
  3. Examples


TL;DR: iconv-lite is significantly slower when decoding natively supported character encodings in NodeJS. Hence, a map of encodings for which iconv-lite (and other similar modules) can be bypassed is useful.

Whilst building utilities to help in various web scraping projects, I was using the excellent request module to retrieve HTML.

One source page was encoded using ISO-8859-1 (latin1), which was unsupported by request, resulting in the dreaded � character when I tried to decode using utf-8.

So after some googling, I discovered the comprehensive & speedy iconv-lite module, which would enable me to decode a whole host more types of character encodings.

However, I discovered that for natively supported encodings, iconv-lite took substantially more time.

// utf-8
native: 1.372ms
iconv: 12.375ms

// latin1
native: 0.059ms
iconv: 14.090ms

When I discovered that there was no official list of natively supported encodings, it seemed reasonable to publish a module to provide that information, albeit a simple one.

N.b. In so doing, I also discovered that while request doesn't support latin1, Node has supported it natively since 6.4.0.


npm install --save encodings


var encodings = require('encodings');

console.log(encodings.utf8); // => true
console.log(encodings['phoenix']); // => undefined

// Prior to 6.4.0
console.log(encodings.latin1); // => undefined

// 6.4.0 onwards
console.log(encodings.latin1); // => true


npm i encodings

DownloadsWeekly Downloads






Last publish


  • avatar