---
title: "How We Built Size.link"
description: "Size.link is a free Shopify AR tool that lets shoppers view a product’s dimensions in their surroundings through a smartphone camera. It was created during April Hack Days as a quick alternative to commissioning 3D models, with requirements including browser-based operation, speed, accuracy, and iOS and Android support. Because iOS lacks JavaScript WebAR, the implementation uses AR Quick Look with USDZ files and Android’s Scene Viewer with GLB files. Rather than generate files dynamically with slow USDZ tooling or pre-generate billions of dimension combinations, the team modifies binary template data, replacing scale or vertex float values to resize the cube while preserving its outline. The resulting Ruby server generates USDZ files in well under one millisecond, and the same strategy produces GLB files; future work could add textures for standard-sized products."
---

# How We Built Size.link

[Shopify](https://yomu.fyi/company/shopify) · 2023-10-18 · Jul 13, 2020

**Type:** Problem & solution

## Summary

Size.link is a free Shopify AR tool that lets shoppers view a product’s dimensions in their surroundings through a smartphone camera. It was created during April Hack Days as a quick alternative to commissioning 3D models, with requirements including browser-based operation, speed, accuracy, and iOS and Android support. Because iOS lacks JavaScript WebAR, the implementation uses AR Quick Look with USDZ files and Android’s Scene Viewer with GLB files. Rather than generate files dynamically with slow USDZ tooling or pre-generate billions of dimension combinations, the team modifies binary template data, replacing scale or vertex float values to resize the cube while preserving its outline. The resulting Ruby server generates USDZ files in well under one millisecond, and the same strategy produces GLB files; future work could add textures for standard-sized products.

## Context

The AR team wanted a quick stopgap for merchants affected by Covid-19, since showing product dimensions became more important while retail stores were closed and creating conventional 3D models required time and money. The tool also needed to work on the web without an app, load quickly, remain accurate, and support both iOS and Android.

## Approach / What changed

The implementation uses iOS AR Quick Look and Android Scene Viewer to display platform-specific 3D files. It starts from binary USDZ and GLB templates, locating distinctive 32-bit float values and replacing scale or vertex-position bytes to create dimension-specific cubes. Vertex changes preserve the thickness of the cube’s outline, and a Ruby server handles generation because Android cannot launch Scene Viewer from a local data URL.

## Takeaways

- AR Quick Look uses USDZ on iOS, while Android Scene Viewer uses GLB; both support placing and moving a single 3D object, which was sufficient for Size.link.
- Pre-generating models for dimensions from 1cm to 1000cm would require 2 billion models at 1cm increments, or roughly 6TB at 3KB per model.
- Direct binary modification generates USDZ files in well under 1 millisecond, avoiding USDZ conversion that had taken up to 3–4 seconds.

**Tags:** [Android](https://yomu.fyi/topic/android), [iOS](https://yomu.fyi/topic/ios), [Ruby](https://yomu.fyi/topic/ruby)

- Source: [Shopify](https://shopify.engineering/how-we-built-size-link)
- Source URL: https://shopify.engineering/how-we-built-size-link
- Ingested by Yomu: 2026-08-31T01:12:15.309Z

[Read original post](https://shopify.engineering/how-we-built-size-link)
