Skip to the content
FIRST HOME FREE 30 days of exports without the mark, no card
.sqm

The Squaremetry plan format (.sqm)

The Squaremetry format is an open JSON file (.sqm) for floor plans measured to a standard. It holds floors, walls with their kind and thickness, doors and windows, rooms with their use and ceiling heights, voids, stairs and outbuildings, and where each size came from. Every length is a whole number in 0.1 mm. Areas under a standard are optional and always come with the rule set and its version. The specification is CC BY 4.0; the JSON Schema and a small reader are MIT.

  • schemaVersion 1
  • Specification CC BY 4.0, schema and reader MIT
  • File .sqm, media type application/vnd.squaremetry+json

A small example

One room of 4 by 5 m inside the walls, with a door, and the area stored when the file was saved: 20 m² of usable area under the Dutch measuring instruction, rule set 0.1.5.

one-room.sqm
{
  "format": "squaremetry-plan",
  "version": 1,
  "savedAt": "2026-10-01T09:00:00.000Z",
  "project": {
    "schemaVersion": 1,
    "id": "example-one-room",
    "name": "One room",
    "units": "metric",
    "normProfile": "nl-meetinstructie-2019-07",
    "floors": [
      {
        "id": "f1",
        "name": "Ground floor",
        "level": 0,
        "elevation": 0,
        "defaultHeight": 26000,
        "walls": [
          {
            "id": "s1",
            "a": {
              "x": -1500,
              "y": -1500
            },
            "b": {
              "x": 41500,
              "y": -1500
            },
            "thickness": 3000,
            "kind": "exterior",
            "prov": {
              "src": "laser",
              "tol": 20
            }
          },
          {
            "id": "s2",
            "a": {
              "x": 41500,
              "y": -1500
            },
            "b": {
              "x": 41500,
              "y": 51500
            },
            "thickness": 3000,
            "kind": "exterior",
            "prov": {
              "src": "laser",
              "tol": 20
            }
          },
          {
            "id": "s3",
            "a": {
              "x": 41500,
              "y": 51500
            },
            "b": {
              "x": -1500,
              "y": 51500
            },
            "thickness": 3000,
            "kind": "exterior",
            "prov": {
              "src": "measured"
            }
          },
          {
            "id": "s4",
            "a": {
              "x": -1500,
              "y": 51500
            },
            "b": {
              "x": -1500,
              "y": -1500
            },
            "thickness": 3000,
            "kind": "exterior",
            "prov": {
              "src": "measured"
            }
          }
        ],
        "rooms": {
          "f:s1+s2+s3+s4": {
            "name": "Living room",
            "fn": "living",
            "highest": 26000
          }
        },
        "holes": [],
        "openings": [
          {
            "id": "o1",
            "wallId": "s1",
            "kind": "door",
            "at": 21500,
            "width": 9000,
            "swing": "left-in"
          }
        ]
      }
    ]
  },
  "derived": {
    "ruleSet": {
      "id": "nl-meetinstructie-2019-07",
      "version": "0.1.5"
    },
    "computedAt": "2026-10-01T09:00:00.000Z",
    "main": {
      "key": "GOW",
      "area": 2000000000
    },
    "totals": {
      "GOW": 2000000000,
      "GOOI": 0,
      "GOGB": 0,
      "OEBR": 0
    }
  }
}

What is in a file

A file is a small wrapper around the plan. The plan is the source; everything else can be computed from it again.

