Blocky is a DNS proxy and ad-blocker for local networks written in Go.
Blocky solves the problem of unwanted DNS queries reaching external services by intercepting and filtering DNS traffic at the network level. It maintains external blocklists for ads and malware, applies them selectively to client groups, and supports regex-based rules. The tool blocks queries by domain name, CNAME responses, and IP addresses. Beyond blocking, it offers advanced DNS features including custom domain resolution, conditional forwarding to external resolvers, and per-client-group upstream resolver configuration. Performance is improved through customizable DNS answer caching, prefetching of frequently queried domains, and parallel resolution using multiple external resolvers simultaneously.
Blocky suits self-hosted deployments on resource-constrained hardware such as Raspberry Pi and OpenWrt routers, as well as homelab and small business networks seeking privacy-focused DNS filtering without external data collection. It runs as a stateless single binary with no database or temporary files required. The tool supports modern DNS protocols including DNS over HTTPS, TLS, QUIC, and HTTP/3, making it suitable for environments prioritizing secure communication. For those comparing alternatives, the README does not name other projects. Blocky integrates with monitoring and logging infrastructure through Prometheus metrics, Grafana dashboards, and optional database logging to MySQL, MariaDB, PostgreSQL, or Timescale. A REST API and CLI tool enable programmatic interaction and automation.
Development activity shows consistent engagement with pull request review and bug fixes. The project maintains active support across multiple architectures and provides a community-supported Helm chart for Kubernetes deployments. The maintainer emphasizes that Blocky collects no telemetry, user data, or statistics, and operates independently without hidden filtering.