[GH-ISSUE #310] Feature Request: Message formatting (Markdown, or otherwise) #241

Closed
opened 2026-05-07 00:22:09 +02:00 by BreizhHardware · 36 comments

Originally created by @NiNiyas on GitHub (Jun 4, 2022).
Original GitHub issue: https://github.com/binwiederhier/ntfy/issues/310

Originally assigned to: @binwiederhier on GitHub.

The ability to format messages. Like bold, italics and so on. Here for example is the discord formatting guide.

Originally created by @NiNiyas on GitHub (Jun 4, 2022). Original GitHub issue: https://github.com/binwiederhier/ntfy/issues/310 Originally assigned to: @binwiederhier on GitHub. The ability to format messages. Like bold, italics and so on. [Here](https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline-) for example is the discord formatting guide.
Author
Owner

@binwiederhier commented on GitHub (Jun 4, 2022):

Bravo for being the first 🥇 to actually open a ticket for this. About 50 people have asked, but nobody created a ticket. ;-)

<!-- gh-comment-id:1146587212 --> @binwiederhier commented on GitHub (Jun 4, 2022): Bravo for being the first 🥇 to actually open a ticket for this. About 50 people have asked, but nobody created a ticket. ;-)
Author
Owner

@MichelMichels commented on GitHub (Mar 27, 2023):

Does this mean ntfy does not atm support any formatting in the body?

<!-- gh-comment-id:1485135055 --> @MichelMichels commented on GitHub (Mar 27, 2023): Does this mean ntfy does not atm support any formatting in the body?
Author
Owner

@binwiederhier commented on GitHub (Mar 27, 2023):

Correct

<!-- gh-comment-id:1485169540 --> @binwiederhier commented on GitHub (Mar 27, 2023): Correct
Author
Owner

@MichelMichels commented on GitHub (Mar 27, 2023):

What would be the realistic steps to implement such an idea? I don't have any experience with Go, but am proficient in C#. I could try to set something up to help with the development of this feature.

<!-- gh-comment-id:1485180924 --> @MichelMichels commented on GitHub (Mar 27, 2023): What would be the realistic steps to implement such an idea? I don't have any experience with Go, but am proficient in C#. I could try to set something up to help with the development of this feature.
Author
Owner

@binwiederhier commented on GitHub (Mar 27, 2023):

This would be 90% Android, 10% server; probably just pulling in a markdown library in Android, and then somehow carrying the "content-type" through the message to the client; could potentially even use the "encoding" field for that.

<!-- gh-comment-id:1485246761 --> @binwiederhier commented on GitHub (Mar 27, 2023): This would be 90% Android, 10% server; probably just pulling in a markdown library in Android, and then somehow carrying the "content-type" through the message to the client; could potentially even use the "encoding" field for that.
Author
Owner

@binwiederhier commented on GitHub (May 23, 2023):

I'm working on this now. I will be using the markwon library even though it has not been updated in 2 years 😬

image

Design proposal

Right now, I'm thinking:

  • Add a content_type field to the message, which is text/plain by default, and can now also be text/markdown.
  • The content type can be passed via the Content-Type: text/markdown header, or via X-Markdown: yes or Markdown: yes or md: yes
  • The Android app by default will allow parsing markdown, but will have an option to disable embedding of external images:
    • [ ] Allow embedding markdown images
    • [x] Do not allow embedding markdown images

Thoughts? @wunter8 maybe. 😬

<!-- gh-comment-id:1559979494 --> @binwiederhier commented on GitHub (May 23, 2023): I'm working on this now. I will be using the [markwon library](https://github.com/noties/Markwon) even though it has not been updated in 2 years :grimacing: ![image](https://github.com/binwiederhier/ntfy/assets/664597/c9378be2-f99f-4784-b75f-3bab838e329c) ## Design proposal Right now, I'm thinking: - Add a `content_type` field to the message, which is `text/plain` by default, and can now also be `text/markdown`. - The content type can be passed via the `Content-Type: text/markdown` header, or via `X-Markdown: yes` or `Markdown: yes` or `md: yes` - The Android app by default will allow parsing markdown, but will have an option to disable embedding of external images: - `[ ] Allow embedding markdown images` - `[x] Do not allow embedding markdown images` Thoughts? @wunter8 maybe. :grimacing:
Author
Owner

