Pi-hole FTL v6.4, Web v6.4 and Core v6.3 Released!

Originally published at: https://pi-hole.net/blog/2025/11/27/pi-hole-ftl-v6-4-web-v6-4-and-core-v6-3-released/

As always, please read through the changelogs before updating with pihole -up

Don’t forget, you can use Teleporter to export your configuration. It can be found under the settings menu of the web interface or on the command line with pihole-FTL --teleporter

This release has also been tagged on Docker as 2025.11.1

Highlights

Performance & Optimization

  • FTL Optimizations: We’ve improved string processing, memory management, and enabled new compiler flags (such as -march=native and -funroll-loops) to make FTL faster and more efficient (#2571).
  • Reduced Locking: We’ve reduced DNS resolver locking during database interactions (#2700).

User Interface & Experience

  • TOTP Autofill: Logging in with 2FA is now smoother. The TOTP input field now supports autocomplete="one-time-code", allowing browsers and password managers to automatically suggest the code (#3658).
  • “All Time” Query Log: The “All Time” date range in the Query Log now accurately reflects the earliest timestamp in your database, giving you a true historical view (#3657#2706).
  • Optional Colour Output: The Gravity API now defaults to plain text output, only sending ANSI colour codes when explicitly requested (?color=true). This fixes issues for API consumers that don’t handle escape codes well (#2718).

API & Networking

  • Extended Hardware Addresses: The API now correctly handles hardware addresses longer than 48 bits (e.g., InfiniBand), ensuring they are displayed and managed correctly (#2724).
  • Partial Regex Matching: The search API now supports simple partial matching for regex, making it easier to find domains within your blocklists (#2705).
  • Security: We’ve added rate-limiting for TOTP validation (max 1 attempt/second) to prevent brute-force attacks on 2FA (#2719).

FTL v6.4

What’s Changed

  • Fix API specs and example for dns.upstreams in config.yaml by @rdwebdesign in #2696
  • gravity update – silently discard unicode BOM if present by @rrobgill in #2702
  • Update embedded SQLite to 3.51.0 by @DL6ER in #2704
  • Get earliest query timestamp from database by @PromoFaux in #2706
  • Increase buffer length for query string by @mwoolweaver in #2709
  • Reduce DNS resolver locking during database interaction by @DL6ER in #2700
  • Make colour output optional in streaming gravity API call by @PromoFaux in #2718
  • api/dhcp/leases Allow for hwaddr > 48 bits by @rrobgill in #2724
  • Add rate-limiting for TOTP validation by @DL6ER in #2719
  • Implement simple partial matching for regex in /api/search/{domain} by @DL6ER in #2705
  • Performance optimizations: string processing, memory management, and compiler flags by @Copilot in #2571
  • Fix authentication redirect when webhome is / (fixes #2518) by @averyvigolo in #2610
  • Reduce database locking and add timing debug setting by @DL6ER in #2688

New Contributors

Full Changelogv6.3.3…v6.4

Web v6.4

What’s Changed

  • Start using commented tags for editorconfig-checker by @yubiuser in #3643
  • Remove some unused code (leftover from v5) by @rdwebdesign in #3636
  • Make sure the table is redrawn after the dnssec API call returns by @rdwebdesign in #3645
  • Add hint that partial matching may not return all possible results by @DL6ER in #3654
  • Enable one-time code autofill for TOTP input by @sebastianlivoni in #3658
  • Set “All Time ” range for query log datepicker based on Database ranges (moment) by @PromoFaux in #3657
  • Request ANSI colour codes when calling gravity API by @PromoFaux in #3662

New Contributors

Full Changelogv6.3…v6.4

Core v6.3

What’s Changed

New Contributors

Full Changelogv6.2.2…v6.2.3

5 Likes