diff --git a/.editorconfig b/.editorconfig
index fd514fec516b3c0ac29c70a518b4ead9e3815eb1..06233d0a2df8c3ab0bcc6dd440218fbe3ad4d0a9 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -8,5 +8,5 @@ indent_size = 4
 [*.{md,pandoc}]
 trim_trailing_whitespace = false
 
-[*.{json,yml,yaml,toml,html,css,js,scss}]
+[*.{json,yml,yaml,toml,html,css,js,scss,md}]
 indent_size = 2
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 95c9e8e21aec3be6b79d8e544e3735197736fb09..451c75e92df771a7a081609bf328c7e8aa977bff 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -54,3 +54,18 @@ repos:
         language: system
         pass_filenames: false
         files: \.(h|cpp)$
+      - id: vale
+        name: Check spelling with vale
+        entry: bash -c 'if command -v vale &> /dev/null; then vale --minAlertLevel warning; else exit 0; fi'
+        language: system
+  - repo: https://github.com/igorshubovych/markdownlint-cli
+    rev: v0.31.1
+    hooks:
+      - id: markdownlint
+        args:
+          [
+            --config,
+            web/content/.markdownlint.yaml,
+            -p,
+            web/content/.markdownlintignore,
+          ]
diff --git a/web/content/.markdownlintignore b/web/content/.markdownlintignore
index 559457b237f9e5a113661208e0909272ffb6040f..a0c4ea27e4e0daf8ef1527a77678d79ab3a9e9f9 100644
--- a/web/content/.markdownlintignore
+++ b/web/content/.markdownlintignore
@@ -1,4 +1,2 @@
-releases/
-docs/tools/workflows/Example-of-a-DGM-to-model-workflow/index.md
-docs/userguide/process-dependent-configuration/Heat_Transport_BHE.md
-docs/benchmarks/python-bc/laplace-equation/python-laplace-eq.md
+web/content/releases/
+web/content/docs/devguide/packages/mfront/index.md