WooCommerce Shipping Zone & Postcode Builder
Turn a list of postcodes into WooCommerce's exact range and wildcard syntax, and check whether your zone order is silently hiding a zone.
Paste postcodes, ranges or wildcards, one per line
Exact codes (90210), numeric ranges (90210-90220 or 90210...90220), or wildcards (902*, CB2*). One entry per line; WooCommerce doesn't accept commas in the Zone postcodes box.
90210
90211...90220
941*
CB2*
CB23*Paste the cleaned list into WooCommerce → Settings → Shipping → your zone → Limit to specific ZIP/postcodes.
Check your zone order, top to bottom (the same order WooCommerce uses)
| Order | Zone name | Country | Postcodes (blank = whole country) | |
|---|---|---|---|---|
"US - West Coast"'s pattern "9*" already matches postcodes that "US - California only"'s "90*" also targets, and "US - West Coast" is above it, so those customers never reach "US - California only".
WooCommerce matches a customer to the first zone (top to bottom under WooCommerce → Settings → Shipping) whose country/state/postcode all match, then stops. Put your most specific zones first and a catch-all zone (blank postcodes, or no zone at all beyond "Locations not covered by your other zones") last.
WooCommerce's postcode syntax
- Exact postcodes: type the postcode as-is, e.g.
90210. - Numeric ranges: two numbers joined with three dots, e.g.
90210...99000. WooCommerce doesn't support letters or wildcards inside a range. - Wildcards: an asterisk matches everything after it, e.g.
902*matches90210and90288-1234;CB2*matches bothCB2 3AAandCB23 1EX. - Multiple entries go one per line in the zone's postcode box, not comma-separated.
The formatter above takes a rough, pasted list and cleans it up: it normalizes ranges to the ... form, upper-cases letter codes, removes duplicates, and flags anything WooCommerce won't accept (like a wildcard mixed into a numeric range, or a range typed backwards).
Why zone order breaks shipping silently
WooCommerce checks a customer against your shipping zones from top to bottom and stops at the first match, showing only that zone's methods. A zone with no postcode restriction matches every address in its country, so if it sits above a narrower, postcode-limited zone for the same country, that narrower zone never gets reached, and nobody notices until a customer in that area emails asking why they can't see the rate they expected.
The default example in the zone-order checker above deliberately shows this mistake: a broad "West Coast" zone (9*) sitting above a narrower "California only" zone. Move it below to see the warning clear.
Setting up a zone
- 01
Create the zone
WooCommerce → Settings → Shipping → Add shipping zone.
- 02
Set its regions
Add the countries/states/provinces it should cover.
- 03
Limit by postcode
Under Limit to specific ZIP/postcodes, paste the cleaned list from this tool.
- 04
Check the order
Drag zones in the list so more specific ones sit above broader ones, and any catch-all zone sits at the very bottom.
Questions people ask
Can I use commas to separate postcodes?
No, WooCommerce's postcode box expects one entry per line, not a comma-separated list. This tool's formatted output already uses newlines.
Can I mix a wildcard and a range, like 902*...990*?
No, WooCommerce doesn't support that combination. Use a wildcard on its own (902*) or a plain numeric range (90210...99000), not both together.
Does the zone-order checker know real ZIP code boundaries?
No. It only checks whether the patterns you enter would overlap or shadow each other, since exact postcode boundaries vary by carrier and aren't a single canonical dataset. Enter your own postcode lists, ideally from your carrier or a postal authority.
What happens if a customer doesn't match any zone?
They see no shipping options at all unless you have a zone covering "Locations not covered by your other zones", which should normally be your last, broadest zone.
Do postcodes match on billing or shipping address?
Zone matching uses the customer's shipping address by default, following the same address WooCommerce uses to calculate everything else about delivery.
Related tools
Last reviewed 30 September 2026.
