Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time


A blogging engine based on HTML5 and ASP.NET. For an ASP.NET Core version, see Miniblog.Core.

Build status

Deploy to Azure

Live demo:
Username: demo
Password: demo

Custom theme

In search for custom designed themes for MiniBlog? Click here.

Simple, flexible and powerful

A minimal, yet full featured blog engine using ASP.NET Razor Web Pages. Perfect for the blogger who wants to selfhost a blog.


  • Best-in-class performance
  • Gets a perfect score of 100/100 on Google Page Speed
  • Uses CDN for Bootstrap and jQuery in release mode (debug="false")
  • Easy setting for serving static files from another domain.
  • Open Live Writer (OLW) support
  • Optimized for OLW
  • Assumes OLW is the main way to write posts
  • You don't have to use OLW (but you should)
  • RSS and ATOM feeds
  • Schedule posts to be published on a future date
  • Get feedback on an unpublished post by sending a preview link
  • SEO optimized
  • Uses HTML 5 microdata to add semantic meaning
  • Support for robots.txt and sitemap.xml
  • Theming support
  • Based on Bootstrap themes. Makes it easy to customize your blog
  • Comes with a one-column, two-column, and off-canvas theme
  • No database required
  • Uses the same XML format as BlogEngine.NET
  • Move your existing blog to MiniBlog using MiniBlog Formatter
  • Inline editing of blog posts
  • Comments support
  • Gravatar support
  • Can easily be replaced by 3rd-party commenting system
  • Drag 'n drop images to upload
  • Automatically optimizes uploaded images
  • Uses latest technologies
  • OpenGraph enabled
  • Based on jQuery and Bootstrap
  • Best-in-class accessibility
  • Mobile friendly
  • Works on any host including Windows Azure Websites

Why another blog engine?

7 years have passed since I started the BlogEngine.NET project. It was using cutting edge technology for its time and quickly became the most popular blogging platform using ASP.NET.

The MiniBlog was born as a test to see what a modern blog engine could look like today with the latest ASP.NET and HTML 5 technologies. Just like with BlogEngine.NET, the goal was to see how small and simple such a blog engine could be.

This is the result.

Connecting with Open Live Writer (OLW)

To connect to MiniBlog with Open Live Writer:

  • Launch Open Live Writer

  • If you have not used Open Live Writer to connect to a blog you will get a dialog window asking you to specify what blog service you use. If you have already connected Open Live Writer to a blog, you can go to Blogs -> Add blog account... and get to the same dialog window.

  • In the What blog service do you use? dialog window you will tick the Other services radio option and click next.

  • The Add a blog account dialog window will ask you for the web address of your blog, the username and password. The web address is the root address of your site. For example, use for the live demo site.

  • The Download Blog Theme dialog window will let you know Open Live Writer can download your blog theme if you allow it to publish a temporary post. Selecting yes will allow you to view how your posts will look directly from the Open Live Writer editor.

  • The Select blog type dialog window will let you know Open Live Writer was not able to detect your blog type. It will ask you for the type of blog and the remote posting URL.
    Type of blog that you are using: Metaweblog API
    Remote posting URL for your blog: http://<root-address>/metaweblog
    Click next.

  • The Your blog has been set up dialog window will let you give your blog a nickname for the Open Live Writer instance. Change that if you want and click finish to get to posting!

Open Live Writer can be downloaded at:

Configuring MiniBlog as Virtual Application

MiniBlog is very compact and can be configured as a Virtual Application so you'd be able to use it alongside your existing websites. For example if you've got a running ASP.NET website at and you want to setup a blog under /blog/ path, you could setup with a few simple tweaks in web.config settings:

  • Set blog:path element of appSettings to the virtual path that you've configured for MiniBlog. Example with path blog
<add key="blog:path" value="blog"/>
  • Update the path attribute of all the <handlers> in web.config. Example with path blog
    <remove name="CommentHandler"/>
    <add name="CommentHandler" verb="*" type="CommentHandler" path="/blog/comment.ashx"/>
    <remove name="PostHandler"/>
    <add name="PostHandler" verb="POST" type="PostHandler" path="/blog/post.ashx"/>
    <remove name="MetaWebLogHandler"/>
    <add name="MetaWebLogHandler" verb="POST,GET" type="MetaWeblogHandler" path="/blog/metaweblog"/>
    <remove name="FeedHandler"/>
    <add name="FeedHandler" verb="GET" type="FeedHandler" path="/blog/feed/*"/>
    <remove name="CssHandler"/>
    <add name="CssHandler" verb="GET" type="MinifyHandler" path="/blog*.css"/>
    <remove name="JsHandler"/>
    <add name="JsHandler" verb="GET" type="MinifyHandler" path="/blog*.js"/>

    <remove statusCode="404"/>
    <error statusCode="404" responseMode="ExecuteURL" path="/blog/404.cshtml"/>

After changing the config all that is left is configuring a Virtual Application with the same path(ex. blog) inside your IIS website.