mdl

Developer Tools

Ruby markdown linter enforcing style rules, run as the `mdl` command.

Latest 0.18.1 · by markdownlintWebsiteRubyGems · mdl

Release activity

Release activity — 6 releases across 5 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 20261 release on Aug 9, 2026No releases on Aug 16, 2026
MondayNo releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026
TuesdayNo releases on May 5, 2026No releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 20261 release on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 20261 release on Aug 5, 2026No releases on Aug 12, 2026
ThursdayNo releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026
FridayNo releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 20261 release on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026
SaturdayNo releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026

6 releases in the last year, busiest day 2

Changelog

0.18.1

Latest
Fixed 1
  • Fixed crash on startup when using old versions of the uri gem
Fixed
  • Fixed crash on startup when using old versions of the uri gem. #606
View originalPermalink
How 0.18.1 went

0.17.0

Added 1
  • Add treat_links_as_single_word option to MD013
Fixed 4
  • MD013 no longer triggers on a single long word in backticks
  • MD013 no longer triggers on a single long word alone on a line continuation
  • MD013 no longer triggers on a list item with a single long word
  • Docker image uses latest Alpine so mdl version is correct
Added
  • Added treat_links_as_single_word option to MD013 #580
Fixed
  • MD013 - Do not trigger on a single long word in backticks #580
  • MD013 - Do not trigger on a single long word alone on a line continuation #580
  • MD013 - Do not trigger on a list item with a single long word #580
  • Docker - Use latest alphine so mdl version is correct
View originalPermalink
How 0.17.0 went

0.16.0

Added 1
  • Add autocorrecting
Changed 6
  • Add extra documentation around excluding rules
  • Update Kramdown
  • Start from all rules when style only contains exclusions
  • Give error when explicitly specified config file is not found
  • Skip docs footer for rules without a docs URL
  • Accept string values for symbol params in style files
Fixed 13
  • MD005 - Fixed inconsistent UL/OL ordering
  • MD013 - Fixed line length detection
  • Fix fenced code blocks not detected without preceding blank line
  • Fix front matter offset when blank line follows closing ---
  • MD029 - Fix false positive for ordered lists inside blockquotes
  • MD026 - Fix false positive on emoji shortcodes in headers
Added
  • Add autocorrecting #519
Changed
  • Added extra documentation around excluding rules #516
  • Update Kramdown #539
  • Start from all rules when style only contains exclusions #551
  • Give error when explicitly specified config file is not found #554
  • Skip docs footer for rules without a docs URL #556
  • Fix "bulletd" typo in test file names #557
  • Accept string values for symbol params in style files #561
  • Bump bundler version #569
Fixed
  • MD005 - Fixed inconsistent UL/OL ordering #539
  • MD013 - Fixed line length detection #539
  • Fix fenced code blocks not detected without preceding blank line #541
  • Fix front matter offset when blank line follows closing --- #542
  • MD029 - Fix false positive for ordered lists inside blockquotes #543
  • MD026 - Fix false positive on emoji shortcodes in headers #543
  • MD011 - Fix false positive on footnote references #545
  • Fix crash on files with invalid UTF-8 byte sequences #546
  • MD034 - FIx not detecting bare URLs inside tables #547
  • Fix front matter regex matching --- inside code blocks #548
  • MD037 - Fix false positive on escaped emphasis markers #549
  • MD014 - Fix false positive on code blocks with only blank lines #550
  • MD040 - Fix false positive on tab-indented code blocks #552
  • MD034 - Fix false positive for URLs inside HTML elements #553
  • Fix double slashes in file paths when directory has trailing slash #555
  • MD031 - Fix false positive on inline backtick code spans #558
  • MD013 - Detect table-like lines even when kramdown parses them as paragraphs #560
  • MD007 - Fix false positive on unrelated lists at different indent levels #562
  • MD034 - Fix false positive when link text contains pipe character #564
  • MD032 - Fix false positive on HTML comments adjacent to lists #565
  • MD027 - Fix false positive on blockquotes with soft line breaks #566
  • MD013 - Add :headings parameter to exclude headings from line length #563
  • MD013 - Don't flag lines that are single-words #572
View originalPermalink
How 0.16.0 went

0.15.0

Changed 1
  • Bumped minimum ruby version to 3.2
Changed
  • Bumped minum ruby version to 3.2 #531, and associated changes
View originalPermalink
How 0.15.0 went

0.14.0

