Fast & Lightweight
A single-threaded, non-blocking event loop keeps memory and CPU use low while handling many connections.
Polipo is a fast, low-resource HTTP web proxy server with built-in caching. It reduces repeat downloads, saves bandwidth and speeds up plain HTTP access with a simple, efficient and reliable design.
A lightweight caching HTTP web proxy server designed for efficiency and simplicity.

Polipo sits between your clients and the web, caching frequently requested resources to deliver faster responses, reduce bandwidth usage and improve overall web performance. Written in C by Juliusz Chroboczek, it handles many connections with one non-blocking event loop.
It speaks HTTP/1.1, can forward through HTTP or SOCKS parent proxies and offers a tiny local web interface. The official repository is now archived, so it is best suited to learning, labs and private setups.
Essential capabilities for a fast, efficient and dependable web proxy.
A single-threaded, non-blocking event loop keeps memory and CPU use low while handling many connections.
Stores cacheable HTTP responses on disk and revalidates stale objects instead of downloading them again.
A short text configuration file and sensible defaults make it easy to start, test and adjust.
Understands persistent connections and can pipeline requests to servers that support it.
Forwards traffic through an upstream HTTP proxy or a SOCKS proxy using parentProxy or socksParentProxy.
Keeps incomplete downloads and finishes them later using HTTP range requests where servers allow.
A simple, efficient flow that caches web content and serves it faster to your clients.
Your browser or tool sends an HTTP request to the proxy on port 8123 instead of straight to the website.
A fresh copy is a cache hit; a missing or stale copy is a cache miss that needs the origin server.
Hits are served locally at once; misses are fetched, returned and stored for next time if allowed.
Why use Polipo for your web access and network efficiency.
What you need to build and run the proxy, described without invented version numbers.
Practical situations where a compact caching proxy still earns its place.
Share one cache between household devices so repeated plain HTTP downloads come from the local machine instead of the internet connection.
Speed up repeated HTTP fetches in classrooms or labs.
Study a compact, readable C codebase for an HTTP cache.
Let HTTP-only tools use a SOCKS proxy you control.
Reuse cached objects and browse cached pages offline.
Get Polipo running in minutes with a simple installation and a straightforward configuration file.
Install the distribution package if available, or clone the repository.
Run make all and make install for a source build.
Set the address, port and cache directory.
Launch the proxy and point clients at port 8123.
# Install (Debian-based example)
$ sudo apt install polipo
# Or build from source
$ git clone https://github.com/jech/polipo.git
$ cd polipo && make all && sudo make install
# Minimal configuration (/etc/polipo/config)
proxyAddress = "127.0.0.1"
proxyPort = 8123
diskCacheRoot = "/var/cache/polipo/"
Package names and file paths vary by distribution. See the full installation guide.
Get the source code from the author's repository and build it on your Unix-like system.

The repository contains the C source, INSTALL notes and the texinfo manual. Download the ZIP, extract it, then build with make. The project is archived, so no new releases are expected.
Download PolipoSensible habits for running legacy proxy software on a network you care about.
Clone the code from the author's GitHub repository or use your distribution's package, not unknown mirrors.
Keep proxyAddress on localhost or restrict allowedClients to networks you control.
Use a dedicated account and a high port such as the default 8123.
Cached HTTP content stays on disk; restrict the folder and expire it regularly.
The project is archived, so a maintained operating system around it matters even more.
Set disableConfiguration so others cannot change settings via the local interface.
Where the code comes from and what its current project status means for you.
Code, INSTALL notes and the manual live in the author's repository.
Free to use, modify and redistribute with the notice.
No new official releases or fixes are expected.
Availability and versions depend on your distribution.
Quick fixes for the problems people run into most often.
Another program may be using port 8123, or the config has a typo. Check with ss -ltnp and change proxyPort if needed.
Match the client's proxy settings to proxyAddress and proxyPort, and add the client to allowedClients.
Make sure diskCacheRoot exists and is writable. HTTPS pages are never cached.
Confirm port 443 is allowed for tunnelling with tunnelAllowedPorts and test the site without the proxy.
Name resolution may be slow. Test DNS on the machine and set dnsNameServer if required.
Check that the upstream HTTP or SOCKS proxy is running and the type setting matches it.
Quick answers to common questions about Polipo.
Polipo is a caching HTTP web proxy. It forwards requests from browsers and other clients, keeps copies of cacheable responses and serves them again to speed up repeated plain HTTP requests.
Polipo was written by Juliusz Chroboczek. The source code is published in the project's GitHub repository.
Yes. The source code is released under the MIT license, which allows use, modification and redistribution with the license notice.
No. The official repository is archived and its README states that the project is no longer maintained, so treat it as legacy software.
When a client requests a resource, the proxy checks for a fresh copy. Fresh copies are served locally, stale ones are revalidated with the server, and missing ones are fetched and stored when HTTP headers allow it.
No. HTTPS traffic is encrypted, so the proxy tunnels it with the CONNECT method without caching it. Caching applies to plain HTTP resources.
Yes. It uses a single-threaded, non-blocking design that keeps memory and CPU use modest, which suits small servers and older hardware.
In Italian, polipo usually means octopus and can also mean polyp. The software uses the word as its name.
It can refuse URLs that match patterns listed in a file set with the forbiddenFile option. For advanced filtering, dedicated filtering proxies are more suitable.
No. Squid is a full-featured, maintained caching proxy and Privoxy is a filtering proxy. Polipo is a compact caching proxy that is no longer maintained.
Install it from your distribution's package if available or build it from the GitHub source with make, create a short configuration file, start it and point your client at port 8123.
The default proxyPort is 8123. You can change it in the configuration file or on the command line.
A system-wide file is commonly read from /etc/polipo/config and a per-user file from ~/.polipo. You can also pass any file with the -c option.
Set proxyAddress to a LAN or wildcard address and list trusted networks in allowedClients. Keep a firewall rule so only your network can reach the port.
The diskCacheRoot option sets the cache directory, commonly /var/cache/polipo/ on packaged installs. It must be writable by the proxy's user.
Run polipo -x to perform an expiry pass, or stop the proxy and delete files in the cache directory. Many people schedule the expiry run with cron.
Yes. Set socksParentProxy to the SOCKS host and port and socksProxyType to socks5 or socks4a. Modern Tor Browser does not need this layer.
Check that the browser uses the same address and port as the configuration, that your device is listed in allowedClients and that no firewall blocks the port.
Yes. A small local interface is available under /polipo/ at the proxy address. It can be restricted with options such as disableConfiguration.
It is written in C and is designed for Unix-like systems such as Linux and the BSDs. Building from source requires a C compiler and make.