How to convert CSV to GeoPackage
- Drop the CSV onto the converter, or browse to it from the button.
- Check the location pickers: WKT geometry takes priority, and the latitude and longitude dropdowns cover plain point tables.
- Choose GeoPackage and convert, then save the .gpkg and load it straight into QGIS or ArcGIS Pro.
What changes when you convert CSV to GeoPackage
| What | CSV → GeoPackage | |
|---|---|---|
| Geometry | Kept | Each row with coordinates becomes a point feature. If the table has a WKT geometry column, its lines and polygons are rebuilt as real shapes. |
| Attributes | Kept | Every column and full field name moves from CSV into GeoPackage untouched. |
| Styling & labels | Kept | Neither CSV nor GeoPackage stores visual styling, so there is nothing to lose. Geometry and data carry straight over. |
| Coordinate system | Changes | CSV has no CRS. You can assign one before converting; otherwise the numbers are passed through and tagged WGS84. |
| Elevation (Z) | Not stored | CSV has no 3D geometry. An elevation column, if the table has one, rides along as an ordinary attribute rather than as Z height. |
| File structure | Kept | One portable file that can hold multiple layers, no sidecars to lose. |
What your spreadsheet needs first
The converter looks for location in two places, and the table needs to supply only one of them. A column of WKT geometry outranks the other pickers when one exists, because text such as LINESTRING(73.03 33.70, 73.06 33.68) comes back to life as line and polygon features rather than staying a string. Tables without WKT fall back to a latitude column and a longitude column, and every valid row becomes one point feature in the layer.
What the pickers look for
- Latitude as a number between -90 and 90, under a header such as
lat,latitudeory, which the dropdown detects on its own. - Longitude as a number between -180 and 180, under
lon,lng,longitudeorx, with the dropdown there to correct a wrong guess before converting. - Decimal degrees with a decimal point, written like
33.6844, since a value shaped like33°41'04"Nstays text until the coordinate converter has turned it into a plain number.
Excel sources are accepted alongside CSV, with one caveat each way: a multi-sheet .xlsx contributes only its first worksheet, and the old binary .xls is turned away with a message asking for a save-as to .xlsx. Exporting a sheet to CSV first keeps the input readable in a text editor, which helps whenever a conversion misbehaves.
Why convert CSV to GeoPackage?
A CSV of coordinates is the start of something rather than the destination, because a flat text file holds no typed fields, no geometry and no record of which coordinate system its numbers live in. GeoPackage is the OGC's answer, a single SQLite database that stores the points as a real spatial layer with an indexed geometry column and the CRS written inside the file itself. QGIS and ArcGIS Pro open the result natively, mobile GIS apps carry it into the field offline, and none of it depends on a folder of side files staying together.
Coordinate system handling
CSV rows arrive with no coordinate system attached, and the converter reads them as WGS84 longitude and latitude, EPSG:4326, unless the coordinate system box says otherwise. Projected values such as UTM eastings and northings in meters need their actual code entered there, because degrees and meters occupy entirely different numeric ranges (how to find the EPSG code).
Whatever system you set is written into the gpkg_spatial_ref_sys table inside the database itself, the record QGIS and ArcGIS Pro consult when they place the layer. That built-in tag is exactly what the loose CSV never had, and it travels with the file from now on.
What to check when converting CSV to GeoPackage
The conversion is only as good as the location columns it finds, so check the pickers before converting: rows without valid coordinates are skipped, and a misread column name quietly produces an empty layer. An elevation column deserves a mention here too, since it rides along as an ordinary attribute rather than becoming height on the geometry; the points are written as plain 2D features with the elevation kept beside them as a field.
Troubleshooting CSV to GeoPackage
- Points land in the wrong place or out at sea. The latitude and longitude pickers are probably swapped, or projected meters were read as degrees. Confirm latitude sits between -90 and 90 and that the chosen CRS matches the values before converting again.
- Double-clicking the finished .gpkg opens nothing. Operating systems ship with no viewer assigned to the extension, so the double-click fails silently or lands in an archive utility. Launch QGIS or ArcGIS Pro first and add the file from within the program, where it loads as an ordinary layer.
- A second file ending in .gpkg-journal appeared. SQLite writes that journal beside the database during edits and removes it after a clean close, so a leftover copy means some program still holds the file open or shut down mid-write. Close whatever has the GeoPackage loaded, reopen it once so the database settles, and only remove a journal that lingers after that.
- Coordinates with decimal commas came through as text. A sheet in a European locale writes 33,6844 where the converter expects 33.6844, and a comma inside a number reads as text or as an extra field. Switch the decimal separator to a point before exporting, or replace the commas in the coordinate columns, and the values parse as numbers.
- QGIS asks about a transformation when the layer loads. The CRS stored in the GeoPackage differs from the project CRS, which is routine rather than an error. Accept the suggested transformation and the points line up with the rest of the map.
About the formats
Set the two common containers side by side and the choice settles itself. A shapefile arrives as a zip of five loose parts, clips every column name to ten characters and leans on a .prj sidecar to remember its coordinate system, while a GeoPackage is one file that keeps station_temperature_celsius intact, stores the CRS internally and can hold many layers where a shapefile holds one. Reach for the shapefile only when the person receiving the data asks for it by name; for everything else the single .gpkg is the easier file to make, send and open.
Frequently asked questions
How do I open the .gpkg in QGIS or ArcGIS Pro?
In QGIS, drag the file onto the canvas and pick the point layer inside when prompted. ArcGIS Pro adds it through the Catalog pane, and because everything lives in one database there are no side files to keep together.
Why does the finished GeoPackage hold only a single layer?
One CSV produces one layer by design, so convert each source table separately and merge the results into a shared database in QGIS when a single multi-layer file is the goal. The format itself holds as many layers as you care to add.
The layer came out empty, so what went wrong?
The coordinate columns were not recognized, or they hold no valid values. Reopen the pickers, confirm which columns carry latitude and longitude, and check that the numbers are stored as numbers rather than text.
Do the CSV column names and types survive the conversion?
Yes, in full: a GeoPackage stores attributes in a SQLite table with no 10-character limit, so a header like station_temperature_celsius becomes a real database field under its own name. Numeric columns are stored as numbers as long as the source values are clean.
Will an elevation column in the CSV become 3D height?
No. The points are written as 2D geometry, and the elevation column is kept as a regular attribute field beside them, which suits analysis and labeling fine. A tool that needs true 3D geometry would have to rebuild it from that field afterwards.
Related converters
Ready to convert?
Drop a file and download the result in seconds. Nothing is uploaded, nothing is stored.