FileSaver.js

The standard client-side solution for saving files in the browser via a simple saveAs() call.

Library
npm
v2.0.5
21,964 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
51 /100 Fair
Development Activity 0
Maintenance 20
Community 84
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
73 /100 Good
Architecture 78
Code Quality 55
Innovation 88
Learning Curve 90

FileSaver.js is the de facto library for triggering file downloads directly from client-side JavaScript. It implements an HTML5 saveAs() function that takes a Blob, File, or URL and prompts the browser to save it under a chosen filename, with no server round-trip required.

Weighing in at under 6KB with zero runtime dependencies, it abstracts away the browser-specific quirks of downloading generated content, making it a foundational building block for web apps that export CSVs, PDFs, images, and other files created entirely on the client.

What You Get

  • A single saveAs(blob, filename, options) function that works across modern browsers
  • Automatic feature detection that picks the best download strategy per browser
  • Support for saving Blobs, File objects, and remote or same-origin URLs
  • Optional automatic byte-order-mark (BOM) insertion for correct UTF-8 text encoding
  • A tiny, dependency-free UMD bundle usable via npm, a bundler, or a plain script tag

Common Use Cases

  • Exporting client-generated CSV or JSON data as a downloadable file
  • Saving PDFs or images produced in the browser (e.g. from a canvas)
  • Downloading remote files while controlling the saved filename
  • Offering ‘Save’ functionality in web apps that create content entirely offline

Under The Hood

Architecture - The entire library lives in a single UMD module (src/FileSaver.js) that resolves a global scope across window, self, and global, then defines saveAs() by branching on runtime capabilities. When the a[download] attribute is supported it creates an anchor, points it at either a same-origin URL, a CORS-checked remote download, or an object URL from a Blob, and dispatches a synthetic click; on legacy IE/Edge it delegates to navigator.msSaveOrOpenBlob; and as a last resort it falls back to a FileReader that reads the blob as a data URL and opens it in a popup, with reverse-tabnabbing guards. Helper functions bom(), download(), corsEnabled(), and click() keep the branches small.

Tech Stack - It is plain ES5-style JavaScript with no runtime dependencies. The build tooling is Babel (@babel/cli with plugin-transform-modules-umd and babel-preset-minify) which transpiles the source into UMD dist bundles (dist/FileSaver.js and a minified build). Distribution is via npm and bower, and TypeScript consumers pull types from the separately published @types/file-saver package.

Code Quality - The source is compact and readable, with comments pointing at the specific browser bugs and issue numbers each code path works around. There is no automated test suite, however: the package.json test script simply echoes ‘no test specified’ and exits, so correctness relies on manual browser testing and the library’s long production track record.

API Design - The public surface is a single saveAs(blob, filename, options) function, which makes the library trivial to adopt with essentially no boilerplate. The README documents every scenario (text, URLs, canvases, File objects) with runnable snippets, and the only option, autoBom, has a sensible default. This minimal, well-documented API is the main reason it became the ecosystem standard.

Used by 42 apps in this directory

TypeScript
65%
Other

NocoDB

Databases · Low Code Platforms · No Code Platforms

65,340

Turn any SQL database into a collaborative no-code spreadsheet with automatic REST APIs and real-time views.

View details
91
Repo Health
77
Technical
63
Dependency
Built with
TypeScript 65%
Vue 30%
Updated 6 days ago
TypeScript
85%
GPL 3.0

Notesnook

File Storage · Note Taking · Security

14,822

End-to-end encrypted, open-source note-taking where your data stays yours — even from the server.

View details
91
Repo Health
84
Technical
60
Dependency
Built with
TypeScript 85%
JavaScript 12%
Updated 6 days ago
Python
38%
Other

Open WebUI

AI Agents · AI Assistants

156,607

The extensible, privacy-first AI platform that runs Ollama, OpenAI, and any LLM backend behind a polished, feature-packed web interface.

View details
92
Repo Health
75
Technical
66
Dependency
Built with
Python 38%
Svelte 35%
JavaScript 19%
Updated 6 days ago
JavaScript
90%
Other

OpenSign

Digital Signiture

7,163

Self-host a full-featured DocuSign alternative with unlimited e-signatures, multi-signer workflows, and cryptographic PDF signing.

View details
83
Repo Health
61
Technical
69
Dependency
Built with
JavaScript 90%
Updated 1 weeks ago
Python
63%
GPL 3.0

Paperless-ngx

Bookmarks Archiving

47,038

Turn your paper pile into a searchable digital archive with OCR, AI classification, and automated workflows — all running on your own server.

View details
91
Repo Health
88
Technical
67
Dependency
Built with
Python 63%
TypeScript 28%
Updated 6 days ago
TypeScript
51%
ZLIB

Portainer

Devops

38,707

A lightweight, open-source web UI that puts Docker, Kubernetes, and Podman management within reach of any team—no CLI expertise required.

View details
93
Repo Health
79
Technical
65
Dependency
Built with
TypeScript 51%
Go 38%
Updated 1 weeks ago
Rust
72%
Apache 2.0

Rivet

AI Agents · Developer Tools

6,326

Stateful actors as a primitive for AI agents, real-time collaboration, and durable execution — with in-memory state, WebSockets, queues, and scheduling built in.

View details
87
Repo Health
81
Technical
64
Dependency
Built with
Rust 72%
TypeScript 25%
Updated 6 days ago
TypeScript
99%
Other

Rowy

Databases · Low Code Platforms

6,842

Manage Firestore data in an Airtable-like spreadsheet UI and build Cloud Functions workflows directly in your browser—on your own GCP project.

View details
45
Repo Health
71
Technical
65
Dependency
Built with
TypeScript 99%
Updated 1 years ago
TypeScript
97%
AGPL 3.0

Snapify

Collaboration · Productivity

1,016

Open-source, self-hostable screen recording and video sharing built as a Loom alternative — no accounts required to watch, full S3-backed storage for your data.

View details
38
Repo Health
68
Technical
69
Dependency
Built with
TypeScript 97%
Updated 1 years ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers