IKEA’s product pages feature impressive 3D models you can view interactively, but downloading those models directly as .GLB files isn’t supported out of the box. The IKEA-3D-Model-Download-Button repository solves this by injecting a “Download 3D” button next to IKEA’s native “View in 3D” option, allowing users to grab the actual 3D model files for personal use.
How IKEA-3D-Model-Download-Button works under the hood
This project is a Tampermonkey userscript written in JavaScript that runs in your browser. When you visit an IKEA product page, the script manipulates the page DOM to add a new button alongside the existing 3D viewer controls. It listens for IKEA’s 3D viewer component loading and intercepts the URL of the .GLB 3D model file behind the scenes.
The core technique is hooking into IKEA’s own API calls or viewer data structures client-side to extract the direct link to the 3D model file. Since the site serves multiple languages, the script handles localization variations to ensure it works correctly regardless of the IKEA region or language you browse.
Once the .GLB URL is intercepted, clicking the “Download 3D” button triggers a browser download with a thoughtfully generated filename. The filename includes the product name and color variant, making it easy to organize downloaded models.
The script also includes a keyboard shortcut (Ctrl+Alt+D) as a fallback in case the button injection fails to appear, improving accessibility.
Technical strengths and tradeoffs
What sets this repo apart is its clean approach to client-side data extraction without relying on any backend proxy or server-side scraping. By hooking into the same API calls or data objects the official IKEA 3D viewer uses, it avoids brittle HTML scraping or network sniffing.
The codebase is relatively small and focused, making it easy to audit and tweak. It respects the Tampermonkey userscript conventions, ensuring compatibility across popular browsers that support the extension.
Tradeoffs include the fragility inherent in reverse-engineering a third-party site’s internal API. Any significant change in IKEA’s 3D viewer or page structure could break the script. It also doesn’t provide a centralized catalog or management for downloaded models — it’s purely a download enabler.
The project targets personal home planning use cases or hobbyists who want to experiment with IKEA’s models offline, rather than commercial redistribution or integration.
Installation and quickstart
## Installation
1. Install the Tampermonkey browser extension for your browser.
2. Click this link to install or update this script, or alternatively create a new script in Tampermonkey and paste the contents of `ikea-3d-model-downloader.user.js` into it.
3. Save the script and ensure it's enabled in Tampermonkey.
4. If you are using a chromium broser, like Chrome, Edge or Opera, turn on developer mode in the browser settings.
verdict
IKEA-3D-Model-Download-Button is a practical, no-nonsense tool for anyone who wants to get their hands on IKEA’s native 3D model files without fuss. It’s a pure client-side solution with minimal dependencies, leveraging browser extension scripting to enhance the IKEA web experience.
The main limitation is its dependency on IKEA’s site internals — changes to the 3D viewer API or page layout could break it, requiring maintenance. Also, it doesn’t manage or organize models beyond downloading.
For personal projects, 3D hobbyists, or those integrating IKEA models into home planning workflows, this script fills a niche gap effectively. It’s a solid example of how browser scripting can unlock hidden functionality in commercial websites without needing backend infrastructure.
Related Articles
- Crawlee: a TypeScript library for stealthy web scraping and browser automation — Crawlee is a TypeScript library for web scraping and browser automation with human-like stealth. Supports Playwright, Pu
- Camoufox: a stealthy Firefox fork for AI agents and web scraping — Camoufox is a Firefox fork optimized for AI agents and web scraping with stealth fingerprint injection at the C++ level
- Ferret v2: A declarative Go engine for web data extraction with a new API architecture — Ferret v2 is a Go-based declarative system for web scraping that introduces a native Go API and a compatibility layer to
- glTF-Sample-Assets: a curated collection of glTF models for 3D development and testing — glTF-Sample-Assets offers a curated set of 3D models in glTF format, organized for testing and showcasing glTF capabilit
→ GitHub Repo: apinanaivot/IKEA-3D-Model-Download-Button ⭐ 1,102 · JavaScript