{
  "updated": "2026-08-21",
  "note": "Forever-free means no registration fee. You do not get a leftover .com. Freenom (.tk/.cf/.gq/.ga/.ml free regs) ended in 2024. Year-1 cheap TLDs are not $0 forever. Rechecked 2026-08-21.",
  "programs": [
    {
      "id": "eu-org",
      "name": "EU.org",
      "suffix": "eu.org",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone; aimed at people and nonprofits who cannot pay a NIC",
      "how": "Request at nic.eu.org. Approval often takes about two weeks. Not the European Union. Site still live 21 Aug 2026.",
      "url": "https://nic.eu.org/",
      "check": null
    },
    {
      "id": "is-a-dev",
      "name": "is-a.dev",
      "suffix": "is-a.dev",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Developers with a GitHub account",
      "how": "Open a pull request on is-a-dev/register. Repo was merging PRs 20 Aug 2026. They also launched .is-a.bot — same GitHub org, separate claim.",
      "url": "https://is-a.dev/",
      "check": "https://raw.githubusercontent.com/is-a-dev/register/main/domains/{slug}.json"
    },
    {
      "id": "thedev-id",
      "name": "thedev.id",
      "suffix": "thedev.id",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Developers who want a personal identity hostname",
      "how": "Fork thedev.id, add a CNAME file for your slug, open a pull request. thedev.id now redirects to upset.dev/thedev.id; GitHub repo still unarchived.",
      "url": "https://thedev.id/",
      "check": null
    },
    {
      "id": "is-a-good-dev",
      "name": "is-a-good.dev",
      "suffix": "is-a-good.dev",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Developers; community-run, similar to is-a.dev",
      "how": "PR on is-a-good-dev/register. Repo was merging PRs as of 19 Aug 2026 — it is live.",
      "url": "https://is-a-good.dev/",
      "check": null
    },
    {
      "id": "js-org",
      "name": "js.org",
      "suffix": "js.org",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "JavaScript projects only — they turned down personal blogs",
      "how": "Pull request on js-org/js.org. Need a real JS project. Repo was merging PRs 19 Aug 2026.",
      "url": "https://js.org/",
      "check": null
    },
    {
      "id": "github-pages",
      "name": "GitHub Pages",
      "suffix": "github.io",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone with a free GitHub account",
      "how": "Create a repo named youruser.github.io. That is this site's host.",
      "url": "https://pages.github.com/",
      "check": "https://github.com/{slug}"
    },
    {
      "id": "pages-dev",
      "name": "Cloudflare Pages",
      "suffix": "pages.dev",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone with a Cloudflare account",
      "how": "Deploy a Pages project. You get project.pages.dev. Not a TLD you own. Marketing URL redirects to cloudflare.com/products/pages.",
      "url": "https://pages.cloudflare.com/",
      "check": null
    },
    {
      "id": "netlify",
      "name": "Netlify",
      "suffix": "netlify.app",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone; bandwidth limits on free tier",
      "how": "Deploy a site, pick a subdomain in the Netlify UI.",
      "url": "https://www.netlify.com/",
      "check": null
    },
    {
      "id": "freedns",
      "name": "FreeDNS (afraid.org)",
      "suffix": "many shared domains",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone; public shared domains get a random-looking host",
      "how": "Sign up at freedns.afraid.org and claim a subdomain on a shared domain. Site still live 21 Aug 2026.",
      "url": "https://freedns.afraid.org/",
      "check": null
    },
    {
      "id": "duckdns",
      "name": "DuckDNS",
      "suffix": "duckdns.org",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone who needs a stable hostname for a changing IP",
      "how": "Log in with GitHub/Google and claim you.duckdns.org. Dynamic DNS, not a personal brand.",
      "url": "https://www.duckdns.org/",
      "check": null
    },
    {
      "id": "cloudns",
      "name": "ClouDNS free zone",
      "suffix": "cloudns.org / .biz / .info / .us / .eu / .in",
      "kind": "forever-free",
      "cost": "$0 forever",
      "who": "Anyone who wants a hostname plus DNS records",
      "how": "Create a free account, add a Free Zone, pick a hostname on their shared suffixes. Wiki article/31 still 200.",
      "url": "https://www.cloudns.net/wiki/article/31/",
      "check": null
    },
    {
      "id": "pp-ua",
      "name": "pp.ua",
      "suffix": "pp.ua",
      "kind": "forever-free",
      "cost": "$0",
      "who": "Anyone who can complete their form",
      "how": "pp.ua still serves the signup pages (21 Aug 2026). They tell you to check availability on dig.ua, then use their register/activate forms. Do not invent Telegram or phone rules.",
      "url": "https://pp.ua/",
      "check": null
    },
    {
      "id": "open-domains",
      "name": "Open Domains",
      "suffix": "community suffixes (verify live)",
      "kind": "verify",
      "cost": "Marketed as $0 on a new site — GitHub register is archived",
      "who": "Students and open-source projects, if the new platform is the same project",
      "how": "Do not open a GitHub PR. open-domains/register is archived (checked 21 Aug 2026). README says the service moved to open-domains.com; open-domains.net meta-refreshes there. Existing GitHub names stay live but cannot be edited via GitHub. We do not treat the new site as confirmed $0.",
      "url": "https://github.com/open-domains/register",
      "check": null
    },
    {
      "id": "cluster-ws",
      "name": "cluster.ws / wip.la (Olivr)",
      "suffix": "cluster.ws / wip.la",
      "kind": "dead",
      "cost": "Not working",
      "who": "Nobody — maintainer says the zones hit Cloudflare’s 1,000-record limit",
      "how": "Olivr/free-domain README (checked 21 Aug 2026): CURRENTLY THIS IS NOT WORKING ANYMORE. Last commits are Dec 2025. Do not file a PR.",
      "url": "https://github.com/Olivr/free-domain",
      "check": null
    },
    {
      "id": "freenom",
      "name": "Freenom (.tk .cf .gq .ga .ml)",
      "suffix": "tk / cf / gq / ga / ml",
      "kind": "dead",
      "cost": "Not free anymore",
      "who": "Nobody — free regs ended 2024 after Meta sued. 2026: paid again, not $0.",
      "how": "Do not chase leftover Freenom names. They are not a free pile. freenom.com still redirects to a paid domain panel.",
      "url": "https://www.freenom.com/",
      "check": null
    }
  ]
}
