What we learned when a user tried to load a 1 GB GML file in a browser

twainyoung1 pts0 comments

What we learned when a user tried to load a massive GML file in a browser.<br>Menu

Launch Studio

Theme

Light

Dark

System

Studio Formats

ESRI Shapefile GeoJSON KML / KMZ GPX Tracks kepler.gl JSON AutoCAD DXF AutoCAD DWG CSV / Excel MS Excel GeoParquet GeoPackage SQLite FileGDB FlatGeobuf MapInfo TopoJSON GML OSM PBF Garmin FIT IGC Flight Logs WKT / WKB GeoTIFF / COG

Pages

Datasets Blog Documentation About Measure Distance Measure Area Radius Map Tool How Far Can I Drive Current Location & Weather Elevation Finder World Time Zones OpenClaw Exposure Map

Converters

GeoJSON<br>GeoJSON to ESRI Shapefile GeoJSON to GeoPackage GeoJSON to PMTiles

ESRI Shapefile<br>ESRI Shapefile to GeoJSON ESRI Shapefile to GeoPackage ESRI Shapefile to MBTiles

CSV<br>CSV to GeoJSON CSV to GeoPackage CSV to GPX

GPX<br>GPX to GeoJSON GPX to GeoPackage GPX to KML

GeoPackage<br>GeoPackage to GeoJSON GeoPackage to ESRI Shapefile GeoPackage to File Geodatabase

FlatGeobuf<br>FlatGeobuf to GeoJSON FlatGeobuf to GeoPackage FlatGeobuf to ESRI Shapefile

JSON-FG<br>JSON-FG to GeoJSON JSON-FG to GeoPackage JSON-FG to ESRI Shapefile

KML<br>KML to GeoJSON KML to GeoPackage KML to ESRI Shapefile

Mapbox Vector Tiles<br>Mapbox Vector Tiles to GeoJSON Mapbox Vector Tiles to GeoPackage Mapbox Vector Tiles to ESRI Shapefile

PMTiles<br>PMTiles to GeoJSON PMTiles to GeoPackage PMTiles to ESRI Shapefile

MBTiles<br>MBTiles to GeoJSON MBTiles to GeoPackage MBTiles to ESRI Shapefile

AutoCAD DXF<br>AutoCAD DXF to GeoJSON AutoCAD DXF to GeoPackage AutoCAD DXF to ESRI Shapefile

GML<br>GML to GeoJSON GML to GeoPackage GML to ESRI Shapefile

Microsoft Excel<br>Microsoft Excel to GeoJSON Microsoft Excel to GeoPackage Microsoft Excel to CSV

GeoRSS<br>GeoRSS to GeoJSON GeoRSS to GPX GeoRSS to KML

MapInfo<br>MapInfo to GeoJSON MapInfo to GeoPackage MapInfo to ESRI Shapefile

File Geodatabase<br>File Geodatabase to GeoJSON File Geodatabase to GeoPackage File Geodatabase to ESRI Shapefile

SpatiaLite / SQLite<br>SpatiaLite / SQLite to GeoJSON SpatiaLite / SQLite to GeoPackage SpatiaLite / SQLite to ESRI Shapefile

July 1, 2026 • GeoDataViewer Team<br>What we learned when a user tried to load a massive GML file in a browser.<br>Learn why traditional GIS formats break at scale, how vector tiles solve the memory and rendering bottleneck, and what the shift from flat files to tiled architectures means for web-based geospatial data.

The Problem That Started This

A few weeks ago, a GeoDataViewer user wrote in asking why a large GML file wouldn’t load in their browser. The file — a geological map from a national survey — was roughly 1 GB in size and contained hundreds of thousands of mapped features. They had downloaded open data, unzipped it, dragged it into a web map, and nothing happened.

This is not a bug report. This is a format problem.

And it’s a problem far bigger than this one user. Every day, GIS professionals, geological surveyors, urban planners, and hobbyists hit the same wall: they acquire perfectly good open data, try to view it in a modern web browser, and the browser just … gives up.

The solution exists. It has existed for over a decade. But most end users have never heard of it. This post is about why vector tiles are the answer, why partial solutions fall short, and why the gap between “it works in my desktop GIS” and “it works in my browser” remains the industry’s most underappreciated UX problem.

Part I: Why Browsers Can’t Handle Large Vector Datasets

The browser is not QGIS. It is not ArcGIS Pro. It is a sandboxed runtime with a strict memory budget, a single-threaded (ish) DOM, and no access to your disk.

Here is what happens when you drag a ~1 GB GML file into a web map:

Step 1: Memory saturation

The browser must read the entire file into memory. GML — like all XML-derived formats — is notoriously verbose. A ~1 GB GML file decompresses to roughly a gigabyte of XML text. Parse that into a DOM tree, and you are looking at 3–5 GB of peak memory for a naive parser. Even a streaming parser that outputs GeoJSON must materialize that data into an in-memory data structure. The resulting GeoJSON still requires the browser to hold the full dataset in memory before rendering can begin.

Chrome on a typical laptop with 8 GB of RAM will crash, swap to death, or throw an Out of Memory error.

Step 2: Parsing bottleneck

XML parsing in JavaScript is slow. DOMParser is not optimized for multi-hundred-megabyte documents. The browser’s main thread blocks for tens of seconds — or minutes — while it tries to build a document tree. There is no yield, no progress bar, just a frozen tab and a spinning cursor.

Step 3: Rendering collapse

Even if you somehow get the data into memory as GeoJSON, rendering hundreds of thousands of features is itself a challenge. Every feature becomes a DOM element in the canvas rendering pipeline. Every pan or zoom re-evaluates visibility, reprojects coordinates (if you forgot to pre-reproject — a second blocking operation), and redraws. Without tiling, the renderer must...

geojson geopackage esri shapefile file browser

Related Articles