Skip to content
The Pi-hole FTL engine
Branch: master
Clone or download
Latest commit aae487e Feb 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Replace arm container with arm-rpi, delete arm-rpi Jan 27, 2019
.github Sync PR template and PullApprove settings into master branch (#26) May 1, 2017
dnsmasq Clarify that the last commit was a Pi-hole specific modification Feb 5, 2019
docker Add to the list of downloaded libraries Jan 29, 2019
test Use new customizable paths for Travis' tests. Fallback to searching f… Nov 7, 2018
.gitmodules Properly track the git modules instead of ignoring Jan 11, 2018
.pullapprove.yml Sync PR template and PullApprove settings into master branch (#26) May 1, 2017
FTL.h Store next string position in shared memory settings Feb 22, 2019 Minor change to Mar 12, 2017
LICENSE Improve formating Jun 3, 2017
Makefile update broken referral link Oct 25, 2018
api.h Remove memory sub-structure Jun 23, 2018
args.c Merge pull request #430 from pi-hole/fix/no-daemon-mode Dec 14, 2018
config.c Warn if we would return a negative overTime ID + fix a small bug in c… Feb 11, 2019
daemon.c Improve warning flags for FTL Feb 15, 2019
database.c Remove OVERTIME_NOT_AVAILABLE Feb 10, 2019
dnsmasq_interface.c Fix possible issue with strdup-ing uninitialized memory in FTL_forwarded Feb 17, 2019
dnsmasq_interface_actions.c Initial commit for FTLDNS Feb 22, 2018
grep.c BLOCKING -> BLOCKING_ENABLED Aug 13, 2018
log.c Get and log PID of current process to avoid ambiguities when more tha… Feb 17, 2019
main.c Don't read and compile regex filters and whitelist entries before sta… Feb 17, 2019
memory.c Redesign overTime data structure to use a known size, avoiding the ne… Feb 10, 2019
msgpack.c Fix signedness of integer constant. This was a problem on 32bit platf… Feb 3, 2018
overTime.c Add license header to overTime.c Feb 16, 2019
regex.c Merge branch 'development' into new/shmem Sep 26, 2018
request.c Move locking/unlocking to the place where the functions that need it … Dec 25, 2018
resolve.c Ensure that lock is released when resolving host names. This is neces… Dec 25, 2018
routines.h Share the min time during query GC with overTime GC Feb 15, 2019
setupVars.c Implement name resolving power back for FTLDNS. This re-implements lo… Apr 11, 2018
shmem.c Lower shared memory version to 4 Feb 22, 2019
shmem.h Use counters to transport information about actual size of shared mem… Feb 21, 2019
socket.c Move locking/unlocking to the place where the functions that need it … Dec 25, 2018
socket_client.c Handle possible pack_fixstr or pack_str32 error Jan 21, 2018
sqlite3.c Update SQLite 3 from 3.25.0 to 3.26.0 Dec 4, 2018


Network-wide ad blocking via your own Linux hardware

FTLDNS (pihole-FTL) provides an interactive API and also generates statistics for Pi-hole®'s Web interface.

  • Fast: stats are read directly from memory by coupling our codebase closely with dnsmasq
  • Versatile: upstream changes to dnsmasq can quickly be merged in without much conflict
  • Lightweight: runs smoothly with minimal hardware and software requirements such as Raspberry Pi Zero
  • Interactive: our API can be used to interface with your projects
  • Insightful: stats normally reserved inside of dnsmasq are made available so you can see what's really happening on your network

Official documentation

The official FTLDNS documentation can be found here.


FTLDNS (pihole-FTL) is installed by default when you choose to enable the Web interface when installing Pi-hole.


FTLDNS will disable any existing installations of dnsmasq. This is because FTLDNS is dnsmasq + Pi-hole's code, so both cannot run simultaneously.

Post-install: Gain insight into your network's activity

As mentioned earlier, FTLDNS will be enabled by default when you install Pi-hole. To access the Web interface, navigate to http://pi.hole/admin or http://<IP OF YOUR PIHOLE>/admin.

Once logged in, (or authenticated to the API) you can view your network stats to see things like:

  • the domains being queried on your network
  • the time the queries were initiated
  • the amount of domains that were blocked
  • the upstream server queries were sent to
  • the type of queries (A, AAAA, CNAME, SRV, TXT, etc.)

Pi-hole is free, but powered by your support

There are many reoccurring costs involved with maintaining free, open source, and privacy respecting software; expenses which our volunteer developers pitch in to cover out-of-pocket. This is just one example of how strongly we feel about our software, as well as the importance of keeping it maintained.

Make no mistake: your support is absolutely vital to help keep us innovating!


Sending a donation using our links below is extremely helpful in offsetting a portion of our monthly expenses:

Alternative support

If you'd rather not donate (which is okay!), there are other ways you can help support us:

Contributing via GitHub

We welcome everyone to contribute to issue reports, suggest new features, and create pull requests.

If you have something to add - anything from a typo through to a whole new feature, we're happy to check it out! Just make sure to fill out our template when submitting your request; the questions that it asks will help the volunteers quickly understand what you're aiming to achieve.

Presentations about Pi-hole

Word-of-mouth continues to help our project grow immensely, and so we are helping make this easier for people.

If you are going to be presenting Pi-hole at a conference, meetup or even a school project, get in touch with us so we can hook you up with free swag to hand out to your audience!

Getting in touch with us

While we are primarily reachable on our Discourse User Forum, we can also be found on a variety of social media outlets. Please be sure to check the FAQ's before starting a new discussion, as we do not have the spare time to reply to every request for assistance.

You can’t perform that action at this time.