Documentation linter
Lint Markdown with the real markdownlint rules (MD001–MD060, your .markdownlint.json) and AsciiDoc with structure checks that match Asciidoctor's warnings, with quick fixes — plus a table formatter for Markdown, AsciiDoc, CSV and TSV.
Added
Works with
- Markdown ↔ AsciiDoc converter Formatting and referenceConvert sends the document there, and its Lint result button sends the converted one here
- Markdown and AsciiDoc previewer Formatting and referenceOpen in previewer sends the document there, and its Lint button sends one here
How to use it
Paste a Markdown or AsciiDoc document, or open a file, and the problems are listed beside it with the line, the rule and — where the change is safe — a Fix button. A second tab formats tables.
How to use it
-
Paste or Open file…; the format is detected (or choose it). Click a result’s line number to select that line. Fix applies one fix, Fix all every safe one.
-
Prose checks adds heuristics: repeated words (
the the, also across a line break), sentences longer than the word count you set, and possible passive voice. They are suggestions, not rules — "was eaten" is flagged; whether it should change is up to you. Code blocks, tables and attribute lines are skipped. -
Folder… lists a project folder (in your browser — nothing is uploaded) so that
include::targets and image paths can be checked, and lets you open any document in it. -
Open in previewer ↗ sends the document to the Markdown and AsciiDoc previewer; Convert ↗ to the converter.
Markdown
This runs markdownlint 0.42.0 itself — the library
markdownlint-cli2 0.24.0 uses — so the rule ids, aliases, defaults and messages are the real
ones (MD001 heading levels through MD060 table column style), and each rule links to its
documentation. Paste your .markdownlint.json, .jsonc or .yaml under markdownlint
configuration; comments, aliases ("line-length": false) and "default": false work. Fixes are
markdownlint’s own. Align tables re-pads every pipe table in the document.
I checked the output against markdownlint-cli2 on a test document with the default
configuration and with a custom one: the results are the same, line for line.
AsciiDoc
These checks run on the parsed document (attributes and conditionals applied, as Asciidoctor does). Below them, Asciidoctor.js lists its own warnings for the same text.
| Rule | Finds | Quick fix |
|---|---|---|
ADOC001 |
Section levels that jump ( |
Change the level |
ADOC002 |
A second |
Make it |
ADOC003 |
|
Escape it |
ADOC004 |
|
Use the real id |
ADOC005 |
Delimited blocks ( |
=== |
Close it at the end |
ADOC006 |
List continuation mistakes: a |
Remove or add the |
ADOC007 |
Table rows with too few cells, cells spanning past the last column |
— |
ADOC008 |
|
— |
ADOC009 |
Images without alt text |
— |
ADOC010 |
Ids used twice |
— |
ADOC011 |
|
Fix the |
ADOC012 |
Callout list items with no matching |
— |
ADOC013 |
Markdown links and images ( |
Rewrite as AsciiDoc |
ADOC014 |
Trailing spaces (except a ` +` hard break) |
Remove |
ADOC015 |
Body text glued to the document header |
Where these overlap with Asciidoctor’s own warnings I checked them against asciidoctor
--verbose (2.0.26) on a document full of mistakes: each of its warnings has a matching check,
on the same line. If a document starts with a gitwebsite header (:type:, :areas: …), it is
also checked with the same rules as the AsciiDoc studio.
Tables
Paste a Markdown pipe table, an AsciiDoc |=== table, CSV, or cells copied from a spreadsheet
(TSV) and get it back as an aligned Markdown table, an AsciiDoc table, CSV or TSV. You can
transpose it and sort by a column (numbers sort as numbers, 1,000 after 999). Convert inline
markup turns bold, and links into their AsciiDoc form and back. Wide
characters (CJK, emoji) count as two columns when aligning, as they do in a terminal. For
cleaning data rather than formatting it, the data wrangler and the
CSV tool go further.code
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser — network requests go only to the services named on this page.