Skip to main content
7BBusyBoss

GeoJSON to KML Converter: Keeps Properties & Colours

Convert GeoJSON to KML for Google Earth or My Maps. Properties become placemark data, colours become KML styles, and the file never leaves your browser.

No limitsZero data leaksSuper fast

Drop your GeoJSON file

GPX, KML, KMZ and GeoJSON are all accepted, and several files at once merge into one. The file is read in your browser and never uploaded, which matters with GPS tracks: most of them start at someone's front door.

Drop .gpx, .kml, .kmz or .geojson files here, or

Convert to

Don't take our word for it — turn your wi-fi off.

This tool keeps working with no connection at all, because your file is processed here in the browser. A site that uploads your file cannot do that. Disconnect and try it — this box will notice.

Prefer to check properly? Open DevTools → Network, then run the tool. Your file appears in no request. Why none of our tools upload

You're on 7BusyBoss — 300+ free tools that run instantly in your browser. No signup, nothing uploaded.

Browse all Geo & Coordinate Converters →
About this tool

This GeoJSON to KML converter turns a .geojson file from QGIS, geojson.io, a web map or an API into KML, the format Google Earth and Google My Maps take. Each feature's properties become KML ExtendedData, which Google Earth shows in the placemark's balloon, and geojson.io colours become KML styles. The conversion runs in your browser, so the file is not uploaded.

How GeoJSON maps onto KML

In the GeoJSONIn the KML
FeatureCollectionOne Document
Feature with a Point, LineString or PolygonA placemark with the same geometry
MultiPoint, MultiLineString, MultiPolygon, GeometryCollectionOne placemark holding a MultiGeometry
Polygon holes<innerBoundaryIs> rings
name (or Name, title)The placemark's name
descriptionThe placemark's description
Any other propertyAn ExtendedData name and value; nested objects are written as JSON text
stroke, stroke-width, stroke-opacity, fill, fill-opacity, marker-colorA Style with LineStyle, PolyStyle and IconStyle
coordTimesA time on each point, written as a gx:Track if you tick Keep timestamps

Colours: from #rrggbb to KML's aabbggrr

KML writes colours backwards. Where GeoJSON and CSS say #ff8800, meaning red, green, blue, KML wants alpha first and then blue, green and red. An orange fill of #ff8800 with a fill-opacity of 0.6 becomes 990088ff: 99 is 0.6 × 255 = 153 in hexadecimal, then 00 for blue, 88 for green and ff for red. Write it the CSS way round, as ffff8800, and KML reads blue ff, green 88, red 00: the orange comes out blue, which is the classic hand-conversion bug. A fill with no opacity set gets 0.6, the simplestyle default.

When the coordinates are in metres

GeoJSON is meant to hold longitude and latitude in degrees (WGS 84, EPSG:4326). A file saved from QGIS or ArcGIS in a projected system holds metres instead: Delhi in Web Mercator is 8594867, 3326595, not 77.209, 28.6139. If the file declares Web Mercator (EPSG:3857, the projection of most web map tiles), the converter turns it back into degrees and tells you. Any other projection, such as a UTM zone, is refused with an explanation rather than guessed at. Re-export it in QGIS with Export, then Save Features As, and the CRS set to EPSG:4326.

Worked example

Try an example loads a GeoJSON of a Triund trail sketch: two Points, a LineString of 10 positions with a matching coordTimes list, and a Polygon for the campsite meadow. It converts to four placemarks. The waypoints keep their elevations of 2,130 and 2,842 m as the third coordinate, the meadow becomes a Polygon covering about 1.06 hectares, and with Keep timestamps ticked the ascent becomes a gx:Track from 02:30 to 04:36 UTC.

Why convert at all?

Google My Maps imports KML but not GeoJSON, and KML is what Google Earth is built around. GeoJSON is the better format for web maps and code, so a common round trip is data out of a web app as GeoJSON, then into Earth or My Maps as KML for people who do not use GIS software. The KML to GeoJSON converter does the reverse.

Need a GPS file instead? GPX to KML and KML to GPX cover devices, and a spreadsheet of coordinates goes through CSV to KML.

How to use the GeoJSON to KML Converter

Takes about a minute. No signup, no download, your data stays in your browser.

  1. 1
    Open the tool. Scroll up to the GeoJSON to KML Converter above — it loads instantly in your browser, no install needed.
  2. 2
    Enter your values. The fields come pre-filled with realistic defaults so you can see how it works — replace them with your own numbers.
  3. 3
    Read the result. The output updates instantly. Copy or share it — nothing is uploaded to a server, everything stays on your device.

Frequently asked questions

Common questions about the GeoJSON to KML Converter.

Does GeoJSON to KML keep my feature properties?

Yes. name and description become the placemark name and description, and every other property becomes an ExtendedData field that Google Earth shows in the placemark balloon. Nested objects and arrays are written as JSON text so nothing is lost.

Why is my GeoJSON refused as being in metres?

Because its coordinates are projected, not latitude and longitude. Web Mercator (EPSG:3857) is converted automatically. For any other system, such as UTM, re-export the layer from QGIS with Save Features As and the CRS set to EPSG:4326.

Can I import the KML into Google My Maps?

Yes. Add a layer in My Maps, click Import and choose the .kml. My Maps reads the placemarks and their data fields, but it applies its own layer styling, so check the colours after importing.

What happens to MultiPolygon and GeometryCollection features?

Each becomes one placemark holding a KML MultiGeometry, so the feature keeps a single name and a single set of properties. Holes in polygons are kept as inner boundaries.

Is my GeoJSON uploaded to a server?

No. The JSON is parsed and converted in your browser, and the KML is created on your device. You can also paste GeoJSON text straight into the page instead of choosing a file.

Community rating

Discussion (0)

No comments yet. Start the discussion.