Base64 Encoding and Decoding Examples in Java using Google Guava
Base64 Encoding and Decoding Examples in Java using Google Guava
In this tutorial we will discuss how to Encode and Decode using Base64 using Google’s Guava Project Open Source library. In our other tutorials, we discuss how to perform “Base64 Encoding and Decoding Examples in Java using Apache Commons”. If you are using Java 8, you may be aware that it now natively supports Base64 encoding and decoding. Please review our Java 8 tutorial called “Base64 Encoding and Decoding Examples in Java 8”.
What’s Covered
- Getting Started
- Required Libraries
- What is Base64 Encoding
- Base64 Alphabet Characters Used for Encoding
- Base64 Encoding/Decoding using Google Guava Library
- Base64 Encoding/Decoding Google Guava Output
Getting Started
In order to run this tutorial yourself, you will need the following:
- Java JDK 1.6 or greater
- Favorite IDE Spring Tool Suite (STS), Eclipse IDE or NetBeans (I happen to be using STS because it comes with a Tomcat server built-in)
- Tomcat 7 or greater or other popular container (Weblogic, Websphere, Glassfish, JBoss, VMWare vFabric, etc). For this tutorial I am using VMware vFabric tc Server Developer Edition which is essentially an enhanced Tomcat instance integrated with Spring STS
- Google Guava – 18.0 Guava is a suite of core and expanded libraries that include utility classes, google’s collections, base64, io classes, and much much more.
Required Libraries
guava-18.0.jar
You will then configure your libraries in the Libraries tab on Java Build Path Dialog Screen (shown below).

Complete Project Overview
I have added the project overview to give you a full view of the structure and show you all files contained in this sample project.

What is Base64 Encoding
Base64 is one of several encoding schemes used to encode binary data in a text based representation (ASCII) using a radix-64 representation. Although there are several other variants among them Base16 and Base32, it is Base64 which is the most prevalent and popular. The need for Base64 arose during the advent of email. During which time folks began to speculate with the possibility of using attachments with things like images, videos or other binary data. Since STMP (Simple Mail Transfer Protocol) only supported 7-bit ASCII characters within the messages, there was a need to be able to encode this binary data and convert it into a format that was universally supported without having to affect the current infrastructure of email servers and the SMTP protocol.
This led the industry into standards like MIME (Multipurpose Internet Mail Extensions). The MIME specification supports two binary-to-text encoding schemes (Base64 and quotable-printable).
Base64 Alphabet Characters Used for Encoding
Base64 makes use of the following characters:
Characters | Description |
---|---|
[a-z] | 26 Characters |
[A-Z] | 26 Characters |
[0-9] | 10 Characters |
[+] | 1 Character (filler) |
[/] | 1 Character (filler) |
[=] | 1 Character (padding) |
Base64 Encoding/Decoding using Google Guava Library
In this example, we will encode a String called sampleText using the Base64 encoding algorithm. We will be using the com.google.common.io.BaseEncoding class from the Google Guava library. This class implements the Base64 encoding specified by RFC 4648 section 4.
To encode our sampleText String we will use BaseEncoding.base64().encode(byte[] bytes) method which returns a String with the encoded data.
When decoding a Base64 encoded string we use the BaseEncoding.base64().decode(String encodedText) method and pass the encoded text as a String parameter. This method returns a byte[] array of decodedText.
- Create a String containing the encoded text
- Call the BaseEncoding.base64().decode method
- Use the String as parameter, method returns byte[] array
- Output the String to our console
package com.avaldes.tutorial; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import com.google.common.io.BaseEncoding; public class Base64EncodeDecodeGuava { private static String sampleText = "Do, or do Not. There is no try."; private static final Charset UTF_8 = StandardCharsets.UTF_8; public static void main(String[] args) { encodingDecodingGuava(); encodingDecodingGuavaUTF(); } public static void encodingDecodingGuava() { // --- Encode Data--- String encodedText = BaseEncoding.base64() .encode(sampleText.getBytes()); // ---Decode Data--- byte[] decoded = BaseEncoding.base64().decode(encodedText); String decodedText = new String(decoded); System.out.println("Base64 Encoding/Decoding - Guava"); System.out.println("--------------------------------"); System.out.println("SampleText......: " + sampleText); System.out.println("EncodedText.....: " + encodedText); System.out.println("DecodedText.....: " + decodedText); System.out.println(); } public static void encodingDecodingGuavaUTF() { // --- Encode Data--- String encodedText = BaseEncoding.base64() .encode(sampleText.getBytes(UTF_8)); // ---Decode Data--- byte[] decoded = BaseEncoding.base64().decode(encodedText); String decodedText = new String(decoded, UTF_8); System.out.println("Base64 Encoding/Decoding - Guava (UTF-8)"); System.out.println("----------------------------------------"); System.out.println("SampleText......: " + sampleText); System.out.println("EncodedText.....: " + encodedText); System.out.println("DecodedText.....: " + decodedText); System.out.println(); } }
Base64 Encoding/Decoding Google Guava Output
Base64 Encoding/Decoding - Guava -------------------------------- SampleText......: Do, or do Not. There is no try. EncodedText.....: RG8sIG9yIGRvIE5vdC4gVGhlcmUgaXMgbm8gdHJ5Lg== DecodedText.....: Do, or do Not. There is no try. Base64 Encoding/Decoding - Guava (UTF-8) ---------------------------------------- SampleText......: Do, or do Not. There is no try. EncodedText.....: RG8sIG9yIGRvIE5vdC4gVGhlcmUgaXMgbm8gdHJ5Lg== DecodedText.....: Do, or do Not. There is no try.
References
- Wiki General Reference on Base64
- Guava: Google Core Libraries for Java
- Guava: Google Core Libraries for Java 18.0 API Documentation
Download the Complete Source Code
That’s It!
I hope you enjoyed this tutorial. It was certainly a lot of fun putting it together and testing it out. Please continue to share the love and like us so that we can continue bringing you quality tutorials. Happy Coding!!!

Core Java Related Tutorials
- Base64 Encoding and Decoding Examples in Java 8
In this tutorial we will discuss how to Encode and Decode using Base64 using Java 8, which now finally has native Base64 support. - Base64 Encoding and Decoding Examples in Java using Google Guava
This tutorial will introduce how to Encode and Decode using Base64 using Google’s Guava Project Open Source library. - Base64 Encoding and Decoding Examples in Java using Apache Commons
This tutorial will introduce Base64 encoding and decoding examples using the Apache Commons Codec library. - Custom Number Formatting in Java
In this example we will show you how to use the NumberFormat and DecimalFormat classes to format numbers using special patterns. - Custom Date Formatting in Java
In this example we will show you how to use the SimpleDateFormat class to format Date objects using special patterns to better fit the needs of the application.
Please Share Us on Social Media






Leave a Reply