CSV to Shapefile Converter
Turns a CSV with coordinate or WKT columns into a Shapefile with GDAL's ogr2ogr.
Upload a .csv file. The worker finds the coordinate columns by name (or a WKT column), assigns WGS84 when the values are longitude/latitude, and writes a Shapefile ZIP. Without recognisable columns the upload is refused with an explanation.
Drag a file here to convert, or select file
Accepted: .csv · max. 50 MB
What the converter does
- Coordinates are found by column name, ignoring case: X = lon, lng, long, longitude, laenge, länge, x, easting, rechtswert, ostwert; Y = lat, latitude, breite, y, northing, hochwert, nordwert. Alternatively a WKT column named wkt, wkt_geom, geom, geometry, the_geom or geometrie.
- If the X/Y columns are named like longitude/latitude and the values lie within ±180/±90, the worker assigns WGS84 (EPSG:4326). Other coordinates (e.g. rechtswert/hochwert) get no coordinate system; the report says so.
- Comma, semicolon, tab and pipe work as separators; with semicolons, decimal commas (50,943) are read correctly.
- Files that are not valid UTF-8 are read as Windows-1252 (typical for Excel) and converted to UTF-8; the report notes it.
- A CSV without recognisable coordinate columns is rejected with a message listing the accepted column names.
- Only the coordinate columns are read as numbers; all other columns are written as text, so leading zeros (e.g. postcodes) stay.
- A WKT column with mixed geometries is split into <name>_points, <name>_lines and <name>_polygons, because a Shapefile holds one geometry type.
- The report below the upload shows layers and features read and written, skipped layers with the reason, GDAL's warnings and the exact commands.
GDAL command the worker runs
lon and lat are the column names found in your file. -a_srs EPSG:4326 is only added for longitude/latitude columns with values in range; for a WKT column the worker uses -oo GEOM_POSSIBLE_NAMES=<column> -oo KEEP_GEOM_COLUMNS=NO instead.
Tested with
| Test file | Result |
|---|---|
| CSV (comma) with id, name, lat, lon, 3 rows | 3 of 3 points, EPSG:4326 (.prj included) |
| CSV with semicolons and decimal commas (breite;laenge) | 2 of 2 points at 6.9583/50.943 and 6.9583/50.9413, EPSG:4326 |
| Excel CSV in Windows-1252 with Breite/Länge | 2 of 2 points, Köln and Görlitz spelled correctly; report: read as Windows-1252 |
| CSV with rechtswert/hochwert in metres | 2 of 2 points without .prj; report: coordinate system unknown, assign e.g. EPSG:25832 |
| CSV with a WKT column (1 polygon, 1 point) | 2 Shapefiles: wkt_spalte_points (1) and wkt_spalte_polygons (1) |
| CSV without coordinate columns (id, name, plz) | Refused (HTTP 422) with the list of recognised column names |
Tested on 24 Sep 2026 with the worker code of this site and GDAL 3.10.3 (conda-forge build on Windows). The worker image runs the Debian build of the same GDAL version; the live worker was not part of these tests.
Limits
- Upload limit: 50 MB per file.
- Coordinates in metres get no coordinate system; assign it in your GIS.
- Shapefile limits apply: field names up to 10 characters.
- Each GDAL step may run for up to 240 seconds; a longer run is stopped with an error message.
Frequently Asked Questions
My columns are called Rechtswert and Hochwert. Does that work?
Yes, they are recognised (as are x/y, easting/northing, ostwert/nordwert). Because such values are not longitude/latitude, the Shapefile gets no .prj; assign the coordinate system, e.g. EPSG:25832, in your GIS.
Does an Excel export with semicolons work?
Yes. In the test a Windows-1252 file with semicolons and decimal commas was read correctly, including umlauts.
What happens to my file?
Your browser uploads it directly to the GDAL worker on Fly.io (region Frankfurt). The worker converts it in a temporary folder and deletes the folder after sending the result, or immediately if the conversion fails. Files are not stored permanently.