Skip to content
This repository has been archived by the owner on Jul 23, 2024. It is now read-only.

superhuman/fast64

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

!This package is deprecated!

At Superhuman, we now use https://github.com/beatgammit/base64-js, which is much faster.


This immodestly claims to be the fastest in-browser utf-8 safe Base64 decoding library. If you can beat it in the latest version of Chrome, please send a pull request :).

I built it as part of the Superhuman email client, as a significant portion of our CPU-burn goes into Base64 parsing.

It's based on mythic work by DRDigit (Vassilis Petroulias). (I say mythic, because its origins are shrouded in mystery), but uses modern browser features (namely TextEncoder, TextDecoder, Uint8Array, and ArrayBuffer) to beat the original by a very healthy multiplier.

Installation

npm install fast64

Usage

var fast64 = require('base64');

// For standard base64
base64 = fast64.encode(string);
string = fast64.decode(base64);
// If you want to decode till Uint8Array and skip the UTF8 decoding.
// This is useful in cases where you need Uint8Array for eg. create blob out of Uint8Array result.
uint8Array = fast64.decode(base64, {uint8Array:true});


// For URL-safe base64 (-_ in place of +/, and no padding)
base64 = fast64.urlencode(string);
string = fast64.urldecode(base64);
// If you want to decode till Uint8Array and skip the UTF8 decoding.
// This is useful in cases where you need Uint8Array for eg. create blob out of Uint8Array result.
uint8Array = fast64.urldecode(base64, {uint8Array:true});

Testing

If you want to develop this package, you can run the tests in-browser:

npm install
open test/index.html

About

The fastest way of decoding Base64 in chrome?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •