filepizza README

The project's README from github.com/kern/filepizza. As one markdown file: README.md.

XKCD 949 FilePizza wordmark

Peer-to-peer file transfers in your browser

Cooked up by Alex Kern & Neeraj Baid while eating Sliver @ UC Berkeley.

Using WebRTC, FilePizza eliminates the initial upload step required by other web-based file sharing services. Because data is never stored in an intermediary server, the transfer is fast, private, and secure.

A hosted instance of FilePizza is available at file.pizza.

What's new with FilePizza v2

Development

$ git clone https://github.com/kern/filepizza.git
$ pnpm install
$ pnpm dev
$ pnpm build
$ pnpm start

Running with Docker

$ pnpm docker:build
$ pnpm docker:up
$ pnpm docker:down

Stack

Configuration

The server can be customized with the following environment variables:

FAQ

How are my files sent? Your files are sent directly from your browser to the downloader's browser. They never pass through our servers. FilePizza uses WebRTC to send files. This requires that the uploader leave their browser window open until the transfer is complete.

Can multiple people download my file at once? Yes! Just send them your short or long URL.

How big can my files be? As big as your browser can handle.

What happens when I close my browser? The URLs for your files will no longer work. If a downloader has completed the transfer, that downloader will continue to seed to incomplete downloaders, but no new downloads may be initiated.

Are my files encrypted? Yes, all WebRTC communications are automatically encrypted using public-key cryptography because of DTLS. You can add an optional password to your upload for an extra layer of security.

License & Acknowledgements

FilePizza is released under the BSD 3-Clause license. A huge thanks to iblowyourdesign for the pizza illustration.

filepizza (kern/filepizza)

Searching Database…

10.3K ·GitHub
What is this?FilePizza is a free web app for peer-to-peer file transfers in your browser: pick a file, share a link, and the recipient downloads it straight from you — there's also a hosted instance at file.pizza.
How is it different from WeTransfer-style file sharing sites?There's no initial upload step: WebRTC streams the file directly from your browser to the downloader's, so data never sits on an intermediary server, which makes transfers fast, private, and secure.
How do I send someone a file?Open file.pizza (or your own instance), choose one or more files, and share the short or long URL it generates. Whoever opens the link downloads the files directly; multiple files arrive bundled as a zip.
Can I just use it in the browser, including on my phone?Yes — nothing to install and no account: both sides need only a modern browser. The v2 UI works on most mobile browsers, including Mobile Safari.
What's the catch — can I close the tab once I've shared the link?No: your browser window must stay open until the transfer completes, and closing it kills the URLs. Downloaders who already finished can keep seeding to incomplete ones, but no new downloads can start.
Can I run my own FilePizza server?Yes — it's a Next.js/TypeScript app you can run with npm or Docker Compose (the compose setup includes Redis and a coturn TURN server). Redis is optional; without it, server state falls back to in-memory storage.
Are my files encrypted in transit?Yes — all WebRTC traffic is automatically encrypted with public-key cryptography via DTLS, and you can add an optional password to an upload for extra protection.
Can several people download my file at the same time?Yes — just send the same short or long URL to everyone who needs the file; there's no one-downloader limit.
Is there a limit on file size?FilePizza sets none: files can be as big as your browser can handle, and uploading several files at once works too — downloaders receive them as a single zip.
Why might two peers fail to connect — what is TURN for?WebRTC can't always punch through strict NATs. Self-hosters can set COTURN_ENABLED=true to relay traffic through a TURN server; by default FilePizza uses Google's public STUN server.
What is FilePizza built on?The v2 stack is Next.js, React, TypeScript, and Tailwind, with PeerJS handling WebRTC, optional Redis for server state, and downloads streamed through a Service Worker.
Creator
kern
Size
8.1 MB
Stars
10.3K
Updated
CommitJan 31
Age
11y
Commits · 90 Days