GeoJSON to GeoPackage
LocalConvert GeoJSON to GeoPackage (.gpkg, OGC SQLite) with typed columns and a configurable layer name — free, no sign-up, nothing uploaded, all in your browser.
Drag files here, or click to browse
Supports GEOJSON, JSON
Choose filePreview first: dropping a file parses it and shows the input on the map below — the .gpkg is produced only after you click the button (the SQLite engine loads on first conversion).
Property columns are typed by inspection (INTEGER / REAL / BOOLEAN / TEXT) so sorting, symbology and joins work in GDAL/QGIS; mixed-type columns fall back to TEXT. A GeoPackage is an SQLite container — it has no compression option by specification. The version selector only changes the user_version declared in the file header (table layout is identical) — pick 1.2 only for readers that reject newer revisions.
What is it? GeoJSON to GeoPackage converts GeoJSON to a GeoPackage (.gpkg), the OGC SQLite-based container for vector data — property columns are typed by inspection (INTEGER / REAL / BOOLEAN / TEXT) so sorting, symbology and joins work in GDAL/QGIS, and the feature table name is configurable.
TL;DR: Convert GeoJSON to an OGC GeoPackage (.gpkg) with typed columns (INTEGER/REAL/BOOLEAN/TEXT) and a configurable layer table name — WGS84, QGIS/GDAL-ready. Free with no sign-up; everything runs locally in your browser and nothing is uploaded.
How to use
- Drop a .geojson (or .json) file into the box — it is parsed and shown on the input map preview, nothing is written yet.
- Optionally set the layer table name (default "features") and the GeoPackage spec version (1.2/1.3/1.4 — only the header user_version changes, the table layout is identical; default 1.3), then click "Convert & download"; if your browser blocks the download, check the download prompt.
- The result area reports feature count and size; open the .gpkg in QGIS or any GeoPackage-compatible GIS.
FAQ
Is it a real GeoPackage?
Yes — an SQLite database with the OGC GeoPackage container header (GPKG application_id) and the required tables (gpkg_contents / gpkg_geometry_columns); GDAL and QGIS open it without warnings.
How are property columns typed?
By inspection across all features: all integers → INTEGER, any decimals → REAL, all booleans → BOOLEAN, strings and everything mixed (including nested objects/arrays stored as JSON text) → TEXT. Previously every column was TEXT, so numbers came back as strings and QGIS sorting/symbology/joins broke.
Is it local?
Yes.
Is GPKG the same as GeoPackage?
Yes — .gpkg is the file extension of an OGC GeoPackage, which stores vector layers in a single SQLite database file. The output is one .gpkg file; rename it freely, QGIS and GDAL read it either way.
Can I put several GeoJSON files into one GeoPackage?
No — each conversion writes a single feature table (name configurable, default "features"). Convert one file per run; to stack several layers into one .gpkg, use QGIS or ogr2ogr afterwards.
What if my GeoJSON uses another CRS?
It is rejected loudly rather than silently mislabelled — output here is always WGS84 (srs_id 4326). Reproject first with the geojson-reproject tool (or ogr2ogr), then convert.
How large can the input be?
There is no upload limit because nothing is uploaded — the real bound is your device's memory, since the GeoPackage is built with an in-browser SQLite engine. The result area reports the feature count and byte size.
Examples
- Drop in a .geojson → preview → Convert & download → get a .gpkg (result area reports feature count and size)
Supported formats
Limitations
- Single feature table per conversion (name configurable, default "features"; must be a valid SQL identifier — invalid names are rejected loudly), written as WGS84 (srs_id 4326).
- Inputs carrying a non-WGS84 crs member are rejected loudly with a pointer to reproject first (previously the crs member was silently ignored and 4326 was always written).
- Boolean values are stored as 1/0 (SQLite has no boolean storage class; the column keeps BOOLEAN affinity).
- A GeoPackage is an SQLite container — it has no compression option by specification; no spatial index (rtree) is created — build one in desktop GIS if needed.
- The version selector (1.2/1.3/1.4, default 1.3) only changes the user_version declared in the file header — the table layout is identical; pick 1.2 only for readers that reject newer revisions.
- Nested object/array properties are stored as JSON text.
Privacy
Privacy first: this tool runs entirely in your browser — your input and files never leave your device, and everything is cleared when you close the page.