[{"data":1,"prerenderedAt":61},["Reactive",2],{"blog-post-why-your-markdown-isnt-rendering":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":34,"related":38},"why-your-markdown-isnt-rendering","Why Your Markdown Isn't Rendering: A Troubleshooting Guide","Markdown looks fine in your editor but renders wrong in production? This guide walks through the most common causes by platform — with specific fixes for each.","You write clean Markdown, hit preview, and something goes wrong. The heading doesn't appear. The code block is mangled. The table renders as pipe characters scattered across a paragraph. The bold…","2026-06-12","troubleshooting","Matt Rathbone","markdown not rendering, markdown rendering issues, markdown broken, markdown display problems, markdown troubleshooting, markdown preview wrong, jekyll markdown not rendering, github markdown broken",8,"\u003Cp>You write clean Markdown, hit preview, and something goes wrong. The heading doesn&#39;t appear. The code block is mangled. The table renders as pipe characters scattered across a paragraph. The bold text shows up as literal asterisks.\u003C/p>\n\u003Cp>This isn&#39;t a Markdown problem — it&#39;s almost always a renderer problem. Markdown isn&#39;t one thing; it&#39;s a family of related syntaxes interpreted differently by dozens of parsers. The same document can render perfectly in VS Code, break in Confluence, and look different again on GitHub. Knowing \u003Cem>which\u003C/em> renderer you&#39;re debugging is the key to solving the problem fast.\u003C/p>\n\u003Cp>This guide covers the most common causes, organized by symptom and by platform.\u003C/p>\n\u003Ch2 id=\"start-here-identify-your-renderer\">Start Here: Identify Your Renderer\u003C/h2>\n\u003Cp>Before anything else, answer this question: \u003Cstrong>what is rendering your Markdown?\u003C/strong>\u003C/p>\n\u003Cdiv class=\"table-responsive\">\u003Ctable class=\"table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Where you&#39;re writing\u003C/th>\n\u003Cth>Renderer\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>GitHub README / PR description\u003C/td>\n\u003Ctd>GitHub Flavored Markdown (GFM)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Jekyll site\u003C/td>\n\u003Ctd>kramdown (usually)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Hugo site\u003C/td>\n\u003Ctd>Goldmark\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Docusaurus / MDX\u003C/td>\n\u003Ctd>remark\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>VS Code preview\u003C/td>\n\u003Ctd>Markdown-it\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Confluence\u003C/td>\n\u003Ctd>Not really Markdown — XHTML-based\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Slack\u003C/td>\n\u003Ctd>mrkdwn (Slack&#39;s own format)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Obsidian\u003C/td>\n\u003Ctd>Markdown-it with plugins\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Reddit\u003C/td>\n\u003Ctd>Snoomark (new) or older Reddit Markdown\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Notion\u003C/td>\n\u003Ctd>Notion&#39;s own parser (paste-only)\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\u003C/div>\n\u003Cp>Each renderer supports a different subset of Markdown features. Most support CommonMark as a baseline; the extended features (tables, task lists, footnotes, strikethrough) vary.\u003C/p>\n\u003Ch2 id=\"the-most-common-causes\">The Most Common Causes\u003C/h2>\n\u003Ch3 id=\"1-the-renderer-doesnt-support-that-syntax\">1. The renderer doesn&#39;t support that syntax\u003C/h3>\n\u003Cp>This is the most frequent cause. Something looks like standard Markdown but isn&#39;t supported by your target renderer.\u003C/p>\n\u003Cp>\u003Cstrong>Examples:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Footnotes\u003C/strong> — CommonMark doesn&#39;t include them. They work in Pandoc, kramdown, and GitHub (for Wikis), but not in basic GFM for README files.\u003C/li>\n\u003Cli>\u003Cstrong>Definition lists\u003C/strong> — supported by kramdown, not by most others.\u003C/li>\n\u003Cli>\u003Cstrong>Custom heading IDs\u003C/strong> (\u003Ccode>## Heading {#my-id}\u003C/code>) — supported by Pandoc and some Hugo themes, not in GitHub Flavored Markdown.\u003C/li>\n\u003Cli>\u003Cstrong>Subscript/superscript\u003C/strong> (\u003Ccode>H~2~O\u003C/code>, \u003Ccode>x^2^\u003C/code>) — Pandoc and some plugins only.\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Fix:\u003C/strong> Check the renderer&#39;s documentation for which extensions it supports. Don&#39;t assume something works because it works in your local editor.\u003C/p>\n\u003Ch3 id=\"2-missing-blank-lines-around-block-elements\">2. Missing blank lines around block elements\u003C/h3>\n\u003Cp>Markdown parsers are pickier than you&#39;d expect about blank lines. Most renderers require a blank line before and after:\u003C/p>\n\u003Cul>\n\u003Cli>Block-level HTML tags\u003C/li>\n\u003Cli>Fenced code blocks\u003C/li>\n\u003Cli>Lists that follow a paragraph\u003C/li>\n\u003Cli>Headings that follow content\u003C/li>\n\u003C/ul>\n\u003Cp>Without the blank line, a renderer may treat the content as a paragraph continuation instead of a new block.\u003C/p>\n\u003Cp>\u003Cstrong>This won&#39;t render correctly:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">Some text.\n\u003Cspan class=\"hljs-code\">```code\nexample\u003C/span>\n\u003C/code>\u003C/pre>\u003Cp>More text.\u003C/p>\n\u003Cpre>\u003Ccode>\n**This will:**\n```markdown\nSome text.\n\n```code\nexample\n\u003C/code>\u003C/pre>\u003Cp>More text.\u003C/p>\n\u003Cpre>\u003Ccode>\n### 3. Indentation inconsistency in lists\n\nList item continuation and nested lists depend on consistent indentation. The rules vary by renderer:\n\n- CommonMark requires **2 spaces** of indentation for nested items\n- Some older parsers require **4 spaces** or a tab\n- Mixing tabs and spaces causes unpredictable behaviour\n\n**Symptom:** A nested list renders flat, or a code block inside a list item renders as a paragraph.\n\n**Fix:** Use consistent 2-space indentation throughout, and never mix tabs with spaces.\n\n### 4. HTML inside Markdown getting stripped\n\nMany renderers strip raw HTML for security reasons. This is intentional.\n\n- **GitHub** strips `&lt;style&gt;`, `&lt;script&gt;`, and most event handlers from README files. It keeps safe tags like `&lt;details&gt;`, `&lt;summary&gt;`, `&lt;kbd&gt;`, and `&lt;br&gt;`.\n- **Hugo&#39;s Goldmark** strips raw HTML by default. You must add `markup.goldmark.renderer.unsafe: true` to your config to allow it.\n- **Confluence** rejects HTML entirely unless you use the dedicated HTML Macro.\n- **Docusaurus/MDX** interprets HTML as JSX — missing a closing tag or a non-void self-closing tag will break the entire page.\n\n**Symptom:** Your carefully crafted HTML layout renders as plain text, or throws an error.\n\n**Fix:** Check your renderer&#39;s HTML-in-Markdown policy. For Hugo, enable unsafe rendering. For GitHub, use only the subset of HTML tags that GFM allows. For Confluence, use the HTML Macro.\n\n### 5. Jekyll: Liquid syntax in code blocks\n\n\nJekyll processes Liquid template tags *before* Markdown rendering. This means any `{% ... %}` or `{{ ... }}` inside a code block — even a fenced one — will be executed as a template, not displayed as code.\n\n\n**Symptom:** Code block content disappears, or you see a Liquid error like `Liquid Warning: Liquid syntax error`.\n\n**Fix:** Wrap the problematic code block in `{% raw %}` and `{% endraw %}` tags. Your file should look like this:\n\n\n```bash\necho &quot;Hello {{ name }}&quot;\n\u003C/code>\u003C/pre>\u003Cp>This is required any time your code block contains \u003Ccode>{{\u003C/code>, \u003Ccode>}}\u003C/code>, \u003Ccode>{%\u003C/code>, or \u003Ccode>%}\u003C/code> — common when documenting Liquid, Jinja2, Handlebars, or Hugo templates.\u003C/p>\n\u003Ch3 id=\"6-jekyll-posts-not-appearing-date-in-the-future\">6. Jekyll: Posts not appearing (date in the future)\u003C/h3>\n\u003Cp>Jekyll doesn&#39;t render posts with a date in the future by default.\u003C/p>\n\u003Cp>\u003Cstrong>Symptom:\u003C/strong> A post exists in \u003Ccode>_posts/\u003C/code> but doesn&#39;t appear on the site.\u003C/p>\n\u003Cp>\u003Cstrong>Fix:\u003C/strong> Either set the date to today or earlier in the frontmatter, or add \u003Ccode>future: true\u003C/code> to \u003Ccode>_config.yml\u003C/code> in your development environment. Don&#39;t add it to production unless you intend posts to publish early.\u003C/p>\n\u003Ch3 id=\"7-hugo-shortcodes-in-markdown-code-blocks\">7. Hugo: Shortcodes in Markdown code blocks\u003C/h3>\n\u003Cp>Hugo processes shortcodes (\u003Ccode>{{&lt; ... &gt;}}\u003C/code>) before rendering, same as Jekyll&#39;s Liquid problem.\u003C/p>\n\u003Cp>\u003Cstrong>Symptom:\u003C/strong> A code block showing how to use a Hugo shortcode is broken or missing.\u003C/p>\n\u003Cp>\u003Cstrong>Fix:\u003C/strong> Use Hugo&#39;s \u003Ccode>{{&lt;/* ... */&gt;}}\u003C/code> comment syntax inside shortcode examples, or wrap in a highlight shortcode instead of a fenced block:\u003C/p>\n\u003Cpre>\u003Ccode>{{&lt;/* warning */&gt;}}\nThis is a warning box.\n{{&lt;/* /warning */&gt;}}\n\u003C/code>\u003C/pre>\u003Ch3 id=\"8-tables-missing-separator-row\">8. Tables: Missing separator row\u003C/h3>\n\u003Cp>A Markdown table requires a separator row of dashes between the header and the body rows. Without it, most renderers won&#39;t recognise it as a table at all.\u003C/p>\n\u003Cp>\u003Cstrong>This won&#39;t render as a table:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">| Name | Role |\n| Alice | Admin |\n| Bob | Editor |\n\u003C/code>\u003C/pre>\u003Cp>\u003Cstrong>This will:\u003C/strong>\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">| Name | Role |\n|------|------|\n| Alice | Admin |\n| Bob | Editor |\n\u003C/code>\u003C/pre>\u003Cp>The number of dashes doesn&#39;t matter (minimum 1 per cell), but the separator row is required.\u003C/p>\n\u003Ch3 id=\"9-confluence-markdown-paste-doesnt-work-as-expected\">9. Confluence: Markdown paste doesn&#39;t work as expected\u003C/h3>\n\u003Cp>Confluence is not a Markdown-native tool. Its internal format is XHTML. When you paste Markdown, Confluence converts it — and the conversion is lossy.\u003C/p>\n\u003Cp>\u003Cstrong>What works on paste:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Basic headings, bold, italic\u003C/li>\n\u003Cli>Simple unordered and ordered lists\u003C/li>\n\u003Cli>Code blocks (language tag is often dropped)\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>What breaks:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Tables (often rendered as plain text)\u003C/li>\n\u003Cli>Task lists\u003C/li>\n\u003Cli>Footnotes\u003C/li>\n\u003Cli>Nested blockquotes\u003C/li>\n\u003Cli>Raw HTML\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Better approach:\u003C/strong> Use the \u003Ccode>/markdown\u003C/code> slash command (Confluence Cloud) or the Wiki Markup import path. For reliable table conversion, use our \u003Ca href=\"/tools/markdown-to-confluence\">Markdown to Confluence tool\u003C/a> to convert to wiki markup first, then paste using Insert → Wiki Markup.\u003C/p>\n\u003Cp>See our full guide: \u003Ca href=\"/blog/markdown-in-confluence-what-works\">Markdown in Confluence: What Actually Works\u003C/a>.\u003C/p>\n\u003Ch3 id=\"10-github-gfm-vs-standard-markdown\">10. GitHub: GFM vs standard Markdown\u003C/h3>\n\u003Cp>GitHub Flavored Markdown adds extensions on top of CommonMark, but it also restricts some things.\u003C/p>\n\u003Cp>\u003Cstrong>Things that work in GFM but not standard Markdown:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Tables (pipe syntax)\u003C/li>\n\u003Cli>Task lists (\u003Ccode>- [x]\u003C/code>)\u003C/li>\n\u003Cli>Strikethrough (\u003Ccode>~~text~~\u003C/code>)\u003C/li>\n\u003Cli>Autolinks (\u003Ccode>https://...\u003C/code> without brackets)\u003C/li>\n\u003Cli>Alerts / callouts (\u003Ccode>&gt; [!NOTE]\u003C/code>)\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Things that do NOT work in GitHub README files:\u003C/strong>\u003C/p>\n\u003Cul>\n\u003Cli>Footnotes (they work in GitHub Wikis and GitHub Pages, but not README.md)\u003C/li>\n\u003Cli>Definition lists\u003C/li>\n\u003Cli>Custom CSS or \u003Ccode>&lt;style&gt;\u003C/code> tags\u003C/li>\n\u003Cli>\u003Ccode>&lt;script&gt;\u003C/code> tags\u003C/li>\n\u003C/ul>\n\u003Cp>\u003Cstrong>Symptom:\u003C/strong> A footnote \u003Ccode>[^1]\u003C/code> renders as literal text in a README but works fine in your local Markdown editor.\u003C/p>\n\u003Cp>\u003Cstrong>Fix:\u003C/strong> Check the \u003Ca href=\"https://github.github.com/gfm/\">GitHub Flavored Markdown spec\u003C/a> for what&#39;s in-scope. For README files specifically, if a feature isn&#39;t listed there, it won&#39;t work.\u003C/p>\n\u003Ch2 id=\"platform-comparison-what-renders-where\">Platform Comparison: What Renders Where\u003C/h2>\n\u003Cdiv class=\"table-responsive\">\u003Ctable class=\"table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Feature\u003C/th>\n\u003Cth>GitHub README\u003C/th>\n\u003Cth>Jekyll (kramdown)\u003C/th>\n\u003Cth>Hugo (Goldmark)\u003C/th>\n\u003Cth>Obsidian\u003C/th>\n\u003Cth>Confluence\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Tables\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>⚠️ partial\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Task lists\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅ plugin\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Footnotes\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Strikethrough\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>⚠️\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Definition lists\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Raw HTML\u003C/td>\n\u003Ctd>⚠️ safe subset\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>⚠️ opt-in\u003C/td>\n\u003Ctd>⚠️\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Math (LaTeX)\u003C/td>\n\u003Ctd>✅ (2022+)\u003C/td>\n\u003Ctd>✅ plugin\u003C/td>\n\u003Ctd>✅ plugin\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Mermaid diagrams\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅ plugin\u003C/td>\n\u003Ctd>✅ plugin\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Custom heading IDs\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>✅\u003C/td>\n\u003Ctd>❌\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\u003C/div>\n\u003Cp>See our \u003Ca href=\"/blog/markdown-platform-compatibility-guide\">full platform compatibility guide\u003C/a> for a more detailed breakdown.\u003C/p>\n\u003Ch2 id=\"debugging-workflow\">Debugging Workflow\u003C/h2>\n\u003Cp>When your Markdown breaks, work through this checklist:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cp>\u003Cstrong>Isolate the problem\u003C/strong> — create a minimal reproduction. Copy just the broken section into a fresh file. If that renders correctly, the issue might be something earlier in the document (unclosed code block, broken table, etc.) affecting parsing.\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Check for unclosed code blocks\u003C/strong> — an unterminated fenced code block (missing closing \u003Ccode>) will cause everything after it to render as code. Search for lone \u003C/code> in your document.\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Check the raw output\u003C/strong> — inspect the HTML source of the rendered page (right-click → View Source). This tells you whether the renderer is producing output at all or silently failing.\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Test in a known-good renderer\u003C/strong> — paste the Markdown into our \u003Ca href=\"/tools/markdown-editor\">live editor\u003C/a> to see if it renders there. If it does, the issue is your target renderer, not the Markdown itself.\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Check your linter\u003C/strong> — use our \u003Ca href=\"/tools/markdown-linter\">Markdown Linter\u003C/a> to catch structural issues (skipped heading levels, unclosed blocks, missing alt text) before they cause render failures.\u003C/p>\n\u003C/li>\n\u003Cli>\u003Cp>\u003Cstrong>Read the error logs\u003C/strong> — Jekyll and Hugo both print build warnings to the terminal. A Liquid error, a missing file, or a frontmatter parse failure will appear there before you spend 30 minutes debugging Markdown.\u003C/p>\n\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"summary\">Summary\u003C/h2>\n\u003Cp>Most Markdown rendering failures fall into one of these categories:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Renderer doesn&#39;t support the syntax\u003C/strong> — check the spec for your specific tool\u003C/li>\n\u003Cli>\u003Cstrong>Missing blank lines\u003C/strong> around block elements\u003C/li>\n\u003Cli>\u003Cstrong>Template tags in code blocks\u003C/strong> — use \u003Ccode>{% raw %}\u003C/code> in Jekyll, comment syntax in Hugo\u003C/li>\n\u003Cli>\u003Cstrong>HTML being stripped\u003C/strong> — check security settings, use only allowed tags\u003C/li>\n\u003Cli>\u003Cstrong>Confluence\u003C/strong> — it&#39;s not a Markdown renderer; use our wiki markup converter\u003C/li>\n\u003Cli>\u003Cstrong>Table missing separator row\u003C/strong> — always required\u003C/li>\n\u003C/ul>\n\u003Cp>The fix is almost always straightforward once you know which renderer is involved. Start there, and the rest usually follows.\u003C/p>\n\u003Ch2 id=\"related-posts-and-tools\">Related Posts and Tools\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"/blog/markdown-platform-compatibility-guide\">Markdown Across Platforms: What Works in GitHub, Notion, Obsidian, and Confluence\u003C/a> — the reference guide for cross-platform compatibility\u003C/li>\n\u003Cli>\u003Ca href=\"/blog/markdown-in-confluence-what-works\">Markdown in Confluence: What Actually Works\u003C/a> — deep dive on Confluence specifically\u003C/li>\n\u003Cli>\u003Ca href=\"/blog/markdown-for-technical-writers-docs-as-code\">Markdown for Technical Writers: The Docs-as-Code Workflow\u003C/a> — setting up markdownlint and Vale in CI\u003C/li>\n\u003Cli>\u003Ca href=\"/tools/markdown-linter\">Markdown Linter\u003C/a> — check your Markdown for style issues instantly\u003C/li>\n\u003Cli>\u003Ca href=\"/tools/markdown-editor\">Markdown Live Editor\u003C/a> — test how your Markdown renders in real time\u003C/li>\n\u003Cli>\u003Ca href=\"/tools/markdown-to-confluence\">Markdown to Confluence\u003C/a> — convert Markdown to Confluence wiki markup\u003C/li>\n\u003C/ul>\n",[15,19,22,25,28,31],{"id":16,"text":17,"level":18},"start-here-identify-your-renderer","Start Here: Identify Your Renderer",2,{"id":20,"text":21,"level":18},"the-most-common-causes","The Most Common Causes",{"id":23,"text":24,"level":18},"platform-comparison-what-renders-where","Platform Comparison: What Renders Where",{"id":26,"text":27,"level":18},"debugging-workflow","Debugging Workflow",{"id":29,"text":30,"level":18},"summary","Summary",{"id":32,"text":33,"level":18},"related-posts-and-tools","Related Posts and Tools",[35,36,37],"markdown-to-confluence","markdown-editor","markdown-linter",[39,47,53],{"slug":40,"title":41,"description":42,"excerpt":42,"date":43,"category":44,"author":45,"keywords":46,"readingMinutes":18},"rendering-markdown-in-react","Rendering Markdown in React","Rendering Markdown in React is a popular method for displaying rich text content within a React application. Markdown is a lightweight markup language that uses simple, easy-to-read syntax to…","2022-02-15","Tutorial","Matthew Rathbone (with help from OpenAI)","2/15/2023",{"slug":48,"title":49,"description":50,"excerpt":50,"date":51,"category":44,"author":45,"keywords":52,"readingMinutes":18},"rendering-markdown-in-ruby-on-rails","Rendering Markdown in Ruby on Rails","Rendering Markdown in Ruby on Rails is a way to display formatted text within a web application. Markdown is a lightweight markup language that allows users to write in a simple, easy-to-read…","2022-12-07","6/7/2023",{"slug":54,"title":55,"description":56,"excerpt":57,"date":58,"category":44,"author":59,"keywords":60,"readingMinutes":18},"rails-turbo-markdown-rendering","Rails Turbo Frames and Markdown Rendering Guide","Learn how to use Rails Turbo Frames for dynamic markdown rendering. This guide includes setup steps, integration tips & code snippets.","Ruby on Rails integrates with Hotwire's Turbo Frames to deliver highly interactive, JavaScript-driven web applications. This guide will illustrate how Turbo Frames can interact with Markdown…","2024-07-05","Matthew Rathbone","Rails turbo markdown rendering",1792184946841]