For browser file systems, the strongest matches are okonet/react-dropzone (This repository provides a React drop-zone component for file), dexie/dexie.js (Dexie) and dropzone/dropzone (Dropzone is a client-side file upload and drag-and-drop library). react-dropzone/react-dropzone and rhysd/vim.wasm round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Hand-picked open-source browser file system libraries, ranked by stars and activity. Compare the top options and find the best fit.
react-dropzone is a reusable React UI component for implementing HTML5 drag-and-drop file transfers. It provides a React file upload component that manages file selection and drop zone states within a web application. The project enables the creation of interactive file upload interfaces where users can drag files from their local system or select them via a file browser. It integrates with the native system file picker dialog and supports the File System Access API.
This repository provides a React drop-zone component for file uploads and integrates with the File System Access API, but it is a UI component rather than a comprehensive library for managing and writing to the user's local directory tree.
Dexie.js is a wrapper library for IndexedDB that provides a simplified interface for managing and querying structured data within the browser. It functions as a browser database manager used to maintain persistent application state and store binary blobs and records. The project serves as an offline-first data store that synchronizes browser data with remote servers to maintain consistency across sessions. It also acts as a reactive database store by monitoring data changes in real time to trigger automatic user interface updates, and functions as a client-side search engine for indexing and
Dexie.js is an IndexedDB wrapper for structured data storage rather than a local file system library, making it a database tool rather than a solution for reading and writing user files on disk.
Dropzone is a JavaScript file upload library that provides a browser-based interface for capturing dropped files and transmitting them to a server. It functions as a multipart upload client, splitting large files into smaller chunks to increase transmission reliability and bypass server size limits. The library includes a client-side image processor capable of resizing images and correcting photo orientation in the browser before they are sent to a server. It generates image thumbnails and visual previews immediately after selection, and can render previews for files already hosted on a serve
Dropzone is a client-side file upload and drag-and-drop library designed for transmitting files to a server rather than reading or managing the user's local disk file system directly.
react-dropzone is a React hook and HTML5 drag-and-drop wrapper used to create interactive areas that accept files via drag-and-drop or a native system file picker. It serves as a web file system interface, bridging browser interfaces with the operating system's file selection process. The project distinguishes itself by managing complex event propagation to isolate drop zones and providing global drag-state detection for document-wide visual feedback. It supports both traditional hidden input triggers and the modern browser File System Access API for secure context integration, and it can det
This React hook provides drag-and-drop file upload and ingestion capabilities, but it functions as a UI component rather than a comprehensive local file system manager for directory tree navigation and disk editing.
vim.wasm is a full port of the Vim editor compiled to WebAssembly that runs entirely in a browser tab. It provides a complete code editing experience with syntax highlighting, text objects, and all standard Vim features, executing natively in the browser through Emscripten compilation. The editor integrates deeply with browser capabilities, including drag-and-drop file opening, system clipboard synchronization for cross-application copy and paste, and IndexedDB-based persistent storage that preserves user configuration and edited files across browser sessions. Files can be loaded from URLs vi
This repository is a WebAssembly port of the Vim editor rather than a general-purpose local file management library, making it a distinct application category even though it features IndexedDB storage and drag-and-drop file opening.
Hive is a lightweight NoSQL key-value database written in pure Dart for local data persistence. It functions as a type-safe document store that allows for the saving and retrieval of complex data structures and custom objects. The system distinguishes itself through the use of custom adapters for object serialization and symmetric-key encryption to secure data at rest. For web environments, it provides a persistence layer that wraps IndexedDB and utilizes web workers. The project covers broad capability areas including container management, atomic transactional writes, and indexed data retri
Hive provides local data persistence and wraps IndexedDB for web applications, but it is a key-value database rather than a file system library for direct local disk access.
WebContainer is a browser-based runtime environment designed to execute server-side code, operating system commands, and full-stack development toolchains directly within a web tab. It provides the infrastructure for cloud IDEs and zero-install development workflows by simulating a runtime that eliminates the need for local installations or remote virtual machines. The system leverages WebAssembly to map system calls and implements a virtual POSIX-compliant filesystem and network interception layer. This allows the runtime to spawn command-line processes, execute shell commands, and route int
WebContainer provides a virtual POSIX-compliant filesystem and local file operations inside a browser-based Node.js runtime, but it is a full environment execution engine rather than a dedicated library for managing the user's local disk via the File System Access API.
Serve is a Node.js static file server that delivers assets and single-page applications from a local directory over HTTP. It functions as both a command-line web server for hosting directories directly from the terminal and as HTTP middleware for integrating static asset delivery into existing servers. The project includes a directory browser interface that provides a web-based file explorer for navigating and accessing files within a served folder. It supports single-page application fallback by redirecting unmatched request paths to a root file to enable client-side routing. The server han
Serve is a Node.js static file server that delivers assets over HTTP, which is a different domain from client-side libraries for reading and writing local files directly in the browser.
This project is a jQuery-based file upload widget that provides a browser interface for selecting and transferring files to a server. It functions as a chunked file uploader and a resumable upload client, enabling the transfer of large files by splitting them into smaller segments or continuing interrupted uploads from the last successfully sent byte. The tool includes a client-side image processor for validating, resizing, and generating previews of images before transmission. It also serves as a cross-domain upload tool, using various transport mechanisms to send files to different domains
This repository is a server-side upload widget and client-side uploader rather than a library for managing the user's local disk directly through the browser's file system APIs.
Pragmatic Drag and Drop is a TypeScript library that provides a complete system for implementing drag and drop interactions in web applications. It handles the full lifecycle of drag operations, from registering drop targets and monitoring drag events to managing cleanup functions, all through a structured adapter-based approach. The library supports a wide range of data manipulation patterns, including reordering items within lists, tables, trees, virtual lists, and side navigation, as well as moving items between lists and across columns in a board layout. It also enables swapping items in
This repository provides a comprehensive drag-and-drop interaction system for web user interfaces, but it is a UI interaction library rather than a tool for reading, writing, and managing local disk files directly from the browser.
ng-file-upload is an Angular directive for handling multipart file uploads and drag-and-drop selection within Angular applications. It functions as a client-side tool for validating file attributes, processing images, and generating media previews before transmission to a server. The project includes a client-side image processor for resizing, center-cropping, and correcting JPEG EXIF orientation. It also features a browser-based media previewer for images, audio, and video files, and an HTML5 File API shim to provide upload and reader functionality for legacy browsers. Additional capabiliti
This library handles drag-and-drop file selection and uploads to a remote server, but it does not provide local file system management or direct disk access in the browser.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| okonet/react-dropzone | 11K | JavaScript | MIT | |
| dexie/dexie.js | 14.4K | TypeScript | Apache-2.0 | |
| dropzone/dropzone | 18.4K | JavaScript | NOASSERTION | |
| react-dropzone/react-dropzone | 11K | JavaScript | MIT | |
| rhysd/vim.wasm | 5.6K | Vim Script | — | |
| isar/hive | 4.4K | Dart | Apache-2.0 | |
| stackblitz/webcontainer-core | 4.6K | — | MIT | |
| vercel/serve | 9.9K | TypeScript | MIT | |
| blueimp/jquery-file-upload | 30.7K | PHP | MIT | |
| atlassian/pragmatic-drag-and-drop | 12.7K | TypeScript | NOASSERTION |