Free online converter

Convert SVG, CAD or Figma floor plans to GeoJSON

FloorJSON turns a vector floor plan into real-world GeoJSON: every room becomes a polygon with longitude and latitude, its name, its group (floor) and its colour. Here is the full workflow, including how to get a usable SVG out of Figma, AutoCAD and other CAD tools.

Updated 6 November 20268 min read

Most SVG to GeoJSON converters give you shapes in pixel coordinates, or drop the room names and layers on the way. That is fine for icons, but useless for an indoor map that has to sit on top of a real building. FloorJSON solves the missing step: you place the drawing on an OpenStreetMap basemap, and every shape is exported with real coordinates (WGS 84 longitude/latitude, as RFC 7946 requires).

FloorJSON editor with rooms drawn on a London street map, a Drawings list grouped by floor, and the drawing toolbar
Rooms placed on the map, grouped by floor in the Drawings list.

Which files work

FloorJSON reads SVG. Almost every design and CAD tool can produce one, directly or through a free converter:

Your sourceHow to get an SVGEffort
Figma, FigJamSelect the frame → Export → SVGDirect
Adobe Illustrator, Affinity Designer, InkscapeSave or export as SVGDirect
AutoCAD (DWG / DXF)Plot to PDF, then open the PDF in Inkscape and save as SVG; or open the DXF directly in InkscapeOne extra step
Revit, ArchiCAD, VectorworksExport the floor plan view to DWG/DXF or PDF, then follow the AutoCAD routeTwo extra steps
Visio, PowerPoint, draw.ioExport or save as SVGDirect
A scanned image (PNG, JPG)Trace the rooms with FloorJSON's drawing tools instead of convertingManual

Inside the SVG, FloorJSON converts path, rect, polygon, polyline, circle and ellipse elements. Each one becomes a GeoJSON Polygon.

Step by step

  1. Prepare the SVG. Draw every room, desk or zone as one closed, filled shape. Walls drawn as thick strokes are lines, not areas, so give rooms their own shapes. Put each floor in its own group (<g>), since FloorJSON turns groups into the group property.
  2. Open FloorJSON and upload. Drop the file on the upload box. The shape list shows every room it found, already grouped.
  3. Find the building. Search for the address in the top bar, then zoom in until you can see the building outline on the map.
  4. Align the plan. Drag the drawing into place, pull the corners to scale it, and use the round handle to rotate it. Lower the opacity slider so you can see the map underneath while you line up the outer walls.
  5. Name and describe rooms. Click a shape to rename it, change its colour or add your own attributes, such as level, capacity or department. They are exported as GeoJSON properties.
  6. Add what the drawing is missing. Use the bottom toolbar to draw extra polygons, points for doors or desks, a radius around an entrance, or a text label inside a room.
  7. Export. Click Download GeoJSON, or open Preview to copy the JSON or download a ready-made HTML map.

Exporting from Figma

Figma is the quickest route because the export is already a clean SVG.

  • Name your layers. Call each room layer what it is ("Kitchen", "Meeting room 2"). In the export settings, tick Include "id" attribute so the names travel with the SVG. FloorJSON uses them as feature names.
  • Use frames or groups for floors. A group called "Level 1" becomes "group": "Level 1" on every room inside it.
  • Fill rooms, don't just outline them. A rectangle with a fill exports as one clean shape. The fill colour is kept as the fill property.
  • Avoid masks and boolean groups for the rooms you want to export. Flatten them first (Object → Flatten) so each room is a single path.

Converting CAD drawings (DWG and DXF)

FloorJSON doesn't open DWG or DXF files directly, so you convert the drawing to SVG first. Three free or common routes:

  1. AutoCAD → PDF → Inkscape → SVG. Plot the floor plan layout to PDF (the DWG To PDF.pc3 plotter), open the PDF in Inkscape, ungroup, delete what you don't need and use Save As → Plain SVG.
  2. DXF straight into Inkscape. Inkscape opens DXF files directly. Save the result as Plain SVG.
  3. Adobe Illustrator opens DWG and DXF and exports SVG.
Clean the drawing before exportingTurn off layers for dimensions, hatching, furniture blocks and text. Hatches and text explode into hundreds of tiny shapes. Keep one layer of closed room outlines (closed polylines in AutoCAD) and you'll get one polygon per room.

Why not use a generic SVG to GeoJSON converter?

Generic converters treat the SVG as a picture. A floor plan needs more:

  • Real coordinates. Pixel or millimetre coordinates won't sit on a web map. FloorJSON outputs longitude/latitude placed against an OpenStreetMap basemap, including rotation.
  • Names. Room names come from the SVG's id, Inkscape labels or <title> elements, and you can edit them before exporting.
  • Floors and groups. SVG groups become the group property, so a multi-level plan stays organised.
  • Consistent properties. Every feature gets the same keys (name, group, shape_type, fill and more). See the properties schema examples for the full list.

What the exported GeoJSON looks like

Each room becomes one feature in a FeatureCollection. A trimmed example:

floorplan.geojson
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "name": "Kitchen",
        "group": "Level 1",
        "shape_type": "rect",
        "fill": "#f0a020",
        "centroid_lng": -0.0904512,
        "centroid_lat": 51.5051873,
        "layer_rotation": 12,
        "level": "1"
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [[[-0.09052, 51.50512], [-0.09038, 51.50514],
          [-0.09039, 51.50525], [-0.09053, 51.50523], [-0.09052, 51.50512]]]
      }
    }
  ]
}

Coordinates are written with 7 decimal places, which is about 1 cm of precision, more than enough for room-level indoor maps. Outer rings follow the RFC 7946 winding order (counter-clockwise).

How accurate is it?

The plan is as accurate as your alignment. You line it up by eye against the basemap, so expect roughly the accuracy of the map itself: usually within a metre or two in well-mapped cities. Align against the building's outer walls at a high zoom level. If you need survey-grade accuracy, align against your own surveyed control points in a GIS tool after export.

Current limitations

  • No direct DWG/DXF or PDF import: convert to SVG first.
  • Holes inside shapes (an atrium inside a floor) are not cut out; draw them as separate shapes.
  • Curves are converted into straight segments (up to 64 points per shape).
  • Transforms on nested groups are supported; clip paths and masks are ignored.

FAQ

Is FloorJSON free?Yes. The editor and every export are free to use. Exports are licensed CC BY 4.0, so keep the FloorJSON attribution that is included in the file.
Is my floor plan uploaded to a server?No. Your SVG is read and converted in your browser. Only map tiles and address searches go over the network.
Can I convert a DWG file directly?Not yet. Export the plan to PDF or DXF and convert it to SVG with Inkscape or Illustrator first. The CAD section above shows the steps.
How do I handle a building with several floors?Put each floor in its own SVG group, or assign a group in FloorJSON. Every room then carries a group property you can filter on, for example to show one floor at a time.
Can I edit the GeoJSON after converting?Yes. Open Preview and click Edit to change the JSON directly, or use the drawing tools to add, merge, colour and label shapes before exporting again.

Convert your floor plan now

Drop your SVG into FloorJSON, line it up with the building on the map and download GeoJSON. Nothing is uploaded to a server: your file is processed in your browser.

Open FloorJSON