Skip to content

Cart

Your cart is empty

import { useState } from "react"; const sizeChart = [ { us: "4", uk: "H", eu: "46.5", diameter: "14.8", circumference: "46.5" }, { us: "4.5", uk: "I", eu: "47.8", diameter: "15.2", circumference: "47.8" }, { us: "5", uk: "J", eu: "49", diameter: "15.6", circumference: "49" }, { us: "5.5", uk: "K", eu: "50.3", diameter: "16", circumference: "50.3" }, { us: "6", uk: "L", eu: "51.5", diameter: "16.4", circumference: "51.5" }, { us: "6.5", uk: "M", eu: "52.8", diameter: "16.8", circumference: "52.8" }, { us: "7", uk: "N", eu: "54", diameter: "17.2", circumference: "54" }, { us: "7.5", uk: "O", eu: "55.3", diameter: "17.6", circumference: "55.3" }, { us: "8", uk: "P", eu: "56.5", diameter: "18.0", circumference: "56.5" }, { us: "8.5", uk: "Q", eu: "57.8", diameter: "18.4", circumference: "57.8" }, { us: "9", uk: "R", eu: "59", diameter: "18.8", circumference: "59" }, { us: "9.5", uk: "S", eu: "60.3", diameter: "19.2", circumference: "60.3" }, { us: "10", uk: "T", eu: "61.5", diameter: "19.6", circumference: "61.5" }, ]; export default function RingSizeCalculator() { const [method, setMethod] = useState("string"); const [value, setValue] = useState(""); const [unit, setUnit] = useState("mm"); const [result, setResult] = useState(null); const [activeTab, setActiveTab] = useState("calculator"); const [paperSize, setPaperSize] = useState(16.0); const calculate = () => { let mm = parseFloat(value); if (!mm) return; if (unit === "cm") mm = mm * 10; if (unit === "inches") mm = mm * 25.4; let match = null; if (method === "string") { // circumference match = sizeChart.reduce((prev, curr) => Math.abs(parseFloat(curr.circumference) - mm) < Math.abs(parseFloat(prev.circumference) - mm) ? curr : prev ); } else { // diameter match = sizeChart.reduce((prev, curr) => Math.abs(parseFloat(curr.diameter) - mm) < Math.abs(parseFloat(prev.diameter) - mm) ? curr : prev ); } setResult(match); }; const paperResult = sizeChart.reduce((prev, curr) => Math.abs(parseFloat(curr.diameter) - paperSize) < Math.abs(parseFloat(prev.diameter) - paperSize) ? curr : prev ); return (
{/* Header */}
SOLITAIRE JEWELS

Ring Size Calculator

Find your perfect fit from the comfort of home

{/* Tabs */}
{[["calculator", "Measure Your Size"], ["chart", "Size Chart"], ["paper", "Paper Test"]].map(([id, label]) => ( ))}
{/* Calculator Tab */} {activeTab === "calculator" && (
STEP 1 — CHOOSE YOUR METHOD
{method === "string" && (
How to measure:
1. Cut a thin strip of paper or string (~10cm long)
2. Wrap snugly around the base of your finger
3. Mark where the ends meet
4. Lay flat and measure the length
)} {method === "diameter" && (
How to measure:
1. Place your existing ring on a flat surface
2. Measure the inner diameter (straight across the inside)
3. Enter the measurement below
)}
STEP 2 — ENTER MEASUREMENT
setValue(e.target.value)} step="0.1" />
{result && (
YOUR SIZE
{[["US/Canada", result.us], ["UK/AU", result.uk], ["EU", result.eu], ["Diameter", result.diameter + "mm"]].map(([label, val]) => (
{val}
{label}
))}
💡 Pro tip: If between sizes, we recommend going up half a size. Fingers are slightly larger in the evening and warmer months.
)}
)} {/* Size Chart Tab */} {activeTab === "chart" && (
{sizeChart.map((row) => ( ))}
US / Canada UK / AU EU Diameter (mm) Circumference (mm)
{row.us} {row.uk} {row.eu} {row.diameter} {row.circumference}

Highlighted rows show your measured size. Measurements may vary slightly by ring width — for wide bands, go up half a size.

)} {/* Paper Test Tab */} {activeTab === "paper" && (
📱 Screen Test:
Print this page at 100% scale, then place a ring from your collection over the circles below to find your closest match.
ADJUST RING SIZE
setPaperSize(parseFloat(e.target.value))} style={{ width: "100%", marginBottom: "16px" }} />
US {paperResult.us}
EU {paperResult.eu} · {paperSize}mm
)}
Questions? Chat with our diamond consultants →
); }