Skip to content
Simple http server in Rust (Windows/Mac/Linux)
Rust Shell Makefile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.
.cargo Add windows crt-static support Jun 3, 2017
.ci Remove dup file Jun 3, 2017
src Fix clippy Jan 13, 2020
.gitignore Bump up to 0.4.6 and add Cargo.lock Jul 15, 2019
.travis.yml Add Makefile and .travis.yml Aug 29, 2019
Cargo.lock Merge pull request #41 from michelk/add-upload-file-size-cmd-arg Nov 5, 2019
Cargo.toml Merge pull request #41 from michelk/add-upload-file-size-cmd-arg Nov 5, 2019
LICENSE Initial commit May 27, 2017
Makefile Add Makefile and .travis.yml Aug 29, 2019 rename cmd-arg: upload_size_limit -> upload-size-limit Nov 1, 2019
screenshot.png Update screenshot Jun 1, 2017

How it looks like?


Command Line Arguments

Simple HTTP(s) Server 0.6.0

    simple-http-server [FLAGS] [OPTIONS] [--] [root]

        --cors       Enable CORS via the "Access-Control-Allow-Origin" header
    -h, --help       Prints help information
    -i, --index      Enable automatic render index page [index.html, index.htm]
        --nocache    Disable http cache
        --norange    Disable header::Range support (partial request)
        --nosort     Disable directory entries sort (by: name, modified, size)
    -s, --silent     Disable all outputs
    -u, --upload     Enable upload files (multiple select)
    -V, --version    Prints version information

    -a, --auth <auth>                              HTTP Basic Auth (username:password)
        --cert <cert>                              TLS/SSL certificate (pkcs#12 format)
        --certpass <certpass>                      TLS/SSL certificate password
    -c, --compress <compress>...
            Enable file compression: gzip/deflate
                Example: -c=js,d.ts
                Note: disabled on partial request!
        --ip <ip>                                  IP address to bind [default:]
    -p, --port <port>                              Port number [default: 8000]
        --redirect <redirect>                      takes a URL to redirect to using HTTP 301 Moved Permanently
    -t, --threads <threads>                        How many worker threads [default: 3]
        --try-file <PATH>
            serve this file (server root relative) in place of missing files (useful for single page apps) [aliases:
    -l, --upload-size-limit <upload_size_limit>    Upload file size limit [bytes] [default: 8000000]


Download binary

Goto Download

  • windows-64bit
  • osx-64bit
  • linux-64bit

Install by cargo

# Install Rust
curl -sSf | sh

# Install simple-http-server
cargo install simple-http-server
simple-http-server -h


  • Windows support (with colored log)
  • Specify listen address (ip, port)
  • Specify running threads
  • Specify root directory
  • Pretty log
  • Nginx like directory view (directory entries, link, filesize, modfiled date)
  • Breadcrumb navigation
  • (default enabled) Guess mime type
  • (default enabled) HTTP cache control
    • Sending Last-Modified / ETag
    • Replying 304 to If-Modified-Since
  • (default enabled) Partial request
    • Accept-Ranges: bytes([ByteRangeSpec; length=1])
    • [Range, If-Range, If-Match] => [Content-Range, 206, 416]
  • (default disabled) Automatic render index page [index.html, index.htm]
  • (default disabled) Upload file
  • (default disabled) HTTP Basic Authentication (by username:password)
  • Sort by: filename, filesize, modifled
  • HTTPS support
  • Content-Encoding: gzip/deflate
  • Added CORS headers support
  • Silent mode
You can’t perform that action at this time.