diff --git a/website/public/blog/blog-head.ejs.html b/website/public/blog/blog-head.ejs.html
index 99dd8260e4..be72cab95d 100644
--- a/website/public/blog/blog-head.ejs.html
+++ b/website/public/blog/blog-head.ejs.html
@@ -1,7 +1,15 @@
<%#
-%>
+%> <% if (typeof meta.blogDate !== 'undefined') { %>
+
+
+
+<% } %> <% if (typeof meta.blogModifiedDate !== 'undefined') { %>
+
+<% } %> <% if (typeof meta.blogAuthor !== 'undefined') { %>
+
+<% } %>
is a compiler bug",
"description": "My journey in finding and fixing a bug in a C++ toolchain",
"navTitle": "Compiler bug",
+"blogAuthor": "Matthew \"strager\" Glazar",
"blogDate": "2022-05-25T21:04:02-07:00"
}--->
@@ -652,7 +653,7 @@
Fixing the bug
../../../bfd/../mkinstalldirs /ucrt64/share; \
else \
../../../bfd/mkinstalldirs /ucrt64/share; \
-fi
+fi
installing da.gmo as /ucrt64/share/locale/da/LC_MESSAGES/bfd.mo
installing es.gmo as /ucrt64/share/locale/es/LC_MESSAGES/bfd.mo
installing fi.gmo as /ucrt64/share/locale/fi/LC_MESSAGES/bfd.mo
diff --git a/website/public/blog/cpp-vs-rust-build-times/index.ejs.html b/website/public/blog/cpp-vs-rust-build-times/index.ejs.html
index 9ee62abb93..b1495679b9 100644
--- a/website/public/blog/cpp-vs-rust-build-times/index.ejs.html
+++ b/website/public/blog/cpp-vs-rust-build-times/index.ejs.html
@@ -3,6 +3,7 @@
"description": "A practical comparison of build and test speed between C++ and Rust.",
"navTitle": "C++ vs Rust",
"image": "/blog/cpp-vs-rust-build-times/cpp-vs-rust.jpg",
+"blogAuthor": "Matthew \"strager\" Glazar",
"blogDate": "2023-01-05T21:32:37-08:00"
}--->
diff --git a/website/public/blog/show-js-errors-neovim-macos/index.ejs.html b/website/public/blog/show-js-errors-neovim-macos/index.ejs.html
index 1de20cd228..416afa3563 100644
--- a/website/public/blog/show-js-errors-neovim-macos/index.ejs.html
+++ b/website/public/blog/show-js-errors-neovim-macos/index.ejs.html
@@ -3,6 +3,7 @@
"description": "How to install Homebrew, Neovim, and quick-lint-js on macOS to show JavaScript syntax errors while editing",
"navTitle": "Neovim for JS",
"image": "/blog/show-js-errors-neovim-macos/neovim-demo.png",
+"blogAuthor": "Matthew \"strager\" Glazar",
"blogDate": "2022-02-16T21:48:38-08:00"
}--->
diff --git a/website/public/blog/syntax-errors-2021/index.ejs.html b/website/public/blog/syntax-errors-2021/index.ejs.html
index a7b7a7f516..d242f646d2 100644
--- a/website/public/blog/syntax-errors-2021/index.ejs.html
+++ b/website/public/blog/syntax-errors-2021/index.ejs.html
@@ -2,7 +2,9 @@
"title": "JavaScript syntax errors compared (2021)",
"description": "Comparison of errors produced by different JavaScript parsers",
"navTitle": "JS errors",
-"blogDate": "2021-12-11T17:19:10-08:00"
+"blogAuthor": "Matthew \"strager\" Glazar",
+"blogDate": "2021-12-11T17:19:10-08:00",
+"blogModified": "2023-08-01T16:48:07.000-07:00"
}--->
diff --git a/website/public/blog/version-1.0/index.ejs.html b/website/public/blog/version-1.0/index.ejs.html
index b6d5bbe854..13980f1c05 100644
--- a/website/public/blog/version-1.0/index.ejs.html
+++ b/website/public/blog/version-1.0/index.ejs.html
@@ -3,6 +3,7 @@
"linkLabelHTML": "Release: version 1.0",
"description": "Faster, easier, friendlier: how quick-lint-js will take over ESLint",
"navTitle": "Release 1.0",
+"blogAuthor": "Matthew \"strager\" Glazar",
"blogDate": "2021-12-13T19:27:37-08:00"
}--->
diff --git a/website/public/blog/version-2.0/index.ejs.html b/website/public/blog/version-2.0/index.ejs.html
index cb2f02fbbf..e3b21cd3d5 100644
--- a/website/public/blog/version-2.0/index.ejs.html
+++ b/website/public/blog/version-2.0/index.ejs.html
@@ -3,6 +3,7 @@
"linkLabelHTML": "Release: version 2.0",
"description": "We are proud to announce version 2.0 of quick-lint-js!",
"navTitle": "Release 2.0",
+"blogAuthor": "Matthew \"strager\" Glazar",
"blogDate": "2022-02-04T21:43:20-08:00"
}--->
diff --git a/website/public/common-head.ejs.html b/website/public/common-head.ejs.html
index 677280d30f..e2539670a6 100644
--- a/website/public/common-head.ejs.html
+++ b/website/public/common-head.ejs.html
@@ -41,7 +41,11 @@
content="<%= locals.image ?? meta.image ?? '/vscode-demo-small.gif' %>"
/>
+<% if (typeof locals.blogDate === 'undefined' && typeof meta.blogDate ===
+'undefined') { %>
+<% } %> <%# NOTE: See blog.head.ejs.html for blog article related tags %>
+
<%#