How to Encode/Decode Data Using Base64 and Why

Base64

Base64 is a popular binary to ASCII encoding scheme designed to reliably transfer binary data across channels that have limited support for various content types. This article goes over the basics of Base64 encoding, how it works and details different command line and graphical ways to encode your own data using Base64.

Also read: How to Find Large Files in Linux

What Is Base64 Encoding

Base64 is an encoding technique, which converts binary data, such as images and video, into ASCII format (an encoding scheme for representing text data in a computer systems.). Since binary data consists of strings of 0s and 1s, Base64 encoding works by converting these characters into a definite set of ASCII. The result can be easily decoded by mapping the ASCII characters into the binary value.

Below you can find a list of standard ASCII characters used in Base64 encoding.

  • Number characters: 0-9.
  • Uppercase alphabet characters: A-Z.
  • Lowercase alphabet characters: a-z.
  • Two special characters: “/.” and “+”.
Base4 Table
Image source: Wikipedia

Also read: How to Copy and Paste Text, Files and Folders in Linux Terminal

Why Is Base64 Encoding Used

When performing a file transfer online, binary data from the file is chopped into chunks which are called packets. These are then sent to the receiver using different protocols.

Base64 Dev
Image source: Figma

Here is where the problem arises. If the receiver is unable to decode the binary file format from the sender, it can lead to data loss or corruption. Therefore, it’s considered good practice to first covert the file using Base64 encoding before sending it to the user. Base64 will encode the characters into ASCII format, which the majority of machines can read. And given the wide adoption of Base64 encoding, you can basically employ Base64 encoding on any machine.

Also read: How to Use the dd Command in Linux

What Is Base64 Encoding Used For

Base64 is widely used to encode text, images, musics, videos etc that you want to transmit across the web. One of the established use cases for Base64 is email attachments. Files attached to an email are encoded using Base64 behind the scenes before they are sent off along with the email to their destination.

Base64 Usage
Image source: Figma

With Base64, encoded images can directly be added to HTML documents or in CSS files. This technique can help reduce the number of requests from clients and make your website more performant. You’ll need make sure to compress the image before encoding, though. Otherwise it will result into very big file sizes and slow down the website (alternatively, you can use webp file format to compress the image).

If you are transferring a big BLOB (Binary Large Object File) across the internet, it’s actually mandatory to encode the data using Base64. Otherwise if some network packets happen to get lost during the transfer, the data inside the file may become corrupted and your file will be no longer usable.

Another very popular but rather niche use for Base64 encoding is setting a custom iPhone charging sound. The new charging sound can be Base 64-encoded to ASCII using the Shortcuts app on Apple’s mobile devices.

Also read: How to Use Rm Command in Linux

How to Encode Data with Base64 in Javascript

To encode and decode data with Base64, you can take advantage of the two helper functions atob() and btoa() in Javascript. The name of these functions represents their utility. atob() function translates into ASCII to binary and btoa() means binary to ASCII.

  1. Open the Developer console in your browser of choice. In most browsers this can be done using the Ctrl + Shift + I shortcut.
  2. Click on the “Console” tab. Here we can begin to write our Javascript.
Encode Data Base64 Browser Console View
  1. For this example we’ll define a variable named word which contains the string “Hello”.
let word="Hello";
  1. Use the btoa() function to convert this string into Base64 ASCII string.
let encodedString=btoa(word)
  1. Print encodedString to the console to see what the Base64 representation for “Hello” looks like.
console.log(encodedString)

output: SGVsbG8=
Base64 Js

Also read: 10 Useful Python One-Liners You Must Know

How to Encode Data with Base64 in Python

In Python, you can use the built-in Base64 Python standard package.

  1. Import the library inside your Python file by using this command:
import base64
  1. Then use the base64.b64encode() function to encode a string into Base64 encoded ASCII characters. We’re using “Hello’” for this example.
encoded = base64.b64encode(b'Hello')
  1. Now print out the result to see how “Hello” looks like in Base64 format.
print(encoded)
Base64 Python

Also read: How to Run a Python Script on Mac

How to Encode & Decode with Base64 in Linux

Every Linux distribution comes with a Base64 encoding and decoding utility. If you are on Windows, you can use the Windows subsystem for Linux (WSL) to run the the terminal commands examined below.

With Command Line

  1. To convert a string into Base64 encoding, at first echo the value and pipe the output into Base64 command.
