$ peekd ~/Downloads -addr :9000

A folder becomes a website.

peekd is a single Go binary that turns any local directory into a fast, browsable HTTP server — with real previews for Markdown, code, images, and more. No config, no dependencies.

127.0.0.1:8090
README.md
4.1 KB
docs/
internal/
main.go
2.3 KB
install.sh
1.0 KB
go.mod
312 B
↓ ZIP

Built for looking, not just listing

Every directory is a preview surface — point peekd at it and browse it like a real page.

Rich previews

Markdown (with Mermaid diagrams), HTML, XML, code, CSV/TSV, images, audio, video, PDF, and ZIP/TAR listings — rendered in the browser, not just linked.

Fast, resumable transfers

Direct file serving with HTTP range and sendfile support. Interrupted downloads pick up where they left off with curl -C -.

One binary, zero setup

A single lightweight executable with automatic dark mode and optional HTTP basic authentication. Nothing to install alongside it.

Every flag

The whole surface area of peekd, in the same form you'll actually use it.

-addr :9000Change the bind address (auto-tries the next port if occupied)
-max-preview-size 8MCap the size of Markdown and text previews (accepts 4M, 512K, 4MiB, or raw bytes)
-versionPrint version information

Install

Two ways to get it — a install script, or straight from Go.

curl -fsSL https://raw.githubusercontent.com/jiacai2050/peekd/main/install.sh | sh

Usage

A few real sessions, plus what you can do once a directory is open in the browser.

Query string, appended to any directory or file URL

?download=zipDownload any directory as a ZIP archive, generated on the fly
?raw=1Force the original file response instead of a preview

Optional authentication, set as environment variables

PEEKD_AUTH_USER / PASSWORDSet both to protect the server with HTTP Basic Authentication — peekd refuses to start if only one is set
$ peekdServing . at http://127.0.0.1:8090 $ peekd ~/Downloads -addr :9000Serving ~/Downloads at http://127.0.0.1:9000 $ curl -O http://127.0.0.1:8090/my-folder/?download=zipDownloading my-folder.zip … $ PEEKD_AUTH_USER=admin PEEKD_AUTH_PASSWORD=secret peekdServing . at http://127.0.0.1:8090 (basic auth enabled)