dns.toys is a free, open source networking & connectivity project written in Go and released under MIT. It has 2,828 GitHub stars, 186 forks and 10 open issues, and was last pushed 7 months ago. On this registry it ranks #31 of 37 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is dns.toys?

dns.toys is an MIT-licensed DNS server, written in Go, that takes creative liberties with the DNS protocol to deliver everyday utilities — weather, world time, unit and currency conversion, IP lookup and more — to anyone with a terminal and a dig command.

What it is

dns.toys is a DNS server that answers ordinary DNS queries with useful data instead of addresses. It lives in the DNS ecosystem and is queried with standard resolver tooling: the README's entire interaction model is dig @dns.toys. The public instance at dns.toys acts as a shared resolver, and the same server can be run privately from the dnstoys Docker image or built from source with make build and ./dnstoys.bin.

The concrete problem it replaces is the small HTTP detour. Checking the time in Mumbai, converting 42 kilometres to miles, looking up the weather in New York, converting 100 USD to INR, spelling a large number, or finding the aerial distance between two coordinate pairs each normally requires a website, an app, or a bespoke API client. dns.toys answers all of them through the resolver that is already installed on the machine, using only the dig command that already exists. The project has 2,828 stars and 186 forks, with 10 open issues and its most recent push in February 2026.

Key capabilities

  • Responds to plain dig queries against a public resolver; dig help @dns.toys lists the available utilities.
  • World time and time-zone conversion: dig mumbai.time @dns.toys for a city's local time, and dig 2023-05-28T14:00-bengaluru-berlin/de.time @dns.toys to convert a timestamp between two cities.
  • Weather by city name: dig newyork.weather @dns.toys.
  • Unit and currency conversion through the .unit and .fx suffixes, for example dig 42km-mi.unit @dns.toys and dig 100USD-INR.fx @dns.toys.
  • Numeric, textual and identifier utilities: dig 987654321.words @dns.toys, dig 100dec-hex.base @dns.toys, dig pi @dns.toys, dig 5.16.nanoid @dns.toys, dig fun.dict @dns.toys and dig excuse @dns.toys.
  • Geolocation helpers: the caller's own address with dig ip @dns.toys, and aerial distance between two coordinates with dig A12.9352,77.6245/12.9698,77.7500.aerial @dns.toys.
  • Distributed as a Docker image named dnstoys listening on port 5354 for both TCP and UDP, configured through config.toml derived from config.sample.toml.

Who uses it and how

  • Terminal-first developers and operators who want weather, time, conversions or small lookups without leaving the shell or adding another client.
  • Anyone whose existing tooling already speaks DNS, since a query reaches the server through the same resolver path used for ordinary lookups.
  • Self-hosters running the dnstoys container with --restart unless-stopped, publishing 5354/tcp and 5354/udp on a private network.
  • Operators building from source, who must also supply the supporting datasets the build expects: cities15000.txt, the WordNet database and the IFSC data, with instructions in config.sample.toml.
  • .NET developers who prefer a typed interface, using the third-party DnsToys.NET client library for the service.

Getting started

The quickest route is docker compose up, or docker run with the dnstoys image and ports 5354/tcp and 5354/udp published. Building from source requires copying config.sample.toml to config.toml, adding cities15000.txt, the extracted WordNet directory and the IFSC data, then running make build and ./dnstoys.bin.

How it compares

No paid or self-hosted alternatives are named in the facts for this entry, so no licence, hosting or cost comparison can be drawn. The only related project listed is DnsToys.NET, a third-party .NET client library that consumes the service rather than competing with it. Within this registry, dns.toys stands alone.

When to use it — and when not to

Use it when the goal is a quick answer from a shell and DNS is an acceptable transport; the hosted instance at dns.toys removes all operational work. A self-hoster, however, must run a DNS service on both TCP and UDP port 5354, maintain config.toml, and — for a source build — source and refresh cities15000.txt, WordNet and the IFSC dataset, which is a heavier footprint than the sample commands suggest. It is a poor fit for anyone who needs a documented HTTP or JSON API, formal uptime guarantees, or a comprehensive reference: the README is a command list that defers documentation to the external site, and the Docker example shown there is abbreviated rather than copy-paste complete.

project readme (upstream, from github) — read inline

dns.toys is a DNS server that takes creative liberties with the DNS protocol to offer handy utilities and services that are easily accessible via the command line.

For docs, visit www.dns.toys

Sample commands

dig help @dns.toys

dig mumbai.time @dns.toys

dig 2023-05-28T14:00-bengaluru-berlin/de.time @dns.toys

dig newyork.weather @dns.toys

dig 42km-mi.unit @dns.toys

dig 100USD-INR.fx @dns.toys

dig ip @dns.toys

dig 987654321.words @dns.toys

dig pi @dns.toys

dig 100dec-hex.base @dns.toys

dig fun.dict @dns.toys

dig excuse @dns.toys

dig A12.9352,77.6245/12.9698,77.7500.aerial @dns.toys

dig 5.16.nanoid @dns.toys 

Running locally

Docker

docker run name dnstoys --restart unless-stopped -p 5354:5354/tcp -p 5354:5354/udp

Or using docker compose:

docker compose up

From source

  • Clone the repo
  • Copy config.sample.toml to config.toml and edit the config
  • Make sure you have a copy of the cities15000.txt file at the root of this directory (instructions are in the config.sample.toml file)
  • Make sure to download the wordnet from Wordnet website.(more instructions are in the config.sample.toml file)
  • Extract the tarball and rename extracted the directory to wordnet
  • Make sure to fetch the IFSC data (instructions are in the config.sample.toml file).
  • Run make build to build the binary and then run ./dnstoys.bin
  • Query against the locally running server
    dig <query> +short @127.0.0.1 -p 5354

Others

Frequently asked questions

Is dns.toys free to use?

dns.toys is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dns.toys do?

A DNS server that offers useful utilities and services over the DNS protocol. Weather, world time, unit conversion etc.

What is dns.toys written in?

dns.toys is primarily written in Go. Its source is publicly available at https://github.com/knadh/dns.toys, and it has 2,828 GitHub stars.