moissanite-tools

Grading reference and carat↔millimetre conversion for moissanite — calculated, not copied.
Why this exists
Practically every carat/mm chart on the web is calculated for diamond. Moissanite has a different density (3.21 vs 3.52 g/cm³), so applying a diamond chart to moissanite is wrong by roughly 9%:
| Diameter | Diamond | Moissanite | Cubic zirconia |
|---|---|---|---|
| 4.0 mm | 0.24 ct | 0.22 ct | 0.39 ct |
| 5.0 mm | 0.47 ct | 0.43 ct | 0.76 ct |
| 6.5 mm | 1.03 ct | 0.94 ct | 1.66 ct |
| 8.0 mm | 1.91 ct | 1.74 ct | 3.09 ct |
This is why moissanite is usually sold by millimetre rather than by carat — the same "1 carat" looks like a different size depending on the stone.
What's in here
data/grading.json GIA colour (D–K) and clarity (FL–SI) scales, plus published
optical constants for moissanite / diamond / cubic zirconia
data/sizing.json ISO 8653 ring sizes (US/UK/EU/mm), necklace lengths, stud sizes
src/conversion.js carat ↔ mm for round brilliant cut, density-corrected
src/sizing.js ring size conversion, necklace length and stud appearance lookups
mcp/server.js Model Context Protocol server exposing all of the above
Ring sizes
Cross-border ring buying goes wrong because the systems are unrelated: a US 6 is a UK M, not a UK 6. EU sizes under ISO 8653 are simply the inner circumference in millimetres.
| US | UK | EU | Inner Ø |
|---|---|---|---|
| 5 | J | 49.3 | 15.7 mm |
| 6 | M | 51.9 | 16.5 mm |
| 7 | O | 54.4 | 17.3 mm |
| 8 | Q | 57.0 | 18.1 mm |
| 9 | R½ | 59.5 | 18.9 mm |
Sizes that aren't on the chart return the nearest listed size flagged exact: false,
rather than inventing a value.
Usage
import { caratFromMm, mmFromCarat, compareAtWeight } from './src/conversion.js';
mmFromCarat(1, 'moissanite'); // 6.65 mm
mmFromCarat(1, 'diamond'); // 6.45 mm
caratFromMm(6.5, 'moissanite'); // 0.94 ct
compareAtWeight(1);
// { carat: 1, moissanite_mm: 6.65, diamond_mm: 6.45, cz_mm: 5.49 }
MCP server
Two ways to run it.
Hosted — nothing to install. Point any MCP client at:
https://mcp.fitiny.com/mcp
Listed in the official MCP Registry as com.fitiny/moissanite-tools.
Local — stdio:
node mcp/server.js
Exposes six tools:
| Tool | Answers |
|---|---|
carat_to_mm | How wide is a 1 ct moissanite? |
mm_to_carat | What does a 6.5 mm stone weigh in each material? |
grading_scale | What does VVS1 / D colour actually mean? |
ring_size_convert | What is a UK M in US sizing? |
necklace_length | Where does an 18" necklace sit? |
stud_appearance | How big does a 6 mm stud read on the ear? |
The maths
GIA's round-brilliant formula, scaled by relative density:
weight_ct = diameter_mm² × depth_mm × 0.0061 × (ρ_stone / ρ_diamond)
depth_mm = diameter_mm × 0.612 (average depth ratio, well-cut round)
Accuracy against published diamond charts: 1.4% mean, 3.3% max. Real stones vary with cut proportions — treat the output as guidance, not as a substitute for weighing a stone.
Round brilliant only. Fancy shapes (oval, princess, emerald, pear) distribute weight differently and need shape-specific factors that aren't in here.
On the data
Colour and clarity scales follow the GIA diamond grading system, which the moissanite trade has adopted. The optical constants (refractive index, dispersion, Mohs hardness, density) are published gemmological values. Nothing here was scraped from another site — the conversion figures are computed from the formula above, which is why they can be released under MIT.
This is a descriptive reference, not a certification. A graded stone comes with a report from a gemmological laboratory; this repo just explains what those grades mean.
Live tool
An interactive version runs at fitiny.com/pages/moissanite-grading.
Licence
MIT — see LICENSE. Maintained by FITINY Jewelry.