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.
{
"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.
| Field | What it holds |
|---|---|
| format, version | Always "squaremetry-plan" and 1: this is a Squaremetry file, wrapper version 1. |
| savedAt | When the file was saved (UTC). Optional. |
| project.schemaVersion | The version of the plan inside: 1. A reader brings older versions up to date (see Versions). |
| project.units, normProfile | The 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[], buildings | Stairs (they count nowhere themselves), balconies and terraces, and outbuildings as their own buildings. |
| prov | Where a size came from: measured, laser, drawing, scan or assumed, with an optional tolerance. |
| derived | Optional: 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:
| Format | Relation |
|---|---|
| FML | An export for listing portals that ask for it (one file with all floors). It has no measuring standard; the area goes in the description. |
| DXF | Export 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 4 | Export 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. |
| RoomPlan | A 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, OBJ | Exports 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.
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 |
|---|---|---|
| Villa with garden | 225.29 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| Small house | 1,097.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Ranch house | 1,717.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Two-bedroom apartment | 983.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Studio apartment | 551.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Bungalow | 1,296.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Townhouse | 1,674.05 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Colonial house | 2,308.5 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Tiny house | 220.5 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Barndominium | 1,899.23 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Farmhouse | 2,892.5 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Garage apartment | 766.85 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Two-story house | 2,220.5 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| One-story house | 1,770.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Cottage | 869.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Craftsman house | 1,867.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| A-frame house | 796.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Duplex | 1,770.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| 2-bedroom house | 1,154.25 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Log cabin | 822.56 sq ft GLA | us-ansi-z765-2021 0.3.0 |
| Mid-terrace house | 88.74 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| End-terrace house | 132.21 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| Semi-detached house | 133.86 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| Detached house | 168.78 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| Apartment (upper floor) | 77.04 m² GO | nl-meetinstructie-2019-07 0.1.5 |
| 1930s terraced house | 142.95 m² GO | nl-meetinstructie-2019-07 0.1.5 |
- villa-met-tuin.sqm
- small-house.sqm
- ranch-house.sqm
- two-bedroom-apartment.sqm
- studio-apartment.sqm
- bungalow.sqm
- townhouse.sqm
- colonial-house.sqm
- tiny-house.sqm
- barndominium.sqm
- farmhouse.sqm
- garage-apartment.sqm
- two-story-house.sqm
- one-story-house.sqm
- cottage.sqm
- craftsman-house.sqm
- a-frame-house.sqm
- duplex.sqm
- 2-bedroom-house.sqm
- log-cabin.sqm
- tussenwoning.sqm
- hoekwoning.sqm
- twee-onder-een-kap.sqm
- vrijstaande-woning.sqm
- appartement.sqm
- jaren-30-woning.sqm
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.
or sign in with a code by email