Markdown floor plan maker

Sketch a floor plan in your browser. Draw walls, doors and rooms on a grid, then embed the plan in your Markdown as an image you can edit again later.

Floor plan syntax

A floor plan is written in a small plain-text format made for this tool. It starts with the word floorplan, then lists one element per line: rooms, doors, walls and labels. Every position is given in grid cells, counted from the top-left, with x going right and y going down. On screen each cell is drawn as a fixed number of pixels (28 by default).

Start a plan

The first line is always the word floorplan. Add rooms below it. A room takes an x and y position, a width and a height in cells, then a quoted name. The renderer draws the floor, a thick wall outline and the name with its cell size.

You write
floorplan
room 0 0 8 5 "Living"
room 8 0 5 5 "Kitchen"
You get

Doors

A door takes an x and y grid position and a direction: h for a door in a horizontal wall or v for a vertical one. It clears a one-cell gap in the wall and draws the quarter-circle swing.

You write
floorplan
room 0 0 6 4 "Office"
door 2 0 h
door 6 1 v
You get

Extra walls

A wall is a straight line between two grid points: wall x1 y1 x2 y2. Use it to split a room or add a partition that is not a full rectangle.

You write
floorplan
room 0 0 8 5 "Studio"
wall 5 0 5 5
wall 5 3 8 3
You get

Labels

A label drops free text at a grid position: label x y "text". Use it to mark furniture or a fixture such as a bed, sink or table.

You write
floorplan
room 0 0 7 5 "Bedroom"
label 2 2 "Bed"
label 5 4 "Desk"
You get

Grid size

Add a units line right after floorplan to set how many pixels each grid cell is. The default is 28. A larger number draws the same plan bigger.

You write
floorplan
units 44
room 0 0 5 4 "Hall"
door 2 4 h
You get

Cheat sheet

Write this You get
floorplanStart a floor plan (always the first line)
units 28Pixels per grid cell (default 28)
room 0 0 6 4 "Kitchen"A room at grid (0,0), 6 cells wide by 4 tall, named Kitchen
door 3 0 hA door at (3,0) in a horizontal wall
door 6 2 vA door at (6,2) in a vertical wall
wall 0 3 6 3An extra wall from (0,3) to (6,3)
label 2 2 "Sofa"Free text "Sofa" at grid (2,2)
# noteA comment line (ignored)