IKEA 3D Model Downloader: The Browser Extension IKEA Should Have Built
- Smars
- Open Source , Developer Tools
- 08 Jun, 2026
Why This Project Exists
IKEA has invested heavily in 3D modeling for its product catalog. On their website, many items offer an interactive 3D viewer where you can rotate furniture in all dimensions, zoom in to inspect details, and get a real feel for how pieces might look in your space. The models are well-made: clean geometry, reasonable polygon counts, proper textures optimized for web rendering.
But there is no way to download these models. You are stuck staring at a captive browser widget with zero export options. Want to import an IKEA sofa into room planning software? Impossible. Want to render it in Blender with better lighting? Not without the file. The models exist only as viewable glass walls from every side—perfectly accessible visually but completely unreachable as data.
The problem is not quality. It is access control. Enter IKEA 3D Model Downloader.
This Tampermonkey script adds a “Download 3D” button right next to IKEA’s own View in 3D button on product pages. One click, and you get the actual .glb file—the same high-quality 3D model IKEA uses for their viewer, saved locally and usable anywhere in any 3D application. No account needed. No cloud service. A single user script that solves one friction point really well.
MIT licensed, vanilla JavaScript, approximately 450 lines of readable code. Over 1,200 stars on GitHub. That is the essence of a project that does exactly what it promises and nothing more.
What It Does Under The Hood
The script’s job is deceptively simple: intercept, detect, deliver. But the implementation handles multiple fallback strategies because IKEA’s frontend is dynamic and complex.
It intercepts network requests. The script wraps window.fetch, hooks into XMLHttpRequest.open, and spawns a PerformanceObserver to watch navigation timing entries. Every URL containing .glb or glb_draco gets pushed into an internally maintained array. These are IKEA’s Draco-compressed GLB files—the same format used by their embedded 3D players across multiple product categories.
It finds the existing View in 3D button. The script searches for buttons matching class patterns like .pipf-xr-button or .pip-xr-button, and also falls back to identifying the button by its unique SVG path signature. Once located, it injects a duplicate styled button beside it labeled “Download 3D.” The label automatically switches languages—Tilvurmuus Finlandish, Télécharger French, 下载3D模型 Chinese—and defaults to English when no locale match exists.
It caches available model URLs before the button even renders. When you click Download 3D, the script grabs the most recently intercepted URL from memory. For older pages using <model-viewer> elements directly, it reads the src attribute as a secondary source. If automatic capture fails entirely, pressing Ctrl+Alt+D activates manual mode: click the View in 3D button yourself, and the script captures the model URL after the interactive window opens via mutation observer watching iframe contents.
It converts the blob and triggers a local download. Once the model URL is confirmed, the script fetches the binary content, creates a Blob object, then generates a temporary anchor element with a programmatic click event. Filenames follow a human-readable convention: Product Name - Color Variant (SKU ID).glb. Like KALLAX - White (406.708.12).glb.
There are two things worth paying attention to here. First, this is not scraping—it is reading URLs already being loaded by the browser itself. The script operates entirely client-side and never exfiltrates data. Second, the multi-layer interception strategy (fetch, XMLHttpRequest, PerformanceObserver, MutationObserver) shows the author understands that browser-based frontend architecture shifts constantly.
Who Would Use This
If you work with 3D tools or spatial design, IKEA’s models are practical assets. They are clean, low-poly, properly UV-mapped, and use recognizable consumer product shapes. Specific use cases:
-
Room planning software: Import the .glb into most interior design platforms and virtually place IKEA furniture in your floor plan before buying. Works with SketchUp, RoomSketcher, Floorplanner, and anything accepting GLB.
-
Custom rendering: IKEA’s default scene lighting is functional at best. Pull a model into Blender or Cinema 4D, apply custom materials and environmental setups, produce photorealistic compositions. Better than starting from blank primitives.
-
Game development props: Clean geometry makes these decent starting points for game scenes. Dressware shelves, table surfaces, lamp fixtures—simple forms that require minimal cleanup in a DCC tool.
-
AR/VR testing: Spatial computing platforms increasingly support GLB natively. Drop furniture into an AR prototype for virtual placement validation instead of guessing how big something looks relative to your wall.
-
Print research and prototyping: STL conversion introduces distortion, but having the original Draco-compressed GLB gives you the highest quality source material to convert and edit before extruding a printable mesh.
For anyone who has wasted time trying to extract 3D models from IKEA’s walled garden, this is likely the only tool of its kind on the internet.
When You Might Not Need It
Some users should keep expectations grounded:
-
Not all IKEA products have 3D models. Older items, clearance stock, and region-specific catalogs often lack them entirely. The script works only where IKEA exposes the viewer.
-
Draco-compressed GLB files need decoder support. Some versions of 3D software struggle importing glb_draco format. Convert or re-export in your target DCC tool first.
-
IKEA could restructure their frontend architecture tomorrow. Different class names, lazy-loaded sources, CDN migration—the script handles multiple detection methods which makes it resilient, but major redesigns may break it until patched. The author has been responsive though: 37 commits since launch with a bugfix as recent as late January 2026.
-
Commercial use of downloaded proprietary IKEA models could violate their terms of service. Use personal planning purposes only. Your jurisdiction matters. Know the risk before selling rendered IKEA designs generated from these files.
-
Enterprise browsers frequently block third-party scripts regardless of intent. If company IT enforces extension restrictions, this approach may be inaccessible.
Community and Maintenance
Authored by apinanaivot and published roughly three months ago, the repository shows compelling traction metrics for its age: over 1,200 stars and 45 forks in under 90 days suggests genuine demand rather than novelty interest.
The Git history contains 37 commits demonstrating active maintenance. Four open issues show the community is actively testing and reporting edge cases. Responsive author behavior—recent fixes pushed within weeks of issue reports. Single-file architecture means transparency: scanning the entire codebase takes minutes, verifying no unwanted telemetry or data exfiltration is straightforward.
MIT license means modification, distribution, and embedding in other workflows presents zero legal friction. Forking to create similar interceptors for other retailers’ product pages would be trivial.
Quick Start
Prerequisites: Tampermonkey or compatible browser extension installed. Any modern Chromium-based browser or Firefox.
Step 1 — Install: Visit this link directly:
Clicking the link with Tampermonkey open auto-installs the script. Or go to the repo page, copy the raw source from ikea-3d-model-downloader.user.js, create a new custom script in Tampermonkey, paste everything, save, enable. Chrome users must enable Developer Mode in Tampermonkey settings under Advanced.
Step 2 — Navigate: Open any IKEA product page featuring a 3D viewer. Look for the existing View in 3D button. The Download 3D button appears immediately beside it.
Step 3 — Click: Press Download 3D. The .glb file downloads locally with product name and color variant in the filename.
Troubleshooting:
- Button not appearing? Refresh the page. Try Ctrl+Alt+D for manual mode. Verify Tampermonkey allows the script to run on ikeacom domains.
- Chromium users: Double-check that Developer Mode is toggled on in Tampermonkey dashboard.
- Still failing? File an issue on GitHub. The author responds reasonably quickly.
The Real Lesson Here
Most browser extensions are solutions looking for problems. This is a problem looking for one solution.
IKEA puts beautiful 3D assets behind a single-use interface with zero download option. Someone noticed, wrote a few hundred lines of JavaScript, posted it publicly, and now thousands of people benefit from a fix that requires zero infrastructure, zero maintenance cost, and zero learning curve beyond clicking a button.
That is what good open source micro-tools look like. Minimal scope, maximum utility, readable code, transparent behavior. No platform dependency, no vendor lock-in, no subscription. Just one developer spotting friction and removing it.
The reason this deserves more attention isn’t about downloading IKEA furniture models. It is proof that the smallest tools can solve the hardest usability gaps. IKEA built an impossible feature (view 3D in the browser but cannot save it), someone solved it in 450 lines of free software, and we do not need a corporate product team to make it happen.
Repo: https://github.com/apinanaivot/IKEA-3D-Model-Download-Button