Convert KMZ to CSV

Converting KMZ to CSV opens the archive, reads the KML document inside it and writes every placemark out as a row of name, latitude, longitude, elevation and time. It is the quickest way to read a KMZ somebody sent you without installing Google Earth, and the archive is unzipped in your browser rather than on a server.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt CSV works differently from a KMZ, so this is not the gradual degradation a lossy codec applies. What CSV can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing One row per recorded point. Anything the file held beyond position, elevation and time is not in a table.

Up to 100 files at once. Mixed formats are fine.

The KMZ you were sent was made by somebody with different software

KMZ files rarely originate with the person trying to open one. They arrive as an attachment from a surveyor, a utility, a council planning department, a tourism board or a contractor, produced by whichever tool that organisation standardised on, and they assume Google Earth on the other end. If you have a work order to raise or a count to verify, installing a globe viewer to read forty coordinates is a poor trade.

That is the situation this conversion is for. It opens the archive, reads the document inside and gives you the positions and names as rows — enough to paste a coordinate into a form, cross-reference against an asset register or confirm that the file really does contain the eighteen sites the email claimed. What it will not give you is the map, and if the map is the deliverable then Google Earth is genuinely the right tool.

A KMZ is a ZIP, and that is the whole of the difference

There is no KMZ data model. The format is a ZIP archive whose main member is a KML document, and everything a KMZ can express is expressed by that KML. The archive exists so that a map can travel as one file together with the images it references — custom pin icons, a photo overlay, a scanned plan georeferenced onto the terrain — rather than as a folder that breaks when one file is left behind.

The reader looks for `doc.kml`, which is the name Google Earth writes, and falls back to the first member ending in `.kml` if that name is absent. The fallback is not defensive padding: the specification requires only that the archive's main document be a KML, and files exported by other tools carry names like `Sites_Phase2.kml`. If no member ends in `.kml` at all, the conversion stops with a message saying so rather than producing an empty table.

The pictures in the archive stay in the archive

A KMZ that is 4 MB is almost never 4 MB of coordinates. The bulk is usually a `files/` or `images/` folder holding icon PNGs, a JPEG overlay, occasionally a scanned site plan several thousand pixels across. None of that is represented in the CSV, and it is not being silently dropped by an oversight — a table has nowhere to put a raster image, and a column of filenames referring to files you no longer possess would be actively misleading.

The practical consequence is that a KMZ whose real content is a picture converts to a nearly empty CSV. A georeferenced plan with two corner markers gives you two rows and none of the plan. If that is what you find, the archive is a document rather than a dataset, and unzipping it by hand to look at the image is the answer rather than a different converter.

The columns, and what each one is good for

Every row carries a type, a name, a latitude, a longitude, an elevation and a time. Type distinguishes a single dropped point from a vertex of a drawn line, and it is the first thing to filter on: a KMZ of asset locations should be entirely `waypoint` rows, and a large block of `track` rows means the file contains routes or boundaries as well.

Name is the label the placemark carried, repeated on every vertex of a line so that filtering a single feature out of a large file needs no joining. Latitude and longitude are decimal degrees, which is what a mapping search box, a fleet system and a geocoding API all accept directly. Elevation and time are frequently empty, because a drawn map records neither, and empty is the correct output for a value the source never held.

Renaming to .zip works, and stops one step short

Changing the extension to `.zip` and double-clicking is a legitimate way to get at the contents, and worth knowing about because it costs nothing and confirms what the file actually is. Every desktop operating system will open it, and you will see the KML alongside whatever images travelled with it.

What you have then is XML: coordinates written as `longitude,latitude,altitude` triples run together inside a single element, wrapped in placemark and folder structure, with the longitude first. That is readable by a person hunting one number and unusable as a dataset. The conversion does the second half — the walk through the folder tree, the coordinate split, the reversal into latitude-first — which is the part that is tedious by hand and easy to get wrong.

A small archive can hold a very large table

Compression makes the file on disk a bad guide to how much is inside. KML is repetitive text, which deflates unusually well: a KML of roughly 258 KB measured here compressed to about 47 KB inside the archive, a factor of five and a half. A 3 MB KMZ can therefore hold something like 15 MB of KML and several hundred thousand coordinates.

The 100 MB free ceiling applies to the KMZ as it stands, so in practice the limit you meet first is your browser tab's memory rather than the number. If a large archive stalls, the useful diagnosis is to rename it to `.zip` and look at the uncompressed size of the KML member — that figure, not the archive size, is what has to be parsed and held.

When the archive opens and the table comes back empty

Two distinct failures produce something that looks like nothing. If the archive holds no KML member, the conversion says so explicitly, and the cause is nearly always a file that was renamed rather than exported. If the KML is present but yields no geometry, the message is that no track or waypoints were found, which is a different problem with a different fix.

