All tools
Format conversionLocal browser worker

GeoJSON to KML Converter

Convert GeoJSON geometry and properties to KML locally, with optional placemark names, ExtendedData attributes, and an explicit conversion report.

Loading tool

Preparing this tool in your browser.

Preparing the local tool…

Format preservation contract

This is the converter's static format contract. The result report adds input-specific warnings, field mappings, transformations, and losses for each run.

Data areaStatusBehavior
GeometryConditionalSupported non-null GeoJSON geometry is represented in KML; null geometry becomes an attribute-only Placemark, while input bbox metadata is reported and omitted.
AttributesConditionalProperties become KML ExtendedData, nested values become stable JSON text, feature IDs are safely remapped, and unmapped foreign members are reported and omitted.
Coordinate reference systemPreservedRFC 7946 WGS84 longitude/latitude coordinates remain in the KML-required coordinate reference system.
DimensionsConditionalZ is preserved; a fourth ordinate, treated as M by this converter, is reported and dropped.
LayersPreservedThe normalized GeoJSON root becomes one KML document.
StylesNot supportedThe source format does not provide a portable style contract for this conversion.
AttachmentsNot supportedExternal attachments are outside this browser conversion.
PackagingPreservedOutput is a standalone KML document.

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 limitExact 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.

Related tools