diff --git a/.changeset/fix-dollar-replacement.md b/.changeset/fix-dollar-replacement.md
new file mode 100644
index 00000000..26d88d4d
--- /dev/null
+++ b/.changeset/fix-dollar-replacement.md
@@ -0,0 +1,7 @@
+---
+'@node-core/doc-kit-legacy': patch
+'@node-core/doc-kit': patch
+'@doc-kit/generator-react': patch
+---
+
+Fix `$$`, `$&`, `` $` `` and `$'` in page content being treated as `String.prototype.replace` replacement patterns instead of literal text. This affected the legacy HTML generator's page and navigation content, the man page generator's options/environment sections, and the sitemap generator's URL entries.
diff --git a/packages/node-legacy/src/legacy-html/utils/__tests__/replaceTemplateValues.test.mjs b/packages/node-legacy/src/legacy-html/utils/__tests__/replaceTemplateValues.test.mjs
new file mode 100644
index 00000000..1cb51bbf
--- /dev/null
+++ b/packages/node-legacy/src/legacy-html/utils/__tests__/replaceTemplateValues.test.mjs
@@ -0,0 +1,57 @@
+'use strict';
+
+import assert from 'node:assert/strict';
+import { before, describe, it } from 'node:test';
+
+import { setConfig } from '@doc-kit/core/utils/configuration/index.mjs';
+
+import { replaceTemplateValues } from '../replaceTemplateValues.mjs';
+
+describe('replaceTemplateValues', () => {
+ before(() => setConfig({}));
+
+ const baseValues = {
+ path: '/test',
+ api: 'test',
+ added: undefined,
+ section: 'section',
+ toc: [],
+ nav: 'nav',
+ content: 'content',
+ };
+
+ const config = { version: { version: '1.0.0' }, changelog: [] };
+
+ it('does not treat `$$`, `$&`, "$`" and `$\'` in content as replacement patterns', () => {
+ const template = '__CONTENT__';
+
+ const dollarContent = 'dirname "$$(command -v node)" $& $` $\'';
+
+ const output = replaceTemplateValues(
+ template,
+ { ...baseValues, content: dollarContent },
+ config,
+ { skipGitHub: true }
+ );
+
+ assert.match(
+ output,
+ /dirname "\$\$\(command -v node\)" \$& \$` \$'<\/main>/
+ );
+ });
+
+ it('does not treat `$$`, `$&`, "$`" and `$\'` in nav as replacement patterns', () => {
+ const template = '__CONTENT__';
+
+ const dollarNav = "nav $$ $& $` $'";
+
+ const output = replaceTemplateValues(
+ template,
+ { ...baseValues, nav: dollarNav },
+ config,
+ { skipGitHub: true }
+ );
+
+ assert.match(output, /