GFM Compliance Checklist
Lint GitHub Flavored Markdown — five high-signal checks before you publish
Verify single H1, fence languages, alt text on images, no empty links, and a parseable first table — the five issues that most often break GitHub READMEs and docs. Runs in your browser, no signup.
Single H1 (recommended)
One H1.
Fenced code blocks specify a language when possible
At least one ``` fence lacks a language tag.
No empty link labels ([])
1 occurrences.
Images include alt text
1 alt-empty images.
First pipe table parses correctly (if present)
2 row(s) in first table.
How to use the GFM compliance checklist
- Paste your Markdown, or click Open .md to load a file.
- Read the five checks. Each item is passing (green tick) or flagged (amber) with a short detail explaining what was found.
- Fix the flagged items in your editor and re-paste — re-running takes a second.
The badge row above shows totals at a glance: how many checks pass and how many need attention.
The five checks explained
1. Single H1 (recommended)
GitHub READMEs, docs pages, and blog posts almost always want exactly one H1 — the document title. The checklist counts ATX-style # Heading lines outside fenced code and flags zero (info) or more than one (warning) H1.
2. Fenced code blocks specify a language
```js
const a = 1
```
GitHub uses the language tag to syntax-highlight code. A fence opened with just ``````````` renders as plain monospace. The checklist flags any fence missing a language tag.
3. No empty link labels
A link with empty label text ([]()) is invisible — it renders as nothing on GitHub. Empty labels are usually copy-paste accidents. The checklist counts and reports them.
4. Images include alt text
 is required for accessibility (screen readers) and shows up if the image fails to load. The checklist flags ![]() images so every image has a meaningful alt.
5. First pipe table parses
GFM tables break in subtle ways: missing alignment row, mismatched column counts, stray pipes. The checklist extracts the first table outside fenced code and confirms it has at least one row, surfacing a fast smoke test for documents that rely heavily on tables.
A practical pre-publish workflow
- Draft your document in the Markdown Editor.
- Run the Markdown Formatter for whitespace and structural cleanup.
- Run the Heading Auditor to fix outline jumps.
- Run this GFM Compliance Checklist for the final five gates.
- Optionally run the Diff tool against the previous version to confirm only intended changes shipped.
That sequence catches ~95% of the issues that show up in code review.
Beyond the five checks
If you want stricter linting, complement this tool with:
- markdownlint — 50+ rules, CI-friendly.
- remark-lint — plugin-based, integrates with the unified ecosystem.
- Vale — prose-level style enforcement.
For everyday Markdown writing, though, the five-item checklist tends to be the right balance: high signal, no setup, runs anywhere.
Privacy & data
All checks run inside your browser as small regex / parser passes. We don't upload, log, or store your Markdown.
Frequently asked questions
- It is a quick pre-publish sanity check for GitHub Flavored Markdown documents. The tool runs five high-signal checks: single H1, language tag on every fenced code block, no empty link labels, every image has alt text, and the first pipe table (if any) parses cleanly.
- They map to the issues that most often cause GitHub README and docs render problems: wrong heading count breaks SEO and TOCs, missing fence languages disable syntax highlighting, empty links and alt text fail accessibility, and broken tables silently fall back to plain text. Fixing these five things eliminates the bulk of 'looks broken on GitHub' complaints.
- No — it surfaces violations of GitHub's own rendering conventions, not opinions about prose style. Pair it with a Markdown formatter or a style-specific linter (markdownlint, remark-lint) for stricter house rules.
- It will catch the high-impact issues, but it is not exhaustive. Specific GitHub quirks — relative image paths, raw HTML stripping, emoji shortcodes — are out of scope. Always preview on GitHub itself for final sign-off.
- No. Every check runs as a small regex / parser scan inside your browser tab. We never upload, log, or train on your document.
- Markdownlint is a comprehensive rule engine with 50+ rules and CI integration. This checklist is a lightweight pre-flight that focuses on five high-signal items, runs in the browser without any setup, and is intended for one-off audits — for instance, before posting a README, a release note, or a docs PR.