Node.js Base64 decode example

You can decode any Base64 encoded data using the built-in Buffer API provided by Node.js.

Buffer objects are similar to arrays of integers from 0 to 255. Moreover, Buffer objects are immutable. The size of the Buffer is established when it is created and cannot be modified.

The Buffer class implements the Uint8Array API and provides implementations for several encodings and decodings. It is in the global scope in Node.js. Therefore, you don’t need to require it before using in your programs.

Decoding Base64 strings in Node.js

The following program shows how to decode a base64 encoded string in Node.js

'use strict';

let data = 'SGVsbG8g8J+Yig==';

let buff = Buffer.from(data, 'base64');  
let text = buff.toString('utf-8');

console.log(text);  
$ node base64_decode.js
Hello 😊

Decoding Base64 encoded data to binary data in Node.js

We mostly use Base64 encoding to encode binary data. The following example shows how to decode a Base64 encoded data back to binary data.

'use strict';

const fs = require('fs');

let encodedData = 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAPZQTFRFAAAAAAAAAAAAAAAACQkJPj4+ZGRkVVVVGRkZExMTS0tLZWVlRERECgoKAwMDXl5elpaWg4ODwMDAuLi4EhISGxsbkZGRn5+fgoKCv7+/AgICiIiIKysrVlZW5eXlKSkpBwcHTU1NdXV1PT094eHhPDw8Li4ux8fHenp6w8PDpqamiYmJHx8f3t7eWlpaYmJivLy8JSUldHR00tLSJycnDg4OxMTEUlJSNzc35ubmR0dHpaWlQ0ND8PDw3d3dOjo6FhYWycnJJCQku7u7xsbGfHx8vr6+IyMjcnJy7e3tyMjIy8vLPz8/SEhIZ2dnSkpKFxcX////1LfGzAAAAAN0Uk5Tnvn4e+Nx/gAAAAFiS0dEUZRpfCoAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACZSURBVBjTY2BgZEYCjAwMTMwogImBGQ1gE2BhZWPnYGbm5OLm4QUJ8PELCAoJi4iKiUtIirEABaREpWVk5eQVFJWYlVVUQVrU1DU0tViYtSWYdXT1QAL6BoZGxiamZubMFpZWQAFeAWtmG1s9bjt7B2tHB6CAk7OLq5Cbu4enl7eLD9haB18/oLW8Pv48ATgchiaA4Tl07wMA5bAQkcvvlhsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDEtMjBUMDY6NTY6NDcrMDA6MDBKjT48AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTAxLTIwVDA2OjU2OjQ3KzAwOjAwO9CGgAAAAEZ0RVh0c29mdHdhcmUASW1hZ2VNYWdpY2sgNi43LjgtOSAyMDE0LTA1LTEyIFExNiBodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZ9yG7QAAAAAYdEVYdFRodW1iOjpEb2N1bWVudDo6UGFnZXMAMaf/uy8AAAAYdEVYdFRodW1iOjpJbWFnZTo6aGVpZ2h0ADE5Mg8AcoUAAAAXdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgAMTky06whCAAAABl0RVh0VGh1bWI6Ok1pbWV0eXBlAGltYWdlL3BuZz+yVk4AAAAXdEVYdFRodW1iOjpNVGltZQAxNTQ3OTY3NDA31prSfAAAAA90RVh0VGh1bWI6OlNpemUAMEJClKI+7AAAAFZ0RVh0VGh1bWI6OlVSSQBmaWxlOi8vL21udGxvZy9mYXZpY29ucy8yMDE5LTAxLTIwL2FiNTYzZDE0NTc0M2FjZTQ2ZGQ3NjY5MzE1OTk1ZTdlLmljby5wbmeQ70QpAAAAAElFTkSuQmCC'

let buff = Buffer.from(encodedData, 'base64'); 

fs.writeFile('my-file.png', buff, (err) => {
  if (err) throw err;
  console.log('The binary data has been decoded and saved to my-file.png');
});
$ node base64_decode_file.js
The binary data has been decoded and saved to my-file.png

Also Read: Base64 Encoding in Node.js

References