An ECMAScript module for Base64 encode and decode.
- Support multiple variants alphabet and padding:
- RFC 1421: Base64 encoding for privacy enhanced mail (Deprecated)
- RFC 2045: Base64 transfer encoding for MIME
- RFC 2152: Base64 encoding for UTF-7
- RFC 3501: Base64 encoding for IMAP mailbox names
- RFC 4648 §4: Base64 encoding (Standard)
- RFC 4648 §5: Base64 encoding with URL and filename safe alphabet (Base64URL)
- RFC 9580: ASCII armor encoding for OpenPGP
- Support stream encode and decode.
| Runtime \ Source | GitHub Raw | JSR | NPM |
|---|---|---|---|
| Bun >= v1.1.0 | ❌ | ✔️ | ✔️ |
| Deno >= v2.1.0 | ✔️ | ✔️ | ✔️ |
| NodeJS >= v20.9.0 | ❌ | ✔️ | ✔️ |
This does not request any runtime permission.
- GitHub Raw
https://raw.githubusercontent.com/hugoalh/base64-es/{Tag}/mod.ts - JSR
jsr:@hugoalh/base64[@{Tag}] - NPM
npm:@hugoalh/base64[@{Tag}]
Note
- It is recommended to include tag for immutability.
- These are not part of the public APIs hence should not be used:
- Benchmark/Test file (e.g.:
example.bench.ts,example.test.ts). - Entrypoint name or path include any underscore prefix (e.g.:
_example.ts,foo/_example.ts). - Identifier/Namespace/Symbol include any underscore prefix (e.g.:
_example,Foo._example).
- Benchmark/Test file (e.g.:
| Name | Path | Description |
|---|---|---|
. |
./mod.ts |
Default. |
-
class Base64Decoder { constructor(options?: Base64DecodeOptions); get variant(): Base64Variant; decodeToBytes(item: string | Uint8Array): Uint8Array; decodeToText(item: string | Uint8Array): string; }
-
class Base64Encoder { constructor(options?: Base64EncodeOptions); get padding(): boolean; get variant(): Base64Variant; encodeToBytes(item: string | Uint8Array): Uint8Array; encodeToText(item: string | Uint8Array): string; }
-
class Base64DecoderStream extends TransformStream<Uint8Array, Uint8Array> { constructor(options?: Base64DecodeOptions); }
-
class Base64EncoderStream extends TransformStream<Uint8Array, Uint8Array> { constructor(options?: Base64EncodeOptions); }
-
type Base64Variant = | "rfc1421" | "rfc2045" | "rfc2152" | "rfc3501" | "rfc4648-4" | "rfc4648-5" | "rfc9580" | "standard" | "url";
-
interface Base64BasicOptions { variant?: Base64Variant; }
-
interface Base64DecodeOptions extends Base64BasicOptions { }
-
interface Base64EncodeOptions extends Base64BasicOptions { padding?: boolean | null; }
Note
- For the full or prettier documentation, can visit via:
-
new Base64Encoder().encodeToText("Many hands make light work."); //=> "TWFueSBoYW5kcyBtYWtlIGxpZ2h0IHdvcmsu"