I get where you are coming from, and have put some thought into it.
I built the site over 20 years ago, and while it was fun to make, I wouldn't have maintained it this long if is was costing me every month.
I've tried to minimize the intrusiveness: I disabled the pop-up and interstitial ads and I don't serve anything different to people with ad-blockers. And I've stuck with Google Adwords, despite requests from all sorts of questionable alternatives.
I'm not sure about the future: bots are causing all sorts of trouble, and the ad revenue is trending down and is now less than break even.
There wasn't free hosting in 2003 when I first made it. I have thought about converting it to static, but it would be a complete rewrite, and there is always some other new shiny thing to play with instead.
The newer things I'm doing (like UnicodeSearch.org) are static, though I don't like forcing everyone to have JavaScript enabled.
I know it probably won’t amount to a lot, but have you tried asking for donations? I love seeing websites I regularly use doing that and not just relying on ads.
I’m glad to hear it’s helping you keep the costs down - that’s positive.
It’s the type of popup that triggers my allergy - which as allergies go is mostly my problem.
Based on the feedback here, I spent the last day tightening a few core things:
- Navigation / mobile: tapping a card now opens the symbol page directly; copy is a separate, larger button. The tiny expand target is gone.
- Search: alias + lightweight fuzzy matching is in (e.g. “section”, “angstrom”, “greater than”), plus a /codepoint/... fallback so pasting a literal character or U+XXXX always lands on a usable page, even outside the curated index.
- Missing glyphs: added a small “Font tips (if you see □)” section with system font notes and Noto suggestions.
- Content: HTML/CSS/JS guidance now recommends writing the literal character + UTF-8 by default; entities/codes are framed as legacy/reference only. Added Notes and improved Related (pairs, confusables, same block).
- Privacy: removed session recording; analytics are opt-in with a real reject-all (everything works fine with tracking off).
Direction going forward: fewer generic “how-to” instructions, more symbol-specific context — confusables, paired glyphs, rendering quirks, and references people actually look for.
Thanks again for the detailed feedback — it materially improved the project.
Feature request: some context, history and/or example of popular usage.
Some symbols leave me with more questions than answers, like “LEFT HALF RUNNING MAN”[1].
I’d like to at least see that it’s a glyph part, that there are two in total, and what does the other half look like; right now the “right half running man” is not listed anywhere on that page, not even in the “related symbols” section.
Off topic, the running man symbol possibly comes from MouseText character set (the one in the Apple IIc[2]). It was one of many character sets included in the legacy computing block[3].
Great example — thanks for the context.
I added explicit linking for paired glyph parts (left/right halves) and reference links in Notes. This kind of symbol history is exactly the gap I want to fill.
The abbreviations (arrows in particular) made scanning worse than it should be. I’ve pushed a quick update: full names on hover/focus, plus a Compact / Readable toggle for the grid.
I’m looking at the currency block. Each box has a colored “drop shadow”. I spent a minute or so trying to figure out what the significance of the color is. Finally, I noticed that the color appears to cycle between cyan, magenta, and yellow. Is this a design element only, or do the colors actually have some meaning with respect to the symbol?
I do like how it has some brutalist web design elements. With regards to drop-shadow colours on the /symbols page, it doesn't provide additional structure, so I would choose either none or a grayscale tint. Or, if you prefer colours, choose as many distinct colours as there are categories, such that they provide that additional structure.
The symbols on that page could be a bit bigger, though, as they are the main subject. (I changed 1.125rem to something like 1.6rem for text-lg; that works, but it could get a bit crowded with the clickable arrow on lower resolution screens).
I'm not a huge fan of things that move; the offset of a block of symbols, as well as scaling of an individual symbol block when hovering seems a bit too much. I would do either, but not both.
It doesn't fit my definition of "clean" at all, but that's a subjective word anyway. I do have some feedback (unrelated to being clean):
- The search field is arguably the most important element on the site. It might benefit from a magnifying glass icon and/or some visual distinctions that make it actually look like a text input for searching. It's thick border and shadow make it look like all the other boxes on the page that have thick borders and shadows!
- Speaking of the search field, it would be really nice if it supported fuzzy search. For example, I searched for "greater than" and got no results. I had to search for "greater-than" (with a dash) to find the math symbols (like ≥).
- The small font size of the symbols makes them really hard to see for old people like me who are pretending not to be old.
- Ditch the analytics and cookie consent nonsense. These are anti-developer!
+1 The small font size combined with the big black box with green arrow that, at least on my iphone xs, covers part of the symbol itself, makes it really hard to see the symbols themselves on front page.
Planning to add more symbol-specific notes (confusables, common pitfalls, rendering quirks).
Curious what details people usually look for but can’t find.
Good catch — I just pushed an update based on this.
The symbols search now supports code-point lookup, so you can search by:
U+2FFF
0x2FFF
plain hex (2fff, 4–6 digits)
This makes it possible to jump straight to a symbol page even when the glyph doesn’t render locally and you only have the code point (like the Emacs/BSD case you described).
One limitation to note: some symbols aren’t covered by common or default system fonts, so they may still appear as tofu boxes depending on the font stack. That’s a font coverage issue rather than Unicode itself.
Appreciate you calling this out — this was exactly the kind of workflow gap I wanted to catch.
My go-to site for Unicode symbols is graphemica.com.
I like that you show very directly the different use cases, but miss different encodings and the ability to browse unicode sequentially.
Developers need to understand context too, not see a static page of "macOS: Use Character Viewer (Control + Command + Space) and search by name, or copy/paste."
Good point. I added a Notes section and reworked “Related” to focus on things people actually get confused by (pairs, confusables, same block), not just category adjacency.
I’d love to see a section describing the glyph’s usage (I usual have to check Wikipedia for that) and which compose key sequence to use to type it. For instance on Linux (maybe other OSes too?) you can type <compose key> + e + = and get the euro sign.
Please don't display text directly on the grid background image. It makes it impossible to read the text easily. Currently, this is the case when you open the page for a specific symbol in the 'Usage & Context' section.
You say "for every unicode symbol", which I guess is true if you search by code, but for anything that isn't in your curated set I'm unable to even find it if I paste the literal character or use the "official" name.
eg ℝ "Double-Struck Capital R" won't show up at all unless I search it as U+211D.
You’re right — the main index is curated.
I added a /codepoint/… fallback so pasting a literal character or U+XXXX always lands you on a dev-friendly encoding page, even outside the curated sets. I also clarified this in the UI copy.
It's odd that searching for "section" finds U+2E39 (Top Half Section Sign) but not U+00A7 (Section Sign).
The directions for input on on each operating system are all the same, use an app? On Windows there's a key sequence based on the codepoint integer. It should tell you exactly what to type. The Linux one is especially odd "Use the Character Map app or a Compose key sequence, then paste into your app" because if there's a compose key sequence you don't need to paste it.
Added a small “Font tips (if you see □)” section with system font notes and Noto suggestions. Also added a codepoint fallback page so you can still inspect encodings even when the glyph doesn’t render locally.
This is beautiful. Love the design. When I read the title I thought it was "one page per Unicode" so I click on the codes and hope a page will open with a giant Unicode where I can see about it in details.
Oh well! Still good.
When I click the "Click to copy" my UI reflex tells me to look for a "Copied!" or similar acknowledgement. But I don't see one, so there's uncertainty if it was copied safely to my invisible clipboard or not.
Please keep making this, it's good! What inspired you for the design? I like this style, and notice it around, but can't pinpoint.
Don’t know if it was added after your comment, but there actually is one separate page for each character, just click the arrow in the top-right corner of each box. For more "giant" character previews I can recommend https://decodeunicode.org/en (which is more focussed on writing systems though).
There is also a "Copied x" toast (is this the correct term? idk) at the bottom of the viewport when you click a character box, maybe it was also added later on.
Agreed — the small expand target was a mistake, especially on mobile.
I switched to “tap card = open details” and moved copy into a dedicated, larger button. Much clearer now.
> Use an HTML entity, a decimal code, or a hex code.
Please no: just write the character. <, & and (in quoted attributes) " or ' are the only characters that need to be encoded; a few others have arguable benefit to being encoded (most notably NO-BREAK SPACE), but most Unicode characters should just be put in literally. The days when you couldn’t be confident of the file encoding are past: your HTML is being served as UTF-8 (or in the rare case it isn’t, you should fix that instead of avoiding non-ASCII in the source).
Same deal with CSS (" and \ are the only ones you need to escape) and JavaScript (" or ' or `, as appropriate).
URLs? Occasionally you may encounter a legacy system where you need to percent-encode it yourself (similarly around punycoding internationalised domain names), but you can almost always (and thus, in my opinion, should) just write it and leave anything that wants it to be ASCII to perform the percent-encoding itself.
Excel I can’t comment on, but I presume you can just write "≈" and UNICHAR should almost never be used.
For modern HTML/CSS/JS, you should just write the character and serve UTF-8. The entities / codes are there purely as reference for legacy cases, debugging, or when you only have a code point and no rendered glyph — not as a recommendation for normal authoring.
Your site still says "HOW TO ADD ALMOST EQUAL TO IN HTML? Use an HTML entity, a decimal code, or a hex code."
That is incorrect. As you say, you should just write the character in your HTML and ensure it's served with the correct encoding. If it's just for legacy cases, debugging or such, say so on the site.
Agreed. Updated the HTML section to recommend writing the literal character + UTF-8 by default. Numeric refs/entities are now explicitly framed as legacy / edge-case references.
- Gratuitous, unnecessary cookies (and accompanying cookie consent dialog)
- cloudflare insights built into the pages
- non-zero counter in ublock origin
That's before we even get to the page source which contains, among other things:
"text\":\"First, ensure you're using a modern browser. If problems persist, try refreshing the page or clearing your browser cache. Some older devices may have limited font support.\"}}
"Clean" web pages don't need hints like this - they work without clearing browser cache or worrying about "older devices".
I haven't seen this on HN in a while so it is worth reposting:
Not super against cookie tracking or consent especially for a free platform, but these extreme color contrasts don't even seem to have any obvious correlations. Is it done just for looks? That's a crazy decision for a font information site
No disrespect but I would not call this "clean". The design is overwhelmingly cluttered and distracting. Especially given that each symbol is obscured by a black square with an arrow covering it. The symbols are themselves very small.
Maybe get rid of all the noise and just display the symbols in a nice grid without all the fluff or layers.
It feels really noisy and specifically, not clean for me too, so much that it pushes me away. It's interesting and fortunate that it works for the author and some (most?) commentators.
expanded button go over the side of the screen for me
pressing "V", which I'd assume meant "expand horizontal button queue into a vertical text list" instead collapses all descriptions and turns "v" into a hamburger button...
> We use cookies and similar technologies for analytics (Google Analytics) and session recording (Microsoft Clarity). Ads may be enabled in the future (Google AdSense). By continuing to use this site, you acknowledge this notice. You can manage cookies in your browser settings. EU/UK users: this serves as our cookie notice.
No. Please just give me an option to reject all tracking cookies instead of just kicking me in the face with a done deal.
Whoever wrote this 'EU/UK users: this serves as our cookie notice' is ignorant of the actual law. Have a look at:
Fair point — you’re right to call this out. I’ve now removed Microsoft Clarity (no session recording/heatmaps), and GA4 is opt‑in with a real “Reject all” option (default off). This is already deployed.
Good points. The hover hint could definitely do more useful work, and the repeated “Click to Copy” is probably overexplaining. UI polish still very much in progress
Interesting I discovered two new-to-me temperature symbols (℃ and ℉), but couldn't find the Alt-0176 ° generic degree sign that shows up on the MS Character Map app. I also found the There Exists symbol ∃ !! I'd been seeking for years; it was so useful since finding out about it in college logic courses... This will be even more useful when the Alt-code fields are all filled in! Thanks!
FileFormat.Info[1] has a page per codepoint. It has been around awhile, so the UI isn't as whizzy, but it has all the data and works w/o JavaScript
UnicodeSearch[2] is an updated search UI that uses JavaScript and the excellent Tabulator grid widget.
There are actually a ton of similar sites with a page-per-codepoint. It is all fun to make one, until the bots come along and hammer every page.
[1] https://www.fileformat.info/info/unicode/char/2248/index.htm
[2] https://www.unicodesearch.org/
2. “141 TCF vendor(s) and 69 ad partner(s) want to track you”
3. Exit :-(
I built the site over 20 years ago, and while it was fun to make, I wouldn't have maintained it this long if is was costing me every month.
I've tried to minimize the intrusiveness: I disabled the pop-up and interstitial ads and I don't serve anything different to people with ad-blockers. And I've stuck with Google Adwords, despite requests from all sorts of questionable alternatives.
I'm not sure about the future: bots are causing all sorts of trouble, and the ad revenue is trending down and is now less than break even.
The newer things I'm doing (like UnicodeSearch.org) are static, though I don't like forcing everyone to have JavaScript enabled.
I know it probably won’t amount to a lot, but have you tried asking for donations? I love seeing websites I regularly use doing that and not just relying on ads.
Based on the feedback here, I spent the last day tightening a few core things:
- Navigation / mobile: tapping a card now opens the symbol page directly; copy is a separate, larger button. The tiny expand target is gone.
- Search: alias + lightweight fuzzy matching is in (e.g. “section”, “angstrom”, “greater than”), plus a /codepoint/... fallback so pasting a literal character or U+XXXX always lands on a usable page, even outside the curated index.
- Missing glyphs: added a small “Font tips (if you see □)” section with system font notes and Noto suggestions.
- Content: HTML/CSS/JS guidance now recommends writing the literal character + UTF-8 by default; entities/codes are framed as legacy/reference only. Added Notes and improved Related (pairs, confusables, same block).
- Privacy: removed session recording; analytics are opt-in with a real reject-all (everything works fine with tracking off).
Direction going forward: fewer generic “how-to” instructions, more symbol-specific context — confusables, paired glyphs, rendering quirks, and references people actually look for.
Thanks again for the detailed feedback — it materially improved the project.
Some symbols leave me with more questions than answers, like “LEFT HALF RUNNING MAN”[1].
I’d like to at least see that it’s a glyph part, that there are two in total, and what does the other half look like; right now the “right half running man” is not listed anywhere on that page, not even in the “related symbols” section.
Off topic, the running man symbol possibly comes from MouseText character set (the one in the Apple IIc[2]). It was one of many character sets included in the legacy computing block[3].
[1]: https://fontgenerator.design/symbol/left-half-running-man
[2]: https://en.wikipedia.org/wiki/MouseText
[3]: https://en.wikipedia.org/wiki/Symbols_for_Legacy_Computing
Or better, if 90% of all symbol names are abbreviated, your design simply doesn't work. This is especially apparent in the "arrows" section.
The abbreviations (arrows in particular) made scanning worse than it should be. I’ve pushed a quick update: full names on hover/focus, plus a Compact / Readable toggle for the grid.
Thanks for the nudge.
The symbols on that page could be a bit bigger, though, as they are the main subject. (I changed 1.125rem to something like 1.6rem for text-lg; that works, but it could get a bit crowded with the clickable arrow on lower resolution screens).
I'm not a huge fan of things that move; the offset of a block of symbols, as well as scaling of an individual symbol block when hovering seems a bit too much. I would do either, but not both.
- The search field is arguably the most important element on the site. It might benefit from a magnifying glass icon and/or some visual distinctions that make it actually look like a text input for searching. It's thick border and shadow make it look like all the other boxes on the page that have thick borders and shadows!
- Speaking of the search field, it would be really nice if it supported fuzzy search. For example, I searched for "greater than" and got no results. I had to search for "greater-than" (with a dash) to find the math symbols (like ≥).
- The small font size of the symbols makes them really hard to see for old people like me who are pretending not to be old.
- Ditch the analytics and cookie consent nonsense. These are anti-developer!
Using the `unicode' command from plan9userspace, for example
the last three symbols are shown inside emacs as squares with the four hex values inside.Typing in the search field `2fff' finds `no match found'.
The symbols search now supports code-point lookup, so you can search by:
U+2FFF
0x2FFF
plain hex (2fff, 4–6 digits)
This makes it possible to jump straight to a symbol page even when the glyph doesn’t render locally and you only have the code point (like the Emacs/BSD case you described).
One limitation to note: some symbols aren’t covered by common or default system fonts, so they may still appear as tofu boxes depending on the font stack. That’s a font coverage issue rather than Unicode itself.
Appreciate you calling this out — this was exactly the kind of workflow gap I wanted to catch.
Developers need to understand context too, not see a static page of "macOS: Use Character Viewer (Control + Command + Space) and search by name, or copy/paste."
The related to symbols make little sense. For example: https://fontgenerator.design/symbol/acute-angle Does not link to all other "angle" pages, but does to Aktieselskab?
I’d love to see a section describing the glyph’s usage (I usual have to check Wikipedia for that) and which compose key sequence to use to type it. For instance on Linux (maybe other OSes too?) you can type <compose key> + e + = and get the euro sign.
Please don't display text directly on the grid background image. It makes it impossible to read the text easily. Currently, this is the case when you open the page for a specific symbol in the 'Usage & Context' section.
Fixed.
eg ℝ "Double-Struck Capital R" won't show up at all unless I search it as U+211D.
The directions for input on on each operating system are all the same, use an app? On Windows there's a key sequence based on the codepoint integer. It should tell you exactly what to type. The Linux one is especially odd "Use the Character Map app or a Compose key sequence, then paste into your app" because if there's a compose key sequence you don't need to paste it.
Oh well! Still good.
When I click the "Click to copy" my UI reflex tells me to look for a "Copied!" or similar acknowledgement. But I don't see one, so there's uncertainty if it was copied safely to my invisible clipboard or not.
Please keep making this, it's good! What inspired you for the design? I like this style, and notice it around, but can't pinpoint.
There is also a "Copied x" toast (is this the correct term? idk) at the bottom of the viewport when you click a character box, maybe it was also added later on.
It's obscured by the "We use optional cookies..." popup.
I found it odd, that tapping on a square “highlights” it, by making it “pop,” but nothing else really happens.
It took me a bit to figure out that I need to actually select the arrow in the upper right corner, to get the page.
It's cluttered with how to put your HTML character in your HTML, while being supposedly focused for devs...
All that doesn't make sense to me.
Please no: just write the character. <, & and (in quoted attributes) " or ' are the only characters that need to be encoded; a few others have arguable benefit to being encoded (most notably NO-BREAK SPACE), but most Unicode characters should just be put in literally. The days when you couldn’t be confident of the file encoding are past: your HTML is being served as UTF-8 (or in the rare case it isn’t, you should fix that instead of avoiding non-ASCII in the source).
Same deal with CSS (" and \ are the only ones you need to escape) and JavaScript (" or ' or `, as appropriate).
URLs? Occasionally you may encounter a legacy system where you need to percent-encode it yourself (similarly around punycoding internationalised domain names), but you can almost always (and thus, in my opinion, should) just write it and leave anything that wants it to be ASCII to perform the percent-encoding itself.
Excel I can’t comment on, but I presume you can just write "≈" and UNICHAR should almost never be used.
For modern HTML/CSS/JS, you should just write the character and serve UTF-8. The entities / codes are there purely as reference for legacy cases, debugging, or when you only have a code point and no rendered glyph — not as a recommendation for normal authoring.
That is incorrect. As you say, you should just write the character in your HTML and ensure it's served with the correct encoding. If it's just for legacy cases, debugging or such, say so on the site.
- Gratuitous, unnecessary cookies (and accompanying cookie consent dialog)
- cloudflare insights built into the pages
- non-zero counter in ublock origin
That's before we even get to the page source which contains, among other things:
"Clean" web pages don't need hints like this - they work without clearing browser cache or worrying about "older devices".I haven't seen this on HN in a while so it is worth reposting:
https://motherfuckingwebsite.com/
Maybe get rid of all the noise and just display the symbols in a nice grid without all the fluff or layers.
searching directly for 𓁤 also doesn't work
pressing "V", which I'd assume meant "expand horizontal button queue into a vertical text list" instead collapses all descriptions and turns "v" into a hamburger button...
No. Please just give me an option to reject all tracking cookies instead of just kicking me in the face with a done deal.
Whoever wrote this 'EU/UK users: this serves as our cookie notice' is ignorant of the actual law. Have a look at:
https://gdpr.eu/cookies/
I don't need to be told on each one to "Click to Copy".
But nice concept.
Interesting I discovered two new-to-me temperature symbols (℃ and ℉), but couldn't find the Alt-0176 ° generic degree sign that shows up on the MS Character Map app. I also found the There Exists symbol ∃ !! I'd been seeking for years; it was so useful since finding out about it in college logic courses... This will be even more useful when the Alt-code fields are all filled in! Thanks!