DNS Documentation
Architecture, privacy model, caching layers, pacing mechanics, and a full variant reference for the v.recipes DNS service.
Domain Migration: 0ms.dev → v.recipes
We have migrated from 0ms.dev to v.recipes. All existing endpoints on 0ms.dev continue to work and redirect automatically, but we recommend updating your configuration to use the new domain at your earliest convenience.
How We Got Here
v.recipes DNS started as an internal experiment — a DNS-over-HTTPS proxy built on Cloudflare Workers to see how far we could push edge-computed DNS. The project grew out of frustration with traditional resolvers that either logged queries, lacked modern transport support, or buckled under bursty traffic.
We released it publicly in 2024 under the domain 0ms.dev, and later transitioned to v.recipes as the service expanded. What began as a single unfiltered endpoint now spans eight variants, each tuned for a different use case.
Why Consider Another DNS Resolver?
Most users rely on whatever DNS resolver their ISP assigns by default. These resolvers are often unencrypted, may log queries, and can inject or redirect results. Even popular public resolvers like Google DNS or Cloudflare 1.1.1.1 have trade-offs — rate limits, lack of ECS support in certain configurations, or suboptimal routing for some regions.
v.recipes addresses these gaps with a layered caching architecture, per-request pacing to prevent upstream congestion, and a strict no-logging policy. If you care about DNS privacy, performance under load, or need a resolver that works well from regions with restrictive networks, v.recipes is designed for you.
Logging and Privacy
v.recipes does not log DNS queries. We do not record the domains you resolve, the IP addresses you connect from, or any metadata that could be used to reconstruct your browsing history.
Aggregate, anonymised metrics (total query counts, cache hit ratios, latency percentiles) are collected for operational monitoring. These metrics contain no personally identifiable information and cannot be tied back to individual users or sessions.
Our full privacy practices are described in the Privacy Policy.
Anycast Network
v.recipes is deployed on Cloudflare's global anycast network, spanning 300+ data centres across 100+ countries. When you send a DNS query to v.recipes, it is routed by BGP to the nearest Cloudflare PoP — typically within a few milliseconds of your location.
This means there is no single point of failure and no need to "choose a server." The network handles failover and load-balancing automatically. Whether you are in Jakarta, Berlin, or Sao Paulo, your query hits a nearby edge.
Cache Efficiency
v.recipes uses a multi-layer caching strategy to minimise upstream queries and deliver the fastest possible response times.
- L1 Cache (Edge) — Each Cloudflare Worker maintains an in-memory cache scoped to the individual isolate. Hot queries are answered directly from memory with sub-millisecond overhead.
- L2 Cache (Regional) — Backed by Cloudflare's Cache API, the L2 layer shares cached responses across all Workers in the same data centre. This dramatically reduces upstream lookups for popular domains.
- Upstream DNS — On a cache miss at both layers, the query is forwarded to the configured upstream resolver (e.g., Cloudflare 1.1.1.1, Google DNS). The response is then stored in both L1 and L2 for subsequent requests.
This architecture achieves cache hit rates above 90% for most deployments, meaning the vast majority of queries never leave the edge.
The Role of AI/ML
v.recipes integrates lightweight machine-learning models at the edge to improve DNS outcomes without adding latency. Current applications include:
- Malicious Domain Detection — A compact classifier trained on known-bad domain patterns identifies suspicious queries in real time. This supplements upstream blocklists with heuristic detection of newly-registered or algorithmically-generated domains (DGAs).
- Predictive Prefetching — By analysing aggregate query patterns, the system can proactively refresh cache entries for domains likely to be requested soon, reducing cold-cache latency for popular sites.
- Adaptive Pacing Tuning — The per-request pacing parameters are periodically adjusted based on observed upstream latency and error rates, ensuring optimal throughput without triggering provider rate limits.
All inference runs within the Cloudflare Worker — no data leaves the edge for ML processing.
Per-Request Pacing
DNS providers like Google Public DNS impose rate limits — typically around 1,500 queries per second per source IP. When multiple users share the same proxy or resolver, it is easy to exceed these limits, resulting in dropped queries and degraded reliability for everyone.
v.recipes solves this with per-request pacing: a token-bucket rate limiter applied at the individual request level before any query is forwarded upstream. The default ceiling is 1,000 requests per second per upstream provider.
How it works
- Each incoming DNS query is assigned a pacing token from a shared bucket (capacity: 1,000 tokens, refill rate: 1,000/s).
- If a token is available, the query proceeds immediately to the upstream resolver with zero added latency.
- If the bucket is empty, the query enters a short wait queue (typically <5 ms) until a token becomes available.
- Queries that cannot be served within the wait window receive a cached stale response (if available) or a SERVFAIL, ensuring the upstream provider is never overwhelmed.
The result is a consistent, predictable query rate that stays well within upstream provider limits — even under heavy load. Individual users experience minimal or no added latency because the vast majority of queries are served from cache before pacing is even relevant.
The ECS Optimized variant is a practical example: Google Public DNS enforces a 1,500 QPS cap, but v.recipes' caching layer absorbs the bulk of traffic, and pacing ensures the remaining upstream queries never trip the limit.
Suitable for Networks of All Sizes
Whether you are configuring DNS for a single device, a home network, a small business, or a large enterprise deployment, v.recipes scales automatically. The anycast network, multi-layer cache, and per-request pacing work together to deliver consistent performance regardless of query volume.
- Single device — Point your system DNS to v.recipes via DoH for encrypted, private resolution.
- Home network — Configure your router to use v.recipes as the upstream resolver for all connected devices.
- Enterprise / ISP — Use the Accelerator or Multiqueue variants for high-throughput deployments with custom upstream selection.
Which Variant Should You Use?
All variants use DNS-over-HTTPS (DoH) and share the same caching and pacing infrastructure. Choose based on your filtering needs, upstream preference, or network environment.
Unfiltered
DefaultDefault resolver with per-request pacing. No content filtering applied.
Upstream: Cloudflare 1.1.1.1
https://v.recipes/dns-querySecurity
Malware and phishing domains are blocked at the resolver level.
Upstream: Cloudflare 1.1.1.2
https://v.recipes/dns-securityAdblock
Ad-blocking DNS ideal for restricted environments where browser extensions are unavailable.
Upstream: Cloudflare 1.1.1.2 + custom lists
https://v.recipes/dns-adblockECS Optimized
PerformanceECS (EDNS Client Subnet) support for CDN-optimized routing. Bypasses the default 1500 QPS cap imposed by Google.
Upstream: Google 8.8.8.8
https://v.recipes/dns-ecsCN Optimized
Recommended for users in mainland China. Routes through a Hong Kong upstream for better reachability.
Upstream: DOH.SB (Hong Kong)
https://v.recipes/dns-cnDNS64 Unfiltered
Synthesises AAAA records for IPv4-only domains, enabling connectivity on IPv6-only networks.
Upstream: Cloudflare 1.1.1.1
https://v.recipes/dns64Accelerator
Bring-your-own-upstream mode. Replace (provider) with any DoH endpoint URL to add pacing and caching in front of it.
Upstream: User-specified DoH provider
https://v.recipes/dns/(provider)Multiqueue
AdvancedFans the query out to multiple upstream providers simultaneously and returns the fastest response.
Upstream: Multiple DoH providers
https://v.recipes/mq/(providers)