I built a free, 7-language symbol copy-paste tool, no framework, no backend, no database
Every time I needed to type a ° , an é , or an → in a document, I ended up doing the same annoying dance: open a search engine, click into some ad-heavy "symbol copy" site, hunt for the right character between banner ads, copy it, come back. I finally got tired of it and built AltKeyHub , a free tool to search, browse, and copy 300+ symbols, accented letters, and special characters in one click,…
Tired of the repetitive process of searching for symbols, accented letters, and special characters, the creator built a free tool called AltKeyHub. This tool offers a simple solution for searching, browsing, and copying 300+ symbols, as well as Windows Alt codes, Mac shortcuts, and HTML entities. The tool operates without requiring an account, installation, or a backend.
It is built using static HTML, CSS, and vanilla JavaScript, generated at build time by a Python + Jinja2 pipeline. This approach enables fast page loads, dead-simple hosting on Vercel, and ensures that the content is fully present in the HTML for crawlers and AI answer engines. The symbol dataset, consisting of 300+ entries, is stored in a plain Python list and compiled into both the pre-rendered HTML grid and a JavaScript data file for client-side search.
The tool is available in 7 languages, including French, English, German, Spanish, Portuguese, Arabic, and Chinese. The architecture involves one locale folder per language, each containing a JSON dictionary of UI strings. These dictionaries are injected into each page as a small window.ALTKEYHUB_I18N object for dynamically set strings in JavaScript (search results, toast messages).
The site also features a FAQ block marked up with schema.org's FAQPage JSON-LD for each guide page, which aids AI answer engines in providing specific answers. A bug was encountered while adding the guide pages, which were initially placed one directory level deeper than the rest of the site. This caused asset references to break on French guide pages, resulting in a non-existent file path.
The solution was to compute the relative path properly, regardless of nesting depth, using posixpath.relpath. This change also fixed another pre-existing bug where the brand logo link on non-French pages was unintentionally pointing to the French homepage.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.