Ruby Base64

This page summarizes Base64 usage in Ruby with the standard library Base64 module. It covers common APIs, URL-safe variants, strict mode behavior, and simple file I/O examples.

Overview

Ruby ships Base64 in the standard library. Require it with require 'base64'. Common methods include encode64/decode64 (with line wraps), strict_encode64/strict_decode64 (no wraps), and URL-safe variants urlsafe_encode64/urlsafe_decode64.

Quick examples

Basic encode/decode

require 'base64'

text = 'Hello, world'

# Encodes with line wraps (MIME style)
b64_wrapped = Base64.encode64(text)
puts b64_wrapped

# Strict encode (no newlines)
b64 = Base64.strict_encode64(text)
puts b64 # SGVsbG8sIHdvcmxk

# Decode
decoded = Base64.decode64(b64)
puts decoded # Hello, world

URL-safe variant

require 'base64'

raw = 'token:id/123+scope'.b
url_b64 = Base64.urlsafe_encode64(raw)
puts url_b64 # dG9rZW46aWQvMTIzK3Njb3Bl

plain = Base64.urlsafe_decode64(url_b64)
puts plain # token:id/123+scope

Strict vs non-strict

require 'base64'

valid = 'SGVsbG8sIHdvcmxk'
puts Base64.strict_decode64(valid) # strict expects no whitespace

non_strict = "SGVsbG8s\nI Hdvcmxk=="
puts Base64.decode64(non_strict)   # tolerates whitespace/newlines

begin
	Base64.strict_decode64('@@invalid@@')
rescue ArgumentError => e
	warn "Decode failed: #{e.message}"
end

File I/O

require 'base64'

# Binary file โ†’ Base64 (strict, single line)
bin = File.binread('input.bin')
b64 = Base64.strict_encode64(bin)
File.write('output.txt', b64)

# Base64 โ†’ Binary file
b64_text = File.read('output.txt')
data = Base64.decode64(b64_text)
File.binwrite('restored.bin', data)

Notes