This year, I’ve converted the bulk of my content into Markdown – a simple way of formatting text files in a way that can be rendered into HTML.

Not out of choice, really. It was the only solution if I wanted to:

  • Edit files on my iPad / iPhone (I’ve started doing that a lot more recently)
  • Allow the contents to be viewable as HTML as well as text, and
  • Allow non techies to edit the file

As a bonus, it’s already the format Github and Bitbucket use for markup.

If you toss Dropbox into the mix, there’s a powerful solution there. You can share files via Dropbox as Markdown, and publish them as web pages. There are already a number of solutions that let you do this. and let you share Dropbox files as web pages. lets you blog using Dropbox.

My needs were a bit simpler, however. I sometimes publish Markdown files on Dropbox that I want to see in a formatted way – without having to create an account. Just to test things, or share temporarily.

Enter My project for this morning.

Just add any URL after to render it as Markdown. For example, to render the file at, visit

To test it out, create any text file in your Dropbox public folder, get the public link:

… and append it to without the http:// prefix.

  1. […] kind of people who can whip up something like Markdress in a […]

  2. Awesome! Nicely done!

    Not sure if it’s by design or not, but FWIW the example given seems to show that relative url’s aren’t handled correctly – the bottom of this page:

    has this relative url:

    [tfmenu]: /graphics/markdown/mt_textformat_menu.png

    which gets faithfully rendered into:

    That fails, of course, with the attempted get operation returning:

    Could not fetch http://graphics/markdown/mt_textformat_menu.png

    FWIW, inserting a base tag in the head seems to work fine, like:

    However, it would have to be the ‘real’ url in the base – IOW, this doesn’t work:

    On a related note, IMHO it seems like markdress should handle redirects and ‘pass through’ as a redirect to the markdress version.

    IOW, looking at this example request from the post:

    When markdress requested the page and got back a redirect, instead of following it, it should have instead passed back a redirect to:

    IMHO, that’s a better user experience as it’s more clear what’s getting served up (and it would reflect in the title as well). If/when caching was added (assuming it’s not there now), then you’d want to have the canonical url for targets anyway. 🙂

    That behavior isn’t required to fix the relative-url issue, but since you’ll have to know what requests redirect to (the call may be implicitly following it now, so you don’t currently know?), then you’ll have the necessary info to do this piece as well. 🙂

    Thanks again for marking markdress! It’s definitely going to be incredibly useful!

  3. S Anand says:

    James, your suggestion on following URLs is spot-on! I’ll put this in (one of these days, when I get back to this…)

  4. Thejesh GN says:

    Check this
    I have been using it locally for sometime. Its cool.

  5. I seem to struggle getting list items to work
    Any idea?

  6. S Anand says:

    You need to have an empty line before a list. For example:

    # Test
    This is a list:

    * one
    * two
    * three

  7. Gee says:

    Markdress is great. I have it running on my server. I would like to render files in a directory adjacent to, or inside the app folder, instead of entering a URL path each time. I would like to enter just ` filename.txt ` and it would default back to (effectively) ` /markdress/filename.txt `

    I looked over index.php and tried a few things but I can’t get relative files to render. Is this an enhancement you’ve considered? Thanks for the great tool.

  8. S Anand says:

    I personally use this sort of a variant, but havent gotten around to making the same changes on markdress. I will do that over the next few days, once I settle down.

  9. Gee says:

    Great news. And all the best in your new ventures. Meanwhile, I made a simple bookmarklet for you:

  10. Jeff Byrnes says:

    Markdress appears to have expired, any chance of its return?

  11. S Anand says:

    I didn’t think anyone was using it — so I just let the domain expire.

    Alternatives are at You could also host the code yourself.