How to Encode and Decode String with Base64 in Javascript
In this tutorial, you will learn how to encode and decode string with base64 in javascript. The Base64 encoding converts binary data into an ASCII string format so that it could be easily transmitted over the network via email and HTML form data.
The base64 encoding consists of 64 basic ASCII characters and that includes letters, numbers, and special characters such as “+”, “\”, and “=”.
It is very common in web applications to encode binary data into base64 and use that as data URI. Such implementation is commonly done in the case of images to save bandwidth and reduce the load on the backend server.
Encoding and decoding string with base64 is super simple in javascript. There are 2 built-in methods to accomplish this. The btoa()
method is used to encode binary data into an ASCII string.
The btoa
stands for binary data to ASCII. The atob()
method is used to decode base64 encode string and convert it into its binary data representation. The atob
stands for ASCII to binary data.
Base64 encoding system is not limited to strings. You can also use it with various file types. You must have heard about data URI. It is nothing more than a base64 representation of a file. You can use online base64 to image converter tool to convert any base64 encoded image into its actual format.
In the following example, we have 2 buttons and one textarea. We will enter some random text in the textarea.
Upon click of a encode button, we will convert that text into a base64 encoded string and upon click of the decode button, we will convert that base64 encode string into a normal string. Please have a look over the code example and the steps given below.
HTML & CSS
- We have 3 elements in the HTML file (
div
,textarea
, andbutton
). Thediv
element is just a wrapper for thebutton
elements. - The first
button
element has“Encode”
and the secondbutton
element has“Decode”
asinnerText
. - We have done some basic styling by using
style
attribute of thediv
element. - We have also included our javascript file
script.js
with ascript
tag at the bottom.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div style="margin-bottom: 20px;"> <button id="encode">Encode</button> <button id="decode">Decode</button> </div> <textarea name="" id="" cols="30" rows="10"></textarea> <script src="script.js"></script> </body> </html>
Javascript
- We have selected both
button
elements andtextarea
element usingdocument.querySelector()
method and stored them in theencode
,decode
, andoutput
variables respectively. - We have attached a
click
event listener to both thebutton
elements. - In the event handler function of the
encode
button, we are accessing text entered in thetextarea
usingvalue
property and passing it to thebtoa()
method as a parameter. This method will convert that text into a base64 encoded string. We are replacing text present in thetextarea
with this base64 encoded string. - In the event handler function of the
decode
button, we are accessing base64 encoded string in thetextarea
usingvalue
property and passing it to theatob()
method as a parameter. This method will convert that base64 encoded string into a normal string. We are replacing the base64 encoded string present in thetextarea
with this normal string.
let encode = document.querySelector('#encode'); let decode = document.querySelector('#decode'); let output = document.querySelector('textarea'); encode.addEventListener('click', () =>{ output.value = btoa(output.value) ; }); decode.addEventListener('click', () =>{ output.value = atob(output.value) ; });