A simple static file server written in Rust, with directory listing, uploads, basic auth, and optional HTTPS.
svenstaro/miniserve
A single-binary Rust CLI that instantly serves files and directories over HTTP, with optional auth, uploads, and TLS.
- Stars
- 7,922
- Forks
- 401
- Open issues
- 93
- Last commit
- 24 days ago
What is it?
miniserve is a small command-line tool for sharing files over HTTP without setting up a proper web server. You point it at a directory or a single file, and it starts serving it with a browsable listing, or serves a chosen index file instead. It ships as one self-contained binary, available for Linux, macOS, Windows, and via Cargo, Homebrew, Docker, and Podman.
Beyond basic serving, it covers common ad-hoc needs: username/password authentication (plain or SHA-256/SHA-512 hashed), file and folder uploads, directory creation, file deletion when enabled, and on-the-fly tar, tar.gz, or zip downloads of folders. It can also run over TLS, add custom response headers, serve SPAs with fallback routing, and expose a read-only WebDAV endpoint.
It is built on Rust and the Actix web framework. The project positions itself against ad-hoc alternatives such as Python's built-in HTTP server and netcat, noting better MIME type handling and easier setup on Windows.
Key features
- 01Serves a directory or a single file with a browsable listing and optional custom index file.
- 02Supports username/password auth, including SHA-256 and SHA-512 hashed passwords.
- 03Allows file uploads, directory creation, and optional deletion, restricted to chosen paths.
- 04Downloads folders as tar, tar.gz, or zip archives generated on the fly.
- 05Offers TLS, custom response headers, SPA fallback routing, and read-only WebDAV.
- 06Includes search filtering, QR code display, light/dark themes, and shell completions.
Use cases
- Quickly sharing a large ISO or folder with someone on the same network.
- Serving a static site or single-page app build locally for testing.
- Letting a phone upload photos to a laptop through a browser.
- Running a password-protected file share on a home server or daemon via systemd.
Quick start
- 1
Get the miniserve binary (the README links to Crates.io and Docker Hub)
- 2
Serve a directory
miniserve linux-distro-collection/
Things to know
- Zip archive generation is done in memory, so large directories can cause out-of-memory errors.
- TLS is only available for supported architectures.
In collections
Topics
FAQ
- What is miniserve?
- A single-binary Rust CLI that instantly serves files and directories over HTTP, with optional auth, uploads, and TLS. miniserve is a small command-line tool for sharing files over HTTP without setting up a proper web server. You point it at a directory or a single file, and it starts serving it with a browsable listing, or serves a chosen index file instead. It ships as one self-contained binary, available for Linux, macOS, Windows, and via Cargo, Homebrew, Docker, and Podman.
- Is miniserve free to use? What license does it have?
- miniserve is open source under the MIT license. Check the license terms before using it in commercial products.
- Is miniserve still maintained?
- Actively maintained. The last commit to miniserve was on Oct 1, 2026.
- What can I use miniserve for?
- Quickly sharing a large ISO or folder with someone on the same network. Serving a static site or single-page app build locally for testing. Letting a phone upload photos to a laptop through a browser. Running a password-protected file share on a home server or daemon via systemd.
- How do I install miniserve?
- Get the miniserve binary (the README links to Crates.io and Docker Hub) Serve a directory: miniserve linux-distro-collection/
- Where can I get miniserve?
- The source code and installation instructions are on GitHub: https://github.com/svenstaro/miniserve
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A generic, extendable WebDAV server written in Python on top of WSGI, runnable standalone or embedded in other WSGI apps.
A distinctive command-line file server in Rust for static serving, uploads, search, access control and WebDAV.
A single Rust binary for inspecting, grading, generating and converting certificates and TLS connections, as a simpler alternative to OpenSSL's CLI.
A line-oriented regex search tool (rg) that recursively searches directories while respecting .gitignore rules by default.
A smarter cd command that learns your most-used directories and lets you jump to them with a few keystrokes, across all major shells.