The <a href="/ruby/Base64">Base64</a> module provides for the encoding (#encode64) and decoding (#decode64) of binary data using a Base64 representation.

The following particular features are also provided:

  • encode into lines of a given length (#b64encode)
  • decode the special format specified in RFC2047 for the representation of email headers (decode_b)


A simple encoding and decoding.

    require "base64"

    enc   = Base64.encode64('Send reinforcements')
                        # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n"
    plain = Base64.decode64(enc)
                        # -> "Send reinforcements"

The purpose of using base64 to encode data is that it translates any binary data into purely printable characters. It is specified in RFC 2045 (http://www.faqs.org/rfcs/rfc2045.html).

Show files where this module is defined (1 file)
Register or log in to add new notes.
February 12, 2009
4 thanks

Real life use

If you’re wondering what the base64 format is used for, here are some examples:

  • HTTP Basic authentication: encode your username and password as one string, and add it as a header of an HTTP request. When a page requiring basic authentication gets called from a browser it results in a generic Username/Password dialog from that browser. See also http://en.wikipedia.org/wiki/Basic_access_authentication

  • Encode the binary content of images to base64 and embed it in XML documents, for example in web services

  • For more information see http://en.wikipedia.org/wiki/Base64

Just note that the encoded (character) data is about 30% larger than un-encoded (binary) data.