Skip to main content

A temporary dependency-free static HTTP server with byte-range support.

Project description

static-http

static-http is a tiny dependency-free Python utility that starts a temporary static HTTP server in the current directory with byte-range support for quick local workflows.

It is intentionally focused on temporary file serving for local development, manual testing, media playback, and archive inspection.

Why this exists

python -m http.server is excellent for quick sharing but does not implement byte-range request handling. static-http fills that gap with a small CLI that keeps the behavior predictable and easy to reason about.

Install

uvx static-http
pipx run static-http
python -m pip install static-http

Quick start

static-http
uvx static-http

By default:

  • Serves the current working directory.
  • Binds to 0.0.0.0.
  • Listens on port 8080.
  • Uses a threaded HTTP server.
  • Handles GET, HEAD, and single-range requests.

CLI

static-http supports these options:

  • -p, --port PORT — listening port. 0 requests an OS-assigned port.
  • -d, --directory PATH — root directory to serve. Default is the current directory.
  • -b, --bind ADDRESS — bind address. Default is 0.0.0.0.
  • --localhost-only — equivalent to --bind 127.0.0.1.
  • --cors — adds Access-Control-Allow-Origin: *.
  • --header "Name: Value" — repeatable custom headers.
  • --no-dir-list — disable directory listing responses when no index file exists.
  • --open — open the server URL in the default browser after startup.
  • --qr — render a terminal QR code for the server URL.
  • --no-cache — send Cache-Control: no-store.
  • --quiet — suppress per-request logs.
  • --verbose — print detailed startup/binding information.
  • --include-hidden — include dot-prefixed files and directories in normal serving and directory listings.
  • --version — print package version and exit.

Examples

static-http --open
static-http --qr
static-http --no-cache
static-http --quiet
static-http --verbose
static-http --include-hidden
static-http --port 9000 --cors
static-http --no-dir-list

Shutdown

Press Q or q in the focused terminal to stop the server. Ctrl+C also triggers a graceful shutdown.

Range support

GET requests support single byte ranges with examples:

curl -H "Range: bytes=0-99" http://localhost:8080/video.mp4 -o part.bin
curl -H "Range: bytes=100-" http://localhost:8080/video.mp4 -o tail.bin
curl -H "Range: bytes=-500" http://localhost:8080/video.mp4 -o suffix.bin

The server returns 206 Partial Content for satisfiable ranges, 416 Range Not Satisfiable when the range is outside the file, and 400 Bad Request for invalid range syntax.

Security note

static-http is intentionally a temporary local development/file-serving tool, not a production web server.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

static_http-0.1.4.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

static_http-0.1.4-py3-none-any.whl (16.0 kB view details)

Uploaded Python 3

File details

Details for the file static_http-0.1.4.tar.gz.

File metadata

  • Download URL: static_http-0.1.4.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for static_http-0.1.4.tar.gz
Algorithm Hash digest
SHA256 96f484f7604d0ae7c99611c9aa655a14692c8e4b9f6b1aa6af9a38d860ecd2a2
MD5 0c1762de29e1a3c703bd4de7aa39817d
BLAKE2b-256 cd4dc73ac6610c05de22c2a95f765890722fc9c4f9df42029ea0e7868fe47100

See more details on using hashes here.

Provenance

The following attestation bundles were made for static_http-0.1.4.tar.gz:

Publisher: release.yml on pseudosavant/static-http

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file static_http-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: static_http-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 16.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for static_http-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 85485f5aa74332dc2a1c54b2af2a78cdc43e5cc8edda537d321e453cb14c3836
MD5 2701fc8d8a551d35f7fcd78f81b84224
BLAKE2b-256 d2a90492c70b724961dd6db9527638c0c48cc9194aeea5d4b9f4d3d7b74d842d

See more details on using hashes here.

Provenance

The following attestation bundles were made for static_http-0.1.4-py3-none-any.whl:

Publisher: release.yml on pseudosavant/static-http

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page