Show HN: Minimalist editor that lives in browser, stores everything in the URL (github.com)

468 points by medv ↗ HN
I wanted to see how far I could go building a notes app using only what modern browsers already provide – no frameworks, no storage APIs, no build step.

What it does:

Single HTML file, no deps, 111 loc

Notes live in the URL hash (shareable links!)

Auto-compressed with CompressionStream

Plain-text editor (contenteditable)

History support

Page title from first # heading

Respects light/dark mode

No storage, cookies, or tracking

The entire app is the page source.

https://textarea.my/

88 comments

[ 2.6 ms ] story [ 157 ms ] thread
Love your other tools, btw!
Amazing. The crime and punishment example crashed my iPhone’s Google Chrome when I tap the URL haha
Per the spec [0], a URL can hold at least 8,000 characters.

> It is RECOMMENDED that all senders and recipients support, at a minimum, URIs with lengths of 8000 octets in protocol elements. Note that this implies some structures and on-wire representations (for example, the request line in HTTP/1.1) will necessarily be larger in some cases.

Mainstream browsers support at least 64,000 characters [1], and Chrome supports up to 2MB [2].

[0]: https://www.rfc-editor.org/rfc/rfc9110#section-4.1-5

[1]: https://stackoverflow.com/a/417184/

[2]: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/s...

What could the reasoning behind allowing anything beyond 64.000 characters possibly been? Even 64k seems unnecessarily large.
I made something similar once, specifically targetted for guitar tablature https://tabviewer.app/ To make links shorter for sharing with others, I use a shortlink service. Pasting URLs of thousands of characters long can be problematic
Can you make it monospace by default, so that this can be used as a code snippet bin?
love it, funny enough, I had similar idea pop into my head some weeks ago, just to be able to store quick notes and favorite them in my browser for later
I like these kinds of projects, but adding a file export/import is inevitable. It's less about the limits of a URL and more about practicality.

I also have no way to confirm that URLs aren't logged server side, so I'd never trust the claim about "no tracking". That's why these projects also end up self-hosted.

This is very interesting, very refreshing, very simple and clever, very well done, very everything good. Bravo and thank you.
The only thing missing is markdown and few themes. I think this is awesome idea for sharing. Love what you did with it.
546,229 character-length URL for the Crime and Punishment example.

Half a megabyte for a URL. That certainly is a thing.

I love this.

Now if you bootstrap the app code into the url too then you can have a minimal kernel to run any machine in url.

Then you can also make a Quine somehow.

Think you've inadvertently found a way to provide extra tests for mobile devices.

The Crime and Punishment one consistently crashes Brave mobile for me. I assume it's the length of the URL - and seen another commentator say the same for chrome mobile (sure they both use the same codebase so likely an upstream issue).

Thanks for sharing! I tried a similar content-in-url approach for a family grocery list app but I couldn't get the url that short. (It worked but it was a bit cumbersome sharing over Whatsapp.) Will see what I can learn from this!
A few weeks ago I vibe coded a guitar tab editor just because I wanted to share a quick tab in a chat group with my band. When the first prototype already worked great, I just couldn’t stop to add features so that it now even has mouseover chord diagrams and copy and paste.

The sharing works just like here, by encoding the tab itself in the url.

https://github.com/planbnet/guitartabs

It would be neat if ctrl+s offered to download the textarea to a .txt file.