Fixed 3
  • Fix Markdown lint version in SARIF output test
  • Fix example for rulesets flag in configuration docs
  • Require ruby-3.3.0 for standalone pre-commit hook
Removed 1
  • Remove MD055, MD056, MD057 rules for tables that caused regressions
Fixed
  • Fix Markdown lint version in SARIF output test #469
  • Fix example for rulesets flag in configuration docs #473
  • Require ruby-3.3.0 for standalone pre-commit hook #528
Rules Removed
  • Removed MD055, MD056, MD057 - These rules for tables caused regressions and were removed (see #472 for details)
View originalPermalink
How 0.14.0 went

0.13.0

Added 4
  • MD055 rule for tables: each row must start and end with a |
  • MD056 rule for tables: number of columns is the same for all rows
  • MD057 rule for tables: in the second row every column must have at least ---, possibly surrounded with alignment : chars
  • SARIF output format
Changed 2
  • MD009 rule now allows exactly 2 trailing spaces by default
  • MD033 rule: add allowed_elements parameter
Fixed 4
  • MD027 rule now handles anchor elements correctly
  • Fix examples for RULES.md for MD007
  • Fix links to use https instead of http
  • Fix docker builds
Rules Added
  • MD055 - Tables: Each row must start and end with a | #464
  • MD056 - Tables: Number of columns is the same for all rows #464
  • MD057 - Tables: In the second row every column must have at least ---, possibly surrounded with alignment : chars #464
Added
  • Add SARIF output #459
  • Document DCO process better #448 and #449
Changed
  • MD009 - Allow exactly 2 trailing spaces by default #452
  • MD033 - Add allowed_elements parameter #450
  • Updated build instructions #431
Fixed
  • MD027 - handle anchor elements correctly #463
  • Fix examples for RULES.md for MD007 #462
  • Fix links to use https instead of http #447
  • Make RULES.md comply with our own rules #439
  • Fix docker builds #429
View originalPermalink
How 0.13.0 went

0.12.0

Added 3
  • MD047 rule to check that files end with a blank line
  • New 'docs' method on rules to provide a URL and longer description
  • docker_image-based pre-commit
Changed 6
  • Changed the default for MD007 to 3 spaces to match minimum spaces for ordered lists
  • Added option :ignore_code_blocks to rule MD010 to ignore hard tabs in code blocks when set to true
  • Added option :ignore_code_blocks to rule MD013 to ignore hard tabs in code blocks when set to true
  • Improved documentation on custom rules and rulesets
  • Handle non-printable characters gracefully
  • Support configurable sublist styles for MD004
Fixed 2
  • Fixed directory argument with --git-recurse
  • Preserve empty lines at the end of a file
Deprecated 1
  • Option :code_blocks for rule MD013 has been marked as deprecated and prints a deprecation warning if set to false
Rules Added
  • MD047 - File should end with a blank line
Added
  • New 'docs' method on rules to provide a URL and longer description
  • docker_image-based pre-commit
Changed
  • Changed the default for MD007 to 3 spaces to match minimum spaces for ordered lists
  • Added option :ignore_code_blocks to rule MD010. If set to true, hard tabs in code blocks will be ignored.
  • Added option :ignore_code_blocks to rule MD013. If set to true, hard tabs in code blocks will be ignored. The option :code_blocks has been marked as deprecated in the documentation. If :code_blocks is set to false in the configuration, a deprecation warning is printed.
  • Improved documentation on custom rules and rulesets
  • Handle non-printable characters gracefully
  • Support configurable sublist styles for MD004
Fixed
  • Fixed directory argument with --git-recurse
  • Preserve empty lines at the end of a file
View originalPermalink
How 0.12.0 went

0.11.0

Fixed 2
  • Fixed crash when using -g
  • Fixed missing dependencies in docker image
Fixed
  • Fixed crash when using -g
  • Fixed missing dependencies in docker image
View originalPermalink
How 0.11.0 went

0.10.0

Added 2
  • More examples of mdlrc and style files
  • Added CI for Rubocop and Markdownlint on the project repository
Fixed 3
  • Update Dockerfile to work with modern mdl
  • Update minimum version of kramdown for security advisory
  • Update minimum version of rubocop for security advisory
Added
  • More examples of mdlrc and style files
  • Added CI for Rubocop and Markdownlint on our own repo
Fixed
  • Update Dockerfile to work with modern mdl
  • Update minimum version of kramdown for security advisory
  • Update minimum version of rubocop for security advisory
View originalPermalink
How 0.10.0 went

0.9.0

Changed 3
  • Improve error messages on missing styles
  • Use require_relative to speed up requires
  • Bump alpine version in the Dockerfile
Fixed 3
  • Fix crash in --json
  • Handle codeblocks that are nested
  • Fix handling of blockquoted list items
Changed
  • Better error messages on missing styles #302
  • Use require_relative to speed up requires #297
  • Bumped alpine version in the Dockerfile #155
Fixed
  • Fix crash in --json #286
  • Handle codeblocks that are nested #293
  • Fix handling of blockquoted list items #284
View originalPermalink
How 0.9.0 went

0.8.0

Changed 1
  • Don't ship test and example files in the gem artifact
Fixed 1
  • Handle newlines on Windows better
Changed
  • Don't ship test / example files in the gem artifact #282
Fixed
  • Handle newlines on Windows better #238
View originalPermalink
How 0.8.0 went

0.7.0

Added 2
  • Pull request and issue templates for users and contributors
  • Handle Kramdown TOC
Changed 2
  • Move to kramdown 2
  • Loosen various dependencies and move minimum ruby version to 2.4
Added
  • Pull request and issue templates for users and contributors
  • Move to kramdown 2
  • Handle Kramdown TOC
  • Loosen various dependencies and move minimum ruby version to 2.4
View originalPermalink
How 0.7.0 went

0.6.0

Added 3
  • CONTRIBUTING.md and MAINTAINERS.md docs
  • .pre-commit-hooks.yaml for pre-commit.com integration
  • Table of contents to RULES.md for easier navigation
Changed 8
  • Ignore blank line after front matter
  • Only import JSON when necessary
  • Use newer mixlib-cli
  • Provide nicer error message when activating nonexistent rule
  • Fix documentation on ignore_front_matter
  • Update docs to use MY prefix for custom rule example
  • Reference Node.js markdownlint
  • Fix typos in MD046 docs
Fixed 2
  • Fix crash in MD039 when the link text is empty
  • Fix MD036 crash
Added
  • There are now CONTRIBUTING.md and MAINTAINERS.md docs
  • There is now a .pre-commit-hooks.yaml for those who want to use pre-commit.com
Changed
  • Ignore blank line after front matter #248
  • Only import JSON when necessary #231
  • Use newere mixlib-cli #265
  • Nicer error message when activating nonexistent rule #246
  • Fix documentation on ignore_front_matter #241
  • Update docs to use "MY" prefix for custom rule example #245
  • Fix crash in MD039 when the link text is empty #256
  • Reference Node.js markdownlint #229
  • Added table of contents to RULES.md for easier navigation #232
  • Fix typos in MD046 docs #219
  • Fixed MD036 crash #222
Removed
View originalPermalink
How 0.6.0 went

0.5.0

Added 2
  • Add md042 to enforce code block style
  • JSON formatter/output
Changed 2
  • Allow different nesting on headers duplication check
  • MD036 - Ignore multi-line emphasized paragraphs, and emphasized paragraphs that end in punctuation
Fixed 2
  • Fix issue numbers false positives
  • Lint MD039 checking for nodes inside link text
Added
  • Add md042 to enforce code block style
  • JSON formatter/output
Changed
  • Allow different nesting on headers duplication check #200
  • MD036 - Ignore multi-line emphasized paragraphs, and emphasized paragraphs that end in punctuation #140
Fixed
  • Fix issue numbers false positives #168
  • Lint MD039 checking for nodes inside link text #102
View originalPermalink
How 0.5.0 went

0.4.0

Added 1
  • Add ignore yaml front matter option
Changed 1
  • Allow top level header rules (MD002, MD025, MD041) to be configurable
Fixed 4
  • Read UTF-8 files correctly even if locale is set to C
  • Fix issues loading .mdlrc file
  • Fix erroneous triggering of MD022/MD023 in some cases
  • Detect codeblock lines correctly when ignoring them
Added
  • Ignore yaml front matter option #130 and #143
Changed
  • Allow top level header rules (MD002, MD025, MD041) to be configurable #142
Fixed
  • Read UTF-8 files correctly even if locale is set to C #135, #146, #147 and #148
  • Fix issues loading .mdlrc file #126, #129, #133 and #148
  • Fix erroneous triggering of MD022/MD023 in some cases #144
  • Detect codeblock lines correctly when ignoring them #141
View originalPermalink
How 0.4.0 went

0.3.1

Fixed
  • Fix error on starting mdl
View originalPermalink
How 0.3.1 went
View all

Discussion