Spatial data
How to Make a Choropleth Map (Free, No GIS Software)
A choropleth map shades each area (a country, county, district, or tract) by the value of a variable, so a pattern you could never see in a spreadsheet becomes obvious at a glance. You do not need desktop GIS software or a login to make one. This guide walks through the whole workflow in a free browser tool, Groundtruth, from loading boundaries to exporting a figure, and explains the choices (classification, colour, normalisation) that decide whether your map tells the truth.
9 min read · Updated August 24, 2026
What a choropleth map is, and when to use one
A choropleth map colours predefined regions by a data value: darker or more saturated areas carry higher values. It is the right choice when your data is already aggregated to areal units (per county, per country, per ward) and the variable is a rate, ratio, or density rather than a raw count. Election results by state, poverty rate by district, rainfall by region, and yield per hectare by county are all natural choropleths.
Shade rates and densities, not raw totals. A map of total population will always just show where the big areas are. A map of people per square kilometre shows where people actually cluster. If you only have counts, divide by area or by population first.
What you need: boundaries plus a value
Every choropleth is two pieces joined together. The first is the geometry: the shapes of your regions, as a shapefile or a GeoJSON file. The second is the attribute: the number you want to map for each region. Sometimes both live in the same file (a shapefile whose attribute table already has your column). Often the shapes come from one place and the numbers come from a spreadsheet, and you join them on a shared key such as a region name or code.
- Boundaries are free and global. Natural Earth has countries and states with data already attached. geoBoundaries and GADM go down to districts and wards. Your national statistics office usually publishes official admin boundaries.
- Values come from a census, a survey, an administrative record, or your own fieldwork, usually as a CSV or spreadsheet with one row per region.
Step by step
Open Groundtruth and drag a .zip shapefile or a .geojson onto the map. It parses the file in your browser, so nothing is uploaded to a server and your data stays private.
If the numbers are in a spreadsheet, use Join a spreadsheet (CSV) and match a boundary field to a CSV column (for example region name to region name). Numeric columns become mappable variables.
Choose the field to map. The map colours instantly. If a value looks wrong, you can edit it in place in the Inspect panel.
Switch between quantile, equal interval, natural breaks (Jenks), and standard deviation. This choice changes the story, so it is worth understanding (below).
Open the attribute table to sort and filter the underlying numbers, and use Analyze to correlate two variables or test whether the pattern is spatially clustered.
Draft a caption, then export the map as SVG or PNG for a paper or slide, or export GeoJSON to carry the joined data onward. Save project keeps the whole session, edits and all, for later.
Classification: the choice that makes or breaks the map
Classification decides how continuous values are grouped into colour classes. The same data can look completely different under different schemes, so pick deliberately rather than accepting a default.
- Quantile puts an equal number of regions in each class. Every colour is used and the map looks balanced, but class widths vary, so two regions in different classes can be almost identical.
- Equal interval splits the value range into equal-width bands. It is honest about magnitude and great for evenly spread data, but with skewed data most regions pile into one or two classes.
- Natural breaks (Jenks) finds groupings that minimise variation within each class and maximise it between classes. It usually reads best on real, lumpy data such as population or income.
- Standard deviation shades by distance from the mean, which is ideal when the story is who is above or below average rather than the raw level.
A good habit is to try quantile and Jenks side by side. If your conclusion flips between them, your classes, not your data, are doing the talking, and you should say so. For a deeper treatment, see the guide on choropleth classification methods.
Colour, without misleading
- Use a sequential ramp (light to dark in one hue) for data that runs low to high.
- Use a diverging ramp (two hues meeting at a neutral middle) only when there is a meaningful midpoint, such as a change, an anomaly, or a value above and below average.
- Keep the number of classes to about five. More classes look precise but exceed what the eye can distinguish.
- Check that your ramp still reads for colour-blind viewers. Sequential ramps in a single hue are the safest.
Common mistakes to avoid
- Mapping counts instead of rates, so the map just shows area or population size.
- Letting an outlier stretch the whole colour scale so every other region looks the same.
- Comparing two maps made with different classifications or class breaks.
- Reporting area or distance from a map in a projection that distorts them. For measurement, use a tool that computes real geodesic area and distance rather than raw coordinate units.
None of this requires a GIS licence or an install. Everything above runs in a browser tab. When you are ready, open Groundtruth and drop in a file.
Frequently asked questions
- How do I make a choropleth map for free?
- Open a browser tool such as Groundtruth, drag in a shapefile or GeoJSON of your regions, join a spreadsheet of values if the numbers are separate, choose the variable and a classification, and export the map as SVG or PNG. No install or sign-up is needed and the data stays in your browser.
- What is the difference between a choropleth map and a heat map?
- A choropleth shades predefined areas (counties, countries) by a value. A heat map shows the density of point events as a smooth surface. Use a choropleth for data already aggregated to regions, and a heat map for raw point locations.
- Should I map totals or rates?
- Map rates, ratios, or densities. Raw totals in a choropleth mostly reveal which areas are large or populous. Dividing by area or by population turns a count into a comparable rate.
- Which classification method should I use?
- Quantile balances the colours, equal interval is honest about magnitude, natural breaks (Jenks) usually reads best on skewed real-world data, and standard deviation highlights above and below average. Try quantile and Jenks together and report the scheme you chose.
- Can I make a choropleth without desktop GIS software?
- Yes. Browser tools parse shapefiles and GeoJSON locally and render the map client-side, so you can classify, edit, analyse, and export without QGIS or ArcGIS installed.
Bring this into your own research
Research Woven connects your sources, highlights, notes, evidence, and manuscript in one maintained chain, so provenance and citations are computed for you rather than pieced together by hand.
Open Research WovenKeep reading
- How to Map Data From a Spreadsheet or CSVTurn a spreadsheet into a map. Learn how to join a CSV of values to region boundaries on a shared key, avoid the join pitfalls that lose rows, and map the result for free.
- Choropleth Classification: Quantile, Equal Interval, Jenks, Std DevHow the classification method changes a choropleth map. A plain-language guide to quantile, equal interval, natural breaks (Jenks), and standard deviation, with when to use each.
- Shapefile vs GeoJSON: Which Format for Spatial Data?A clear comparison of the shapefile and GeoJSON formats for spatial data: how each stores geometry and attributes, their strengths and limits, coordinate systems, and how to open both.