{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiehhoxlhlahf7v6vwsumvfqv3b2xur6w6dgptnpi5qgnogip3vntq",
    "uri": "at://did:plc:tntgihx6r2e2gqexsx72grd5/app.bsky.feed.post/3mbhlh4zjqne2"
  },
  "path": "/blog/202601/no_more_html",
  "publishedAt": "2026-05-08T13:21:05.536Z",
  "site": "https://nedbatchelder.com",
  "tags": [
    "almost 24 years ago",
    "produced with\nDjango",
    "real Django site",
    "please let me know"
  ],
  "textContent": "This morning I shared a link to this site, and the recipient said, “it looks like a file.” I thought they meant the page was all black and white with no color. No, they were talking about the URL, which ended with “.html”.\n\nThis site started almost 24 years ago as a static site: a pile of .html files created on my machine and uploaded to the server. The URLs naturally had .html extensions. It was common in web sites of the time.\n\nOver the years, the technology has changed. In 2008, it was still a static site on the host, but produced with\nDjango running locally. In 2021, it became a real Django site on the host.\n\nThrough all these changes, the URLs remained the same—they still had the old-fashioned .html extension. I was used to them, so it never struck me as odd. But when it was pointed out today, it suddenly seemed obviously out of date.\n\nSo now the site prefers URLs with no extension. The fashion in URLs changed quite some time ago: for 2026, I’m going to party like it’s 2006!\n\nThe old URLs still work, but get a permanent redirect to the modern style. If you notice anything amiss, please let me know, as always.",
  "title": "No more .html",
  "updatedAt": "2026-01-02T18:24:12.000Z"
}