Price map

All 13,110 blocks and projects with a filed transaction, plotted by median price per square foot. Hover for the figure, click to open. Jump to a town to frame it and dim the rest.

A relief model of Singapore. Each of the 55 planning areas is raised in proportion to its filed median HDB resale price per square foot and shaded on a six-step pale-to-deep teal ramp, so the tallest and darkest areas are the dearest. Queenstown stands highest at S$859 per square foot and Choa Chu Kang lowest at S$501. The 31 areas with no filed resale — the water catchment, the airbases, the port and the outlying islands — lie flat in grey.
Median psf · HDB resale, by town
under $544
$544
$572
$600
$633
$733+
Every town’s median, as one object

Singapore’s 55 planning areas, each raised by what a square foot actually sold for in it. Taller and darker is dearer — height and colour carry the same figure, so the pattern reads at a glance and the figure itself is in the key.

Queenstown is the dearest town on the island at S$859 psf and Choa Chu Kang the cheapest at S$501 — a ratio of 1.71×. Height starts at zero and is proportional to the figure itself, so that is the ratio you are looking at. Drawn against the range instead, the same gap would stand twenty-five times taller and Singapore would appear to have a skyline it does not have.

No town is named here. This is the shape of the whole island; the map below is where you find yours — it labels every town, gives the figure on hover, and opens the block or project when you click. 31 of the 55 areas lie flat and grey because no HDB resale has been filed in them: the water catchment, the airbases, the port and the outlying islands. That is an absence of housing, not an absence of data, and a hole in the model would have read as the second.

Heights: HDB Resale Flat Prices (data.gov.sg), 2023-09 to 2026-09, accessed 2026-09-10
Outlines: URA Master Plan 2019 Planning Area Boundary (No Sea), via data.gov.sg
Six equal-sized groups, not six equal price steps. Median psf per planning area, rendered in Blender from this site’s own data. Not a valuation, and not a figure for any individual block.

In view9,483 of 9,483 blocks · all of SingaporeDrag to move · scroll or pinch to zoom · arrow keys and +/− once focused · 0 resets

Median psf
under $500
$500
$530
$560
$602
$683+

Six equal-sized groups, not six equal price steps — so the map shows where places actually differ instead of showing that a handful of Orchard projects are expensive. Scales are separate for each property type.

The land is URA Master Plan 2019 Planning Area Boundary (No Sea), via data.gov.sg, simplified and stored in this repo. Streets and names, when switched on, are tiles from OneMap Basemap © OneMap, Singapore Land Authority. Still no map library: a tile is a PNG at a URL computed from three integers, and the projection is this map’s own, so the background cannot drift from the dots. A town name sits at the centroid of its own planning area, and picking one shades that area. Names that would overlap are dropped rather than overprinted. A town figure is the median of every filed sale in that town, the same number /hdb shades its tiles by.

There is still no map service underneath this. No tiles, no basemap host, no mapping library — nothing is fetched from anyone else when this page loads. The land is URA Master Plan 2019 Planning Area Boundary (No Sea), via data.gov.sg, downloaded once, simplified to about fifteen metres and stored in this repo as a few hundred kilobytes of coordinates. It is drawn by the same canvas pass as the dots.
The dots are still the data. Where there is housing there are dots, and where there is a reservoir, an airbase or the water catchment there are none — which is why the built-up areas read as solid and the middle of the island does not.
Stations, not lines. The station marks are optional and off until you ask for them. They are stations and not rail lines because the source — Station exit locations — LTA (data.gov.sg), under the Singapore Open Data Licence., accessed 2026-08-23 — gives a name and a coordinate for every station exit and says nothing about which line a station sits on. Drawing the lines would mean supplying the network from memory, and a rail line in the wrong place over real transactions is worse than no rail line at all.
A town name sits where its housing is. Each label is drawn at the median coordinate of that town's own plotted blocks, not at the centre of a boundary — there is no boundary file in this map’s own data, and drawing one from memory would be the same mistake as drawing the rail lines. The relief above this map does use URA’s published boundaries, which is a different file and a different view; what neither of them does is invent an outline. Names that would overlap are dropped rather than overprinted, so the map thins out instead of turning into a smear of text.
128 records are missing from this map. They are the ones whose address could not be placed confidently enough to publish. They still have their own pages with full transaction histories — they just are not plotted, because a dot in the wrong street is worse than no dot.

The same data as a list

HDB Resale Flat Prices (data.gov.sg) · URA Data Service — PMI_Resi_Transaction
2023-09 to 2026-09 · accessed 2026-09-10
Coordinates from OneMap (Singapore Land Authority), accessed 2026-08-25. Median psf per block or project, not a valuation.