Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
JavaScript Uint8Array to Base64: all
toBase64 is usually the fastest, but may not be supported by older browsers.
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
Browser:
Chrome 142
Operating system:
Windows
Device Platform:
Desktop
Date tested:
4 months ago
Test name
Executions per second
FileReader
4587.6 Ops/sec
btoa
97814.6 Ops/sec
Concat
226821.2 Ops/sec
Spread
54416.2 Ops/sec
Apply
336703.6 Ops/sec
Chunk
335696.2 Ops/sec
Script Preparation code:
function bytesToBase64ByFileReader(bytes) { return new Promise(r => { const reader = new FileReader() reader.onload = () => r(reader.result) reader.readAsDataURL(new Blob([bytes])) }).then(url => url.slice(url.indexOf(",") + 1)); } function bytesToBase64ByBtoa(bytes) { return btoa(bytes.reduce((data, byte) => data + String.fromCharCode(byte), "")); } function base64UrlEncodeConcat(bytes) { let binary = ''; for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]); return btoa(binary); } function base64UrlEncodeSpread(bytes) { let binary = String.fromCharCode(...bytes); return btoa(binary); } function base64UrlEncodeApply(bytes) { let binary = String.fromCharCode.apply(null, bytes); return btoa(binary); } function base64UrlEncodeChunk(bytes) { let binaryString = ''; for (let i = 0; i < bytes.length; i += 49152) { // Use chunk size divisible by 3 binaryString += String.fromCharCode.apply(null, bytes.subarray(i, i + 49152)); } return btoa(binaryString); } const bytes1K = new Uint8Array(1024); for (const bytes of [bytes1K]) for (let i = 0; i < bytes.length; i += 65536) crypto.getRandomValues(bytes.subarray(i, i + 65536));
Tests:
FileReader
[Async/Deferred]
await bytesToBase64ByFileReader(bytes1K); deferred.resolve();
btoa
bytesToBase64ByBtoa(bytes1K);
Concat
base64UrlEncodeConcat(bytes1K);
Spread
base64UrlEncodeSpread(bytes1K);
Apply
base64UrlEncodeApply(bytes1K);
Chunk
base64UrlEncodeChunk(bytes1K);