Markdown Help Viewer (Windows App and Delphi Component)

Related links: embarcadero.com - learndelphi.org
An integrated help system based on files in Markdown format (and also html), for any Windows applications
A "Setup" of the pre-built "Markdown Help Viewer" ready to use.
A unit (MarkdownHelpViewer.pas) to add the interface to Delphi Help System of your Delphi Application (from XE6 version to latest)
Two VCL Visual Components to automatically show Markdown files formatted in HTML:
- TEdgeMarkdownViewer (from Delphi 12): based on TEdgeBrowser (Microsoft Edge WebView2), it shows also math formulas and mermaid diagrams
- TMarkdownViewer (from XE6 to Delphi 11, optional from Delphi 12): based on HTMLViewer
A simple demo to show how to integrate the Help in your application, as exaplained here...
For editing and prepare the Help manual of your application we suggest to use the Editor contained into "Markdown Shell Extensions" project.
Documentation
Follow the Project Site to know all the markdown tools and the Delphi components: Markdown Processor, Markdown Text Editor and Markdown Help Viewer.
Features
Supports Windows 10 and 11 (for 32 bits and 64 bits).
Uses the latest, empowered version of the Markdown Processor (2.1): CommonMark 0.31.2 and GitHub Flavored Markdown compliant engine. The default dialect is now GitHub (GFM + math formulas, alerts and mermaid diagrams, plus subscript, superscript, insert, mark, smart typography, heading ids, wiki links and videos); CommonMark, GFM, DaringFireball and TxtMark are still available.
The documents are shown with Microsoft Edge WebView2 (TEdgeBrowser): math formulas (KaTeX), mermaid diagrams, GitHub alerts, modern CSS. When WebView2 is not available (or disabled in the Settings: "Use WebView2 (Edge) when available") the viewer falls back to HTMLViewer.
Math formulas and mermaid diagrams (also charts: pie, bar and line charts) are drawn also without an Internet connection: KaTeX and mermaid.js are installed with the viewer (Scripts folder).
Videos in the documents (
.mp4,.webm...), written as an image of the video file:. WebView2 plays them; HTMLViewer shows a link that opens the player of the system.Images, videos and links are resolved as a browser does: write their path relative to the document, with
/(images/logo.png,../images/logo.png).Themes (Dark and Light) according to user preferences of Windows Theme, with the VCL styles: Light: Sky, Windows Modern, Windows11 Impressive Light, Windows11 Modern Light, Windows11 Polar Light; Dark: Glow, Windows Modern SlateGray, Windows11 Impressive Dark, Windows11 Modern Dark, Windows11 Polar Dark
Auto-detect Index file in the working folder
Very easy to integrate into Delphi Application, also in "embedded" mode.
Automatic check and download when a new version is available
Setup using the Installer
Click to download the MarkDownHelpViewerSetup.exe located also in the Release area. The Installer works both for 32 and 64 bit system. Warning: this setup installs only the viewer.
The viewer uses the WebView2 runtime of Microsoft Edge, already present in Windows 11 and in the updated Windows 10 systems: if it is missing, the documents are shown with the internal HTML viewer.

Manual installation of Packages
If you want to use the Delphi Component you need to manual Build and Install the packages.
Open the correct group-project file for your Delphi version, located into Packages folder (for example: Packages\D13\MarkDownViewerGroup.groupproj), or run the build script of your version (for example: Packages\BuildAllPackagesD13.ps1).
Delphi 12 and 13: Build the run-time packages:
- MarkdownProcessorXXX.bpl
- MarkDownViewerXXX.bpl (TEdgeMarkdownViewer: no dependency from HTMLViewer)
and Install the design-time package:
- dclMarkDownViewerXXX.bpl
The component TEdgeMarkdownViewer is ready to use. If you still need the old TMarkdownViewer (HTMLViewer), build also the optional packages FrameViewerXXX.bpl and MarkDownViewerHTMLXXX.bpl and install dclMarkDownViewerHTMLXXX.bpl (they are not in the group project).
From XE6 to Delphi 11: Build the run-time packages:
- FrameViewerXXX.bpl
- MarkdownProcessorXXX.bpl
- MarkDownViewerXXX.bpl
and Install the design-time package:
- dclMarkDownViewerXXX.bpl
The component TMarkdownViewer is ready to use.
Remember also to add those Search Path:
- {MarkdownViewerInstallDir}\Source
- {MarkdownViewerInstallDir}\Source\Components
- {MarkdownViewerInstallDir}\Source\AppInterface
- {MarkdownViewerInstallDir}\Ext\HTMLViewer\Source (only for TMarkdownViewer)
- {MarkdownViewerInstallDir}\Ext\MarkdownProcessor\source
Deploy an application with TEdgeMarkdownViewer
TEdgeMarkdownViewer (and the Markdown Help Viewer itself) uses the Microsoft Edge WebView2 runtime through WebView2Loader.dll, which must be distributed together with your application (next to the executable, in the 32 or 64 bit version of the executable): it is in the Bin32 and Bin64 folders of this project (from the Microsoft WebView2 SDK, see Setup\LICENSE-WebView2.txt). Use TEdgeMarkdownViewer.EdgeAvailable to check at runtime that both the loader and the WebView2 runtime are available.
Math formulas (KaTeX) and mermaid diagrams are drawn by JavaScript libraries: to show them also without an Internet connection, distribute the Scripts folder of this project (KaTeX 0.16.11 and mermaid 11.17.2, MIT License) next to your executable or in its parent folder, where TEdgeMarkdownViewer finds it automatically (or set the ScriptsFolder property). Without it the libraries are loaded from the jsDelivr CDN (the same versions).
Manual Build of the Viewer
If you want to manual Build the Viewer, you can Build:
{MarkdownViewerInstallDir}\Source\MDHelpViewer.dproj
Markdown Help Viewer in action
A useful Viewer for instant preview of Markdown formatted content help files (with auto-detection of Windows-Theme):

