Welcome to
online split-screen Markdown/ HTML Editor with a Live Preview!


πŸ“ Write (using the editor on the left side πŸ‘ˆ)

  • common Markdown syntax extended with Github Flavored Markdown (GFM) (see the guide)
  • vanilla HTML tags with inline CSS styles & embed HTML elements, like video, audio, websites etc. (see the guide)
  • highlighted code blocks

πŸ”Ž & see how it is rendered as an HTML! (in the renderer on the right side πŸ‘‰)


Actually... 😏 you can edit this rendered default text right now by editing Markdown in the editor on the left! πŸ‘ˆπŸ˜Ž

Or... you can start from scratch in the editor, write some Markdown & it will be πŸ’Ύ saved automatically in local storage for future use!


πŸ’ͺBattle-tested Markdown Editor & Renderer


This Markdown Editor & Rendered (these are 2 separate components) is used in a few of my real-world open source projects:


πŸš€Updates after 3 years😏


The project was established in 2021, but it was upgraded, extended & rewritten basically from scratch in January 2024.

I've added new editor/renderer features, upgraded tech stack (upgraded React and finally migrated to Next.js) & added new guides. Let's dive in!


New Markdown Editor/ Renderer features


Editor/ Renderer Features 2022 2024
Markdown βœ… βœ…
GitHub Flavored Markdown (GFM) βœ… βœ…
code highlighting (auto light & dark mode) ❌ βœ…
HTML tags ❌ βœ…
inline CSS styles ❌ βœ…
embed elements ❌ βœ…
react-markdown/ custom renderer switching ❌ βœ…

New App features


App Features 2022 2024
Routing ❌ βœ…
Dark/ Light Mode ❌ βœ…
Guides ❌ βœ…
Show/ hide editor/ renderer ❌ βœ…

New additional custom renderer (along with previous react-markdown based renderer)


Also I've created & added a new custom react-markdown-free Markdown Renderer along with the existing renderer built on top of react-markdown renderer, so now you can switch between them using a checkbox in the navbar. Custom renderer is the default option (becuase it's bugs-free 😏).

Those 2 coexisting renderers give almost same input, but there are a few differences (pros & cons):

react-markdown based editor custom renderer
react-markdown βœ… ❌
remark plugins βœ… ❌
rehype plugins βœ… ❌
footnotes βœ… ❌
partial HTML/ CSS inline styles bug-free ❌ βœ…
marked ❌ βœ…
dompurify ❌ βœ…
highlight.js ❌ βœ…

Technologies used in the project


Technologies 2022 2024 (1st upgrade) 2024 (2nd upgrade)
next ❌ ❌ 14.0.4
react 17.0.2 18.2.0 18.2.0
javascript βœ… βœ… βœ…
typescript ❌ ❌ βœ…
react-markdown 7.0.1 9.0.1 9.0.1
react-router-dom ❌ 6.21.1 ❌
bootstrap 5.1.3 5.3.2 5.3.2
bootstrap-icons ❌ 1.11.3 1.11.3
remark-gfm 3.0.0 4.0.0 4.0.0
rehype-raw ❌ 7.0.0 7.0.0
rehype-highlight ❌ 7.0.0 7.0.0
dompurify ❌ 3.0.8 3.0.8
isomorphic-dompurify ❌ ❌ 2.2.0
marked ❌ 11.1.1 11.1.1
highlight.js ❌ 11.9.0 11.9.0
gh-pages 3.2.3 6.1.1 ❌
GitHub Pages/ GitHub Actions/ CI/CD ❌ ❌ βœ…
πŸ’Ύ localStorage (to store inputed markdown) βœ… βœ… βœ…

🐞 WARNING!
Partial HTML/ inline CSS bug
in react-markdown based renderer
(❗use custom renderer instead (default)❗)


If you're using react-markdown renderer option, you can get some errors caused by partial HTML or incomplete inline CSS styles in your markdown while you're editing content & the app may crash...

I will fix it eventually, but don't worry - your content is always synced with local storage, so refresh the page & fix your partial HTML in non react-markdown renderer option (by default the editor is using my custom md renderer, which is not causing such errors) & you can continue working with react-markdown based renderer if you want to.