---
title: "Bubble Map Maker (Proportional Symbol Map)"
description: "Make a bubble map image free: a circle sized by value on every country or state. Pick a basemap, add your numbers, and download a PNG or SVG, or render via API."
url: "https://www.imejis.io/blogs/tutorials/bubble-map-image-generator"
published: "2026-08-02"
---

# Bubble Map Maker (Proportional Symbol Map)

A bubble map maker takes a list of region values and draws a circle on each place, sized by its number. Open the map maker, switch to bubble mode, add your data, and download a PNG or SVG. It's the map you reach for when the count matters more than the color.

## What a bubble map shows

A [proportional symbol map](https://en.wikipedia.org/wiki/Proportional_symbol_map), or bubble map, puts a circle at each region's center and sizes it by value. The circles are area-proportional, so a value twice as large looks twice as big, not twice as wide. Your eye compares the sizes directly.

Here's why that matters. A choropleth shades whole regions, and big regions grab attention whether or not their number is large. A bubble sizes by the value itself, so a small country or state with a big number still reads loud. Reach for a bubble map when you're showing counts and totals:

- **Volume by place:** users, orders, or stores per country or state.
- **Reach:** where your customers are, sized by how many.
- **Anything a shade would distort** because region areas vary a lot.

The data model is tiny. Each region is one row: an `id` (an ISO-3166 code like `US`, or a state code) and a `value` that sets the bubble size. Leave a region out and it just gets no bubble.

## Make one free

Open the [map maker](/tools/map-maker), switch the mode to Bubble, and add a row per region with a code and a value. Pick the bubble color and a background, and the map redraws as you type. When it looks right, download it. You get a PNG for slides and docs, or an SVG when you want it crisp at any size. No signup, no watermark.

Want groups instead of one color? Switch the color mode to Category and tag each row, and the bubbles color by group. Turn on value labels and each number prints right on the map, and since labels draw inside the image, they survive the export.

## Embed it anywhere

A bubble map is just an image, so it embeds like any other. One line of markdown or HTML:

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

Point that at a saved file and it shows a fixed snapshot. Point it at a **render URL** and the map redraws every time it loads, so pushing this month's numbers updates the picture on its own. A "users by country" panel in a dashboard or a weekly email stays current without anyone re-exporting anything.

## 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 [a component you configure](/components/map) once, a single render call takes your region values and returns the image. Set `mode` to bubble once, and the rest is just data:

- **On a schedule:** a cron job pulls the latest counts and drops a fresh bubble map into a morning report.
- **Per request:** your app renders a map for whatever slice a user asks for.
- **Through an [AI agent over MCP](/agents):** the agent gathers the data and calls the render itself.

Working request samples live in the [API docs](/apis), ready to copy. Design the map once, then keep the data coming.

## Start making bubble maps

Region values in, a sized-bubble map out.

- Build one now in the [map maker](/tools/map-maker), 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" bubble map and watch it update before you upgrade.
