About this story
How the maps were made
Every map in this story is a page from one of San Francisco’s own zoning map books, 1921 to 2000, laid over today’s blocks so you can compare the same street across a century.
Status: draft. The story text has not yet been reviewed. Map alignment is automatic; sheets that miss the accuracy bar below are waiting for a person to check them. The “what it allowed” colours are published for the eras whose maps have been read so far; some eras are still pending.
Where the maps come from
Most of the maps were scanned from the Planning Department’s map books on its large-format scanner. They come in series, one for each edition of the map book: 1921, 1929, 1935, 1948, 1960, 1964, 1968, 1972, 1975, 1980, and the zoning, height and special-use maps of 1980–90, 1990–96, 1996–2000 and 2000. The 1948 atlas images come from the David Rumsey Map Collection.
How they were lined up with today’s streets
Old map sheets don’t sit on a modern grid. Paper stretches, and every street was drawn by hand. Aligning a sheet by hand means clicking matching street corners on the scan and on a modern map, one at a time. We wrote a program to do it instead.
First, find the sheet. An AI vision model reads the printed block numbers and street names on each page. The program matches them to today’s blocks and intersections from DataSF and places the sheet roughly, throwing out readings that disagree with the rest.
Then, fit it closely. It traces the drawn street and block lines and matches hundreds to thousands of block corners to today’s block outlines, not the eight or so a person would click. It bends the sheet with a smooth warp that corrects stretched paper and drafting error over whole areas.
Keep the history. Some blocks really have changed: streets were widened, shorelines filled, neighbourhoods like the Western Addition rebuilt. Where an old edge is consistently off from today’s in a way drafting error can’t explain, the program marks it as real change and leaves it where the old map put it, rather than pulling it onto the modern line.
Finally, stitch and tile. Sheets are joined into one layer per series, the white paper is made transparent so today’s blocks show through, and the result is cut into web map tiles.
How accurate they are
Each sheet is tested on blocks it was not fitted to: the program leaves some blocks out, fits the rest, and measures how far the left-out corners land from today’s. The hand-drafted maps themselves are only good to about ±4 feet at a street corner, so that is roughly the floor.
A sheet passes when half its corners land within 5 feet and 95% within 12 feet. Coarser scans get a proportionally looser bar: the 1980-and-later maps are office-copier scans at about 4 feet per pixel, and pass at about 7½ and 18 feet. A sheet also fails if it looks misplaced or the fit didn’t settle.
- 369map sheets
- 286passed automatically
- 83flagged for review
- 4–6 fttypical median error
Of the 83 flagged sheets, 26 had too few readable labels to place at all; they are missing from the maps until someone places them by hand. The rest appear, but may be off by more than the bar. Zoning boundaries will later be snapped to modern lot lines, which no warp of a hand-drawn map can match.
Source code and reuse
The code for the map pipeline and this site is open source, licensed under the GNU AGPL v3.0 and published on GitHub. The pipeline can align other cities’ historic maps too.
The story, the research and the processed maps are licensed CC BY-NC-SA 4.0: you can reuse and adapt them with credit, for non-commercial purposes, under the same license. That is not an open source license. The original zoning maps are, to the best of our knowledge, in the public domain.
Corrections, fixes and adaptations are welcome; the repository explains how to contribute.
Sources
Primary: ordinances, codes, maps and city reports
- Building Zone Ordinance, Ord. No. 5464 (N.S.), City and County of San Francisco, approved Oct. 3, 1921 Owner's scans, SF Planning Department (pipeline/data/raw/1921); SFPL call no. 917.946 Sa52b 1921.
- “Map Designations for Use of Property Zone Maps,” legend and index map, 1921 Owner's scans, SF Planning Department (pipeline/data/raw/1921).
- Zoning Map Book, San Francisco, 1948. David Rumsey Map Collection, David Rumsey Map Center, Stanford Libraries Source of the 1948 map images.
- City Planning Code, amended and corrected as of July 1947, pp. 24–27, incl. Sec. 99 (Ord. 4162, approved Nov. 26, 1946) pipeline/data/raw/1948/originals/planning-code.jpg.
- Planning Code with amendments to Dec. 1, 1957, incl. Art. 4.5 off-street parking
- Draft Environmental Impact Report, residential zoning (EE 76.182), Dept. of City Planning, Dec. 13, 1977
- City Planning Code, effective May 2, 1960, and “Summary of Zoning Provisions of the City Planning Code,” March 1, 1960 Owner's scans, SF Planning Department (pipeline/data/raw/1960/originals/1960.pdf, pp. 1–2).
- City Planning Code with amendments to July 10, 1964: summary chart and Art. 2.5 Special Height Districts (Ord. 35-64)
- Zoning map book, amendments to Feb. 2, 1975: use legend and Height & Bulk sheet 1H Owner's scans, SF Planning Department (pipeline/data/raw/1975).
- Final Environmental Impact Report, residential zoning amendments, June 27, 1978 (p. 122)
- Zoning map book (1980 series), legend with RH/RM/RC districts, amendments to Nov. 6, 1978 Owner's scans, SF Planning Department (pipeline/data/raw/1980).
- San Francisco Zoning Maps, introduction (American Legal Publishing / SF Planning), Sept. 2000 Owner's scans, SF Planning Department (pipeline/data/raw/1980 Plus).
- Downtown Plan ordinance, Ord. 414-85, effective Oct. 17, 1985 (Sec. 124 FAR table)
- SF Planning code summary, 2021-010762PCA, Four-Unit Density Exception (Ord. 210-22)
- Ord. 248-23, Housing Production (Board of Supervisors, Dec. 2023)
- Charter Article XVIII (City Planning Commission), approved Nov. 6, 1928, ratified Jan. 17, 1929, with a reprint of Ord. 5464 as amended Owner's scans, SF Planning Department (pipeline/data/raw/1929).
- Building Zone Ordinance and Zone Maps, March 1935
- Zoning map book, amendments to Oct. 1, 1968: cover and legend Owner's scans, SF Planning Department (pipeline/data/raw/1968).
- Zoning map book (1972 series), legend with amendments to Oct. 10, 1970 Owner's scans, SF Planning Department (pipeline/data/raw/1972).
- City Planning Code with amendments to Dec. 1, 1948 (SFPL copy)
- Proposed Height and Bulk Controls, Dept. of City Planning staff report, May 25, 1972
- DataSF, parcels and street centerlines (basis of the modern block outlines)
Secondary: histories, summaries and press
- SF Planning, Housing Affordability Strategies: “Regulation of Housing Development in San Francisco,” 2020
- Planning Code Sec. 252, Classes of Height and Bulk Districts; history note: Ord. 234-72, App. 8/18/72 (third-party mirror)
- SPUR, “High-Rise Hegira,” The Urbanist, July 1, 1999
- Steven Buss, “When did things go wrong in San Francisco?” (Substack)
- SPUR, “Proposition M and the Downtown Growth Battle,” The Urbanist, July 1, 1999
- SF Planning archive, Market & Octavia Area Plan (approved April 2008, effective May 30, 2008)
- SF Planning, Eastern Neighborhoods adoption package, 2008
- SF Planning, “San Francisco Family Zoning Plan” (Board Files 250700/250701; effective Jan. 12, 2026)
- KQED News, report on the Board's 7–4 vote on the Family Zoning Plan, Dec. 2, 2025 KQED article 12065708.
Credits
- 1948 zoning atlas: David Rumsey Map Collection, David Rumsey Map Center, Stanford Libraries, licensed CC BY-NC-SA 3.0.
- 1921–2000 zoning maps: scanned from the San Francisco Planning Department’s map books on its large-format scanner; the 1921 ordinance is also held by the San Francisco Public Library (call no. 917.946 Sa52b 1921).
- Ordinances, codes and reports: many are digitised by the San Francisco Public Library on the Internet Archive.
- Base map: today’s blocks, built from DataSF parcels and street centerlines.
- Map alignment: sfzmaps, this project’s own georeferencing pipeline. See how the maps were made.
- About and license: sfzoning.com by Steven Bacio for GrowSF (https://growsf.org). © 2026 GrowSF. Code: AGPL-3.0, with the source on GitHub. Content and data: CC BY-NC-SA 4.0. Provided as is, without warranty, and not an official zoning record. GrowSF™ is a trademark of GrowSF.