DuckDNS
www.duckdns.org/spec.jspFree dynamic subdomaindomains-dns/duckdnsJSONcomparereport an errorprovider JSON
- Free allowance
- Subdomains under duckdns.org with a token API, IPv4, IPv6 and TXT support
- Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- emailno card, no phone
- Binding limit
- per-object-capabout 5 subdomains, a third-party figure; DuckDNS publishes no number
- Evidence
- measured5 sources; a live request was made and its output kept
- Freshness
- stale on 2027-02-01checked 2026-11-02 (live); stale on 2027-02-01
| Free tier | subdomains under duckdns.org with a token API, IPv4, IPv6 and TXT support unit unlimited; metered on none |
|---|
| Price | none stated |
|---|
| Limits | - per-object-cap (binding) about 5 subdomains, a third-party figure; DuckDNS publishes no number source
|
|---|
| Identity | email Google, GitHub or Reddit OAuth |
|---|
| Egress | no query cap published |
|---|
| Per-object cap | the number of subdomains per account is about 5, a third-party figure; DuckDNS publishes no number |
|---|
| Retention | a record persists until updated or cleared with clear=true, provided the account is used |
|---|
| Interface | rest a single HTTPS GET per update; the token is a query parameter |
|---|
| Tooling | curl, any DDNS client, a router's built-in DuckDNS provider |
|---|
| Composes with | a name for a home IP or a tunnel endpoint, and nothing else: no certificate automation and no proxying |
|---|
| Reliability | a bad token returns HTTP 200 with the body KO, so a status-only check reports success on a failed update |
|---|
| Notes | A DuckDNS name cannot be a Cloudflare zone, so it cannot carry a Tunnel, Email Routing or Universal SSL. It is a dynamic-DNS tool, not a name a service can live on. |
|---|
| Evidence note | measured the update endpoint was called today with an empty token and answered 200 KO, which proves both the endpoint and the failure shape. The subdomain cap is third-party. |
|---|
| Parsed numbers | |
|---|
Evidence 5
| date | source | what it proved |
|---|
| 2026-10-22 | probe: https://www.duckdns.org/update?domains=example&token=&ip= | 200 with a two-byte body 'KO'. A 200 is not success; the rejection is in the body |
| 2026-10-22 | www.duckdns.org/spec.jsp | the update URL, IPv4 and IPv6 parameters, the TXT form, and clear=true to delete records; a TXT record applies to all sub-subdomains under the name |
| 2026-11-02 | www.duckdns.org/spec.jsp | the update is a single HTTPS GET to DuckDNS |
| 2026-11-02 | www.duckdns.org/spec.jsp | clear=true makes the update call clear the IPv4 and IPv6 values of the named subnames instead of setting them |
| 2026-11-02 | www.duckdns.org/spec.jsp | the update call is a GET to duckdns.org/update with the subnames and the account token as query parameters |