Skip to content
/ ab64 Public
generated from un-ts/lib-boilerplate

The smallest and fastest Base64 implementation in JavaScript based on `atob` and `btoa` from browser native or `Buffer` from node

License

Notifications You must be signed in to change notification settings

un-ts/ab64

Folders and files

NameName
Last commit message
Last commit date
Mar 28, 2025
Mar 27, 2025
Mar 28, 2025
Mar 28, 2025
Mar 27, 2025
Mar 28, 2025
Mar 27, 2025
Jul 30, 2022
Jul 30, 2022
Jul 30, 2022
Jul 31, 2022
Mar 27, 2025
Mar 27, 2025
Jul 30, 2022
Mar 27, 2025
Jul 30, 2022
Sep 27, 2022
Mar 27, 2025
Mar 27, 2025
Mar 27, 2025
Jul 30, 2022
Mar 28, 2025
Jul 30, 2022
Mar 27, 2025
Mar 27, 2025
Mar 27, 2025
Mar 27, 2025
Mar 27, 2025
Apr 1, 2025
Apr 4, 2025
Jul 31, 2022
Mar 28, 2025
Mar 27, 2025
Mar 27, 2025

Repository files navigation

ab64

GitHub Actions Workflow Status Codecov type-coverage CodeRabbit Pull Request Reviews npm GitHub Release

Conventional Commits Renovate enabled JavaScript Style Guide Code Style: Prettier changesets

The smallest and fastest Base64 implementation in JavaScript based on atob and btoa from browser native or Buffer from node

TOC

Usage

Install

# pnpm
pnpm add ab64

# yarn
yarn add ab64

# npm
npm i ab64

API

Basic

import { decode, decodeUrl, encode, encodeUrl } from 'ab64'

encode('Hello World!') // SGVsbG8gV29ybGQh

encode('dankogai') // ZGFua29nYWk=
encodeUrl('dankogai') // ZGFua29nYWk

encode('小飼弾') // 5bCP6aO85by+
encodeUrl('小飼弾') // 5bCP6aO85by-

decode('SGVsbG8gV29ybGQh') // Hello World!

decode('ZGFua29nYWk=') // dankogai
decodeUrl('ZGFua29nYWk') // dankogai

decode('5bCP6aO85by+') // 小飼弾
decodeUrl('5bCP6aO85by-') // 小飼弾

Polyfill

If you're running on a non Node environment where atob and btoa could be unavailable, you may want to include the polyfill manually

import 'ab64/polyfill'

// same as above then

Ponyfill

atob and btoa are also available exported as ab64/ponyfill which does not polyfill by default

import { atob, btoa } from 'ab64/ponyfill'

// same as browser native

MiniApp (WeChat)

Since mini app (from wechat) does not support global polyfill, so you have to use the separate mini-app entry instead which uses the above ponyfill inside

import { decode, decodeUrl, encode, encodeUrl } from 'ab64/mini-app'

Or you should add an alias mapping ab64 to ab64/mini-app in your rollup/vite/webpack configuration

Sponsors

Sponsors

1stG RxTS UnTS
1stG Open Collective sponsors RxTS Open Collective sponsors UnTS Open Collective sponsors

Backers

1stG RxTS UnTS
1stG Open Collective backers RxTS Open Collective backers UnTS Open Collective backers

Changelog

Detailed changes for each release are documented in CHANGELOG.md.

License

MIT © JounQin@1stG.me