What is in a file
FieldWhat it holds
format, versionAlways "squaremetry-plan" and 1: this is a Squaremetry file, wrapper version 1.
savedAtWhen the file was saved (UTC). Optional.
project.schemaVersionThe version of the plan inside: 1. A reader brings older versions up to date (see Versions).
project.units, normProfileThe units the user works in (metric or imperial) and the measuring profile: nl-meetinstructie-2019-07, us-ansi-z765-2021, de-woflv-2004, es-rd515-1989 (Spain: usable and built area), fr-carrez-1996 (France: private area under the Carrez law), fr-boutin-2009 (France: living area under the Boutin law), ca-ab-rms-2024 (Alberta, Canada: the Residential Measurement Standard, a proposal under review), it-superficie-commerciale (Italy: commercial area under DPR 138/1998, annex C), or none (floor area inside the walls, no national standard). normChosen: true when the user chose the profile. rmsForm: detached, attached or apartment, the property form for ca-ab-rms-2024 (empty = detached). itCategory: house, villino or villa, the type of home for it-superficie-commerciale (empty = an ordinary home; for a villino or villa the garden counts only above five times the main rooms). commonPermille: the share of common areas in per mille, only for Spain.
project.floors[]Floors with level, elevation and default ceiling height. Each floor has walls, rooms, holes, openings, stairs and outdoor spaces.
walls[]A wall from a to b on its centre line, with kind (exterior, party, loadbearing, nonbearing, half, railing), thickness, optional height, layers and prov.
rooms{}Rooms keyed by their id. The shape of a room follows from the walls; the file keeps what is known about it: name, use (fn), highest ceiling, sloped ceiling, heated, finished, parts under 1.5 m and above 2.0 m.
holes[]Stairwells, voids, shafts, lifts, setbacks, columns and niches. The standard decides whether they are subtracted.
openings[]Doors, windows and openings in a wall, with width, swing, sill and height.
stairs[], outdoor[], buildingsStairs (they count nowhere themselves), balconies and terraces, and outbuildings as their own buildings.
provWhere a size came from: measured, laser, drawing, scan or assumed, with an optional tolerance.
derivedOptional: the areas computed when the file was saved, with the rule set and its version.

Units

Every length and every point is a whole number in 0.1 mm: 1 m is 10,000, 1 ft is 3,048 and 1 inch is 254. Areas are whole square units of 0.1 mm: 1 m² is 100,000,000. There are no decimal numbers for sizes, so a plan reads the same everywhere and rounding never creeps in.

Points use x to the right and y down, as in the drawing. A wall runs from a to b on its centre line; the room inside gets the inside size.

Areas under a standard

The file may store the areas the Squaremetry engine found when it was saved, under derived: the headline area (GOW under the Dutch rules, GLA under ANSI Z765, WOHNFLAECHE under the WoFlV, UTIL for Spain, SURFACE for France (Carrez and Boutin), AREA without a national standard), every total, the rule set with its version and fingerprint, and when it was computed.

These numbers are never the source. Change the plan and they are out of date: measure again. A reader shows them with the rule set and version, so everyone can see which rules were applied. The rule sets are our own reading of each standard, in our own words; we do not publish a new measuring standard.

Address and privacy

A plan needs no address. Only the details of a measuring report may hold one (project.survey), and only when the user types it. Files have no names of owners, no coordinates and no photos unless the user adds them to the plan.

Versions and migrations

format and version describe the wrapper; project.schemaVersion describes the plan. A change that would make an older file invalid gets a new schemaVersion and a migration: a reader brings an older file up to date step by step before it checks it. Older files always stay readable.

A file from a newer version is never guessed at: the reader says it needs an update. New optional fields can come within a version; readers ignore what they do not know.

How it relates to other formats

The .sqm file is the source. The other formats are exports or a way in, each made from the same plan:

How it relates to other formats
FormatRelation
FMLAn export for listing portals that ask for it (one file with all floors). It has no measuring standard; the area goes in the description.
DXFExport and import of the drawing as lines on layers, for CAD. A DXF has no rooms or standards; on import it becomes a draft plan you check.
IFC 4Export for BIM: every room an IfcSpace with its area under your standard in the property set Squaremetry_MeasuredArea. Import reads walls, doors, windows and rooms.
RoomPlanA room scan from an iPhone or iPad with LiDAR (JSON or USDZ). Import only: it becomes a draft of this format that you check.
glTF, GLB, USDZ, OBJExports of the 3D model, for AR and 3D programs. One way only: they have no rooms or standard.

