🗺️ Open Cartographic Archive

Taiwan's Shape

SVG, GeoJSON, TopoJSON — a complete open-source map dataset for developers, designers, and researchers.

Why the shape of Taiwan matters

Ask any AI image generator to draw Taiwan and watch what happens. It usually spits out a fat, rounded blob somewhere between an olive and a potato. Taiwan is not an olive. It's a 394-kilometer-long sweet potato with a central mountain range and more than 100 offshore islands.

Getting the shape right is not just a design nit — it's an identity problem. This page collects all the open-source assets we use on taiwan.md so anyone can render Taiwan accurately in their own project.

🤖 vs. 🇹🇼 — AI gets this wrong. Always.

AI-generated Taiwan shape (wrong)
AI-generated (wrong)
Correct Taiwan shape from Wikipedia
Correct (Wikipedia)

📐 SVG outlines — instant drop-in

Four hand-picked SVG files, all CC / public domain. Drop directly into any website, app, or design file.

Taiwan icon — Wikipedia

taiwan-icon.svg

Simple filled outline — great for icons, favicons, buttons.

Wikimedia Commons · CC

Taiwan outline — SimpleMaps

taiwan-simplemaps.svg

Clean vector — great for web embedding.

SimpleMaps · 5 KB

Taiwan location map with city markers

taiwan-location-map.svg

Location map with lat/lon grid and city markers.

Wikimedia Commons · CC

Taiwan political division map with counties

taiwan-political-division.svg

County borders — colored administrative divisions.

Wikimedia Commons · CC

Usage examples

<!-- HTML -->
<img src="https://taiwan.md/assets/svg/taiwan-icon-wiki.svg" alt="Taiwan" width="200">

/* CSS */
background-image: url('https://taiwan.md/assets/svg/taiwan-icon-wiki.svg');

