Markdown for image resize by px, not percent

Quick image resizing and markdown image dimensions talked about the new “Ninja :crossed_swords: feature” to add ,25% for image scaling.

That’s great, if you know the percentage that results in the px you want, and if you have consistently sized or few embedded images.

It’s not so great if you have a number of images of somewhat varying original size and you want them all to scale to (for instance) 250px width.

Changing a number of such images from markdown to HTML markup is also painful.

Any chance this Ninja feature could be enhanced to accept % or px specifications for the scaling?

1 Like

That is already supported:

![very good|25x19](//


very good


![very good|250x190](//


very good


You can’t just specify the width though.


I had misunderstood the meaning of the |250x190]. I thought that was meant to convey the size of the original, not that it was meant as a scaling.

(Is there one place to look to find documentation of all Markdown-for-Discourse?)

But yes, my wish here is to specify the width to scale to, and have the height be scaled proportionally.


I am pretty warm to adding support for:

|250x] and |x190] in fact I like this little bit of ninja so much that I will get the change slotted. @pmusaraj can you add this support?


This is now done and in tests-passed.


:thinking: I am having a bit of trouble with this…



1 Like

Not performant! :rofl:


Hmm, this is set up to respond to this syntax ![image|354x356,100x](upload://dHF5P9JKjZN0gahVLRQmDIEqo8C.jpeg) works:


I kept this consistent with percentage scaling, which responds to [image|300x100,50%].

1 Like

The percentage scaling ninja markup no longer makes mental sense to me.

[image|300x100,50%] says “show this image (actual size unknown), at 300px by 100px, but wait, scale that by 50%, so show it at 150px by 50px”.

I really don’t understand the point of this kind of notation – because you can just set the pixel sizing however you want it, so why not do the 50% scaling in the first place?

I do not want to specify one display size followed by a second display size, and cannot imagine why anyone would. I just want to say “show this image (of unknown original size) at 150px width, with proportionally scaled height” or “show this image (of unknown original size) at 150px height, with proportionally scaled width”.


the same question i want to ,just tell picture ,it is 200px width ,and skip height

I would like this as well.

Just to recap, it looks like the current syntax to scale images (with spaces for readability)


I think what would be really great is if we could scale ONLY the width OR the height, and input the word AUTO for the respective dimension.

e.g. Let’s say I wanted this image to be 150px wide but I don’t want to calculate the ratio to adjust the height to the proper resolution…
![very good|250x190](//

I’d love it if we could replace the WIDTH with 150 and the HEIGHT with auto as follows…
![very good|150xauto](//

Thoughts @Falco?

I still think the original proposal is a bit easier to explain.



Then edit to:


It does work now per this, but a bit harder to explain:


@jord8on this already all works, this is the syntax you are after:

[very good|250x190,150x]


Ahhhhh @sam, thank you for the redirection. The current functionality is PERFECT, if I’m understanding correctly now.

Let’s see if I’ve got this right…

  • “x” represents “auto”
  • if I use “x” before number it will represent width. e.g. x150 = "width: auto; height: 150px;"
  • if I use “x” after a number it will represent height. e.g. 150x = "width: 150px; height: auto;"


Let’s test that out with this image that is "width:600px; height: 200px;"

The default embed syntax is:

![we love discourse|600x200](upload://gvBLukUHTZLicvbieEMWVlBj9OK.png)

which looks like…

we love discourse

The following image has been scaled to a width of 200px (height = x = auto):

![we love discourse|600x200,200x](upload://gvBLukUHTZLicvbieEMWVlBj9OK.png)

which looks like:

we love discourse

The following image has been scaled to a height of 100px (width = x = auto):

![we love discourse|600x200,x100](upload://gvBLukUHTZLicvbieEMWVlBj9OK.png)

which looks like:

we love discourse


That seems to be working like a charm. So glad to understand, and now be able to use this!

Thanks @sam for the quick response! :raised_hands: