Convert GeoJSON features to KML
Paste or drop a GeoJSON Geometry, Feature, or FeatureCollection, inspect its properties, optionally choose one for placemark names, and download a standalone KML document. Supported geometry becomes KML placemark geometry, while feature properties become ExtendedData. The local conversion also produces a report for remapped fields, serialized values, discarded metadata, and coordinate dimensions.
GeoJSON defined by RFC 7946 uses WGS 84 longitude/latitude coordinates, which
pass through without reprojection. A recognized deprecated WGS 84 crs member
is normalized with a warning. A legacy declaration for another CRS is rejected
rather than being written into misleading KML.
Worked example
Input:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "parcel-7",
"properties": { "label": "North field", "score": 0.92 },
"geometry": { "type": "Point", "coordinates": [12.55, 55.68] }
}
]
}
Inspect the GeoJSON and choose label as the placemark-name property. The
output contains a placemark equivalent to:
<Placemark>
<name>North field</name>
<ExtendedData>
<Data name="label"><value>North field</value></Data>
<Data name="score"><value>0.92</value></Data>
<Data name="source_feature_id"><value>parcel-7</value></Data>
</ExtendedData>
<Point><coordinates>12.55,55.68</coordinates></Point>
</Placemark>
The report records the label to name mapping and the safe feature-ID
mapping.
Input-specific considerations
The canonical preservation contract above describes format-level behavior. For a specific input, point, line, polygon, multipart, and geometry-collection data are represented in KML. A feature with null geometry remains as an attribute-only placemark and is identified in the conversion losses.
Primitive property values become KML text. Objects and arrays become stable
JSON strings in ExtendedData. Feature IDs are retained in a safe ExtendedData
field rather than being trusted as KML XML IDs. Source properties named name,
description, or visibility are remapped to safe source_* fields; only the
property you explicitly select becomes the placemark name. Blank selected
values remain unnamed and produce a warning.
Input bbox members and foreign members whose semantics are not mapped by this
converter are omitted and reported. Z coordinates are retained. A fourth
ordinate, treated as M by this converter, is dropped and reported because KML
has no portable M-value representation. GeoJSON has no standard portable style
or attachment model for this converter to reproduce.
Limits and privacy
These values are the effective central browser-worker limits for this page:
| Runtime limit | Exact value |
|---|---|
Input size (maxInputBytes) | 26214400 bytes (25 MiB) |
Features (maxFeatures) | 25000 |
Coordinate positions (maxCoordinatePositions) | 2000000 |
Property fields (maxPropertyFields) | 2048 |
Serialized properties (maxPropertyBytes) | 16777216 bytes (16 MiB) |
Geometry/property nesting (maxNestingDepth) | 64 levels |
Hard timeout (timeoutMs) | 60000 ms (60 seconds) |
Files, property values, coordinates, and filenames are never uploaded or included in analytics.
Run the GeoJSON Validator first when coordinate order or geometry validity is uncertain. Use GeoJSON to CSV for a spreadsheet handoff, WKT to KML for one text geometry, or Shapefile to KMZ for an archive. See the GIS-ready export workflow for broader downstream guidance.
FAQ
Does this upload my GeoJSON?
No. Parsing, normalization, KML serialization, and report generation happen in a dedicated browser worker on your device.
Does the converter reproject GeoJSON?
No. RFC 7946 GeoJSON already uses WGS 84 longitude/latitude coordinates. Recognized deprecated WGS 84 declarations are normalized with a warning; non-WGS84 legacy CRS declarations are rejected.
How are KML placemark names chosen?
Inspect the source and choose a GeoJSON property as the name field, or leave the choice empty for unnamed placemarks. Features with blank values remain unnamed and are reported.
What happens to nested GeoJSON properties?
Objects and arrays are serialized as stable JSON text in KML ExtendedData. Numbers, booleans, and nulls also become KML text values, and the report identifies those coercions.
What GeoJSON information is not carried into KML?
Input bbox values and unmapped foreign members are omitted and reported.
Fourth ordinates, which this converter treats as M, are dropped, and GeoJSON
has no standard portable style model for this converter to reproduce.