GeoJSON to CSV
Flatten a GeoJSON FeatureCollection into a CSV: one row per feature, columns for every property plus lng, lat (for points), and wkt for arbitrary geometry.
GeoJSON to CSV
Before you start
You need a GeoJSON FeatureCollection or a list of individual Feature objects. You can either paste the raw JSON text into the input pane or drop a .geojson (or .json) file directly onto the page.
The tool works by "flattening" your spatial data. It scans every feature to find every possible key in the properties object. These keys become your CSV columns. If one feature has a "population" property and another doesn't, the latter will simply have an empty cell in that column.
Everything happens locally in your browser. I don't see your data, and nothing is sent to a server. While there isn't a hard file size limit, very large collections (500 MB+) might make your browser sweat as it tries to build the final CSV string in memory.
How to use it
- Paste your GeoJSON into the left pane, or drop a file anywhere on the input area.
- Click Convert to start the flattening process.
- Check the status bar to see how many features were successfully processed into rows.
- Use Copy CSV to grab the text, or Download .csv to save the file for use in Excel or Google Sheets.
- If you need to start over, the Clear button wipes both panes and the internal session cache.
Example
Input (GeoJSON Feature):
{
"type": "Feature",
"geometry": { "type": "Point", "coordinates": [-122.4, 37.7] },
"properties": { "name": "Coffee Shop", "rating": 4.5 }
}
Output (CSV):
name,rating,lng,lat,wkt
Coffee Shop,4.5,-122.4,37.7,"POINT(-122.4 37.7)"
Notice how the geometry is split into simple lng/lat columns for points, while also providing a full wkt string for spatial databases.
Tips & common pitfalls
- WKT is your friend. The
wkt(Well-Known Text) column is a standard format. You can import this CSV directly into QGIS, PostGIS, or DuckDB's spatial extension, and they will recognize the geometries instantly. - Point-specific columns. The
lngandlatcolumns only populate forPointgeometries. For Polygons or LineStrings, these cells will be empty, as those shapes don't have a single coordinate pair. - Nested properties are tricky. If your
propertiescontain nested objects (e.g.,"owner": {"name": "Bob"}), this tool will stringify them into a single cell. You might need to flatten your JSON structure before converting if you want "owner.name" as its own column. - Coordinate order. Per the GeoJSON spec (RFC 7946), coordinates are always
[longitude, latitude]. The CSV output respects this, naming the columnslngandlatto avoid confusion.
Troubleshooting
The output is empty or says "0 features parsed."
Ensure your input is a valid FeatureCollection or Feature. If you just paste a raw geometry (like a single Polygon) without the Feature wrapper, the tool won't find any properties to turn into columns. Use the GeoJSON Validator linked below to check your syntax.
My CSV looks like a mess in Excel.
Excel sometimes struggles with UTF-8 encoding or specific delimiters. This tool uses standard commas and double-quotes for cells containing special characters. If things look shifted, check if your property values contain line breaks, which can confuse some older CSV parsers.
Related tools
See also: if you need to do something adjacent on this site, try CSV to GeoJSON to convert a CSV with lat/lng or WKT columns back into GeoJSON, GeoJSON to KML to convert GeoJSON to KML for Google Earth, or GPX to GeoJSON to turn GPX tracks into GeoJSON.
Frequently asked questions
How are columns ordered?
The tool first gathers all unique keys from the properties of every feature. These are placed first in the CSV header, followed by the fixed spatial columns: lng, lat, and wkt.
What happens to complex geometries like MultiPolygons?
They are fully preserved in the wkt column. While lng and lat stay empty, the wkt cell will contain the complete string representation (e.g., MULTIPOLYGON (((...)))) which most GIS software can read perfectly.
Does this handle properties with commas in the name?
Yes. The tool follows RFC 4180 standards. Any value (or header) containing a comma, double-quote, or newline is automatically wrapped in quotes to ensure the CSV structure remains intact.
Is there a file size limit?
There is no hard-coded limit, but since the conversion happens in your browser's RAM, files over 200 MB might cause the tab to freeze. If you have a massive dataset, try splitting it into smaller chunks first.
Are my coordinates safe? Do you store the data?
Absolutely. No data is ever uploaded. The conversion logic is 100% JavaScript running on your machine. You can even use this tool offline once the page has loaded.