Back to Guides
Troubleshooting Guide

Why Is GitHub Markdown Not Rendering? 10 Causes & Fixes

Every cause includes a before/after code example and a contextual tip. Bookmark this page — it covers every edge case you will encounter writing GitHub READMEs, Issues, PRs, and Discussions.

8 min read 10 causes covered
Pro tip: Before pushing any Markdown file to GitHub, paste it into our GitHub Markdown Preview tool. It renders with the same GFM engine GitHub uses, so you catch every issue before it reaches your repository.
1

Missing Space After Heading Hash (#)

Very Common

GitHub strictly requires at least one space between the hash symbol and your heading text. Without it, the line is treated as a paragraph.

Wrong
#Heading Without Space
##Another Broken Heading
Correct
# Heading 1
## Heading 2
### Heading 3
ATX headings (# style) always need a space. Setext headings (underline with === or ---) are an alternative that avoids this entirely.
2

Malformed Table — Missing Separator Row or Pipe

Common

GFM tables require: (1) a header row, (2) a separator row with at least one dash per cell, and (3) consistent pipe characters. Missing any of these causes the table to render as plain text.

Wrong
| Feature | Status |
| Engine | Ready |
Correct
| Feature | Status |
| :--- | :---: |
| Engine | ✅ Ready |
| Tests | ✅ Passing |
Always include a blank line before the table. Alignment codes (:--- ---: :---:) are optional but the dashes are not.
3

Broken Relative Image Paths

Common

Images using relative paths work in VS Code local preview but break on GitHub because they are resolved against the repo root on the default branch — not the filesystem directory you are editing in.

Wrong
![Screenshot](screenshots/app.png)
![Logo](../assets/logo.png)
Correct
![Screenshot](docs/screenshots/app.png)

<!-- Or use the raw GitHub URL: -->
![Logo](https://raw.githubusercontent.com/user/repo/main/assets/logo.png)
GitHub paths are case-sensitive on Linux runners. "Assets/Logo.PNG" and "assets/logo.png" are different files. Always match exact casing.
4

Task List Syntax Missing Spaces

Common

GFM task lists require: a dash, then a space, then brackets with a space inside (unchecked) or "x" (checked), then another space, then the task text.

Wrong
-[] Task not done
-[x]Task done
* [ ]Also broken
Correct
- [ ] Unchecked task
- [x] Checked task
- [ ] Another item
Task lists only render as interactive checkboxes in Issues and Pull Requests. In READMEs they display as static checked/unchecked boxes.
5

Unclosed Code Fence (```)

Very Common

If you open a triple-backtick code fence but forget to close it, everything below it is treated as a code block — producing raw monospace text for the entire rest of the document.

Wrong
```javascript
const x = 1;
// Forgot to close!

## This heading disappears
And all this text becomes code.
Correct
```javascript
const x = 1;
// Properly closed
```

## This heading renders correctly
And this text is normal.
Use our live previewer to instantly spot unclosed fences — the entire document will turn monospace if you have one.
6

HTML Block Not Separated from Markdown

Moderate

When you mix raw HTML with Markdown in GitHub READMEs, HTML blocks must be surrounded by blank lines. If your Markdown immediately follows an HTML closing tag, it will be consumed into the HTML block and not rendered.

Wrong
<div align="center">
  <img src="logo.png">
</div>
## Getting Started
This paragraph breaks.
Correct
<div align="center">
  <img src="logo.png">
</div>

## Getting Started

This paragraph renders correctly.
GitHub sanitises most HTML attributes. "style" and "class" attributes are stripped. Use "align", "width", "height" for image sizing.
7

Mermaid Diagrams Not Rendering

Moderate

GitHub only renders Mermaid in .md files on github.com — not in raw.githubusercontent.com links, GitHub Pages by default, or GitHub wikis without configuration. The code block must be tagged ```mermaid (not ```mermaid-js or similar).

Wrong
```mermaid-js
flow LR
  A --> B
```
Correct
```mermaid
flowchart LR
  A[Start] --> B[End]
```
Test your Mermaid diagrams on our live Mermaid previewer before pushing. Wrong keyword (flow instead of flowchart) is the #1 cause of silent failures.
8

LaTeX Math Not Rendering

New in 2022

GitHub added native math support in 2022. Use $...$ for inline and $$...$$ for block equations. Some older README files use \( \) or \[ \] — these are NOT supported on GitHub.

Wrong
\( E = mc^2 \)
\[ \sum_{i=1}^{n} x_i \]
Correct
Inline: $E = mc^2$

Block:
$$
\sum_{i=1}^{n} x_i
$$
Avoid spaces directly after the opening $ and before the closing $. "$x$" works but "$ x $" may not render depending on the context.
9

Alert Callouts Wrong Syntax

New in 2023

GitHub introduced coloured alert callouts in 2023 using a specific blockquote syntax. The keyword must be uppercase and use the exact bracket format shown — lowercase or other brackets will render as a plain blockquote.

Wrong
> [note]
> This is a note.

> [!note]
> Lowercase does not work.
Correct
> [!NOTE]
> Informational callout.

> [!WARNING]
> Warning callout.

> [!IMPORTANT]
> Critical callout.
Supported types (all must be uppercase): NOTE, TIP, IMPORTANT, WARNING, CAUTION. These only render on github.com, not in VS Code by default.
10

Footnotes Not Supported in All Contexts

Context-specific

Footnotes ([^1]) are supported in GitHub READMEs and Discussions but NOT in Issue comments or Pull Request descriptions. They will render as literal bracketed text in those contexts.

Wrong
<!-- In a PR comment: -->
See footnote[^1].
[^1]: This is the footnote.
Correct
<!-- In a README.md file: -->
See footnote[^1].

[^1]: This renders correctly in README files.
When in doubt about context support, use inline links or parenthetical notes instead of footnotes for maximum compatibility.

Quick Diagnostic Checklist

Run through this list when your README or Issue comment is not rendering correctly:

Add a space after every # heading hash
Add blank lines before all tables
Check separator row has dashes in every column
Close all ``` code fences
Add blank lines around HTML blocks
Use relative paths for repo images (correct casing)
Task lists: use "- [ ]" not "-[]"
Mermaid: use "flowchart" not "flow"
Math: use $...$ not \(...\)
Alerts: use [!NOTE] uppercase

Frequently Asked Questions

Test your Markdown before pushing to GitHub
Paste your README into our GitHub-accurate previewer and fix issues before they go live.
Open GitHub Previewer

Explore More Markdown Tools

All tools are free, client-side, and require no account.