mkdocs build "KeyError: 'site_name'" config error
Fixes MkDocs builds that fail with KeyError site_name during config validation. Use when the traceback names site_name as the missing key. Not for YAML syntax errors or plugin failures.
TL;DR
Add a site_name key to mkdocs.yml. It is the one required setting; every other key is optional.
Error
KeyError: 'site_name'Steps
- Open mkdocs.yml and look for a top-level
site_nameentry. Expected: it is absent or nested under another key by mistake. - Add
site_name: Your Project Nameat the top level of the file, with no indentation. Expected: the key sits at column zero like other top-level settings. - Validate the file parses by running
mkdocs buildagain orpython -c "import yaml; yaml.safe_load(open('mkdocs.yml'))". Expected: the config loads without errors. - Run the full build:
mkdocs build. Expected: the site builds into the site directory.
When to use
- MkDocs aborts with KeyError naming site_name
- A new mkdocs.yml was hand-written or generated by a script
- A docs agent emitted a config without the required key
When not to use
- The error is a YAML syntax error (different message, fix the syntax)
- site_name exists but a plugin fails (the plugin is the problem)
- You are configuring a MkDocs plugin that has its own required keys
Tool compatibility
MkDocs 1.4 through 1.6. site_name has been required in every MkDocs release.
Variant phrasings
KeyError site_name after splitting config with plugins
Some config-inheritance plugins merge files; ensure the merged result still carries site_name at the top level.
mkdocs.yml exists but MkDocs says it cannot find it
You are running the command from the wrong directory. Run it where mkdocs.yml lives, or pass -f path/to/mkdocs.yml.
Why it happens
MkDocs validates the config dict and reads config['site_name'] unconditionally to title the site. A missing key raises KeyError before any building starts. Generators and agents often emit plugin-heavy configs and forget the single mandatory field.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_6a1AVT52Tnrsn1pxFi8w5w