---
title: "Choropleth Map Maker (Free Image Generator)"
description: "Turn country or US-state values into a clean choropleth map image. A free playground, a one-line embed that updates on new data, and an API for maps at scale."
url: "https://www.imejis.io/blogs/tutorials/choropleth-map-image-generator"
published: "2026-08-02"
---

# Choropleth Map Maker (Free Image Generator)

Hand a choropleth map maker a list of region values and it paints a shaded map. Each region gets a value, the map colors it on a scale, and you download a PNG or SVG. It answers the "where" question in a report or dashboard: sales by country, users by state, growth by region.

## What a choropleth map shows

A [choropleth](https://en.wikipedia.org/wiki/Choropleth_map) shades each region by a value, so darker or more saturated means more. The eye reads the pattern before it reads any number, which is the whole point. One glance tells you the US and Germany are your big markets, or that growth is clustered in a few states.

The data model is small. Each region is one row:

- **id:** which region. For a world map, an [ISO-3166](https://en.wikipedia.org/wiki/ISO_3166-1) code like `US` or `FR`, or the country name. Common names like `Russia` and `UK` work too.
- **value:** the number to shade by. Sales, users, a survey score, a percentage, anything.

Regions you don't include stay neutral, so a partial dataset is fine. You bring the values, the map already knows the shapes.

Two coloring styles cover most needs. A **ramp** shades in a single hue from light to dark, good for totals. A **diverging** scale colors positive and negative apart from a neutral middle, built for growth, change, or a vote margin.

## Make one free

Open the [map playground](/components/map). Add a row per region as an id and a value, pick a basemap, choose a ramp or diverging color scale, and download the map. Export a PNG for emails and docs, or an SVG when you want it crisp at any size.

The playground is indifferent to what the numbers are. Dollars, signups, percentages, doesn't matter. A region and a value gets you a shaded map. And shading isn't the only option: switch the mode to draw a [bubble map](/blogs/tutorials/bubble-map-image-generator) sized by value, color regions by category, or turn on value labels.

## Pick a country or a whole region

The world basemap covers every country, but plenty of reports zoom in on one place. There are seven basemaps in all: the world, US states, and province or state maps for Canada, Germany, Australia, Brazil, and India. Each keys the same way, by the local region code, the ISO-3166-2 form, or the region name.

If you know you're mapping one country, the dedicated makers skip straight to it:

- [Canada map generator](/tools/canada-map-generator), by province
- [Germany map generator](/tools/germany-map-generator), by Bundesland
- [Australia map generator](/tools/australia-map-generator), by state
- [Brazil map generator](/tools/brazil-map-generator), by state
- [India map generator](/tools/india-map-generator), by state

Each one is the same tool pinned to that country, so you get the right regions and sample data without touching the basemap picker.

## Embed it anywhere

A map image embeds like any other image. One line of markdown or HTML and it renders inline:

```html
<img
  src="https://your-render-url"
  alt="Sales by country choropleth map"
  width="800"
/>
```

Here's what makes it worthwhile. Point at a **render URL** instead of a saved file and the map redraws whenever it loads. Push this month's numbers and the same URL returns an updated map. The doc stays as is, and no one re-exports it. A "sales by country" panel in a dashboard or a weekly email refreshes itself.

Save a static file when you want a fixed snapshot, like a map pinned to a quarter in a report. Use a render URL when the picture should follow new data.

## Generate at scale

One map by hand is easy. One per customer, or one every morning, is where the API earns its keep.

Because the map is API-native, it's [a component you configure](/components/map) once and render on demand. One call takes your list of region values and returns the image. A few ways people wire it up:

- **On a schedule:** a cron job pulls the latest figures, hits the render URL, and drops the map into a morning report.
- **Per request:** your app renders a map on the fly for whatever region breakdown a user asks for.
- **Through an [AI agent over MCP](/agents):** the agent gathers the data and calls the render itself, with no plumbing on your side.

Working examples live in the [API docs](/apis), ready to copy, so you're not guessing the request. Draw the map once, then keep the data coming.

## Start making maps

Region values in, a shaded map out.

- Build one now in the [map playground](/components/map), free, PNG or SVG.
- Configure it as an API [component](/components/map) and render on demand.
- Automate it through the [API](/apis) or an [AI agent](/agents).

The free plan covers [100 renders a month](/pricing), enough to stand up a live "by country" or "by state" panel and watch it update before you upgrade.
