How to Turn a CSV of Addresses' Coordinates into a Map File (CSV to GeoJSON)

Your data is in a spreadsheet: names down one column, addresses, and — the gold — two columns of numbers, longitude and latitude. It is not a map yet. But it is one conversion away from a map: each row can become a point, and the whole sheet can become a GeoJSON file that any web map will draw.

This guide shows you how to use the CSV to GeoJSON converter on such a sheet, step by step. The worked example is a list of 36 food banks with their coordinates. You will learn how to check the coordinate columns, how to spot swapped or broken rows before they poison the map, and how to prove the points land where the addresses say they should.

One point of honesty first: this guide starts from coordinates you already have. A CSV of addresses with no coordinate columns must be geocoded first — that is, matched to coordinates by an address service. That is a different job. If your sheet has the two number columns, you are in the right place.

What a CSV Point File Needs

CSV stands for comma-separated values: one row per record, commas between the fields. To make points, the sheet needs two fields in each row that hold the position. Most sheets name them lng and lat, lon and lat, longitude and latitude, or x and y. The names vary. The job does not: one field must be the east-west value, the other the north-south value, in a known order and a known system.

For web-ready GeoJSON, the values should be degrees in WGS 84 — the same numbers a phone GPS shows. Longitude runs from -180 to 180; the Americas are negative, Europe and Asia mostly positive. Latitude runs from -90 to 90; north of the equator is positive. If your numbers are in the millions, they are not degrees. They are a flat grid in metres or feet, and they need reprojection, not a plain CSV conversion.

Every other column becomes a fact on the point: the name, the address, the phone, the hours. That is the charm of this road. A sheet a non-expert can read turns into a map a non-expert can use, with no facts lost on the way, as long as the two number columns are sound. The whole risk of the job sits in those two columns — which is why the steps check them three times.

The Three Faults That Poison CSV Maps

Fault one is the swap. A sheet that puts latitude in the longitude column flips the map: points land in the ocean, mirrored across the diagonal. It is the most common CSV map fault in the world, and the easiest to catch — if you look at the preview map. A point set that should hug a city's streets but instead sits in neat rows in the sea is swapped until proved innocent.

Fault two is the mixed row. One row has text in the number column ('see notes'), one has a blank, one has the two numbers pasted as one field with a space. Rows like that must be fixed or dropped by hand, in the sheet, before conversion. A converter can flag them; it cannot guess what 'see notes' meant as a longitude. Clean input is not a nicety on this road. It is the road.

Fault three is the false zero. A row with 0, 0 as its coordinates is almost never a real place — it is a missing value wearing a number's clothes. On the map it lands in the sea south of Ghana, at the point map people call Null Island. One Null Island point in your output means at least one row had no true coordinates. Find it in the sheet and fix the row, or drop it and note the drop. If your points come from a projected grid, check the coordinate system of your points before you blame the sheet.

Words to Know

On this road, 'feature' just means one row turned into one point. The other terms name the rules the numbers obey.

  • Feature. one real thing on the map, such as one park, one road, or one shop. A file can hold many features.
  • Attribute. a fact about a feature, stored as text or a number. A park has a name. A road has a speed limit. Those facts are attributes.
  • Coordinate system (CRS). the rule that says what the numbers in a file mean. It tells a program where each point sits on Earth. Without it, numbers are just numbers.
  • EPSG code. a short number that names one coordinate system. WGS 84 is EPSG 4326. Web maps often use EPSG 3857. The code is a quick, clear way to name the system.

Why Turn a Sheet into a Map File?

Because a sheet hides what a map shows at a glance. The jobs we see most:

  • A charity or office must show sites on a public web map, and the data lives in a sheet.
  • A team plans routes or coverage and needs to see gaps, not read rows.
  • A sheet must join with real GIS data — zones, districts — by where each point falls.
  • A one-off list becomes a living layer that a web app reads as GeoJSON.

If the sheet will keep growing by hand, treat the GeoJSON as a snapshot: dated, named, and rebuilt when the sheet changes. Do not edit the map file and the sheet in turns, or they will drift apart and no one will know which is true. One source, one direction — the same rule as every other guide in this set. If your source data is a Shapefile instead of a sheet, if your source is a Shapefile instead, start here.

A Worked Example: 36 Food Banks

A food bank network keeps its sites in a sheet. The head of the sheet looks like this:

