Skip to content

MD044 - Use Proper Capitalization for Names

Aliases: proper-names

What this rule does

Ensures brand names, product names, and technical terms are consistently capitalized throughout your documents.

Why this matters

  • Professional appearance: Incorrect capitalization looks careless and unprofessional
  • Brand respect: Shows you care about getting company and product names right
  • Consistency: Readers won't be confused by different variations of the same name
  • Searchability: Consistent naming improves search results and indexing

Examples

✅ Correct

With configured names:

[MD044]
names = ["JavaScript", "GitHub", "Node.js", "TypeScript"]
# JavaScript Development Guide

This guide covers JavaScript best practices for GitHub projects.

We'll be using Node.js and TypeScript for our examples.

❌ Incorrect

# Javascript Development Guide        <!-- Should be "JavaScript" -->

This guide covers javascript best practices for github projects.
<!-- "javascript" and "github" are incorrectly capitalized -->

We'll be using NodeJS and typescript for our examples.
<!-- "NodeJS" should be "Node.js", "typescript" should be "TypeScript" -->

🔧 Fixed

# JavaScript Development Guide

This guide covers JavaScript best practices for GitHub projects.

We'll be using Node.js and TypeScript for our examples.

Configuration

[MD044]
names = []                       # List of properly capitalized names
code-blocks = false              # Check inside code blocks (default: false)
html-elements = true             # Check inside HTML elements (default: true)
html-comments = true             # Check inside HTML comments (default: true)
ignore-frontmatter-fields = []   # Frontmatter fields to skip (default: check all)

Automatic fixes

When enabled, this rule will:

  • Replace all incorrect capitalizations with the proper version
  • Preserve the context and meaning of your text
  • Work across headings, paragraphs, and lists

Special cases

  • Only checks names you've configured
  • Won't check inside URLs
  • Won't check inside a file path in a frontmatter value, such as docs/myapp.md, ./myapp.md, or /abs/path/myapp.md, since rewriting a name there would break the reference. A slash is required for this exemption: a slash-less value like image: myapp.png has no path signal and is still checked, so a proper name embedded in a bare filename is still flagged and fixed (a dotted name like Node.js is protected precisely because it never gets the slash). This exemption applies to frontmatter values only; the same-looking path in body prose is checked like any other text. A path is recognized when it has a leading ./, ../, ~/, or /, or its final segment has a file extension. A bare relative path with a literal space and no extension (docs/My App/myapp) is not recognized and is still checked
  • By default, skips code blocks (set code-blocks: true to check them)
  • Set html-comments: false to skip HTML comment content
  • Some names are intentionally lowercase (like "npm")

Frontmatter

rumdl checks proper names inside frontmatter values, not just body text, since fields like title and description often hold prose. Frontmatter keys themselves are never checked.

To exclude specific fields (for example machine-readable slugs or SEO metadata that happen to contain a configured name), list their top-level keys in ignore-frontmatter-fields:

[MD044]
names = ["MyApp"]
ignore-frontmatter-fields = ["slug", "seo"]

Field names are matched case-insensitively against top-level frontmatter keys only. Excluding a parent key excludes everything nested under it, including nested maps, sequence items, and multi-line values. In TOML frontmatter, excluding a key also excludes its [table] and [[array-of-tables]] sections.

One YAML shape is not covered: a flow collection whose contents continue on a following line that begins at column zero (seo: [ then myapp on the next line) attributes that line to its own text rather than to seo, so ignore-frontmatter-fields = ["seo"] does not exclude it. The value keeps being checked, which is the safe direction. Put the collection on a single line, or indent its continuation, to have it excluded.

Learn more

  • MD033 - Control HTML usage in Markdown
  • MD040 - Identify code block languages
  • MD049 - Use consistent emphasis markers