Polipo: Lightweight Caching Proxy for Efficient Web Requests

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.

  • Lightweight
  • Cache-enabled
  • Low resource usage
  • Easy to set up
Polipo caching proxy server box connected to a browser window, speed gauge and cloud

What Is Polipo?

A lightweight caching HTTP web proxy server designed for efficiency and simplicity.

What is Polipo illustration with layered browser windows representing cached web pages

A small proxy that remembers what it fetched

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.

LanguageC
LicenseMIT
DesignSingle-threaded
StatusArchived

Key Features

Essential capabilities for a fast, efficient and dependable web proxy.

Fast & Lightweight

A single-threaded, non-blocking event loop keeps memory and CPU use low while handling many connections.

Smart Caching

Stores cacheable HTTP responses on disk and revalidates stale objects instead of downloading them again.

Simple & Reliable

A short text configuration file and sensible defaults make it easy to start, test and adjust.

HTTP/1.1 Pipelining

Understands persistent connections and can pipeline requests to servers that support it.

Parent Proxy Support

Forwards traffic through an upstream HTTP proxy or a SOCKS proxy using parentProxy or socksParentProxy.

Partial Objects

Keeps incomplete downloads and finishes them later using HTTP range requests where servers allow.

How It Works

A simple, efficient flow that caches web content and serves it faster to your clients.

How Polipo works: the client sends HTTP requests to the Polipo caching proxy, which fetches cache misses from web servers and returns cache hits fast

Client sends a request

Your browser or tool sends an HTTP request to the proxy on port 8123 instead of straight to the website.

Polipo checks its cache

A fresh copy is a cache hit; a missing or stale copy is a cache miss that needs the origin server.

Fast or fetched response

Hits are served locally at once; misses are fetched, returned and stored for next time if allowed.

Benefits

Why use Polipo for your web access and network efficiency.

Faster web accessRepeat HTTP requests load locally
Lower bandwidth costFewer duplicate downloads
Reduced server loadRevalidation instead of refetching
Low-resource friendlyRuns well on small hardware

Compatibility & Requirements

What you need to build and run the proxy, described without invented version numbers.

Operating systems
Designed for Unix-like systems such as Linux distributions and the BSDs.
Language & build
Written in C; building from source needs a C compiler and make.
Hardware
Very modest memory and CPU needs thanks to its single-threaded design.
Protocols
HTTP/1.0 and HTTP/1.1 clients; HTTPS is tunnelled with CONNECT, not cached.
Upstream options
Optional HTTP parent proxy or SOCKS4a/SOCKS5 parent proxy.
Packages
Some distributions have shipped a polipo package; availability varies by release.

Use Cases

Practical situations where a compact caching proxy still earns its place.

Home network caching

Share one cache between household devices so repeated plain HTTP downloads come from the local machine instead of the internet connection.

Lab and test environments

Speed up repeated HTTP fetches in classrooms or labs.

Learning proxy internals

Study a compact, readable C codebase for an HTTP cache.

HTTP front end for SOCKS

Let HTTP-only tools use a SOCKS proxy you control.

Slow or unreliable links

Reuse cached objects and browse cached pages offline.

Setup & Configuration

Get Polipo running in minutes with a simple installation and a straightforward configuration file.

  • Get the source or package

    Install the distribution package if available, or clone the repository.

  • Build with make

    Run make all and make install for a source build.

  • Write a short config

    Set the address, port and cache directory.

  • Start and connect

    Launch the proxy and point clients at port 8123.

terminal
# 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.

Download Polipo

Get the source code from the author's repository and build it on your Unix-like system.

Polipo download illustration showing the Polipo caching proxy box

Polipo source ZIP

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.

  • Unix-like systems
  • MIT license
  • Build from source
Download Polipo

Safety & Download Information

Sensible habits for running legacy proxy software on a network you care about.

Use the official source

Clone the code from the author's GitHub repository or use your distribution's package, not unknown mirrors.

Bind to trusted clients

Keep proxyAddress on localhost or restrict allowedClients to networks you control.

Run without root

Use a dedicated account and a high port such as the default 8123.

Mind the cached data

Cached HTTP content stays on disk; restrict the folder and expire it regularly.

Keep the system updated

The project is archived, so a maintained operating system around it matters even more.

Disable remote configuration

Set disableConfiguration so others cannot change settings via the local interface.

Release & Version Information

Where the code comes from and what its current project status means for you.

Source on GitHub

Code, INSTALL notes and the manual live in the author's repository.

MIT license

Free to use, modify and redistribute with the notice.

Archived repository

No new official releases or fixes are expected.

Distribution packages

Availability and versions depend on your distribution.

Troubleshooting

Quick fixes for the problems people run into most often.

Proxy will not start

Another program may be using port 8123, or the config has a typo. Check with ss -ltnp and change proxyPort if needed.

Connection refused

Match the client's proxy settings to proxyAddress and proxyPort, and add the client to allowedClients.

Nothing gets cached

Make sure diskCacheRoot exists and is writable. HTTPS pages are never cached.

HTTPS sites fail

Confirm port 443 is allowed for tunnelling with tunnelAllowedPorts and test the site without the proxy.

Slow first requests

Name resolution may be slow. Test DNS on the machine and set dnsNameServer if required.

Parent proxy errors

Check that the upstream HTTP or SOCKS proxy is running and the type setting matches it.

FAQ

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.