4 min read

Pi-hole: Block Ads on Every Device in Your Home (GitHub, Scanned)

A DNS sinkhole for your home network that blocks ads and trackers on every device, no apps needed.

Pi-hole logo
✅
Scan: safe. Nothing malicious. The installer is a curl | bash script that re-runs itself with sudo, and the software takes over DNS for your network, so read the script first if that matters to you. Scanned Oct 26, 2026; the full report is below.

Pi-hole blocks ads for your whole network at once. It runs as a DNS server on a small Linux box, often a Raspberry Pi, and answers requests for known ad and tracking domains with nothing. Point your router at it and every phone, laptop, smart TV and games console in the house is covered, including apps where a browser extension cannot reach.

It is on this list because it has done this job well for a decade. Version 6 bundles its own web server, so the dashboard, the query log and the API come in one package, and the pihole command can do everything the web interface does. It also caches DNS, which makes everyday browsing feel a little quicker, and can act as your network's DHCP server if your router will not let you change DNS settings.

The limits: it blocks by domain, so ads served from the same domain as the content, YouTube's for example, get through. It needs a machine that stays on, and if that machine goes down, so does name lookup for the whole house unless you set a second DNS server.

  • Repository: github.com/pi-hole/pi-hole
  • Licence: custom (Other)
  • Language: Shell. Stars: 61.5K. Forks: 3,341. Last push: Oct 24, 2026.
  • Scan: safe, Oct 26, 2026, commit f503a65

Who it is for

Households and small offices that want fewer ads and trackers on every device, especially smart TVs and phones, and anyone with a Raspberry Pi or a home server.

Getting started

1. One-step install on a supported Linux system

curl -sSL https://install.pi-hole.net | bash

2. Or read the installer first: clone and run it yourself

git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole && cd "Pi-hole/automated install/" && sudo bash basic-install.sh

After installing, set your router to hand out the Pi-hole's address as the DNS server. An official Docker image is also available from the pi-hole/docker-pi-hole repository.

Safety scan

We cloned pi-hole/pi-hole at commit f503a65 on Oct 26, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secrets, no self-decoding code, no committed binaries and no bare-IP URLs in about 9,000 lines of shell.
  • The three download-piped-to-shell hits are the install method itself: a comment at the top of basic-install.sh, the line where the installer re-runs as root with sudo, and the reinstall hint in uninstall.sh. The README offers two ways to read the script before running it.
  • The installer downloads Pi-hole's FTL engine from ftl.pi-hole.net. The debug tool can upload a debug log to tricorder.pi-hole.net for support, which is the project's own server.
  • Five workflows. One, merge-conflict.yml, uses pull_request_target, but only to label pull requests with a pinned action and never checks out their code. All five third-party actions are pinned to a commit. Dependabot present; OpenSSF Scorecard 6.3 of 10.
  • No lockfile, so no dependency advisories were queried; Pi-hole is shell scripts plus packages from your distribution.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious code3 pattern hits found and read; every one is listed under the raw findings.
Install-time code1 installer script (one fetches and runs a remote script)
Committed binariesNone.
CI workflows5 workflows. 1 uses pull_request_target, none check out the pull request head. 0 of 5 third-party actions pinned to a tag rather than a commit.
Network hosts16 distinct hosts referenced from source; most often github.com, pi-hole.net, docs.pi-hole.net, stackoverflow.com. No URLs to bare IP addresses.
Known vulnerabilitiesNo lockfile to check: dependencies are declared as ranges, so what gets installed is whatever is current on the day.
Project hygieneHas automated dependency updates, licence file. Missing security policy, CodeQL, contributing guide.
OpenSSF Scorecard6.3 out of 10, as of Oct 19, 2026.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Pattern hits (3)
WhereRuleMatch
automated install/basic-install.sh:16download-piped-to-shell# curl -sSL https://install.pi-hole.net | bash
automated install/basic-install.sh:2428download-piped-to-shellexec curl -sSL https://install.pi-hole.net | sudo bash "$@"
automated install/uninstall.sh:219download-piped-to-shellReinstall at any time: ${COL_BOLD}curl -sSL https://install.pi-hole.net | bash${COL_NC}
Installer scripts (1)
Workflows worth a look

By the numbers

Stars61.5K
Forks3,341
Contributors265
Commits7,292
Open issues25
Open pull requests16
Releases127
Latest releasev6.5
Licencecustom
Main languageShell
Project age12 years
Last pushOct 24, 2026
Tracked files95
Lines of code9,342
Checkout size474 KB

Lines by language: Shell 7,858, SQL 951, Markdown 276, YAML 257.

Questions

Is Pi-hole free?

Yes. Pi-hole is free and open source under the European Union Public Licence (EUPL), and is run by volunteers funded by donations.

Does Pi-hole block YouTube ads?

Mostly not. Pi-hole blocks by domain name, and YouTube serves its ads from the same domains as its videos. A browser ad blocker handles those better.

Do I need a Raspberry Pi for Pi-hole?

No. Any always-on Linux machine or a Docker host works, including an old laptop or a small virtual machine. A Raspberry Pi is popular because it is cheap and uses little power.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.