Base64 Encoding

The base64 module encodes strings and binary data using standard RFC 4648 Base64 and decodes them back to bytes.

This is an API reference. Output-only expressions show successful values; filesystem and transport examples check the optional second error return before consuming data. Names such as username, password, encoded_image, and user_input are application-supplied strings.

Base64 is an encoding, not encryption or authentication. Do not use it to conceal secrets or to verify that data has not been modified. Send Basic authentication credentials only over TLS and obtain them from application-owned secret storage rather than literals.

Loading

local base64 = require("base64")

Add base64 to the executable entry's modules: list before requiring it. Filesystem and JSON examples also require fs and json respectively.

Encoding

encode

Encodes a string, including binary data, as Base64.

-- Encode text
local encoded, err = base64.encode("Hello, World!")
if err then return nil, err end
print(encoded)  -- "SGVsbG8sIFdvcmxkIQ=="

-- Encode binary data (e.g., from file)
local image_data = fs.get("app:data"):readfile("photo.jpg")
local image_b64 = base64.encode(image_data)

-- Encode JSON for transport
local json = require("json")
local payload, json_err = json.encode({user = "alice", action = "login"})
if json_err then return nil, json_err end
local token_part, token_err = base64.encode(payload)
if token_err then return nil, token_err end

-- Encode credentials
local credentials, credentials_err = base64.encode(username .. ":" .. password)
if credentials_err then return nil, credentials_err end
local auth_header = "Basic " .. credentials
Parameter Type Description
data string Data to encode (text or binary)

Returns: string, error — an empty input returns an empty string

Decoding

decode

Decodes a Base64 string to its original bytes.

-- Decode text
local decoded, decode_err = base64.decode("SGVsbG8sIFdvcmxkIQ==")
if decode_err then return nil, decode_err end
print(decoded)  -- "Hello, World!"

-- Decode with error handling
local data, err = base64.decode(user_input)
if err then
    return nil, errors.new("Invalid base64 data"):kind(errors.INVALID)
end

-- Decode binary data
local image_data, err = base64.decode(encoded_image)
if err then
    return nil, err
end
fs.get("app:data"):writefile("output.jpg", image_data)

-- Decode a base64-wrapped JSON document
local json = require("json")
local doc = json.decode(base64.decode(encoded_json))

The final block demonstrates delimiter handling only. It does not parse or verify a signed token format.

Parameter Type Description
data string Base64-encoded string

Returns: string, error — an empty input returns an empty string

Errors

Condition Kind Retryable
Input not a string errors.INVALID no
Invalid base64 characters errors.INVALID no
Corrupted padding errors.INVALID no

See Error Handling for working with errors.