TypeScript icon, indicating that this package has built-in type declarations

4.1.1 • Public • Published

A promisified FileReader for browsers

License NPM Package Minified Size

A promisified FileReader implementation very similar to the browser's FileReader API, with a few differences:

  • the File or Blob instance is given at construction time;
  • all readAs... methods don't take a Blob or File instance as first argument anymore;
  • all readAs... methods return a Promise that can be awaited;
  • reading in chunks is easy as:
    • you just need to await the next chunk (no event / callback API anymore);
    • the current reading position is automatically tracked.


import { FileReader } from '@tanker/file-reader';

// Retrieve a file or blob somehow
const file = new File(
  ['The quick brown fox jumps over the lazy dog'],
  { type: 'plain/text' }

// Create your file reader
const reader = new FileReader(file);

// Read the whole file
const text = await reader.readAsText('UTF-8');
const dataUrl = await reader.readAsDataURL();
const arrayBuffer = await reader.readAsArrayBuffer();

// Or read binary chunks (ArrayBuffer)
const chunkSize = 8; // bytes
let chunk;
do {
  chunk = await reader.readAsArrayBuffer(chunkSize);
  // do something with the chunk
} while (chunk.byteLength > 0);

About Tanker

This package is a dependency of the Tanker client SDKs for end-to-end encryption:

Read the documentation to get started.

Package Sidebar


npm i @tanker/file-reader

Weekly Downloads






Unpacked Size

22.3 kB

Total Files


Last publish


  • jmounier
  • maximerety
  • tankeradmin
  • quentin.vernot.tanker