HN Hall of Fame Weekly email

UTF-8 Everywhere

utf8everywhere.org Essays & writing Essays & articles Software engineering Class of 2016-06 Hall of Fame
Screenshot of utf8everywhere.org captured 2026-07-20
Page preview · captured 2026-07-20

Resurfaced independently across 8 calendar years, with breakout response in 4 of them.

submissions
18
submitters
17
observed span
2012–2025
peak thread · 281 comments
381 pts
latest 20+ return · 2020-04-14
326 pts

Submission timeline

2007–2026

One slot for every year since HN launched. Height is that year's peak points; orange marks a 100+ point or 50+ comment breakout. Select a bar to open its strongest thread.

First comments on top threads

HN comment order

Really good article. You'll get nothing from me but heartfelt agreement. I especially liked that the article was giving numbers about how inefficient UTF8 would be to store Asian text (not really apparently). Also insightful, but obvious in hindsight: Not even in utf-32 you can index specific character in constant time due to the various digraphs. The one property I really love about UTF8 is that you get a free consistency check as not every arbitrary byte sequence is a…

pilif·381-point thread·

> In the UNIX world, narrow strings are considered UTF-8 by default almost everywhere. Because of that, the author of the file copy utility would not need to care about Unicode It couldn’t be further from the truth. Unix paths don’t need to be valid UTF-8 and most programs happily pipe the mess through into text that should be valid. (Windows filenames don’t have to be proper UTF-16 either) Rust is one of the few programming languages that correctly doesn’t…

This resonate so much for me, in VLC. VLC has a very large number of users on Windows (80% of our users), yet almost none of the dev use Windows to code. Therefore, we use UTF-8 char* everywhere, notably in the core. We use UTF-16 conversions only in the necessary Windows modules, that use Windows APIs. Being sure we were UTF-8 everywhere took a lot of time, tbh... But the worse are formats like ASF (WMV) or MMS that use…

jbk·275-point thread·

The Python problem is amusing. Python 3 has three representations of strings internally (1-byte, 2-byte, and 4-byte) and promotes them to a wider form when necessary. This is mostly to support string indexing. It probably would have been better to use UTF-8, and create an index array for the string when necessary. You rarely need to index a string with an integer in Python. FOR loops don't need to. Regular expressions don't need to. Operations that return a position into…

Animats·122-point thread·

The first top-level comment from each of the four biggest threads, in HN’s own order. Excerpts are shortened; open a comment for full context.

Breakout years
4

100+ points or 50+ comments

Total points
1168

reference only — not used in Hall rules or ranking

Total comments
774

reference only — not used in Hall rules or ranking

Every submission

DateTitle as submittedByPointsComments
2012-04-29The UTF-8-Everywhere ManifestoFirst breakout · Best threadbearpool381182
2012-10-17UTF-8 Everywhere: A Manifestoe1ven20
2012-10-25UTF-8 Everywherewamatt162
2014-01-16UTF-8 Everywhereangersock275149
2014-04-05UTF-8 Everywheredsego10
2015-03-15UTF-8 Everywherelfowles51
2015-12-14The UTF-8 Manifestogragas30
2016-05-10UTF-8 Everywhere Manifestobased280
2016-06-07Why you should use UTF-8 (not UTF-16) everywherexvilka40
2016-06-19UTF-8 Everywhere (2012)Hall inductionthefox122153
2019-10-10UTF-8 Everywheresrathi20
2019-12-03UTF-8 Everywherepcr91030320
2020-04-14UTF-8 EverywhereLatest 20+ point returnpcr910303326281
2024-02-15UTF-8 Everywheresnats20
2024-05-22The UTF-8-Everywhere Manifesto (2012)aragonite11
2024-06-05UTF-8 Everywherethrow0101d123
2024-09-30UTF-8 Everywherethrow0101b21
2025-05-15UTF-8 EverywhereTomte41