Arduino – base64 encode and decode

ArduinoHardwareSoftware & Coding

Arduino contains a library that helps with base64 encode and decode. You can download it from the Library Manager. Search for base64, and install the library by Densaugeo.

Now, open a new sketch and run the following sample code −

#include "base64.hpp"

unsigned char normal_text[20] = "Hello World";
unsigned char base64_text[20];
unsigned char decoded_text[20];

void setup() {
   // put your setup code here, to run once:

   int base64_length = encode_base64(normal_text,12,base64_text);
   Serial.print("Base64 Text: ");Serial.println((char *) base64_text);
   Serial.print("Base64 Length: ");Serial.println(base64_length);

   int decoded_length = decode_base64(base64_text,decoded_text);
   Serial.print("Decoded Text: ");Serial.println((char *)decoded_text);
   Serial.print("Decoded Length: ");Serial.println(decoded_length);

void loop() {
   // put your main code here, to run repeatedly:


The Serial Monitor Output is shown below −

You can verify this output on websites like:

As you can see, this library deals with unsigned character arrays. The base64_encode function takes three arguments −

  • The array to be converted

  • The number of elements in the array to be converted

  • The array in which to store the encoded values

It returns the length of the encoded array.

The base64_decode function takes in two arguments −

  • The array containing the encoded values

  • The array in which to store the decoded results

Since Serial.print() and its variations don't deal with unsigned char arrays, you need to cast it to a char array for printing.

Updated on 26-Jul-2021 10:09:45