The smallest and fastest Base64 implementation in JavaScript based on atob
and btoa
from browser native or Buffer
from node
# pnpm
pnpm add ab64
# yarn
yarn add ab64
# npm
npm i ab64
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-') // 小飼弾
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
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
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
1stG | RxTS | UnTS |
---|---|---|
1stG | RxTS | UnTS |
---|---|---|
Detailed changes for each release are documented in CHANGELOG.md.