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.
floorplan
room 0 0 8 5 "Living"
room 8 0 5 5 "Kitchen"
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.
floorplan
room 0 0 6 4 "Office"
door 2 0 h
door 6 1 v
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.
floorplan
room 0 0 8 5 "Studio"
wall 5 0 5 5
wall 5 3 8 3
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.
floorplan
room 0 0 7 5 "Bedroom"
label 2 2 "Bed"
label 5 4 "Desk"
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.
floorplan
units 44
room 0 0 5 4 "Hall"
door 2 4 h
Cheat sheet
| Write this | You get |
|---|---|
floorplan | Start a floor plan (always the first line) |
units 28 | Pixels 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 h | A door at (3,0) in a horizontal wall |
door 6 2 v | A door at (6,2) in a vertical wall |
wall 0 3 6 3 | An extra wall from (0,3) to (6,3) |
label 2 2 "Sofa" | Free text "Sofa" at grid (2,2) |
# note | A comment line (ignored) |