@ctrl/ts-base32
v4.2.2
Published
Base32 encoder/decoder with support for multiple variants
Downloads
26,603
Maintainers
Readme
ts-base32

Base32 encode and decode in typescript exported as both commonjs and tree shakeable modules. Support for RFC4648, RFC4648_HEX, and CROCKFORD base32 encoding. Mostly directly taken from LinusU's packages.
Demo: https://ts-base32.ep.workers.dev
Install
npm install @ctrl/ts-base32Use
import { base32Encode, base32Decode } from '@ctrl/ts-base32';
import { stringToUint8Array, uint8ArrayToString } from 'uint8array-extras';
console.log(base32Encode(stringToUint8Array('a')));
// 'ME======'
console.log(base32Encode(stringToUint8Array('a'), { padding: false }));
// 'ME'
console.log(base32Decode('ME======'));
// Uint8Array
console.log(uint8ArrayToString(base32Decode('ME======'))
// 'a'Benchmarks
64KB payload, Node.js, ops/s (higher is better):
@exodus/bytes uses nodejs Buffer, but is very fast.
| Benchmark | @ctrl/ts-base32 | @exodus/bytes | base32-encode/decode | @scure/base | | ---------------- | --------------- | ------------- | -------------------- | ----------- | | encode RFC4648 | 8,500 | 31,200 | 2,600 | 283 | | encode Crockford | 8,500 | — | — | 332 | | decode RFC4648 | 6,500 | 9,900 | 755 | 333 | | decode Crockford | 6,700 | — | — | 387 |
Run pnpm bench to reproduce.
See Also
base32-encode - https://github.com/LinusU/base32-encode
base32-decode - https://github.com/LinusU/base32-decode
uint8array-extras - https://github.com/sindresorhus/uint8array-extras