The usual cause of the second is that the file consists of polygons. Areas — a parcel boundary, a flood zone, a coverage footprint — store their outline inside a `<Polygon>` element that this reader does not descend into, so a KMZ of nothing but shaded regions produces no rows. Network links, which fetch their content from a URL rather than storing it, come back empty for the more fundamental reason that the archive genuinely contains no data.

The information a contractor put in the balloon, and where it went

The name of each placemark comes across. Almost nothing else that a professional export carries does, and on this kind of file that is the omission most likely to matter: the asset number, the pipe diameter, the inspection date, the parcel reference and the surveyor's note usually live in the `<description>` balloon or in an `<ExtendedData>` block, and neither is read. A KMZ that looked information-dense in Google Earth can convert to a table of names and numbers with all the substance missing.

Two routes recover it. Rename the archive to `.zip`, extract the KML and read it — the extended fields are verbose but perfectly legible, and a `<SimpleData name="asset_id">` element says what it is. Or ask the sender for the table the KMZ was generated from, which almost always exists, because a file with a custom schema in it came out of a database rather than out of somebody drawing on a globe.

Pasting a coordinate out of the table and into something useful

Latitude and longitude are written as plain decimal degrees to six places, about 11 centimetres — far finer than the source data justifies and coarse enough to keep the file readable. That format goes straight into the search box of any mapping site, into a fleet or dispatch system, and into a geocoding API without conversion, which is usually the immediate reason somebody wanted the table at all.

The one thing to watch is the order the destination expects. Written as `48.137154, 11.576124` a mapping search reads latitude first and lands where you meant. A system built on GeoJSON or on a GIS library often wants longitude first, and swapping the pair moves a point in Munich to the sea off Somalia — far enough that the error is obvious the first time and easy to miss when it happens to one row in four hundred.

Somebody else's survey data should not be handed to a server

The archive is unzipped, parsed and rewritten inside this browser tab. Nothing is transmitted, which the network panel will confirm during a conversion, and the page keeps working with the connection off. There is no account to create and no file sitting in a queue afterwards.

For this pair the argument is contractual as much as personal. A KMZ from a client, a utility or a public body frequently arrives under terms about where it may be stored, and pasting it into a free web converter is exactly the kind of transfer those terms are written to prevent. Doing the conversion locally means there is no third party to name, and no processing agreement to go and find.

How to convert KMZ to CSV

  1. Drop the KMZ onto this page, or click to choose it.
  2. The archive is unzipped and its KML read in your browser.
  3. Download the CSV of names and coordinates.

Inside a KMZ archive, and what a CSV takes from it

KMZ compared with CSV
KMZCSV
Full nameZipped KMLComma-Separated Values
File extension.kmz.csv
Media typeapplication/vnd.google-earth.kmztext/csv
First published1972
Published byKeyhole
SpecificationOGC KML 2.3RFC 4180
LicensingOpen standardOpen standard
Standing todayCurrentCurrent
Opens in a browserNo browserNo browser
Considered insteadKML, GPXXLSX, JSON, Parquet

Opening the result

The usual programs do not overlap: KMZ opens in Google Earth and QGIS, CSV in Microsoft Excel, LibreOffice Calc and pandas — so whoever receives the result needs something from the second list.

What each format is for

The two are aimed at different work: KMZ at mapping, CSV at moving data between programs. That is worth weighing before converting, because the reason one exists is usually the reason the other is awkward.

KMZ is Keyhole's format. The specification is OGC KML 2.3, and it is worth reading if the file has to outlive the tool that wrote it.

CSV dates from 1972, specified as RFC 4180. Microsoft Excel, LibreOffice Calc and pandas all read it.

KMZ to CSV: the archive, its contents and the columns

Are my KMZ files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

What actually is a KMZ file?

A ZIP archive with a KML document inside it, usually alongside the icons and images that KML refers to. Nothing else distinguishes the two formats — the K, M and Z stand for a zipped Keyhole Markup Language file.

Which file inside the archive is read?

`doc.kml` if it exists, which is what Google Earth writes. If it does not, the first file ending in `.kml` is used instead, because the specification only requires that the archive's main document be a KML, not that it carry a particular name.

Do the images inside the KMZ come across?

No. Custom icons, photo overlays and ground overlays stay in the archive and are not represented in the CSV. A table has no way to hold a PNG, and a column of filenames pointing at files you no longer have would be worse than nothing.

I get "This KMZ contains no KML file". What does that mean?

The archive opened but held no `.kml` member. That usually means the file is a ZIP of something else that was renamed, or a KMZ whose document was saved with a different extension.

Can I just rename it to .zip and open it myself?

Yes, and it will unzip. You then have a KML, which is XML with longitude before latitude and coordinates run together in one string — readable, but not a table. The conversion is the second half of that job.

Is there a size limit?

100 MB for the KMZ as it stands on disk. Because the archive is compressed, that is a great many points — a KMZ is routinely five times smaller than the KML it holds.

More about these formats