rumdl 0.1.51

A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)
Documentation
# MD012 - Remove multiple blank lines

Aliases: `no-multiple-blanks`

## What this rule does

Reduces multiple consecutive blank lines to just one, keeping your documents clean and consistent.

## Why this matters

- **Readability**: Too many blank lines make documents feel disconnected and harder to follow
- **File size**: Extra blank lines waste space without adding value
- **Professional appearance**: Clean spacing looks polished and intentional
- **Consistency**: Standard spacing makes documents easier to maintain

## Examples

### ✅ Correct

```markdown
# Chapter 1

This is the introduction paragraph.

## Section 1.1

Content for this section.

## Section 1.2

More content here.
```

### ❌ Incorrect

<!-- rumdl-disable MD012 -->

```markdown
# Chapter 1


This is the introduction paragraph.



## Section 1.1

Content for this section.


## Section 1.2


More content here.
```

<!-- rumdl-enable MD012 -->

### 🔧 Fixed

```markdown
# Chapter 1

This is the introduction paragraph.

## Section 1.1

Content for this section.

## Section 1.2

More content here.
```

## Configuration

```toml
[MD012]
maximum = 1  # Maximum number of consecutive blank lines allowed (default: 1)
```

## Heading awareness

MD012 reads [MD022](md022.md)'s `lines-above` and `lines-below` configuration to determine how many blank lines are allowed adjacent to headings. This prevents MD012 from flagging blank lines that MD022 requires.

For example, with `lines-above = 2`, you need two blank lines before each heading — MD012 will allow up to 2 blank lines above headings while still flagging excess elsewhere:

```toml
[MD022]
lines-above = 2
lines-below = 1
```

```markdown
# Title


## Section
```

The two blank lines before `## Section` are allowed by MD012 because MD022 requires them. Multiple blank lines between non-heading content are still flagged normally.

If MD022 is disabled, MD012 enforces its own maximum everywhere without any special heading treatment. If MD022 uses `lines-above = -1` (unlimited), MD012 will not flag any blank lines above headings.

## Automatic fixes

This rule automatically removes excess blank lines. Near headings, blanks are capped at the limit derived from MD022's configuration. Between non-heading content, blanks are capped at MD012's own maximum (default: 1).

## Learn more

- [Paragraphs in Markdown]https://www.markdownguide.org/basic-syntax/#paragraphs-1 - How to use blank lines effectively
- [CommonMark specification]https://spec.commonmark.org/0.31.2/#blank-lines - Technical details about blank lines

## Related rules

- [MD009]md009.md - Remove trailing spaces
- [MD022]md022.md - Headings should be surrounded by blank lines
- [MD047]md047.md - End files with a single newline