echo "MTE" | base64
Base64 3
  1. To decode a Base64 encoded string, use --decode or the -d flag of the Base64 utility.
echo "TVRFCg==" | base64 --decode
Base64 4
  1. To convert an image using Base64 encoding, append the path of the image after base64 command.
base64 linux.jpg
  1. You can also save the output Base64 encoded ASCII strings into a file using the following command.
base64 linux.jpg > test.txt
  1. In the above command, we are saving the output of the “linux.jpg” image into the “text.txt” file. Now you can transfer this text files anywhere you want without issue.
Base64 5
  1. To decode the image from the file, use the -d flag after the Base64 command.
base64 -d test.txt > test.jpg

Using Online Base64 Converters

There are many online Base64 converters out there, but rapidtable’s Base64 converter stands out. This online tool provides a handy way to encode and decode Base64 texts and images.

To encode a text string, simply paste your string in the text area and hit the the encode button. This tool can also support text files as an input.

Base64 2

In the character encoding section, you also have additional options such as ASCII, UTF8, UTF16 etc.

Other online easy-to-use Base64 converters include:

Also read: How to Create an SSH Honeypot to Catch Hackers in Your Linux Server

Frequently Asked Questions

Why do Base64 encoded files have a larger file size then normal binary files?

Base64 encoding uses a 6-bit system, while normal binary files use a 8-bit system. 8-bit is called a byte. As Base64 encoding outputs ASCII characters which are in 8-bit and since Base64 uses a 6-bit system, 2-bits remain unoccupied for every byte of data. If you do the calculation, the Base64 encoded file is 33% larger than the original file.

Does Base64 encoding translates into encryption as well?

No. Encoding and encryption are two different things. Encoding means conversion of one format to another, while encryption means concealing information so that no one can access it without a password. Encrypted files usually have a password to decrypt the information, while encoded files can be decoded easily using the proper algorithm.

How to check if a string is Base64 encoded or not?

If the string is a combination of what appears to be a jumble of characters, then it may be Base64 encoded. To make sure, see the characters used in the string. If the characters are in the range of A-Z, a-z, 0-9, and “+”, “/.”, then this is a Base64 encoded string. To decode its value, use any of the techniques mentioned above.

Image credit: Markus Spiske via Unsplash All screenshots by Hrishikesh Pathak

Subscribe to our newsletter!

Our latest tutorials delivered straight to your inbox

Hrishikesh Pathak Avatar

Read next

When Sony shipped the first Walkman in 1979, chairman Akio Morita insisted on a second headphone jack and a “hotline” talk button, convinced it would be rude for one person to listen to music alone — and within a few years buyers had ignored the sociable features so completely that Sony quietly dropped them
Russia still custom-builds the Soyuz return seats for ISS crew members using plaster casts taken weeks before launch, because astronauts grow as much as five centimetres taller during a long-duration stay and a seat moulded to their Earth-shaped spine would no longer fit the body that comes home
The “CrackBerry” nickname stuck for a reason — and the variable-reward psychology that hooked early-2000s executives on their BlackBerrys is the exact same machinery now running every push notification on every smartphone in your pocket
In 1843, Ada Lovelace described a brass-and-punched-card engine that could act on symbols as well as numbers, even composing music if harmony could be reduced to rules, inside seven translator’s notes three times longer than the paper itself
ARPANET sent its first message on 29 October 1969 from a lab at UCLA to a machine at Stanford, and the message was supposed to read ‘LOGIN’ — but the system crashed after the L and the O, meaning the first word ever transmitted over the network that became the internet was, by accident, ‘LO’.
In 1995, Microsoft shipped a cartoon-house interface called Bob, led by Melinda French, who married Bill Gates while it was in development — it demanded twice the memory of a typical home PC, sold roughly 30,000 copies, and was dead within a year, leaving behind the font Comic Sans and the animated assistant that became Clippy.
The Greenland shark grows about one centimetre a year, does not reach sexual maturity until around age 150, and a specimen carbon-dated by Danish researchers in 2016 was estimated to be at least 272 years old, meaning it was already swimming the North Atlantic when Mozart was composing symphonies.
When Apple shipped iOS 12 in June 2018, a small feature called Screen Time slipped onto every iPhone with a counter nobody had quite prepared for — a tally of pickups — and within a day Tim Cook was telling CNN the number of times he picked up his own phone was simply too many