How do you make an image map responsive?

Replace the pixel coordinates in <area> tags with positions expressed as percentages of the image's width and height, so every clickable point scales with the picture. Interactive Image stores hotspots this way by default, which is why they stay on target from a desktop monitor down to a phone.

Responsive image map generator — free, no signup

Place hotspots visually and copy HTML that holds its alignment at every screen size. Percentage coordinates instead of fixed pixels.

Responsive image map generator

Drop in your image, click to place hotspots, copy responsive HTML. Positions are stored as percentages, so nothing drifts on mobile. No account, nothing uploaded.

Interactive diagram
InteractiveImage.com
Hover a hotspot to preview · drag to move4 hotspots · runs in your browser

This is a live demo — nothing here is published yet. Create a free account to publish your image and get a one-line embed code for Wix, Webflow, WordPress, Squarespace or plain HTML, with hosted images, images and video in the cards, CTA buttons and edits that go live instantly. Free includes 1 published image with the Interactive Image badge; Pro removes the badge and unlocks white-label embeds.

Start free See the live editor

Free forever plan · No credit card · Works in Wix, Webflow, WordPress, Shopify, Squarespace

Percentage positioning

Hotspots stay attached to the image even when the layout changes.

No coordinate math

Click to place markers instead of measuring rectangles, circles, or polygons by hand.

Modern popups

Titles, descriptions, media, links, and filters instead of plain link-only areas.

What you get

  • Mobile-friendly hotspot placement
  • No raw map or area tags
  • One iframe embed
  • Works in every website builder
  • Clickable cards with media and CTAs
  • Edit once, every embed updates

Preview the card as well as the marker

In the account editor, check Desktop, Tablet, and Mobile, then preview a selected dot. Confirm that its card width, line breaks, media, and links work at each size. Use Appearance for one dot and Map settings for shared defaults. Image dots use percentage positions; geographic Mapbox pins use coordinates, so the two map types do not use the same placement math.

The exact reason fixed coordinates fail

Take a 1200×800 diagram with a hotspot on a valve at 600,400 — dead centre. In classic image map markup that becomes a literal pixel value:

<img src="diagram.png" usemap="#m" width="1200" height="800">
<map name="m">
  <area shape="circle" coords="600,400,24" href="/valve">
</map>

Add one line of responsive CSS — img { max-width: 100%; height: auto; } — and on a 390px phone the browser paints the image at roughly 32% scale. The valve is now at about 195,130 on screen, but coords still says 600,400: a point past the right edge of the picture. The hotspot has not moved, it has disappeared.

Percentages describe the same point in a way that survives scaling. 600 ÷ 1200 = 50% and 400 ÷ 800 = 50%. Half of 1200px is 600px; half of 390px is 195px. The marker lands on the valve at every width, with no media queries, no resize listener, and no second mobile version to keep in sync.

Converting an existing image map to percentages

You do not have to redraw anything. Every legacy coordinate can be converted with two divisions:

Shapecoords formatPoint to convert
circlex, y, radiusx and y are already the centre
rectx1, y1, x2, y2(x1+x2)/2, (y1+y2)/2
polyx1,y1, x2,y2, …centre of the bounding box
xPercent = (x / naturalWidth)  * 100
yPercent = (y / naturalHeight) * 100

// rect coords="300,200,700,600" on a 1200x800 image
// centre = 500, 400  ->  41.7%, 50%

In practice, clicking the point on the image is faster than the arithmetic for anything under about twenty hotspots. The full migration walkthrough is on the image map generator page, and making an image clickable without an image map compares the markup options side by side.

How the four responsive approaches compare

ApproachResponsiveExtra JSPopupsMaintenance
<area> with pixel coordsNoNoRegenerate per size
<area> + resize libraryYes, after script runsYesNoA dependency to keep alive
CSS percentage overlayYesOnly for cardsHand-builtEdit markup per page
Interactive Image embedYes, by defaultNone on your pageText, image, video, CTAEdit once, all embeds update

Testing that a map is genuinely responsive

Three checks catch almost every alignment bug:

  1. Drag the window slowly. Markers should glide with the image, not jump at breakpoints. A jump means something in the chain is still pixel-based.
  2. Rotate a phone. Portrait to landscape is where resize-listener approaches most often lag or land a frame behind.
  3. Check a marker near an edge. Corner hotspots expose off-by-a-few-percent errors that centre markers hide, and they are also where popups need to flip to stay on screen.

The underlying maths, including how object-fit letterboxing shifts things, is covered in why image hotspots drift on mobile.

Where to go next

Frequently asked questions

Do I need a resize script on my page?

No. There is no JavaScript for you to include — the embed handles scaling internally.

What if my image is very tall or square?

Any aspect ratio works. The embed derives its height from your image's own ratio, so tall floor plans and square product shots both fill their container correctly.

Can I still link straight out from a hotspot?

Yes. Give the hotspot a CTA link and keep the popup copy to a line, or point the CTA at the URL the old <area> used.

Turn any image into a guided experience.

Free forever plan. Paste one iframe into your site and ship.

Create your interactive image