@wunter8 commented on GitHub (May 23, 2023):

Looks good to me!

I am surprised this is being added to Android before the web app, but it'll be very nice to have!

<!-- gh-comment-id:1559987220 --> @wunter8 commented on GitHub (May 23, 2023): Looks good to me! I am surprised this is being added to Android before the web app, but it'll be very nice to have!
Author
Owner

@wunter8 commented on GitHub (May 23, 2023):

The Android app by default will allow parsing markdown, but will have an option to disable embedding of external images:

Will you be able to disable parsing markdown entirely? Or just disable automatic download of images in markdown? Will this be per subscription?

<!-- gh-comment-id:1559989669 --> @wunter8 commented on GitHub (May 23, 2023): > The Android app by default will allow parsing markdown, but will have an option to disable embedding of external images: Will you be able to disable parsing markdown entirely? Or just disable automatic download of images in markdown? Will this be per subscription?
Author
Owner

@binwiederhier commented on GitHub (May 23, 2023):

Will you be able to disable parsing markdown entirely? Or just disable automatic download of images in markdown? Will this be per subscription?

Might as well also allow disabling it entirely. And yes, probably global and per-subscription, just like the other options.

<!-- gh-comment-id:1560249619 --> @binwiederhier commented on GitHub (May 23, 2023): > Will you be able to disable parsing markdown entirely? Or just disable automatic download of images in markdown? Will this be per subscription? Might as well also allow disabling it entirely. And yes, probably global and per-subscription, just like the other options.
Author
Owner

@binwiederhier commented on GitHub (Jul 5, 2023):

@nimbleghost I know you're looking for your next challenge: Wanna do this one, the web app side? 😬 I have started the Android side a while back, before you came along and side-tracked me hard hehe.

There is a markdown branch (with minimal changes so far), but no changes in the web app, or any persistence in the message cache.

<!-- gh-comment-id:1620891217 --> @binwiederhier commented on GitHub (Jul 5, 2023): @nimbleghost I know you're looking for your next challenge: Wanna do this one, the web app side? :grimacing: I have started the Android side a while back, before you came along and side-tracked me hard hehe. There is a `markdown` branch (with minimal changes so far), but no changes in the web app, or any persistence in the message cache.
Author
Owner

@binwiederhier commented on GitHub (Jul 9, 2023):

Thanks to @nihalgonsalves's work the server and web app side of Markdown support is now merged to main. The ticket will remain open for the Android portion of it.

<!-- gh-comment-id:1627693034 --> @binwiederhier commented on GitHub (Jul 9, 2023): Thanks to @nihalgonsalves's work the server and web app side of Markdown support is now merged to main. The ticket will remain open for the Android portion of it.
Author
Owner

@Kariton commented on GitHub (Jul 21, 2023):

Hey,

love the project and its progress!
But for me the markdown does not work on any instance (public / selfhosted).

Should it already be available?

curl -d "Look ma, **bold text**, *italics*, ..." -H "Markdown: yes" ntfy.sh/rAU8FLX2R9NiXZRf

In case it matters: I use Brave, a chromium based browser.
Version 1.56.11 Chromium: 115.0.5790.102 (Official Build) (64-bit)

