Product taxonomy explorer
The Product Taxonomy Explorer is a static, framework-free browser tool for Shopify product taxonomy — categories, attributes, attribute values, and return reasons. We built it for the Shopify community as something you can leave open all day: map products, check handles, copy IDs, and share category links with a teammate.
No account required. Light and dark mode. All 31 locales from Shopify’s current stable taxonomy release.
Why we built this
Section titled “Why we built this”Shopify’s published taxonomy explorer is genuinely useful — and genuinely heavy.
When we looked at the latest release (2026-05), a single category URL pulled down about 59.9 MB of HTML. The page pre-renders huge category, attribute, mapping, and return-reason panels into the DOM, stores relationship data in attributes, and toggles visibility across cached node lists. Search runs through external browser-side tooling. The page even yields work back to the main thread — a tell that the browser is struggling with its own size.
If you work with taxonomy data often, you have probably felt this:
- Slow first loads on constrained networks or busy machines
- Sluggish search and column navigation once the tab is open
- Memory pressure and occasional tab crashes
- Hard-to-read loading state — is it still fetching or stuck?
- Massive page weight for a simple question: “What is the category ID for snowboards?”
The upstream JSON is large on its own — roughly 94.8 MB for English taxonomy.json and 80.0 MB for categories.json. The default explorer does not shrink that problem; it renders much of the tree into HTML up front.
We wanted a lookup tool that feels like a tool, not a stress test.
What we built
Section titled “What we built”We did not set out to clone Shopify’s UI with extra polish. We set out to make taxonomy work feel calm.
- Compact, app-ready data — normalized at build time into flat records, stable IDs, deduplicated relationships, and content-hashed JSON shards sized for how the UI loads
- Render only what is visible — category columns for the current path, one detail panel, bounded search results, attribute rows only after you expand them
- Load detail on demand — attribute metadata and value lists fetch in small chunks when you need them
- Search without a duplicate index — the browser derives ~23,600 searchable rows from categories, compact attribute summaries, and return reasons already in memory
- Static delivery — HTML, CSS, JavaScript, and generated data on Cloudflare Workers Static Assets; cacheable files bypass Worker execution
- Full locale support — all 31 Shopify-generated locales for the pinned release, with complete UI copy in each enabled language
You still get category lookup, attribute inspection, return reasons, localized labels, shareable URLs, and copy controls — without the weight that made the default experience drag.
Why it feels faster
Section titled “Why it feels faster”The biggest win is restraint.
| Shopify’s published explorer | Product Taxonomy Explorer | |
|---|---|---|
| First visit | ~60 MB HTML with hidden DOM for the full taxonomy | Shell + ~81–92 KB gzip root-scoped category data (active locale) |
| Rendering | Pre-render everything, toggle visibility | Build only visible columns, details, and opened rows |
| Search | Separate search index infrastructure | Derived in-browser from loaded locale data |
| Attribute values | Bundled into initial page weight | Lazy-loaded per attribute (~52–66 KB gzip max per chunk) |
| Failure mode | One heavy list can degrade the whole page | A large value list affects one row after you open it |
Deploy size and session size are not the same. The full release artifact includes every locale (~450 MB on disk, ~2,993 content-addressed files in production), but a browser only requests the active locale’s roots, one core shard for the selected taxonomy root, one shared detail shard, and later the chunks your interactions need.
Measured on verified build v1.4.2 (source ref v2026-05):
- Root-scoped category data: 81–92 KB gzip across locales
- First taxonomy render (localhost): ~232 ms Fast 4G / ~824 ms Slow 4G
- Selected detail ready: ~803 ms Fast 4G / ~2,835 ms Slow 4G
- Production Lighthouse (2026-07-22): 100 Accessibility, 100 Best Practices, 100 SEO; Slow 4G LCP ~2.2 s (4× CPU throttling), CLS 0.00
Warm navigation after bootstrap is effectively instant. Copy confirmation lives in the footer, not a toast. Timings in the footer and Debug panel show clearly when data is loading versus when something is stuck.
Built for real workflows
Section titled “Built for real workflows”Find what you need
Section titled “Find what you need”- Search by category name, category ID, attribute handle, or return reason —
/orCmd/Ctrl+Kto focus - Browse with predictable column navigation when hierarchy matters
- Share URLs that preserve category selection and locale
Inspect with confidence
Section titled “Inspect with confidence”- Breadcrumb, short category ID, full Shopify taxonomy GID, assigned attributes, and return reasons in one panel
- Copy buttons for IDs, handles, and breadcrumbs — confirmation in the footer
- Collapsible attribute rows; long value lists preview first, then Show all without another network round trip
Languages and themes
Section titled “Languages and themes”- Language selector for every enabled Shopify locale — taxonomy labels from Shopify’s data, UI chrome from our catalogs (strict key parity across 31 locales)
- Light and dark mode, persisted in the browser
- WCAG A/AA checks in automated release gates for both themes, plus keyboard focus coverage for search
By the numbers
Section titled “By the numbers”| Categories | 14,606 |
| Attributes | 8,553 |
| Attribute values | 74,813 |
| Return reasons | 470 |
| Locales | 31 |
| Derived search rows | 23,629 |
| Shared detail deduplication saved | 129.29 MB |
Search intentionally excludes full attribute value text from the default index. Indexing all values would grow search from 23,629 rows to 98,442 and increase memory and ranking cost — a deliberate tradeoff until value-level lookup is worth an opt-in path.
How we keep it maintainable
Section titled “How we keep it maintainable”Deliberately boring architecture:
- No frontend framework unless a measured failure mode proves we need one
- Deterministic data pipeline — pin a Shopify release tag to an immutable commit, verify source hashes, publish compact payloads manifest-last, validate every browser asset before release
- One verified artifact per release — full SHA-256 identity through preview, production, and rollback
- Automatic production deploy on runtime pushes to
mainafter the full gate passes; docs-only changes do not deploy - 57 browser smoke tests and 5 accessibility tests — deep links, all locales, lazy payloads, copy workflows, layouts down to 320px
Performance here is doing less work, later, on data shaped for the job — not wrapping a giant page in a framework or running app logic on every request.
Independent project
Section titled “Independent project”Built by Company XYZ. Not affiliated with Shopify beyond using Shopify’s open product-taxonomy data on the same terms as the upstream explorer.
We map categories, check attributes, and copy IDs into internal tools every week — this is the explorer we wanted on hand.
If you care about performance and accessibility in storefront work, you might also like Align, our Shopify theme built with the same priorities.
Try it
Section titled “Try it”Open product taxonomy explorer
Example deep link: Snowboards (sg-4-17-2-17)
Taxonomy source data: Shopify/product-taxonomy on GitHub
Shopify’s explorer ships the warehouse — you wait for the whole building to load, then hide the floors you are not visiting.
Product Taxonomy Explorer keeps the warehouse organized and brings forward the shelf you are actually using — responsive across 14,000+ categories and 31 languages.