The plugin writes messages with the prefix [Markdown-Support] to the PHP error log. Check there first.
Symptoms: The plugin does not appear under Manage > Plugins, or osTicket reports an error while loading.
Checks:
include/plugins/markdown-support/ with plugin.php directly inside?vendor/autoload.php exist in the plugin folder? The plugin requires this file.Fix: Use the release ZIP, or run composer install --no-dev in the Git checkout.
Checks:
js/markdown-editor.js load with status 200 (network tab)?tickets.php or ticket.php? The assets are only included for these script names.response, note or message?Fix: Hard-reload the page (Ctrl+Shift+R). If the network tab shows a 403 error for js or css, see the next section.
The format switcher only appears with Allow Format Switching on. It only offers Markdown and HTML. There is no Text format in the switcher.
The plugin extends the file include/.htaccess on activation. If that did not work (for example because of missing write permission), the log shows Warning: /include/.htaccess not found or Could not find insertion point in /include/.htaccess.
Fix: Deactivate and reactivate the plugin. Then check whether include/.htaccess contains a block # Allow static assets and API endpoints for plugins. For NGINX there is no automatic adjustment: allow access to /include/plugins/markdown-support/css/ and /include/plugins/markdown-support/js/ in the server configuration.
Possible causes:
Unable to apply patch - pattern not found, class.thread.php not found or Failed to write patched file. Check whether include/class.thread.php contains the text case 'markdown': and whether the web server user may write the file.Composer autoload not found.The preview calls api/markdown-preview.php. If the endpoint does not answer, the editor shows a simplified browser preview without tables.
Checks:
api/markdown-preview.php exist? Is the api/ directory writable for the web server user? Otherwise the log shows Error: Cannot copy API file or Error: /api directory not found.405 Method Not Allowed on GET is normal)?markdown-support? The endpoint looks for Parsedown under this path.| Symptom | Cause and fix |
|---|---|
Message Image upload not available — no draft context found. |
The input field has no draft context. The upload is only available in forms with osTicket drafts |
The placeholder ![Uploading image-1...]() disappears without an image |
The CSRF token is missing. Reload the page |
| Error message after drag and drop | Check the browser console and network tab, check upload_max_filesize and post_max_size in PHP |
| File is rejected | Only JPEG, PNG, GIF, WebP and BMP are allowed |
The pre-conversion for emails only runs for requests with format=markdown in $_POST. For API requests the format is only available later. See API integration.
The configuration reports Auto-convert requires Markdown Support to be enabled. Turn on Enable Markdown Support and save again.
Is there an option for the live preview?
No. The preview is always active in Markdown mode, except in the compact editor.
Can clients write Markdown in the portal?
The plugin only checks the script name tickets.php/ticket.php and does not distinguish between staff and clients. Whether the portal form gets the editor depends on the pages of your osTicket. Markdown entries are rendered wherever osTicket outputs the entry.
Can I mix Markdown and HTML in the same ticket?
Yes, the format applies per thread entry.
What happens to existing entries when I deactivate the plugin?
The plugin deletes nothing. Entries keep their format and Markdown text in the database. How they are displayed without the plugin is decided by the osTicket core.
Does the plugin run with osTicket 1.17 or older?
The plugin is written for osTicket 1.18.x. Other versions are not a target of the plugin, and the core patch may fail there.
Is HTML inside Markdown entries executed?
No. Parsedown runs in SafeMode, and the result passes through Format::sanitize(). See Technical details.