name,address,longitude,latitude,phone
Central Food Bank,14 Mill Road,-0.1276,51.5072,020 7946 0101
North Depot,3 Station Way,-0.1040,51.5310,020 7946 0102
Riverside Pantry,88 River Street,-0.1500,51.4950,020 7946 0103
Row checkGood rowBad rowHow you know
Longitude value-0.127651.5072 (in the longitude column)London longitude is near 0 and negative; 51.5 is the latitude
Latitude value51.5072-0.1276 (in the latitude column)A negative latitude puts London in the southern seas
Missing value— (row is whole)0 in both columns0,0 is Null Island: a missing value, not a site
Text in a number field— (row is whole)'see notes' as longitudeNumbers must be numbers; fix or drop the row in the sheet

36 rows go in. 36 points must come out — or 35 points and one dropped row that you chose to drop and wrote down. The count check on this road is a row check, and it is strict: a silent drop in a sheet conversion most often means a row the tool could not read as numbers, and that row is a real site someone serves.

Note the phone column. In GeoJSON it stays text, leading zero and all. In a spreadsheet it may be read as a number and lose its zero — a sheet fault, not a map fault. When you check facts after conversion, check codes and phone numbers first. They are the values sheets most often bruise.

Keep Your Source Safe

Work on a copy, not on your only file. Save the first file in a safe place and do not change it. If a test goes wrong, you can start again from the clean source. This sounds like a small point, but it saves more work than any other habit in this guide.

Give each test a clear name. A name like test-1 tells you the order of your tries. A name like final-final-2 tells you nothing at all. When you find the settings that work, write them down in a short note next to the files. The next file of the same kind will then take minutes, not an hour.

How to Convert a CSV of Coordinates to GeoJSON, Step by Step

Clean, tell, convert, prove. The cleaning is done in the sheet, where the data's owner can see it. Do not clean in the output file; you would have to redo it at every update.

Step 1: Clean the sheet and freeze a copy

Save a copy of the sheet as the source, with the date in its name. In the working copy, scan the two coordinate columns top to bottom. Fix or clear any cell that is not a plain number. Look for blanks, text, and 0,0 pairs. Make sure the header row names each column once, with no commas inside a name. Commas inside a value are fine — a sound CSV writer quotes them — but a comma inside a header name breaks the column map.

Step 2: Confirm which column is which

Read two rows by hand and test the values against a place you know. For a London row: longitude near 0, small and negative; latitude near 51.5. The column with values in the -180 to 180 range that match east-west is longitude. Write down the exact header names of the two columns, letter for letter. You will need them in Step 3, and 'lat' versus 'latitude' is a real difference to a tool.

Step 3: Upload the CSV and name the coordinate columns

Drop the CSV on the home page. When the tool asks — or shows its guess — set the longitude field and the latitude field to the header names you wrote down. If the tool guessed, check its guess against your note. A tool guesses from names; a sheet named x and y gives it little to go on, and a wrong guess here is the swap fault, built in.

Step 4: Set the source system — degrees, in almost every case

If your numbers are WGS 84 degrees, leave the source as EPSG 4326. That covers phone GPS exports and most web-sourced sheets. If your numbers are grid values in metres or feet, stop: the sheet needs reprojection with a known source system, which this tool supports by EPSG code — but you must know the true system. Do not guess. A guessed grid is a map in the wrong place with clean formatting.

Step 5: Choose GeoJSON and run the conversion

Pick GeoJSON as the output and run the job. The report shows rows read, points written, and any rows flagged or dropped. Read the flagged list before you download. Each flagged row is a line in your sheet that needs a human eye: a blank, a text cell, a value out of range. Note their row numbers now, while the sheet is open.

Step 6: Prove it on the preview map

Look at the points on the preview. They should sit on the right city, on land, spread like the real sites spread. Zoom to one site you know and check it sits on the right street. Then zoom out: one point alone in the sea is Null Island or a swapped row, and a neat grid of points in the wrong country is a full-sheet swap. Both are sheet fixes, not map edits.

Step 7: Fix flagged rows in the sheet and rerun if needed

Go back to the sheet, fix the flagged rows — true coordinates from the source, or a clean drop you choose — and run the job again if any fix changed a point. Save the final GeoJSON with the date in its name, next to the frozen source sheet. If you convert a stack of CSV files at once, keep one column naming rule across all the sheets, or the batch rules cannot fit them all.

How to Check Your Result

Never trust a conversion you have not checked. The good news is that a sound check takes just a few minutes, and it is the same each time you work on a CSV to GeoJSON job.

First, match the counts. The report shows how many features went in and how many came out. The two counts should be the same. If the output count is lower, a step dropped data, and you should find out why before you share the file.

Next, look at the map preview. Your data should sit in the right town, state, or sea. If it sits in the ocean, or on the wrong side of the world, the coordinate system is the prime suspect. Zoom in on one place you know well and check that roads, parks, or points fall where they should.

