The crop can stay in the garage.
GPU-font runs on the user's device through WebGPU or a CPU fallback. Its project page says the image is not uploaded. The matcher splits a crop into as many as three grayscale windows. Each window is at most 128 by 48 pixels. A small neural network scores fonts for each window, then averages the scores into a ranking.[1]
The published package is real. The garage installed version 0.2.0 and imported its three public exports on September 28. The repository documents browser and Node use, custom local catalogs, and an MIT license.[2]
A local result can protect the crop. It cannot certify the font.
A ranking needs a boundary.
The project's reported accuracy is measured on rendered crops of Google Fonts families using text that the model did not train on. It reports the right family first 73 percent of the time and in the top five 92 percent of the time. Those figures come from the project. They do not describe every photograph, logo, outline, compressed screenshot, or commercial face.[2]
The project says photos, blur, perspective, texture, short samples, mixed fonts, and look-alike families can reduce match quality. The correct response is not to hide the lower confidence. Keep several candidates and find the glyphs that separate them.
WebGPU needs a fallback lane.
MDN marks WebGPU as limited availability and says it requires a secure context. It supports general GPU computation as well as graphics, which makes in-browser inference possible. A public tool still needs feature detection and a CPU route when the browser cannot supply a WebGPU device.[3]
That fallback is part of the product, not an apology. A matcher that explains its slower path is more useful than a glossy upload box that fails on an unsupported machine.
Finish with provenance.
Compare a long string, numerals, punctuation, and a few distinctive glyphs. Find the font through its foundry, an official catalog, or the repository that distributes it. Read the license for the actual file and use case. The gpu-font site makes the same boundary explicit: a match is not a license.[1]
The useful output is a short comparison record. It names the crop conditions, candidate, separating glyphs, file source, and license status. That record can survive after the screenshot and browser tab disappear.