Skip to content
squidmapsBetaDocs
Request an invite
Map specspec v1
View as Markdown

Map

A map is one JSON object, holding its own fields and its features.

squidmaps is in beta. Features, the map spec and these docs may change without notice, and things may occasionally break. Export a copy of any map that matters to you, and tell us when something isn't right: use Beta feedback, or email [email protected].

On this page

Fields

FieldTypeRequiredDescription
namestring
1 to 100 characters
YesShown at the top of the map's page and in link previews. Its page's address is made from it.
descriptionstring
at most 100000 characters
YesMarkdown, shown under the name in the panel over the published map. HTML is escaped.
basemapBasemap or nullYesThe map under the features. Null shows none.
extentExtentYesWhere the published map opens, and how far visitors can zoom and pan it.
viewView or nullYesWhere the published map opens, unless its extent has initialBounds. Null until the map is first viewed in the editor; it then fits the features.
legendLegend or nullYesA panel in the corner explaining the map's symbols. Null shows none.
panelPanelNo, {"featureList":false,"search":false}What the panel over the published map offers visitors besides its name and description.
featuresarray of FeatureYesThe map's features, top of the list first. Points (and text) are drawn above lines, areas and images; within each, features earlier in the list are drawn on top.

Types

The objects inside a map. Where a type has several forms, one field (like type) says which.

Basemap

The map under the features, chosen by its type.

type: "SQUIDMAPS"

One of squidmaps' own basemaps, by name.

FieldTypeRequiredDescription
type"SQUIDMAPS"Yes
style"streets" | "light" | "gray" | "dark"YesWhich of squidmaps' basemaps.
opacitynumber
0 to 1
No, 1From 0 (invisible) to 1 (opaque).
labelVisibilitybooleanNo, trueWhether the basemap's own labels are shown.

type: "CUSTOM"

A custom basemap: one of squidmaps' basemaps with its colors and layers changed, saved to someone's account. Changes to it reach the maps that use it.

FieldTypeRequiredDescription
type"CUSTOM"Yes
idstring
a UUID
YesThe custom basemap's id.
opacitynumber
0 to 1
No, 1From 0 (invisible) to 1 (opaque).
labelVisibilitybooleanNo, trueWhether the basemap's own labels are shown.

type: "STYLE"

A MapLibre style, by its style JSON's URL.

FieldTypeRequiredDescription
type"STYLE"Yes
namestring
1 to 100 characters
YesWhat the editor calls the basemap.
urlstring
a URL
YesWhere the basemap is served.
opacitynumber
0 to 1
No, 1From 0 (invisible) to 1 (opaque).
providerstringNoWho provides the style, for credit.

type: "XYZ"

Raster tiles, by a URL template with {z}, {x} and {y} in it.

FieldTypeRequiredDescription
type"XYZ"Yes
namestring
1 to 100 characters
YesWhat the editor calls the basemap.
urlstring
a URL
YesWhere the basemap is served.
opacitynumber
0 to 1
No, 1From 0 (invisible) to 1 (opaque).
tokenstringNoAn access token for the tiles, if they need one.
tmsbooleanNo, falseWhether tile rows count up from the south (TMS).

type: "TILEJSON"

Raster tiles described by a TileJSON URL.

FieldTypeRequiredDescription
type"TILEJSON"Yes
namestring
1 to 100 characters
YesWhat the editor calls the basemap.
urlstring
a URL
YesWhere the basemap is served.
opacitynumber
0 to 1
No, 1From 0 (invisible) to 1 (opaque).
tokenstringNoAn access token for the tiles, if they need one.

Extent

Where the published map opens, and how far visitors can zoom and pan it.

FieldTypeRequiredDescription
zoomZoomLimitYesThe zoom levels the published map can be viewed at.
boundsBounds or nullNo, nullAn area visitors can't pan out of. Null lets them pan anywhere.
initialBoundsBounds or nullNo, nullAn area the published map opens with fully in view. Null opens it at the saved view.

ZoomLimit

The zoom levels the published map can be viewed at.

mode: "range"

Visitors zoom between two levels.

FieldTypeRequiredDescription
mode"range"Yes
minnumber
0 to 22
YesThe farthest out. Below max.
maxnumber
0 to 22
YesThe farthest in.

mode: "fixed"

Visitors see one zoom level, and can't zoom.

