diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc
new file mode 100644
index 0000000000000000000000000000000000000000..8d46990a0e478add2d84cad87ef32cbf94822bed
--- /dev/null
+++ b/.markdownlint-cli2.jsonc
@@ -0,0 +1,17 @@
+{
+  // Disable some built-in rules
+  "config": {
+    "fenced-code-language": false,
+    "first-line-heading": false,
+    "line-length": false,
+    "no-emphasis-as-header": false,
+    "no-inline-html": false,
+    "single-h1": false
+  },
+
+  // Define glob expressions to use (only valid at root)
+  "globs": ["**/*.md"],
+
+  // Define glob expressions to ignore
+  "ignores": ["**/__fixtures__/*", "**/node_modules/**"]
+}
diff --git a/package.json b/package.json
index fa44cdf13188afd938f0e61a861300eeecbad623..b224c43536e149d2194c94713cba50582cf46ea6 100644
--- a/package.json
+++ b/package.json
@@ -21,9 +21,11 @@
     "jest": "cross-env NODE_ENV=test LOG_LEVEL=fatal node --expose-gc node_modules/jest/bin/jest.js",
     "jest-debug": "cross-env NODE_ENV=test LOG_LEVEL=fatal node --expose-gc --inspect-brk node_modules/jest/bin/jest.js",
     "jest-silent": "cross-env NODE_ENV=test yarn jest --reporters jest-silent-reporter",
-    "lint": "run-s ls-lint eslint prettier",
-    "lint-fix": "run-s eslint-fix prettier-fix",
+    "lint": "run-s ls-lint eslint prettier markdown-lint",
+    "lint-fix": "run-s eslint-fix prettier-fix markdown-lint-fix",
     "ls-lint": "ls-lint",
+    "markdown-lint": "markdownlint-cli2",
+    "markdown-lint-fix": "markdownlint-cli2-fix",
     "prepare": "run-s prepare:*",
     "prepare:tools": "tsc -p tools",
     "prepare:re2": "node --experimental-modules tools/check-re2.mjs",
@@ -244,6 +246,7 @@
     "jest-junit": "12.0.0",
     "jest-mock-extended": "1.0.13",
     "jest-silent-reporter": "0.4.0",
+    "markdownlint-cli2": "0.0.14",
     "mockdate": "3.0.2",
     "nock": "13.0.9",
     "npm-run-all": "4.1.5",
diff --git a/readme.md b/readme.md
index d97d7c60c6715fb94d864fbdab5bb29cc5ba025f..df5f704c90fedd331f20c289ad76d4bdb649f49c 100644
--- a/readme.md
+++ b/readme.md
@@ -53,7 +53,7 @@ For Bitbucket Cloud, Bitbucket Server, Gitea and GitLab, use our self-hosting op
 
 ## Configuration
 
-Visit https://docs.renovatebot.com/ for documentation, and in particular https://docs.renovatebot.com/configuration-options/ for a list of configuration options.
+Visit <https://docs.renovatebot.com/> for documentation, and in particular <https://docs.renovatebot.com/configuration-options/> for a list of configuration options.
 
 To get help and/or a review for your config, go to the [discussions tab in the Renovate repository](https://github.com/renovatebot/renovate/discussions) and open a new "config help" discussion post.
 
diff --git a/yarn.lock b/yarn.lock
index 0ee8698764e4444dbcc2a4341566af0c572743d3..7156f4d2d041fb65daca9bf9c5ad7ad9c809e4c6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4646,7 +4646,7 @@ globalthis@^1.0.1:
   dependencies:
     define-properties "^1.1.3"
 
-globby@^11.0.0, globby@^11.0.1:
+globby@^11.0.0, globby@^11.0.1, globby@~11.0.2:
   version "11.0.2"
   resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83"
   integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==
@@ -6722,6 +6722,36 @@ markdown-table@^1.1.0:
   resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
   integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
 
+markdownlint-cli2-formatter-default@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.2.tgz#76f1a064d70966178dfe3bb489af9423d830ca79"
+  integrity sha512-jIz1X3SIC8sX4NDFqQFUXL+JEtfnDoN4i+xocEu+etcxGX455pHb6sx86f/yVk4mKJ2o7aNe2ydSx9an22BfBg==
+
+markdownlint-cli2@0.0.14:
+  version "0.0.14"
+  resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.0.14.tgz#a82536ffd8a1547888bf8af4ce40a4196b8f5cda"
+  integrity sha512-h3aXjve9y7pVXJMpka6msP4aGIJamju0Gv7L9knRz3nAdhhaW1aOiRvnLGgqu7BZyp1y7agjWnx8ojh7iLCCeg==
+  dependencies:
+    globby "~11.0.2"
+    markdownlint "~0.23.1"
+    markdownlint-cli2-formatter-default "~0.0.2"
+    markdownlint-rule-helpers "~0.14.0"
+    micromatch "~4.0.2"
+    strip-json-comments "~3.1.1"
+    yaml "~1.10.0"
+
+markdownlint-rule-helpers@~0.14.0:
+  version "0.14.0"
+  resolved "https://registry.yarnpkg.com/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz#4d0e1ae320e85559d8cbed1490934855791627bb"
+  integrity sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A==
+
+markdownlint@~0.23.1:
+  version "0.23.1"
+  resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.23.1.tgz#98292b5d340d01e9c113f3d7fb3b2ccf89628dc2"
+  integrity sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==
+  dependencies:
+    markdown-it "12.0.4"
+
 marked-terminal@^4.0.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.0.tgz#01087372d3636dc7cb286475a1d6147187f500e0"
@@ -6851,7 +6881,7 @@ micromatch@^3.1.10, micromatch@^3.1.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.2"
 
-micromatch@^4.0.2:
+micromatch@^4.0.2, micromatch@~4.0.2:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
   integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
@@ -9677,7 +9707,7 @@ strip-indent@^3.0.0:
   dependencies:
     min-indent "^1.0.0"
 
-strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1:
   version "3.1.1"
   resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
   integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -10680,7 +10710,7 @@ yallist@^4.0.0:
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
   integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
 
-yaml@^1.10.0:
+yaml@^1.10.0, yaml@~1.10.0:
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
   integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==