Why it is open

You can always take your plans with you: the file is yours and any program can read it. Portals, agents and other tools can read and write it without asking us. And there was no open format for floor plans that are measured to a standard: this one keeps the facts every standard needs (heights, wall kinds, use, heated, finished, above or below grade).

What is not open: the measuring engine, the editor and the AI. The format makes them more useful, it does not replace them.

File type

Extension .sqm, media type application/vnd.squaremetry+json (our proposal; not yet registered). A .sqm file is JSON in UTF-8, so application/json also works.

HTTP
Content-Type: application/vnd.squaremetry+json
Content-Disposition: attachment; filename="plan.sqm"

License and name

This specification is licensed under CC BY 4.0: use and adapt it, also commercially, and credit Squaremetry. The JSON Schema and the reader are MIT. The name Squaremetry is not part of either license: say that your tool reads or writes the Squaremetry format, but do not call your product Squaremetry or suggest we checked your measurements. A changed format needs its own name and format value.

Example files

Every example home as a .sqm file, with its area and rule set. Open one in the editor with File, Open a file.

Home, Area in the file, Rule set
HomeArea in the fileRule set
Villa with garden225.29 m² GOnl-meetinstructie-2019-07 0.1.5
Small house1,097.25 sq ft GLAus-ansi-z765-2021 0.3.0
Ranch house1,717.25 sq ft GLAus-ansi-z765-2021 0.3.0
Two-bedroom apartment983.25 sq ft GLAus-ansi-z765-2021 0.3.0
Studio apartment551.25 sq ft GLAus-ansi-z765-2021 0.3.0
Bungalow1,296.25 sq ft GLAus-ansi-z765-2021 0.3.0
Townhouse1,674.05 sq ft GLAus-ansi-z765-2021 0.3.0
Colonial house2,308.5 sq ft GLAus-ansi-z765-2021 0.3.0
Tiny house220.5 sq ft GLAus-ansi-z765-2021 0.3.0
Barndominium1,899.23 sq ft GLAus-ansi-z765-2021 0.3.0
Farmhouse2,892.5 sq ft GLAus-ansi-z765-2021 0.3.0
Garage apartment766.85 sq ft GLAus-ansi-z765-2021 0.3.0
Two-story house2,220.5 sq ft GLAus-ansi-z765-2021 0.3.0
One-story house1,770.25 sq ft GLAus-ansi-z765-2021 0.3.0
Cottage869.25 sq ft GLAus-ansi-z765-2021 0.3.0
Craftsman house1,867.25 sq ft GLAus-ansi-z765-2021 0.3.0
A-frame house796.25 sq ft GLAus-ansi-z765-2021 0.3.0
Duplex1,770.25 sq ft GLAus-ansi-z765-2021 0.3.0
2-bedroom house1,154.25 sq ft GLAus-ansi-z765-2021 0.3.0
Log cabin822.56 sq ft GLAus-ansi-z765-2021 0.3.0
Mid-terrace house88.74 m² GOnl-meetinstructie-2019-07 0.1.5
End-terrace house132.21 m² GOnl-meetinstructie-2019-07 0.1.5
Semi-detached house133.86 m² GOnl-meetinstructie-2019-07 0.1.5
Detached house168.78 m² GOnl-meetinstructie-2019-07 0.1.5
Apartment (upper floor)77.04 m² GOnl-meetinstructie-2019-07 0.1.5
1930s terraced house142.95 m² GOnl-meetinstructie-2019-07 0.1.5

Changelog of the schema

  • schemaVersion 1 (2026-10-01): First public version: the wrapper (format, version, savedAt), the plan with schemaVersion 1 (floors, walls with kind and thickness, openings, rooms with use and heights, voids, stairs, outbuildings and the source of each size), and optional derived areas with the rule set and its version.

Start with your first floor plan

Your first home is free for 30 days, no card needed. After that: $5 per home, or Pro from $24 a month.

Start for free

or sign in with a code by email