<!-- Markdown -->
![Taiwan](https://taiwan.md/assets/svg/taiwan-icon-wiki.svg)

All SVGs are under Creative Commons or public domain. Attribution appreciated but not required.

🌐 TopoJSON — interactive maps at county level

For interactive maps — zoom, hover, fill by data value — you need real geographic coordinates, not just SVG paths. We bundle TopoJSON files extracted from Waiting's taiwan-vue-components (MIT License, 2018).

TopoJSON is GeoJSON compressed: shared borders between counties are stored only once, making files 80% smaller. It can be converted to GeoJSON on the fly with topojson-client.

TopoJSON vs GeoJSON — which one?

TopoJSON

TopoJSON: smaller file size, shared topology between adjacent regions, the right choice for web maps.

GeoJSON

GeoJSON: simpler format, direct compatibility with Python geopandas, QGIS, and most GIS tools.

Country-level outline (22 counties)

~21 KB TopoJSON file with all 22 counties and special municipalities as separate features. Perfect for choropleth maps.

taiwan-country.topo.json
TopoJSON · 22 features · ~21 KB
Download TopoJSON

Township-level (6 special municipalities)

We bundle the 6 special municipalities' township-level files. For the other 16 counties, see the source repository on GitHub.

taiwan-towns-63000.topo.json
臺北市 Taipei · 11 KB
Download TopoJSON
taiwan-towns-64000.topo.json
高雄市 Kaohsiung · 35 KB
Download TopoJSON
taiwan-towns-65000.topo.json
新北市 New Taipei · 13 KB
Download TopoJSON
taiwan-towns-66000.topo.json
臺中市 Taichung · 11 KB
Download TopoJSON
taiwan-towns-67000.topo.json
臺南市 Tainan · 15 KB
Download TopoJSON
taiwan-towns-68000.topo.json
桃園市 Taoyuan · 7 KB
Download TopoJSON

For the full 22-county set of township files, see github.com/waiting7777/taiwan-vue-components.

🧭 Administrative division codes

Taiwan's administrative divisions use numeric codes. Here's the reference table for all 22 county-level divisions (file naming follows `towns-{code}.json`).

Code Division Type
63000 臺北市 Taipei Special Municipality
64000 高雄市 Kaohsiung Special Municipality
65000 新北市 New Taipei Special Municipality
66000 臺中市 Taichung Special Municipality
67000 臺南市 Tainan Special Municipality
68000 桃園市 Taoyuan Special Municipality
10002 宜蘭縣 Yilan County
10004 新竹縣 Hsinchu County
10005 苗栗縣 Miaoli County
10007 彰化縣 Changhua County
10008 南投縣 Nantou County
10009 雲林縣 Yunlin County
10010 嘉義縣 Chiayi County
10013 屏東縣 Pingtung County
10014 臺東縣 Taitung County
10015 花蓮縣 Hualien County
10016 澎湖縣 Penghu County
10017 基隆市 Keelung City
10018 新竹市 Hsinchu City City
10020 嘉義市 Chiayi City City
09007 連江縣 Lienchiang (Matsu) Offshore County
09020 金門縣 Kinmen Offshore County

💻 Usage examples

D3.js — interactive choropleth

// D3.js v7 + topojson-client
import * as d3 from 'd3';
import * as topojson from 'topojson-client';

const topo = await d3.json('https://taiwan.md/assets/geo/taiwan-country.topo.json');
const counties = topojson.feature(topo, topo.objects.map);

const projection = d3.geoMercator()
  .center([121, 24])
  .scale(8000)
  .translate([400, 300]);

const path = d3.geoPath().projection(projection);

d3.select('svg')
  .selectAll('path')
  .data(counties.features)
  .join('path')
    .attr('d', path)
    .attr('fill', d => colorScale(d.properties.value))
    .attr('stroke', '#333');

Python — geopandas

# Python — convert TopoJSON to GeoDataFrame
import json, geopandas as gpd
from topojson import Topology

with open('taiwan-country.topo.json') as f:
    topo = json.load(f)

# Convert to GeoJSON
topology = Topology(topo)
gdf = gpd.GeoDataFrame.from_features(
    topology.to_geojson()['features']
)
gdf.plot(column='name', legend=True)

Leaflet — tile-based map overlay

// Leaflet + topojson
import L from 'leaflet';
import * as topojson from 'topojson-client';

const map = L.map('map').setView([24, 121], 7);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

fetch('https://taiwan.md/assets/geo/taiwan-country.topo.json')
  .then(r => r.json())
  .then(topo => {
    const geojson = topojson.feature(topo, topo.objects.map);
    L.geoJSON(geojson, {
      style: { color: '#4a90e2', weight: 1, fillOpacity: 0.3 }
    }).addTo(map);
  });

Vue — taiwan-vue-components

// Vue 2 — taiwan-vue-components (original source)
npm install taiwan-vue-components

// In your Vue component
import { Country, Taipei, Kaohsiung } from 'taiwan-vue-components';

<template>
  <div>
    <Country :width="400" :height="600" fill="#f0f0f0" stroke="#333" />
    <Taipei :width="300" :height="300" />
  </div>
</template>

📚 Other open data sources

If you need more than what's bundled here — higher resolution, different projections, historical administrative boundaries — these are the sources we recommend:

  • 政府資料開放平臺 (data.gov.tw) — Official Taiwan government open data, including administrative boundary shapefiles from the Ministry of the Interior.
  • Natural Earth — Public domain global map data at 1:10m, 1:50m, and 1:110m scales. Great for small-scale world maps that include Taiwan.
  • OpenStreetMap (Taiwan relation) — OSM's community-edited map of Taiwan, downloadable as OSM XML or PBF via Overpass API and Geofabrik.
  • GADM — Taiwan — Global Administrative Areas database, Taiwan administrative boundaries at levels 0-3 in Shapefile, GeoPackage, KMZ, and R formats.
  • g0v.tw — Taiwan's civic tech community. Many g0v projects publish cleaned-up map data and visualizations as open source.

⚖️ License & attribution

Every file on this page is open source. Here are the exact origins and licenses:

  • taiwan-icon-wiki.svg · taiwan-location-map.svg · taiwan-political-division.svg — Wikimedia Commons, Creative Commons.
  • taiwan-simplemaps.svg — SimpleMaps, free for personal and commercial use with attribution.
  • taiwan-country.topo.json · taiwan-towns-*.topo.json — Extracted from waiting7777/taiwan-vue-components, MIT License © 2018 Waiting.