The Viewer is "localized" for some languages. In this example the GUI with Italian language:

Step to activate this Help into MarkdownHelpViewerDemo Application
Use MarkdownHelpViewer.pas (located into AppInterface folder) in dpr:
MarkdownHelpViewer in '..\..\AppInterface\MarkDownHelpViewer.pas',then specify the default file of the help:
Application.HelpFile := ExtractFilePath(Application.ExeName)+'..\Help\Home.md';If you have installed the viewer using the provided Setup, the installation folder of the Viewer is registere into:
HKEY_CLASSES_ROOT\Applications\MDHelpViewer.exe\Shell\Open\Command so the interface can launch the viewer automatically.
If you don't want to use the provided Setup you can register the location of the Viewer built by yourself and deployed to a specific location, for example:
{$IFDEF WIN32}
RegisterMDViewerLocation(ExtractFilePath(Application.ExeName)+
'..\..\Bin32\MDHelpViewer.exe');
{$ELSE}
RegisterMDViewerLocation(ExtractFilePath(Application.ExeName)+
'..\..\Bin64\MDHelpViewer.exe');
{$ENDIF}Rules to open the correct file using HelpContext or HelpTopic
To test the application you can lauch the Home.md help using the menu About/Help: in the OnClick handler invoke the help:
procedure TfmMain.HelpMenuItemClick(Sender: TObject);
begin
Application.HelpKeyword('home');
end;In any Delphi component, you can define HelpType (htKeyword or htContext) and the specify HelpKeyword (string) or HelpContext (Integer).
When the user press "F1" inside the application, the HelpSystem is invoked with HelpKeyword or HelpContext.
Then the interface searches in the same folder of default file (specified into Application.HelpFile) the specific file using those rules:
Rules of precedence:
- first search a file named as the Keyword or the Context with any markdown extension (eg. 1000.md, MainForm.md)
- Then, try the Help Name and the Keyword (eg.Home1000.md, HomeMainForm.md)
- At least, try the Help Name and the Keyword with underscore (eg.Home_1000.md, Home_MainForm.md)
Release Notes
03 Nov 2026: ver. 3.1.4
- The highlighting of the code blocks (
MDCodeHighlightEmitter) uses Ethea SynEdit 3.0.0 (https://github.com/EtheaDev/SynEdit), the EtheaDev fork of pyscripter/SynEdit with every unit under theSynEdit.scope
All the release notes: README on GitHub
Markdown Help Viewer in depth
Everything about "MarkDown Help Viewer", its features and how to make the most of it, is explained in the Markdown Help Viewer in depth page of the Project Site.
License
Licensed under the Apache License, Version 2.0 (the "License");
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Copyright © 2023-2026 Ethea S.r.l.
Credits
Author: Carlo Barazzetta
Contributors: Nicolò Boccignone, Emanuele Biglia
Source project: https://github.com/EtheaDev/MarkdownHelpViewer
Other libraries from Ethea
Third party libraries
- Delphi Markdown
Copyright (c) 2011+, Health Intersections Pty Ltd. All rights reserved. - VCL Styles Utils
Portions created by Rodrigo Ruz V. are Copyright © 2012-2023 Rodrigo Ruz V. (Mozilla Public License 1.1) - SynEdit (PyScripter fork)
Portions created by Martin Waldenburg are Copyright © 1998 Martin Waldenburg (Mozilla Public License 1.1) - Skia4Delphi
Copyright © 2021-2025 Skia4Delphi Project (MIT License) - Image32 Library
Copyright © 2019-2025 Angus Johnson (Boost Software License) - OpenSSL Library: Cryptography and SSL/TLS Toolkit
Copyright © 1998-2018 The OpenSSL Project. All rights reserved. - Synopse/SynPDF
Copyright © Synopse: all rights reserved. - HtmlToPdf
Copyright © Muzio Valerio. - HTMLViewer
Copyright (c) 1995 - 2008 by L. David Baldwin
Copyright (c) 1995 - 2023 by Anders Melander (DitherUnit.pas)
Copyright (c) 1995 - 2023 by Ron Collins (HtmlGif1.pas)
Copyright (c) 2008 - 2009 by Sebastian Zierer (Delphi 2009 Port)
Copyright (c) 2008 - 2010 by Arvid Winkelsdorf (Fixes)
Copyright (c) 2009 - 2023 by HtmlViewer Team - KaTeX
Copyright (c) 2013-2020 Khan Academy and other contributors (MIT License) - Mermaid
Copyright (c) 2014-2022 Knut Sveidqvist (MIT License)
External projects
To simpilfy compilation of projects they are added into ext folder