FieldTypeRequiredDescription
mode"fixed"Yes
levelnumber
0 to 22
YesThe only zoom level.

View

Where the map is looking. The editor saves where it was left, and the published map opens there.

FieldTypeRequiredDescription
center[number, number]
items in turn: -180 to 180; -90 to 90
Yes[longitude, latitude], in degrees.
zoomnumber
0 to 22
YesA zoom level, as in MapLibre.

Legend

A panel in the bottom right corner of the published map, with a row for each symbol worth explaining.

FieldTypeRequiredDescription
titlestring
at most 100 characters
YesShown above the rows. Empty for none.
rowsarray of LegendRow
1 to 50 items
YesIn display order.

LegendRow

A symbol and its label.

FieldTypeRequiredDescription
labelstring
at most 100 characters
YesShown beside the symbol.
symbolLegendSymbolYesHow a row's symbol is drawn: a copy of a feature's style, with the same fields as the feature properties for its kind. It stays as drawn when features change.

LegendSymbol

How a row's symbol is drawn: a copy of a feature's style, with the same fields as the feature properties for its kind. It stays as drawn when features change.

type: "circle"

A circle point's style.

FieldTypeRequiredDescription
type"circle"Yes
fillColorYesThe circle's color.
radiusnumber
2 to 40
YesIn pixels, not counting the stroke.
strokeColorYesThe ring around the circle.
strokeWidthnumber
0 to 10
YesThe ring's width in pixels, outside the radius.
iconIcon or nullYesA Font Awesome icon in the circle.
iconColorColor or nullYesThe icon's color. Without one, white or dark ink, whichever contrasts the fill.

type: "emoji"

An emoji point's style.

FieldTypeRequiredDescription
type"emoji"Yes
emojiEmojiYesOne emoji, drawn as its Twemoji image.
sizenumber
12 to 64
YesThe emoji's width and height in pixels.

type: "marker"

A marker pin's style.

FieldTypeRequiredDescription
type"marker"Yes
shellColorYesThe pin's outer color.
discColorYesThe disc in the pin's head.
iconIcon or nullYesA Font Awesome icon on the disc. Without one, it's empty.
iconColorColor or nullYesThe icon's color. Without one, white or dark ink, whichever contrasts the disc.

type: "line"

A line's style.

FieldTypeRequiredDescription
type"line"Yes
colorColorYesThe line's color.
widthnumber
0.5 to 20
YesIn pixels.
opacitynumber
0 to 1
YesFrom 0 (invisible) to 1 (opaque).
dasharrayarray of number
at most 8 items, each 0 to 100
YesDash and gap lengths in turn, in line widths, like [4, 2]. Empty is solid.
cap"butt" | "round" | "square"YesHow the line's ends are drawn.

type: "area"

An area's style.

FieldTypeRequiredDescription
type"area"Yes
colorColorYesThe line's color.
widthnumber
0.5 to 20
YesIn pixels.
opacitynumber
0 to 1
YesFrom 0 (invisible) to 1 (opaque).
dasharrayarray of number
at most 8 items, each 0 to 100
YesDash and gap lengths in turn, in line widths, like [4, 2]. Empty is solid.
cap"butt" | "round" | "square"YesHow the line's ends are drawn.
fillColorColorYesThe area's inside color.
fillOpacitynumber
0 to 1
YesFrom 0 (no fill) to 1 (opaque).

Panel

What the panel over the published map offers visitors besides its name and description.

FieldTypeRequiredDescription
featureListbooleanNo, falseA list of the map's features by folder, with a checkbox to hide each folder.
searchbooleanNo, falseA box to find features by name or description.

Feature

A GeoJSON Feature with a required string id. Other members, like bbox, are kept.

FieldTypeRequiredDescription
type"Feature"Yes
idstring
not empty
YesUnique within the map.
geometryGeometry or nullYesWhere the feature is. Null for a feature without one.
propertiesobjectYesEverything about the feature: its data, and how it looks and behaves, under "@"-prefixed keys. See Feature properties.

Geometry

A GeoJSON geometry (RFC 7946): Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon or GeometryCollection. Coordinates are [longitude, latitude] with at most six decimal places.

See the GeoJSON specification. Lines and areas are drawn as such; points as one of the point types.

Need a hand? Email [email protected]. Attribution. Privacy. . © 2026 squidmaps