AR tool for viewing NFTs in augmented reality
View any NFT from OpenSea in AR on your mobile device. Use it directly at holoframe.io or embed AR widgets on your own website.
This repository contains the open-source code for Holoframe's embeddable widgets. Built by Belter Labs.
Visit holoframe.io to view any NFT in AR - no coding required.
Add customizable NFT AR widgets to your own site. This repository contains the code and documentation for embedding Holoframe widgets.
- π¨ Customizable 3D frames - Choose colors, shapes, metalness, and roughness
- π± Cross-platform AR - Works on iOS (Quick Look), Android (WebXR), and modern browsers
- π Two widget types - Collection-specific (one per page) or universal (multiple per page)
- β‘ No build step required - Pure client-side with CDN dependencies
- π― Easy integration - Drop in a few lines of code
- π 22+ blockchain support - Ethereum, Polygon, Base, Arbitrum, and more
- π’ Multi-instance support - Universal widget supports multiple instances per page
The easiest way to create a collection-specific widget:
- Go to holoframe.io
- Use the Widget Builder
- Copy the generated code
- Paste into your website
One widget per page - for a single NFT collection where users enter token IDs:
<!-- Holoframe Widget for Pudgy Penguins -->
<div id="hf-widget"></div>
<script>
window.hfWidgetConfig = {
collection: "pudgypenguins",
contract: "0xBd3531dA5CF5857e7CfAA92426877b022e612cf8",
chain: "ethereum",
brandColor: "#00a6fb",
displayMode: "button-input",
theme: "light"
};
</script>
<script src="https://cdn.jsdelivr.net/gh/Belter-Labs/holoframe@v1.0.0/src/hf-widget.js"></script>View any NFT from OpenSea - users paste OpenSea URLs:
<!-- Holoframe Universal Widget -->
<div id="hf-widget"></div>
<script>
window.hfWidgetConfig = {
brandColor: "#00a6fb",
displayMode: "button-input",
theme: "light"
};
</script>
<script src="https://cdn.jsdelivr.net/gh/Belter-Labs/holoframe@v1.0.0/src/hf-core.js"></script>Multiple widgets per page - each with different settings:
<div id="hf-widget-1"></div>
<div id="hf-widget-2"></div>
<script>
window.hfWidgets = [
{
containerId: 'hf-widget-1',
brandColor: '#00a6fb',
displayMode: 'button-only',
theme: 'light'
},
{
containerId: 'hf-widget-2',
brandColor: '#7c3aed',
displayMode: 'button-input',
theme: 'dark'
}
];
</script>
<script src="https://cdn.jsdelivr.net/gh/Belter-Labs/holoframe@v1.0.0/src/hf-core.js"></script>- Setup Guide - Complete installation and configuration
- How It Works - Technical architecture
- Examples - Working code examples
Widget Builder: Available at holoframe.io for no-code widget creation
Holoframe is an AR tool for viewing NFTs. It has two parts:
- Main App (holoframe.io) - View any NFT directly in AR
- Embeddable Widgets (this repo) - Add AR NFT viewing to your own website
Widgets use a pre-built 3D frame (GLB file hosted on Cloudinary) and dynamically apply NFT textures:
- Widget loads base GLB - Pre-made 3D frame from Cloudinary
- Fetches NFT image - From OpenSea via Cloudflare Worker proxy
- model-viewer applies texture - Swaps texture onto frame + applies color/metalness/roughness
- AR ready - Users can view on mobile devices via WebXR/Quick Look/Scene Viewer
No client-side 3D generation - just texture swapping and material property updates on a pre-existing model.
Ethereum β’ Polygon β’ Arbitrum β’ Optimism β’ Avalanche β’ Zora β’ Base β’ Blast β’ Sei β’ B3 β’ Berachain β’ Flow β’ ApeChain β’ Soneium β’ Shape β’ Unichain β’ Ronin β’ Abstract β’ GUNZ β’ HyperEVM β’ Somnia β’ Monad
Chain names: Use lowercase (e.g., ethereum, polygon, base)
Potential future features being considered:
- GLB Export - Allow users to download the 3D model with their NFT texture applied
- PBR Frame Textures - Support for custom physically-based rendering textures on frames
- Collection Multi-widget - Multiple collection widgets per page (universal already supports this)
- Custom Frame Shapes - User-uploaded frame geometries
Have a feature request? Open an issue
# Clone the repository
git clone https://github.com/Belter-Labs/holoframe.git
cd holoframe
# Widget files are in src/
# - src/hf-widget.js (Collection widget)
# - src/hf-core.js (Universal widget)
# Edit the files directly, then commit and push
# Users will automatically get the latest version from:
# https://cdn.jsdelivr.net/gh/Belter-Labs/holoframe@main/src/hf-widget.js
# https://cdn.jsdelivr.net/gh/Belter-Labs/holoframe@main/src/hf-core.jsHoloframe is open-source and free to use. The only requirement is keeping the "Powered by Holoframe" attribution link visible in the widget.
MIT License - see LICENSE for details.
Note: We are not accepting pull requests. However, you're free to fork and build your own version!
- Website: holoframe.io
- Documentation: docs/
- Widget Files: src/
- Issues: GitHub Issues
- Twitter: @BelterLabs
Note: Holoframe uses OpenSea's API to fetch NFT metadata. Rate limits apply (100 requests/hour per IP for NFT data, 20/hour for collection validation).
