Base64 Encoding in Node.js: A Comprehensive Guide with Code Examples Base64 Encoding in Node.js: A Comprehensive Guide with Code Examples

Base64 encoding is a widely used technique for converting binary data into a string representation. It is commonly used for transmitting binary data over protocols that only support text data, such as email or HTTP. Node.js provides built-in support for Base64 encoding and decoding, making it straightforward to work with this encoding scheme in your applications. In this article, we will explore different methods to perform Base64 encoding in Node.js and provide code examples for each approach.


Method 1: Using the built-in Buffer class

Node.js provides the `Buffer` class, which can be used for handling binary data. It includes a method called `toString()`, which accepts an optional encoding parameter. By passing `'base64'` as the encoding, we can easily perform Base64 encoding. Let's look at an example:


const data = 'Hello, World!';
const encodedData = Buffer.from(data).toString('base64');
console.log(encodedData);
// Output: SGVsbG8sIFdvcmxkIQ==

In the above code, we first create a `Buffer` instance from the string `data`. Then we call the `toString()` method on the buffer, passing `'base64'` as the encoding. The resulting encoded data is stored in the `encodedData` variable and printed to the console.

Method 2: Using the built-in `btoa()` and `atob()` functions

Node.js also provides the `btoa()` and `atob()` functions, similar to those found in browsers. The `btoa()` function is used for Base64 encoding, while `atob()` is used for Base64 decoding. However, these functions are not available in the global scope by default in Node.js. To use them, you need to access them through the `Buffer` object. Here's an example:


const data = 'Hello, World!';
const encodedData = Buffer.from(data).toString('base64');
console.log(encodedData);
// Output: SGVsbG8sIFdvcmxkIQ==

In this code snippet, we create a `Buffer` instance from the string `data` and use the `toString()` method to encode it in Base64 format. The result is the same as in the previous example.

Method 3: Using the `base64-js` package

If you need more control or additional functionalities, you can use third-party packages available on npm. One such package is `base64-js`, which provides a comprehensive set of Base64 encoding and decoding functions. You can install it using npm or yarn:

bash

npm install base64-js

Once installed, you can use it in your Node.js application as follows:


const base64 = require('base64-js');
const data = 'Hello, World!';
const encodedData = base64.fromByteArray(Buffer.from(data));
console.log(encodedData);
// Output: SGVsbG8sIFdvcmxkIQ==

In this example, we import the `base64-js` package and use the `fromByteArray()` function to perform Base64 encoding. The `Buffer.from(data)` method converts the string `data` into a buffer, which is then passed to `fromByteArray()`.

Base64 encoding is a crucial technique for converting binary data into a text representation, especially when working with protocols or systems that require text-based data. In this article, we explored three methods to perform Base64 encoding in Node.js, including using the built-in `Buffer` class, the `btoa()` and `atob()` functions, and the `base64-js` package. These methods offer flexibility and convenience depending on your specific requirements. Now you have the necessary knowledge and code examples to integrate Base64 encoding seamlessly into your Node.js applications.

Published on May 19, 2023

Tags: Node js Tutorial | base64 | encode

Related Posts

Did you enjoy this article? If you did here are some more articles that I thought you will enjoy as they are very similar to the article that you just finished reading.

Tutorials

Learn how to code in HTML, CSS, JavaScript, Python, Ruby, PHP, Java, C#, SQL, and more.

No matter the programming language you're looking to learn, I've hopefully compiled an incredible set of tutorials for you to learn; whether you are beginner or an expert, there is something for everyone to learn. Each topic I go in-depth and provide many examples throughout. I can't wait for you to dig in and improve your skillset with any of the tutorials below.