Interactive 3D Widget

Put your
offices on the map.
Literally.

Drop one script tag into any website and get a beautiful, interactive 3D globe that shows your company's worldwide presence. Works everywhere — React, WordPress, Webflow, plain HTML.

Live Demo

Configure it right here.

Every option you change updates the globe in real-time.

<!-- 1. Place the container -->
<div id="globe" style="width:500px;height:500px"></div>

<!-- 2. Load the script -->
<script src="hq-globe.umd.min.js"></script>
<script>
  new HQGlobe('#globe', {
    offices: [
      { city: 'London', country: 'UK', lat: 51.51, lon: -0.13 },
      { city: 'New York', country: 'USA', lat: 40.71, lon: -74.01 },
    ],
    theme: 'dark',
    autoRotate: true,
  })
</script>

⚙ Configure

Auto Rotate
Show Grid
Atmosphere Glow
Hover Tooltip
Focus on Click
Waiting for click…

🌍 All cities

📍 Add a city

Features

Everything included.

Built on Three.js. No dependencies. One script tag.

🌍

Real Earth Texture

Photorealistic NASA-style earth texture included. Continents, oceans, ice caps — all out of the box.

🖱

Smooth Drag & Momentum

Drag the globe in any direction. Release and it coasts with momentum decay. Works on touch too.

💬

Hover Tooltips

City name, country, and custom description appear on hover. Fully styled for each theme.

🎯

Click-to-Focus

Click any office marker and the globe smoothly rotates to center that city. Click again to release.

🎨

3 Built-in Themes

Dark (premium), Light, and Wireframe — all production-ready. Fully overridable accent color.

Zero Framework Lock-in

Works in React, Vue, Angular, WordPress, Webflow, Squarespace, or plain HTML. No npm required.

📱

Fully Responsive

ResizeObserver keeps the globe pixel-perfect at any container size. Works on mobile from day one.

🔧

JSON Configuration

All offices, colors, speed, callbacks configured in one plain object. No Three.js knowledge needed.

🔌

Event Callbacks

onCityClick and onCityHover let you open modals, panels, or navigate — without modifying the source.

Themes

Three looks, one product.

Switch instantly. Each theme is tuned to look great on its background color.

🌙 Dark
☀️ Light
🔷 Wireframe
Pricing

Simple, one-time pricing.

Buy once, use forever. All licenses include future updates.

Starter
$19 one-time

1 website · personal or client project

  • UMD bundle (vanilla JS)
  • All 3 themes
  • Unlimited offices
  • 6 months support
Buy Starter
Agency
$129 one-time

Resell to clients · white-label

  • Everything in Developer
  • Resell to unlimited clients
  • White-label (remove branding)
  • Priority support
  • Lifetime updates
Buy Agency
Documentation

Up in 2 minutes.

<!-- Step 1: Add a container -->
<div id="globe" style="width:600px;height:600px"></div>

<!-- Step 2: Load the script -->
<script src="hq-globe.umd.min.js"></script>

<!-- Step 3: Initialize -->
<script>
const globe = new HQGlobe('#globe', {
  // ── Required ──
  offices: [
    { city: 'London',    country: 'UK',  lat: 51.51, lon:  -0.13, description: 'HQ' },
    { city: 'New York',  country: 'USA', lat: 40.71, lon: -74.01 },
    { city: 'Singapore', country: 'SG',  lat:  1.35, lon: 103.82 },
  ],

  // ── Appearance ──
  theme:          'dark',      // 'dark' | 'light' | 'wireframe'
  accentColor:    '#E8A847',  // hex color for markers
  texture:        'auto',      // path to earth.jpg, or 'none'
  showGrid:       true,
  showAtmosphere: true,

  // ── Behaviour ──
  autoRotate:  true,
  rotateSpeed: 1.0,          // multiplier
  focusOnClick: true,

  // ── Callbacks ──
  onCityClick:  (office) => console.log('Clicked', office.city),
  onCityHover:  (office) => console.log('Hovered', office),
  onReady:      ()       => console.log('Globe ready'),
})

// ── API Methods ──
globe.focusCity('London')   // rotate globe to a city
globe.resetFocus()           // resume auto-rotate
globe.addOffice({ city: 'Tokyo', lat: 35.68, lon: 139.69 })
globe.setTheme('wireframe')
globe.destroy()              // clean up (React useEffect cleanup)
</script>