Base64 encode a Ruby hash

August 8, 2022  ‐ 1 min read

The best option I've found to base64 encode a hash in Ruby is by first converting the hash to a JSON string. After which we can base64 encode it. This can be easily decoded by another program by first base64 decode the string and next parse the result as JSON.

require 'base64'
require 'json'

hash = {id: 1, slug: 'boo'}
result = Base64.encode64(JSON.dump(hash))
#=> "eyJpZCI6MSwic2x1ZyI6ImJvbyJ9\n"

Make sure to require both the base64 and json modules. The result of the operation can be decoded as follows:

JSON.load(Base64.decode64(res))
#=> {"id"=>1, "slug"=>"boo"}