It's Free RPG Day again, and there's no better to play a free roleplaying game than with free and open source software. In this digital era of pen-and-paper gaming, it's still relatively unusual for adventures to include digital maps. In fact, it's also unusual for paper adventures to include maps that are sized correctly for miniatures, and many that do have colourful and richly textured maps that look great in a glossy book but look murky when photocopied and enlarged for the tabletop. Long story short: a tabletop gamer is often in need of a quick and convenient way to produce maps. Mipui is an open source web app that enables you to create grid-based maps for role-playing games, and it works great for virtual and physical tabletops alike.
No installation required
Mipui is primarily a hosted web app. If you use it and enjoy it, you can make a donation to help with operational costs at Mipui's ko-fi page.
Alternately, you can install your own Mipui instance, because it's distributed with an MIT license. It's a Node.js application, and as long as you've got experience running a web server, it's a pretty simple installation process. I run mine on a computer I rescued from the tip for use as a home server. The exact package names may vary depending on your distribution, but here are the steps I use.
First, install Git, a web server, and Node.js. Then use Git to download Mipui to the web root directory. Web root directories vary depending on your web server defaults, so verify the path if you're unsure where your web server looks for files.
$ sudo dnf install git nginx nodejs $ sudo git clone https://github.com/amishne/mipui.git \ /usr/share/nginx/html/
Next, install the required Node packages with
$ npm install firebase eslint
Finally, start the web server and open a port in your firewall to permit HTTP traffic:
$ sudo firewall-cmd --add-service http $ sudo systemctl enable --now nginx
/mipui/public/app/index.html on your server's address. For instance, if your server's hostname is
example.local then the address is
As of this writing, Mipui is rapidly gaining tools that turns it into a full-fledged interactive tabletop, complete with digital miniatures in the form of tokens, line of sight calculation, and fog-of-war. However, I currently use Mipui for cartography.
Drawing a room
The top toolbar of Mipui provide general categories of tasks. When you click on one, a toolbox appears below the first with further options.
You can set the theme you want applied to your maps at any time. My favourite is Cross Hatch (with grid), but there are several other themes available within the Map toolbox.
To start drawing, click the Walls button. Select the Rectangle Room tool from the toolbox, hover over the grid space you want the room to start, and then click and hold as you drag the rectangle to the desire size. You can divide the room into smaller sections with the same tool. Walls that overlap are merged into a continuous shape.
You can also add single walls with Wall (auto) and Wall (manual) tools.
You can add other features, such as doors, secret doors, windows, and bars using the Separators tool.
You can add arbitrary features, like furniture, crates, treasure chests, and so on, using the Shapes tool.
For stairs, ramps, underground passages, and pits, use the Elevation tool.
Open source game maps
There are lots more features in Mipui, including tools for the Game Master to conceal secret doors and text, and to obscure and reveal parts of the map. There's a library of tokens to serve as player characters, NPCs, and monsters. You can share a map in either read-only mode or editable mode, you can save a map to local storage (and import it again later), or export a map as an image for printing or for uploading to a virtual tabletop like Mythic Table.
I've been able to reimplement maps from published adventures quickly and easily with Mipui. The simple UI appeals to me, and the simple themes for the maps let the maps define the space but ensure that the players rely on imagination to fill the space in. Try Mipui the next time you need a map for your game.