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.
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
.
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
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
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
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)
encode64
inserts newlines; strict_encode64
does not.urlsafe_encode64
/urlsafe_decode64
replace + /
with - _
.ArgumentError
in strict decoding.String#b
or binary read/write for non-text data.