<!-- gh-comment-id:1646343486 --> @Kariton commented on GitHub (Jul 21, 2023): Hey, love the project and its progress! But for me the markdown does not work on any instance (public / selfhosted). Should it already be available? ```sh curl -d "Look ma, **bold text**, *italics*, ..." -H "Markdown: yes" ntfy.sh/rAU8FLX2R9NiXZRf ``` In case it matters: I use Brave, a chromium based browser. [Version 1.56.11 Chromium: 115.0.5790.102 (Official Build) (64-bit)](https://brave.com/latest/)
Author
Owner

@binwiederhier commented on GitHub (Jul 22, 2023):

It's not released yet.

<!-- gh-comment-id:1646366097 --> @binwiederhier commented on GitHub (Jul 22, 2023): It's not released yet.
Author
Owner

@Kariton commented on GitHub (Jul 22, 2023):

Thank you for confirming.

I was not sure because its documented but the issue is still open.

Love what you have created!
Its impressive.

<!-- gh-comment-id:1646561961 --> @Kariton commented on GitHub (Jul 22, 2023): Thank you for confirming. I was not sure because its documented but the issue is still open. Love what you have created! Its impressive.
Author
Owner

@Kariton commented on GitHub (Aug 18, 2023):

Markdown is now obviously live!
Looks and works great! 😍

(and also does the embedded picture!)

LOVE IT!

EDIT: at least on the web interface. 😃

<!-- gh-comment-id:1683134057 --> @Kariton commented on GitHub (Aug 18, 2023): Markdown is now obviously live! Looks and works great! 😍 (and also does the embedded picture!) LOVE IT! EDIT: at least on the web interface. 😃
Author
Owner

@fuse314 commented on GitHub (Jan 17, 2024):

Are there any plans to implement this in the Android app as well?
I spent 2 hours figuring out why markdown formatting did not work for me, until I found this issue :(

<!-- gh-comment-id:1894975961 --> @fuse314 commented on GitHub (Jan 17, 2024): Are there any plans to implement this in the Android app as well? I spent 2 hours figuring out why markdown formatting did not work for me, until I found this issue :(
Author
Owner

@wunter8 commented on GitHub (Jan 17, 2024):

Plans? Yes. I believe there is a work-on-progress branch that was started even. Timeline for estimated completion? Not yet

<!-- gh-comment-id:1896945789 --> @wunter8 commented on GitHub (Jan 17, 2024): Plans? Yes. I believe there is a work-on-progress branch that was started even. Timeline for estimated completion? Not yet
Author
Owner

@tolap22 commented on GitHub (Jun 4, 2024):

there any plans to implement this in the Android app as well?
I spent 2 hours figuring out why markdown formatting did not work for me, until I found this issue :(

seems the Android app does not yet support Markdown...

<!-- gh-comment-id:2147340099 --> @tolap22 commented on GitHub (Jun 4, 2024): > there any plans to implement this in the Android app as well? > I spent 2 hours figuring out why markdown formatting did not work for me, until I found this issue :( seems the Android app does not yet support Markdown...
Author
Owner

@mpeter50 commented on GitHub (Jun 15, 2024):

I have recently stumbled upon the Markdown functionality, and I already started using it for viewing in the webapp.
However I noticed that it does not support tables. The syntax doc page you refer to in your docs does not mention the common table syntax either.

Could we please also have table support?
I wanted to use it to display key-value pairs which are coming from a structured logging system of a tool I have been making.

<!-- gh-comment-id:2169712664 --> @mpeter50 commented on GitHub (Jun 15, 2024): I have recently stumbled upon the Markdown functionality, and I already started using it for viewing in the webapp. However I noticed that it does not support tables. The [syntax doc](https://www.markdownguide.org/basic-syntax/) page you refer to in your docs does not mention the common table syntax either. Could we please also have table support? I wanted to use it to display key-value pairs which are coming from a structured logging system of a tool I have been making.
Author
Owner

@iwa commented on GitHub (Aug 29, 2024):

is there any plan to support markdown in the ios app by any chance?

<!-- gh-comment-id:2317711266 --> @iwa commented on GitHub (Aug 29, 2024): is there any plan to support markdown in the ios app by any chance?
Author
Owner

@wunter8 commented on GitHub (Aug 29, 2024):

is there any plan to support markdown in the ios app by any chance?

We'd like to add it to iOS, but I wouldn't expect it anytime soon. We don't have any iOS devs right now, so progress is extremely slow.

However, the PWA on iOS already supports Markdown, so that's probably your best option in the meantime.

<!-- gh-comment-id:2317769332 --> @wunter8 commented on GitHub (Aug 29, 2024): > is there any plan to support markdown in the ios app by any chance? We'd like to add it to iOS, but I wouldn't expect it anytime soon. We don't have any iOS devs right now, so progress is extremely slow. However, the PWA on iOS already supports Markdown, so that's probably your best option in the meantime.
Author
Owner

@dodancs commented on GitHub (Jan 3, 2025):

Hey, is there any ETA on Markdown support in the Android app? It has been quite a few years and it still does not work. Thanks!

<!-- gh-comment-id:2569272325 --> @dodancs commented on GitHub (Jan 3, 2025): Hey, is there any ETA on Markdown support in the Android app? It has been quite a few years and it still does not work. Thanks!
Author
Owner

@wunter8 commented on GitHub (Jan 3, 2025):

You can use the PWA on Android to get markdown support now. The same as on iOS.

I think this PR works (or at least it's close): https://github.com/binwiederhier/ntfy-android/pull/77

But it hasn't been merged since Google changed Android APIs, which makes it harder to consistently get instant notifications, so we've been holding off until we have enough time to test everything for a new release. We're just busy with full-time jobs and family, so finding time is difficult.

<!-- gh-comment-id:2569349336 --> @wunter8 commented on GitHub (Jan 3, 2025): You can use the PWA on Android to get markdown support now. The same as on iOS. I think this PR works (or at least it's close): https://github.com/binwiederhier/ntfy-android/pull/77 But it hasn't been merged since Google changed Android APIs, which makes it harder to consistently get instant notifications, so we've been holding off until we have enough time to test everything for a new release. We're just busy with full-time jobs and family, so finding time is difficult.
Author
Owner

@Popkornium18 commented on GitHub (Jan 3, 2025):

Out of curiosity: Why is a Google API change for notifications relevant to markdown rendering? Shouldn't this API change be a general problem, whether you are using markdown or not?

<!-- gh-comment-id:2569459055 --> @Popkornium18 commented on GitHub (Jan 3, 2025): Out of curiosity: Why is a Google API change for notifications relevant to markdown rendering? Shouldn't this API change be a general problem, whether you are using markdown or not?
Author
Owner

@wunter8 commented on GitHub (Jan 3, 2025):

My understanding is that if you push any new updates to the Play Store at this point, Google requires that you use the new APIs. So yes, Markdown isn't specifically affected by the new APIs, but it would require an update in general, which is problematic. If we don't update at all, things keep working.

<!-- gh-comment-id:2569466841 --> @wunter8 commented on GitHub (Jan 3, 2025): My understanding is that if you push any new updates to the Play Store at this point, Google requires that you use the new APIs. So yes, Markdown isn't specifically affected by the new APIs, but it would require an update in general, which is problematic. If we don't update at all, things keep working.
Author
Owner

@applesoff commented on GitHub (Jul 8, 2025):

Things continuing to work is great, but what about adding new features/improvements? Markdown on Android feels like the last big thing to make the app feel complete. Plenty of PRs pending as well.

<!-- gh-comment-id:3047096023 --> @applesoff commented on GitHub (Jul 8, 2025): Things continuing to work is great, but what about adding new features/improvements? Markdown on Android feels like the last big thing to make the app feel complete. Plenty of PRs pending as well.
Author
Owner

@binwiederhier commented on GitHub (Jul 8, 2025):

@wunter8 already worked on that and it's ready to go. All I have to find is the "innerer Schweinehund" to actually sit down and get that out. Android development is the worst.

<!-- gh-comment-id:3047756682 --> @binwiederhier commented on GitHub (Jul 8, 2025): @wunter8 already worked on that and it's ready to go. All I have to find is the "innerer Schweinehund" to actually sit down and get that out. Android development is the worst.
Author
Owner

@DJCrashdummy commented on GitHub (Jul 8, 2025):

@binwiederhier if you found the "innerer Schweinehund", i hope you also can fight it successfully. 😉
...i always know exactly where it is, but fighting it or at least to overcome it is the hard part. 😜

<!-- gh-comment-id:3047976339 --> @DJCrashdummy commented on GitHub (Jul 8, 2025): @binwiederhier if you found the "innerer Schweinehund", i hope you also can fight it successfully. 😉 ...i always know exactly where it is, but fighting it or at least to overcome it is the hard part. 😜
Author
Owner

@Batwam commented on GitHub (Jul 17, 2025):

Is there any plan to also allow html formatting within markdown? It would be amazing to be able to access things like text colouring.

Also, is there a list of markdown features supported? Last time I checked, things like tables didn't work for instance.

<!-- gh-comment-id:3084166630 --> @Batwam commented on GitHub (Jul 17, 2025): Is there any plan to also allow html formatting within markdown? It would be amazing to be able to access things like text colouring. Also, is there a list of markdown features supported? Last time I checked, things like tables didn't work for instance.
Author
Owner

@Velocifyer commented on GitHub (Sep 7, 2025):

My understanding is that if you push any new updates to the Play Store at this point, Google requires that you use the new APIs. So yes, Markdown isn't specifically affected by the new APIs, but it would require an update in general, which is problematic. If we don't update at all, things keep working.

You can probably still use F-Droid with a old target api

<!-- gh-comment-id:3263974137 --> @Velocifyer commented on GitHub (Sep 7, 2025): > My understanding is that if you push any new updates to the Play Store at this point, Google requires that you use the new APIs. So yes, Markdown isn't specifically affected by the new APIs, but it would require an update in general, which is problematic. If we don't update at all, things keep working. You can probably still use F-Droid with a old target api
Author
Owner

@goodevilgenius commented on GitHub (Sep 20, 2025):

Just installed the preview release on Android. This mostly seems to work well, from my limited testing so far.

However ordered lists aren't supported properly. They're rendered unordered.

So, instead of:

  1. First
  2. Second
  3. Third

I get

  • First
  • Second
  • Third

web app showing ordered list

Android app showing unordered list

<!-- gh-comment-id:3315312608 --> @goodevilgenius commented on GitHub (Sep 20, 2025): Just installed the preview release on Android. This mostly seems to work well, from my limited testing so far. However ordered lists aren't supported properly. They're rendered unordered. So, instead of: 1. First 1. Second 1. Third I get - First - Second - Third ![web app showing ordered list](https://github.com/user-attachments/assets/d0f3f63e-2200-46a7-90e9-8715859ba72c) ![Android app showing unordered list](https://github.com/user-attachments/assets/fb07c62e-740a-49fd-a2b6-700ec1da0eb5)
Author
Owner

@applesoff commented on GitHub (Sep 22, 2025):

For the new pre-release, how do we make sure "Markdown: yes" was passed? Is this per message/notification?

<!-- gh-comment-id:3316670716 --> @applesoff commented on GitHub (Sep 22, 2025): For the new pre-release, how do we make sure "Markdown: yes" was passed? Is this per message/notification?
Author
Owner

@wunter8 commented on GitHub (Sep 22, 2025):

@applesoff You need to send 'Markdown: yes' as a header in your request. So it is per message, yes. There isn't an option to send a Markdown message through the web app UI yet, so it'd have to be from another app (like curl, requests.post in python, etc.)

<!-- gh-comment-id:3316674317 --> @wunter8 commented on GitHub (Sep 22, 2025): @applesoff You need to send 'Markdown: yes' as a header in your request. So it is per message, yes. There isn't an option to send a Markdown message through the web app UI yet, so it'd have to be from another app (like `curl`, `requests.post` in python, etc.)
Author
Owner

@applesoff commented on GitHub (Sep 22, 2025):

So I get the markdown format to work in the body of the message, but how do I get it to work in the title? Is this not functioning yet or did I miss a setting?

<!-- gh-comment-id:3318996386 --> @applesoff commented on GitHub (Sep 22, 2025): So I get the markdown format to work in the body of the message, but how do I get it to work in the title? Is this not functioning yet or did I miss a setting?
Author
Owner

@wunter8 commented on GitHub (Sep 22, 2025):

It looks like Markdown is only supported in the message/body right now and not in the title

<!-- gh-comment-id:3319082820 --> @wunter8 commented on GitHub (Sep 22, 2025): It looks like Markdown is only supported in the message/body right now and not in the title
Author
Owner

@binwiederhier commented on GitHub (Sep 25, 2025):

This is released as part of ntfy 1.17.8 (Android)

<!-- gh-comment-id:3331131348 --> @binwiederhier commented on GitHub (Sep 25, 2025): This is released as part of ntfy 1.17.8 (Android)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/ntfy#241
No description provided.