Then check the fields. Open the field list in the report and read the names. Make sure the key fields are still there, with the right names and the right kind of values. Pick one feature you know and match each value back to the source by hand.

  • Count rows in the sheet (minus the header) and points in the output. The counts match, or each gap is a row you chose to drop, in writing.
  • Check two facts with leading zeros or long text — a phone, a code, a long address — letter for letter in the output.
  • Search the output for 0,0 points. There should be none, unless a site truly sits at that spot, which almost none do.

Last, keep the source file. Save the result with a clear name that holds the date and the format, like parks-geojson-2026-11-07.zip. Keep the source and the result in one folder. If a question comes up next month, you can trace each feature back to where it came from.

Common Mistakes and How to Fix Them

All Points Are in the Ocean, in a Neat Pattern

The columns are swapped. The fix is in Step 3: set the longitude field to the true longitude column and rerun. Do not fix it by hand in the output. A swap is a setting, and the rerun takes a minute and gets every row right at once.

One Point Sits Alone Far from the Rest

One row is broken: a typo in a digit, a swapped pair in a single row, or a 0,0. Find the row by its name in the output, then find it in the sheet. A longitude of -0.1276 typed as -10.1276 throws a London site into the Atlantic. Single-row faults need single-row fixes, in the sheet.

Some Rows Vanished

Rows with blank or text coordinates cannot become points. The report flags them; the sheet owns them. Fill true values from the address source, or drop the rows on purpose and note the drop in the hand-over. Never let a vanished row stay silent — it was a site, a shop, a person waiting for a service.

The Points Are Right but the Facts Look Wrong

A comma inside a value — an address like '14 Mill Road, North Wing' — can split a row into extra fields if the sheet was saved without quotes. Re-save the CSV from your spreadsheet app, which quotes such values as a rule, and rerun. Check the header row too: one stray comma there shifts every fact by one column.

Phone Numbers and Codes Lost Their First Zero

That damage most often happened in the sheet itself, when the app read the text as a number. The GeoJSON holds what the CSV held. Fix the column format to Text in the sheet, re-enter or re-import the values, and rerun. Then check codes first in the output — they are the canary for this fault.

What the Plans Allow

You can start free. The Free plan gives you 5 conversions a month, with one file at a time and a size limit of 25 MB per file. That is enough to test a spreadsheet of sites on real data and check the result with care.

Starter costs $9 a month. It gives you 200 conversions a month, files up to 500 MB, and batch jobs of up to 10 files at once. Pro costs $19 a month. It gives you 1,000 conversions a month, files up to 5 GB, batch jobs of up to 25 files, and API access for work you run on a schedule. You can review plans for bigger sheets and batches before you pick.

All plans work the same way at the core. You get a map preview, feature counts in and out, and a clear report if a file has a fault. Your files are kept for 72 hours so you can download them again, and then they are deleted.

Frequently Asked Questions

My sheet has addresses but no coordinates. Can I still make a map?

Not with this job alone. Addresses must first be matched to coordinates — a step called geocoding, done by an address service. Once the sheet has longitude and latitude columns, this guide takes over. Keep the matched coordinates in the sheet, so the map can be rebuilt without paying the matching cost again.

Which column order does GeoJSON use?

Longitude first, then latitude — east-west value, then north-south. That is the order in the GeoJSON standard and in KML. If your memory says 'lat, long' from daily speech, be careful: speech order and file order are not the same, and this one swap is the top fault on this road.

Can I make points from a sheet with hundreds of thousands of rows?

The conversion itself is fine at that size on the paid plans, but think about the reader. A web map with 100,000 points needs clustering or tiling in the map code, or it will crawl. The GeoJSON will also be large. For big public maps, keep the master data in a database form and publish sized copies.

What if some rows are lines or areas, not points?

A plain two-column sheet can only make points. Lines and areas need their full shape stored — as WKT text in a column, or in a real GIS format. Our converter reads CSV with a WKT geometry column as well. If your data has shapes, store the shape, not just a centre point, or the map will claim a depot is a dot when it is a yard.

Can I update the map by editing the GeoJSON?

You can, but do not make a habit of it if the sheet lives on. Edit the sheet — the source its owner reads — and rerun the conversion. One source, one direction. The day two files both claim to be true, neither is.

Final Checklist

Run through this short list before you share your file:

  • Coordinate columns confirmed by hand on two known rows.
  • Row count in matches point count out, or each drop is written down.
  • Preview puts points on the right city and the right streets, with no sea points.
  • No 0,0 points remain in the output.
  • The frozen source sheet and the dated GeoJSON are saved together.

If each point passes, your file is ready to use.

References

← All guides