Script Preparation code:
x
 
var unicodeString = "가나다라마바사아자차카타파하";
var unicodeString_large = "".padStart(30000, unicodeString);
var textEncoder = new TextEncoder();
const PREFIX_STR = "data:text/plain;base64,";
function toBase64FileReader( text ) {
  return new Promise( (resolve, reject) => {
    const reader = new FileReader();
    
    // data:text/plain;base64,...
    reader.onload = () => resolve(reader.result.substr(PREFIX_STR.length));
    reader.onerror = (err) => reject(err);
    
    reader.readAsDataURL(
      new Blob([ new TextEncoder().encode( text ) ], { type: "text/plain" })
    );
  });
}
function toBase64TextEcnder( text ) {
  return btoa( String.fromCharCode(...textEncoder.encode(text)));
}
function toBase64Unscape( text ) {
  return btoa(unescape(encodeURIComponent(text)));
}
Tests:
  • TextEncoder small (14 chars)

     
    toBase64TextEcnder(unicodeString);
  • unescape small (14 chars)

     
    toBase64Unscape(unicodeString);
  • FileReader small (14 chars)

     
    toBase64FileReader(unicodeString);
  • TextEncoder large (30,000 chars)

     
    toBase64TextEcnder(unicodeString_large);
  • unescape large (30,000 chars)

     
    toBase64Unscape(unicodeString_large);
  • FileReader large (30,000 chars)

     
    toBase64FileReader(unicodeString_large);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    TextEncoder small (14 chars)
    unescape small (14 chars)
    FileReader small (14 chars)
    TextEncoder large (30,000 chars)
    unescape large (30,000 chars)
    FileReader large (30,000 chars)

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one year ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Chrome 114 on Windows
View result in a separate tab
Test name Executions per second
TextEncoder small (14 chars) 308914.3 Ops/sec
unescape small (14 chars) 634181.2 Ops/sec
FileReader small (14 chars) 10895.7 Ops/sec
TextEncoder large (30,000 chars) 358.7 Ops/sec
unescape large (30,000 chars) 800.2 Ops/sec
FileReader large (30,000 chars) 2296.8 Ops/sec