HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
tc39
proposal-arraybuffer-base64
HTML2023–2023
tc39 / proposal-arraybuffer-base64 · Archived

proposal-arraybuffer-base64

TC39 proposal for Uint8Array<->base64/hex

2Distinct people
3Mentions
0Explicit recommenders
280GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

TC39 proposal for Uint8Array<->base64/hex

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by hour3 dated mentions

Observed mentions: 2023-10-23 18:35:44 UTC to 2023-10-24 18:19:54 UTC.

012023-10-23 18:00:00 UTC to 2023-10-23 19:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsOct 23, 18:002023-10-23 19:00:00 UTC to 2023-10-23 20:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-23 20:00:00 UTC to 2023-10-23 21:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-23 21:00:00 UTC to 2023-10-23 22:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-23 22:00:00 UTC to 2023-10-23 23:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-23 23:00:00 UTC to 2023-10-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 00:00:00 UTC to 2023-10-24 01:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 01:00:00 UTC to 2023-10-24 02:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 02:00:00 UTC to 2023-10-24 03:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 03:00:00 UTC to 2023-10-24 04:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 04:00:00 UTC to 2023-10-24 05:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 05:00:00 UTC to 2023-10-24 06:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 06:00:00 UTC to 2023-10-24 07:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsOct 24, 06:002023-10-24 07:00:00 UTC to 2023-10-24 08:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 08:00:00 UTC to 2023-10-24 09:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 09:00:00 UTC to 2023-10-24 10:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 10:00:00 UTC to 2023-10-24 11:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 11:00:00 UTC to 2023-10-24 12:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 12:00:00 UTC to 2023-10-24 13:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 13:00:00 UTC to 2023-10-24 14:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 14:00:00 UTC to 2023-10-24 15:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-10-24 15:00:00 UTC to 2023-10-24 16:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 16:00:00 UTC to 2023-10-24 17:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 17:00:00 UTC to 2023-10-24 18:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-10-24 18:00:00 UTC to 2023-10-24 19:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsOct 24, 18:00

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Oct 23, 18:002023-10-23 18:00:00 UTC2023-10-23 19:00:00 UTC101
Oct 23, 19:002023-10-23 19:00:00 UTC2023-10-23 20:00:00 UTC000
Oct 23, 20:002023-10-23 20:00:00 UTC2023-10-23 21:00:00 UTC000
Oct 23, 21:002023-10-23 21:00:00 UTC2023-10-23 22:00:00 UTC000
Oct 23, 22:002023-10-23 22:00:00 UTC2023-10-23 23:00:00 UTC000
Oct 23, 23:002023-10-23 23:00:00 UTC2023-10-24 00:00:00 UTC000
Oct 24, 00:002023-10-24 00:00:00 UTC2023-10-24 01:00:00 UTC000
Oct 24, 01:002023-10-24 01:00:00 UTC2023-10-24 02:00:00 UTC000
Oct 24, 02:002023-10-24 02:00:00 UTC2023-10-24 03:00:00 UTC000
Oct 24, 03:002023-10-24 03:00:00 UTC2023-10-24 04:00:00 UTC000
Oct 24, 04:002023-10-24 04:00:00 UTC2023-10-24 05:00:00 UTC000
Oct 24, 05:002023-10-24 05:00:00 UTC2023-10-24 06:00:00 UTC000
Oct 24, 06:002023-10-24 06:00:00 UTC2023-10-24 07:00:00 UTC000
Oct 24, 07:002023-10-24 07:00:00 UTC2023-10-24 08:00:00 UTC000
Oct 24, 08:002023-10-24 08:00:00 UTC2023-10-24 09:00:00 UTC000
Oct 24, 09:002023-10-24 09:00:00 UTC2023-10-24 10:00:00 UTC000
Oct 24, 10:002023-10-24 10:00:00 UTC2023-10-24 11:00:00 UTC000
Oct 24, 11:002023-10-24 11:00:00 UTC2023-10-24 12:00:00 UTC000
Oct 24, 12:002023-10-24 12:00:00 UTC2023-10-24 13:00:00 UTC000
Oct 24, 13:002023-10-24 13:00:00 UTC2023-10-24 14:00:00 UTC000
Oct 24, 14:002023-10-24 14:00:00 UTC2023-10-24 15:00:00 UTC101
Oct 24, 15:002023-10-24 15:00:00 UTC2023-10-24 16:00:00 UTC000
Oct 24, 16:002023-10-24 16:00:00 UTC2023-10-24 17:00:00 UTC000
Oct 24, 17:002023-10-24 17:00:00 UTC2023-10-24 18:00:00 UTC000
Oct 24, 18:002023-10-24 18:00:00 UTC2023-10-24 19:00:00 UTC101

What Hacker News says

1 sources
There's some additional interesting details, and a surprising amount of variation in those details, once you start really digging into things. If the length of your input data isn't exactly a multiple of 3 bytes, then encoding it will use either 2 or 3 base64 characters to encode the final 1 or 2 bytes. Since each base64 character is 6 bits, this means you'll be using either 12 or 18 bits to represent 8 or 16 bits. Which means you have an extra 4 or 2 bits which don't encode anything. In the RFC, encoders are required to set those bits to 0, but decoders only "MAY" choose to reject input which does not have those set to 0. In practice, nothing rejects those by default, and as far as I know only Ruby, Rust, and Go allow you to fail on such inputs - Python has a "validate" option, but it doesn't validate those bits. The other major differen
Read the rest
ce is in handling of whitespace and other non-base64 characters. A surprising number of implementations, including Python, allow arbitrary characters in the input, and silently ignore them. That's a problem if you get the alphabet wrong - for example, in Python `base64.standard_b64decode(base64.urlsafe_b64encode(b'\xFF\xFE\xFD\xFC'))` will silently give you the wrong output, rather than an error. Ouch! Another fun fact is that Ruby's base64 encoder will put linebreaks every 60 characters, which is a wild choice because no standard encoding requires lines that short except PEM, but PEM requires _exactly_ 64 characters per line. I have a writeup of some of the differences among programming languages and some JavaScript libraries here [1], because I'm working on getting a better base64 added to JS [2]. [1] https://gist.github.com/bakkot/16cae276209da91b652c2cb3f612a... [2] https://github.com/tc39/proposal-arraybuffer-base64
In Base64 Encoding, Explained

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.