Font Finder — Identify Fonts Without Uploading

Drop or paste a screenshot containing text. The AI model runs entirely in your browser — your image is never sent to any server. Returns top-5 matching Google Fonts with live previews and copy-ready CSS.

🔍
Drop an image here or click to browse
PNG, JPG, WebP, GIF — any screenshot or photo with visible text
Or paste from clipboard: Ctrl+V / Cmd+V
Uploaded image preview
Clear image

How it works

This tool uses an EfficientNet B3 neural network trained on 3,473 Google Font variants and exported to ONNX format. The model runs via WebAssembly in your browser — no data ever leaves your device.

1. Load model once On first use the 64 MB ONNX model is downloaded from HuggingFace and cached in your browser's IndexedDB. Subsequent uses are instant.
2. Preprocess image Your image is resized to 320×320 px and normalized using ImageNet statistics (mean [0.485, 0.456, 0.406], std [0.229, 0.224, 0.225]) directly on a canvas element.
3. Run inference The pixel tensor is fed to the ONNX Runtime WebAssembly backend. The model outputs 3,473 logit scores — one per known Google Font variant.
4. Return top matches Softmax is applied to convert logits to confidence percentages. The top-5 fonts are shown with live CSS previews loaded from Google Fonts and a one-click @import snippet.

For best results: crop the image tightly around the text, use high contrast, and avoid mixing multiple font styles in one shot. Decorative, hand-drawn, or non-Latin scripts may fall outside the model's training distribution.

Frequently asked questions

Is my image really never uploaded anywhere?
Yes — 100% guaranteed. All processing happens in your browser using WebAssembly. Open your browser's network inspector while running a detection and you will see zero requests containing your image. The only external request is loading the ONNX model file from HuggingFace (one-time, then cached), and loading the identified font stylesheet from Google Fonts for the preview.
Why does the model take a moment to load the first time?
The EfficientNet B3 model file is 64 MB. On a fast connection this takes 5–15 seconds. After the first load it is stored in IndexedDB — your browser's persistent storage — so future visits skip the download entirely and identification is near-instant. Clearing your browser's site data will require a fresh download.
What fonts can it identify?
The model was trained on 3,473 variants of Google Fonts, covering styles like Regular, Bold, Italic, Light, and variable-font axes. It recognises popular families such as Open Sans, Roboto, Lato, Playfair Display, Merriweather, and many more. It does not recognise proprietary fonts (Helvetica, Futura, Adobe families) or handwriting/script fonts outside the Google Fonts library — if your font is one of those, the result will show the closest-looking Google Font as a substitute.
How accurate is the font identification?
On clean text at typical screen resolutions the top-1 accuracy is high for common fonts. For decorative, condensed, or very similar weight variants (e.g. Roboto Light vs. Roboto Regular) the correct answer may appear in positions 2–5. Always glance at the live preview — if the text looks right, the font is right. The confidence percentage gives a rough signal: above 60% is usually a strong match.
Can I use the identified font on my website?
All fonts in the Google Fonts library are open-source and free to use under the SIL Open Font License or Apache License. Click "Open on Google Fonts" to see usage terms and download options. Click "Copy @import" to get the CSS snippet you can paste into your stylesheet immediately — the font will load from Google's CDN.