Base64 encoding and decoding in client-side Javascript [duplicate] Base64 encoding and decoding in client-side Javascript [duplicate] javascript javascript

Base64 encoding and decoding in client-side Javascript [duplicate]


Some browsers such as Firefox, Chrome, Safari, Opera and IE10+ can handle Base64 natively. Take a look at this Stackoverflow question. It's using btoa() and atob() functions.

For server-side JavaScript (Node), you can use Buffers to decode.

If you are going for a cross-browser solution, there are existing libraries like CryptoJS or code like:

http://ntt.cc/2008/01/19/base64-encoder-decoder-with-javascript.html

With the latter, you need to thoroughly test the function for cross browser compatibility. And error has already been reported.


Internet Explorer 10+

// Define the stringvar string = 'Hello World!';// Encode the Stringvar encodedString = btoa(string);console.log(encodedString); // Outputs: "SGVsbG8gV29ybGQh"// Decode the Stringvar decodedString = atob(encodedString);console.log(decodedString); // Outputs: "Hello World!"

Cross-Browser

Re-written and modularized UTF-8 and Base64 Javascript Encoding and Decoding Libraries / Modules for AMD, CommonJS, Nodejs and Browsers. Cross-browser compatible.


with Node.js

Here is how you encode normal text to base64 in Node.js:

//Buffer() requires a number, array or string as the first parameter, and an optional encoding type as the second parameter. // Default is utf8, possible encoding types are ascii, utf8, ucs2, base64, binary, and hexvar b = new Buffer('JavaScript');// If we don't use toString(), JavaScript assumes we want to convert the object to utf8.// We can make it convert to other formats by passing the encoding type to toString().var s = b.toString('base64');

And here is how you decode base64 encoded strings:

var b = new Buffer('SmF2YVNjcmlwdA==', 'base64')var s = b.toString();

with Dojo.js

To encode an array of bytes using dojox.encoding.base64:

var str = dojox.encoding.base64.encode(myByteArray);

To decode a base64-encoded string:

var bytes = dojox.encoding.base64.decode(str)

bower install angular-base64

<script src="bower_components/angular-base64/angular-base64.js"></script>angular    .module('myApp', ['base64'])    .controller('myController', [    '$base64', '$scope',     function($base64, $scope) {            $scope.encoded = $base64.encode('a string');        $scope.decoded = $base64.decode('YSBzdHJpbmc=');}]);

But How?

If you would like to learn more about how base64 is encoded in general, and in JavaScript in-particular, I would recommend this article: Computer science in JavaScript: Base64 encoding


In Gecko/WebKit-based browsers (Firefox, Chrome and Safari) and Opera, you can use btoa() and atob().

Original answer: How can you encode a string to Base64 in JavaScript?