3 releases (breaking)

Uses new Rust 2024

new 0.3.0 Apr 8, 2026
0.2.0 Mar 22, 2026
0.1.0 Mar 22, 2026

#1046 in Encoding


Used in json-web-token

MIT/Apache

170KB
3.5K SLoC

basekit

Universal Rust library for encoding/decoding in various bases.

Installation

Add to your Cargo.toml:

[dependencies]
basekit = "0.2.0"

Usage

Base16

use basekit::base16::{
    Base16EncodeConfig, Base16DecodeConfig,
    ALPHABET_BASE16_LOWERCASE, DECODE_TABLE_BASE16_LOWERCASE,
    encode, decode,
};

let encode_config = Base16EncodeConfig::new(ALPHABET_BASE16_LOWERCASE);
let decode_config = Base16DecodeConfig::new(DECODE_TABLE_BASE16_LOWERCASE);

let data = b"Hello, World!";
let encoded = encode(&encode_config, data);
let encoded_str = String::try_from(encoded).unwrap();
println!("Encoded: {}", encoded_str);

let decoded = decode(&decode_config, encoded_str.as_bytes()).unwrap();
let decoded_str = String::try_from(decoded).unwrap();
println!("Decoded: {}", decoded_str);

Base32

use basekit::base32::{
    Base32EncodeConfig, Base32DecodeConfig,
    ALPHABET_BASE32, DECODE_TABLE_BASE32,
    PADDING_BASE32, encode, decode,
};

let encode_config = Base32EncodeConfig::new(ALPHABET_BASE32, Some(PADDING_BASE32));
let decode_config = Base32DecodeConfig::new(DECODE_TABLE_BASE32, Some(PADDING_BASE32));

let data = b"Hello, World!";
let encoded = encode(&encode_config, data);
let encoded_str = String::try_from(encoded).unwrap();
println!("Encoded: {}", encoded_str);

let decoded = decode(&decode_config, encoded_str.as_bytes()).unwrap();
let decoded_str = String::try_from(decoded).unwrap();
println!("Decoded: {}", decoded_str);

Base64

use basekit::base64::{
    Base64EncodeConfig, Base64DecodeConfig,
    ALPHABET_BASE64, DECODE_TABLE_BASE64,
    PADDING_BASE64, encode, decode,
};

let encode_config = Base64EncodeConfig::new(ALPHABET_BASE64, Some(PADDING_BASE64));
let decode_config = Base64DecodeConfig::new(DECODE_TABLE_BASE64, PADDING_BASE64);

let data = b"Hello, World!";
let encoded = encode(&encode_config, data);
let encoded_str = String::try_from(encoded).unwrap();
println!("Encoded: {}", encoded_str);

let decoded = decode(&decode_config, encoded_str.as_bytes()).unwrap();
let decoded_str = String::try_from(decoded).unwrap();
println!("Decoded: {}", decoded_str);

URL-safe Base64

use basekit::base64::{
    Base64EncodeConfig, Base64DecodeConfig,
    ALPHABET_BASE64_URL, DECODE_TABLE_BASE64_URL,
    PADDING_BASE64, encode, decode,
};

let encode_config = Base64EncodeConfig::new(ALPHABET_BASE64_URL, Some(PADDING_BASE64));
let decode_config = Base64DecodeConfig::new(DECODE_TABLE_BASE64_URL, PADDING_BASE64);

let data = b"Hello, World!";
let encoded = encode(&encode_config, data);
let encoded_str = String::try_from(encoded).unwrap();
println!("Encoded: {}", encoded_str);

let decoded = decode(&decode_config, encoded_str.as_bytes()).unwrap();
let decoded_str = String::try_from(decoded).unwrap();
println!("Decoded: {}", decoded_str);

Documentation

Full documentation available at docs.rs/basekit

No runtime deps