← All open source projects

Pi-hole

pi-hole/pi-hole

Pi-hole is a DNS filter for blocking ads and unwanted domains across a whole network.

Forks 3,229
Author pi-hole
Language Shell
License NOASSERTION
Synced 2026-06-27

What it is

Pi-hole is a network-level DNS filter that blocks ads, trackers, and unwanted domains before devices load related content. It is often run on a home server, Raspberry Pi, or small Linux host.

The idea is to filter the whole network through DNS rather than each browser separately. Phones, TVs, apps, and browsers can benefit without per-device extensions.

How filtering works

Devices send DNS queries to Pi-hole. If a domain is on a blocklist, Pi-hole does not return the real address. If it is allowed, the query goes to the upstream DNS server.

This works well for ad and tracking domains, but it is not universal. If ads share the main content domain, DNS cannot separate them precisely.

DNS filtering flow

This sketch shows the request path: a device asks Pi-hole, which blocks or forwards the query.

Language: Plain text
phone or laptop
  -> DNS query: ads.example.net
  -> Pi-hole blocklist check
  -> blocked response

browser
  -> DNS query: legost.in
  -> allowed upstream DNS
  -> real address

What is inside

The repository contains the installer, command-line interface, documentation, contribution material, and integration with Pi-hole FTL components.

Pi-hole is often a first home network service, and it reveals how many third-party domains ordinary devices contact.

Practical context

After installing Pi-hole, the real work starts with logs and allow rules. The network gets quieter, but some domains need manual allowance when an app uses the same domain for wanted and unwanted features.

Strengths and limits

The main strength is network coverage. One service can improve many devices without per-app setup.

The limit is DNS-level bluntness. Some blocking breaks app features, and some ads cannot be separated by domain. Lists, allow rules, and logs matter.