Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including js-base64 with all npm packages installed. Try it out:

var jsBase64 = require("js-base64")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

js-base64 v2.4.6

Yet another Base64 transcoder in pure-JS

build status


Yet another Base64 transcoder


$ npm install --save js-base64

If you are using it on ES6 transpilers, you may also need:

$ npm install --save babel-preset-es2015

Note js-base64 itself is stand-alone so its package.json has no dependencies.  However, it is also tested on ES6 environment so "babel-preset-es2015": "^6.24.1" is on devDependencies.


In Browser

<script src="base64.js"></script>


var Base64 = require('js-base64').Base64;


import { Base64 } from 'js-base64';


Base64.encode('dankogai');  // ZGFua29nYWk=
Base64.encode('小飼弾');    // 5bCP6aO85by+
Base64.encodeURI('小飼弾'); // 5bCP6aO85by-

Base64.decode('ZGFua29nYWk=');  // dankogai
Base64.decode('5bCP6aO85by+');  // 小飼弾
// note .decodeURI() is unnecessary since it accepts both flavors
Base64.decode('5bCP6aO85by-');  // 小飼弾

String Extension for ES5

if (Base64.extendString) {
    // you have to explicitly extend String.prototype
    // once extended, you can do the following
    'dankogai'.toBase64();       // ZGFua29nYWk=
    '小飼弾'.toBase64();         // 5bCP6aO85by+
    '小飼弾'.toBase64(true);     // 5bCP6aO85by-
    '小飼弾'.toBase64URI();      // 5bCP6aO85by-
    'ZGFua29nYWk='.fromBase64(); // dankogai
    '5bCP6aO85by+'.fromBase64(); // 小飼弾
    '5bCP6aO85by-'.fromBase64(); // 小飼弾


TypeScript 2.0 type definition was added to the DefinitelyTyped repository.

$ npm install --save @types/js-base64

.decode() vs .atob (and .encode() vs btoa())

Suppose you have:

var pngBase64 = 

Which is a Base64-encoded 1x1 transparent PNG, DO NOT USE Base64.decode(pngBase64).  Use Base64.atob(pngBase64) instead.  Base64.decode() decodes to UTF-8 string while Base64.atob() decodes to bytes, which is compatible to browser built-in atob() (Which is absent in node.js).  The same rule applies to the opposite direction.




RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free