mapsnap

Frequently asked questions

What are Sanborn maps?

From the 1860s to the 1960s, the Sanborn Map Company surveyed thousands of American cities and towns for fire insurance underwriters. Its maps show every building: its footprint, what it was made of (pink for brick, yellow for wood, blue for stone), how many stories it had, and often what it was used for, down to the house numbers. A city was mapped as a bound volume of sheets, each covering a few blocks, and updated every few years. Through a massive effort starting in 2014, the Library of Congress scanned its Sanborn Maps Collection: about 35,000 volumes and 440,000 sheets, free to view online.

The Library of Congress has a helpful introduction to their Sanborn map collection. I also enjoyed this six minute video about the maps. Wikipedia has an article about Sanborn maps.

How does mapsnap place a sheet on the map?

It reads the street names printed on each sheet and matches them to the same streets in OpenStreetMap. Where two named streets cross on the sheet, they should cross in OpenStreetMap too, and a few of those intersections fix the sheet's position, scale and rotation. Many volumes also have a key map, an index showing which sheet covers which part of town; mapsnap reads its sheet numbers to know roughly where to look. For sheets with few readable labels, it matches the shape of the streets it sees against OpenStreetMap's. Finally, it picks the part of each sheet to show, so neighboring sheets meet along the streets rather than overlapping.

For more details, check out:

How accurate is it?

mapsnap places most pages, and the pages it places are mostly quite accurate. But it does make mistakes.

We measured it against 415 volumes that volunteers on OldInsuranceMaps.net georeferenced by hand. mapsnap places 89% of the sheets they placed, and of those, 86% land within 25 feet of where the volunteers put them; the typical error is about 11 feet. Around 3% are placed badly, 200 feet or more from the right spot, and some sheets land on the wrong block or in the wrong town.

Across the whole collection, mapsnap places 80% of sheets. Not every sheet is equally easy: a dense downtown with plenty of street names is far easier than a rural sheet with one road. mapsnap also does better in places where the street grid hasn't changed much since the map was made: street renames and large-scale urban renewal projects can throw it off.

Why is my town, or a page of it, missing?

mapsnap needs readable street names that still exist. A sheet can go unplaced when its labels are faded, sparse or unusual, when its streets have since been renamed or removed (whole neighborhoods have been demolished for highways and urban renewal), or when it is mostly rural, industrial or waterfront. mapsnap also withholds pages it can't believe, such as a sheet that would cover several miles of ground or that lands far from its town.

A few volumes aren't in the run at all because of how they are catalogued. The copyright term in the United States is 95 years, so maps produced after 1931 may still be under copyright. Most of the maps were scanned around 2014, when the public domain cutoff was 1923. So maps produced between 1923 and 1931 may be in the public domain but not scanned or available on the Library of Congress web site.

Sanborn produced a few international maps (in Mexico, Cuba, and British Columbia), but these were omitted for simplicity. Many maps of small towns are missing from the initial mapsnap run, but I hope to add those in the future.

If you know Sanborn map exists but it's missing from mapsnap, look for it on OldInsuranceMaps.net, where you can also georeference it by hand.

How do I view the maps?

Find your state on the run page and your town on the state's page. Each volume has an Allmaps link that opens its sheets over today's map in the Allmaps viewer, in your browser. If a Chronoscope link doesn't load on your phone, try the loc.gov link, or a desktop browser. The JSON links are the underlying IIIF Georeference Annotations, which work in any viewer that reads them.

How do I interpret the maps?

Each volume contains a key that explains the colors and abbreviations used in the map. These key pages don't have a location, so they aren't georeferenced by mapsnap. But you can view them on the Library of Congress page for the volume. Color indicates the material that the building was made out of. "D" typically means "dwelling" and "S.D." is "Store + Dwelling."

The dates on maps from before 1920 are clear cut. After that, the Sanborn company saved money by issuing "correction slips" for older maps, rather than issuing new volumes. You can sometimes see these corrections taped on to the map. When there's a date range like "1918 - Dec 1950," it means that the volume was originally printed in 1918 but may have updates through December 1950.

The Library of Congress's About this Collection page has much more information about how to understand the Sanborn maps.

Can I use the data?

Yes. The georeferencing annotations are free to use and share under the Open Database License, because their control points come from OpenStreetMap: credit "© OpenStreetMap contributors and mapsnap", and share any database you build from them under the same terms. The map images themselves are the Library of Congress's. You can download every annotation at once from the run page, along with a table of every volume.

I found a mistake. How do I report it?

Please report it on GitHub with the volume and sheet, and what's wrong (in the wrong place, the wrong town, missing). Problem reports help improve the next run. To fix a volume right away, you can georeference it by hand on OldInsuranceMaps.net.

How is mapsnap funded? How can I support mapsnap?

mapsnap is an open-source project created by Dan Vanderkam. Processing the whole collection took a few days of cloud computing, costing between $500 and $1,000. You can help mapsnap by reporting problems, spreading the word, and contributing on GitHub. If you'd like to support this project financially, please get in touch.

Does mapsnap use AI?

It uses machine learning, but not generative AI. Several small neural networks, most of them trained or fine-tuned for this project, do specific jobs: finding text on a sheet, reading street names and sheet numbers, spotting roads, and telling a sheet's own map from its margins. The network that reads street names (OCR) is based on EasyOCR. The network that identifies keymap page numbers is based on MobileNet. Much of their training data is the hand georeferencing that volunteers did on OldInsuranceMaps.net. Everything else is conventional geometry: matching intersections and street shapes against OpenStreetMap. No chatbot or large language model looks at the maps.

LLMs were used to write most of the code in mapsnap. The vast majority of that work was done by various Claude models: Sonnet 4.6, Opus 4.8, Opus 5, Opus 5.5, Fable 5, and Fable 5.1.

Does mapsnap work on maps other than Sanborn Fire Insurance Maps?

Not yet. mapsnap is built around how Sanborn maps look: large-scale sheets with printed street names, a familiar color scheme, and key maps. Other city atlases from the same era, such as the real estate atlases of Bromley, Baist and Robinson, share most of those traits, and the same approach should carry over with some retraining. Maps at a smaller scale, such as topographic maps, would need a different approach. If you're interested in running mapsnap on other maps, please get in touch.

Where else can I find historical maps?

What about the rest of the world?

Sanborn mapped the United States, so mapsnap's maps do too. (There are a very small number of Sanborn maps outside of the US, but mapsnap omits these for simplicity.) Other countries had their own fire insurance surveys, most notably the Goad plans of British and Canadian cities, and mapsnap's approach would likely work for them, since OpenStreetMap covers the whole world. The missing pieces are scanned collections in a form mapsnap can read, and some retraining.

Report issues on GitHub. For other questions, contact Dan or join the #mapsnap channel on OSMUS Slack.