[HN Gopher] Show HN: Minimalist editor that lives in browser, st...
       ___________________________________________________________________
        
       Show HN: Minimalist editor that lives in browser, stores everything
       in the URL
        
       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/
        
       Author : medv
       Score  : 425 points
       Date   : 2025-12-24 19:42 UTC (1 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | nvahalik wrote:
       | Love your other tools, btw!
        
         | medv wrote:
         | Thanks!
        
       | deafpolygon wrote:
       | Can you save anything?
        
         | thomascgalvin wrote:
         | Not OP: sure, just bookmark it
        
           | tony_cannistra wrote:
           | kinda -- but then you have to re-bookmark it every time you
           | update it...
        
             | medv wrote:
             | It also saves to localStorage
        
         | rorylawless wrote:
         | https://textarea.my/#i0wtBgA=
        
           | sltkr wrote:
           | No that should be: https://textarea.my/#c8yrLMnIzEsHAA==
        
             | RonanSoleste wrote:
             | More like: https://textarea.my/#c8yrLMnIzEu3BwA=
        
       | samcollins wrote:
       | Nice! I made a similar thing but the html for the text editor
       | fits in a data uri, so it can be a bookmark or new tab page for
       | taking quick notes
       | 
       | https://gist.github.com/smcllns/8b727361ce4cf55cbc017faaefbb...
        
       | qbane wrote:
       | Just started making my own recently with CodeMirror 6 during
       | holidays. No saving function for now: https://qbane.github.io/cgm
        
       | wwarren wrote:
       | Amazing. The crime and punishment example crashed my iPhone's
       | Google Chrome when I tap the URL haha
        
       | mzelling wrote:
       | Love it!
        
       | maxloh wrote:
       | 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...
        
         | medv wrote:
         | Chrome limit is 2MB, Firefox is 1MB, WebKit is no limit.
         | 
         | Here is the Crime and Punishment by Fyodor Dostoevsky:
         | 
         | - https://medv.io/goto/crime-and-punishment-by-fyodor-
         | dostoevs...
        
           | hallole wrote:
           | LOL Tapping the address bar crashed my Chrome on mobile.
        
             | lurking_swe wrote:
             | loaded OK for me on mobile safari.
        
               | kylecazar wrote:
               | Loaded fine for me too -- but like parent, tapping the
               | address bar to share afterwards crashed it on Android
               | here :)
        
               | nosrepa wrote:
               | My Firefox on mobile seemingly handled it fine.
        
           | maxloh wrote:
           | For what it's worth, there might be a 2GB limit on the iOS
           | side.
           | 
           | https://github.com/swiftlang/swift-corelibs-
           | foundation/blob/...
        
           | scotty79 wrote:
           | Works fine on Win11 Edge
        
           | gchamonlive wrote:
           | Interesting, in Firefox mobile (actually fennec) if I tap the
           | address bar, I get an empty text box.
           | 
           | EDIT: actually I can edit the URL, but it takes a while to
           | load.
        
           | oneseven wrote:
           | hmmm makes me wonder if you could train llms on gzipped text.
           | would save a lot of tokens that way.
        
           | spicyusername wrote:
           | Incredible.
           | 
           | My absolute favorite thing about modernity is how enabled we
           | are to riff on a riff of a riff.
           | 
           | In 1346, if a blacksmith came up with something cool, its
           | quite possible that it died with them.
        
             | Kye wrote:
             | One thing I've learned from checking up on assumptions I've
             | had about history is that it's easy to underestimate people
             | in past times. They were probably better at communicating
             | this stuff than you think.
        
           | caminanteblanco wrote:
           | This unfortunately immediately crashed my android firefox
           | nightly browser. Amusingly it loaded the page, but one click
           | on the address bar sent me straight to the home screen
        
             | Departed7405 wrote:
             | For me on IronFox it showed an empty URL bar but loaded
             | after what felt like 5 seconds.
        
           | buddhistdude wrote:
           | I find it interesting that when you read this comment, the
           | whole book is already on your computer. And it gets rendered
           | when your press the link.
           | 
           | Edit: actually not true since you use a url shortener
        
           | idle_zealot wrote:
           | I can open the page with the book text on mobile Safari, but
           | iOS seems to cut off content when trying to copy/share the
           | page URL. I can't get it to survive a round-trip to Notes.
           | Might be a good thing to note for mobile users that if they
           | write too much attempting to save their link will corrupt it.
        
         | dspillett wrote:
         | _> 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._
         | 
         | It is always worth remembering that, unless you have already
         | ensured that the content has been rendered into a URI-safe
         | subset of ASCII, a character and an octet are not the same
         | thing.
        
           | ghurtado wrote:
           | Very good point indeed. In the worst case scenario, you would
           | only have 1/5th of that capacity
        
         | berkes wrote:
         | I guess the surveillance industry has enough incentives to make
         | this ever larger, so they can fit more utm-trackers, campaign-
         | ids, referal trackers and whatnot in URLs.
         | 
         | It's truly insane how large typical share-URLS for content on
         | instagram, youtube or any other large platforms are. URLs that
         | could've been example.com/t/some-large-enough-id?time=13337 are
         | stuffed with hundreds of characters, just to gather more data
         | on people using these links.
        
         | mrweasel wrote:
         | What could the reasoning behind allowing anything beyond 64.000
         | characters possibly been? Even 64k seems unnecessarily large.
        
       | marcuskaz wrote:
       | I have a similar one using localStorage
       | https://github.com/mkaz/browser-pad
        
       | ctenb wrote:
       | 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
        
         | planb wrote:
         | Wow funny I'm just seeing this after posting my tab editor in
         | another comment. I have the same use case as you :)
         | 
         | https://github.com/planbnet/guitartabs
        
       | xeonmc wrote:
       | Can you make it monospace by default, so that this can be used as
       | a code snippet bin?
        
         | adamschwartz wrote:
         | Try https://a10z.co/note
        
         | medv wrote:
         | Sure! textarea.my support custom style attr:
         | https://textarea.my/#Ky4tSlVUyCotLlEoLUhJLElVKC6pzElVSCwpKWJ...
        
           | throwaway150 wrote:
           | How do you share after that? I can open devtools and change
           | the attribute but the URL doesn't update after that.
        
             | medv wrote:
             | Update the text a bit to trigger save event.
        
         | koolala wrote:
         | This is a code editor with the same url idea:
         | 
         | https://flems.io/
        
       | edgars_xx wrote:
       | 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
        
       | medv wrote:
       | In case you missed it: it is possible to style textarea via CSS
       | and share it.
       | 
       | - https://textarea.my/#TYuxDcIwEEWpmeKUCiSIJQoKU0KFRBUWOGwnWDi...
        
       | growt wrote:
       | I recently build a small framework to create JavaScript apps that
       | use this kind of URL sharing and therefore don't require a
       | backend: https://github.com/grothkopp/lost.js
        
       | ThrowawayTestr wrote:
       | https://textarea.my/#Cy4tsAcA
        
         | teach wrote:
         | https://textarea.my/#Cy4tsOfi8ssvUcgtTc7QU_DIz0stLsmpVPBUSK0...
        
           | medv wrote:
           | https://textarea.my/#ZY_NTgMhFIVd9ylYNZpMuQwDmZ9m4qM0SG9ncCg.
           | ..
        
             | RonanSoleste wrote:
             | https://textarea.my/#ZY87b8MgFIU7-1fQJWqlBDDG8iOyOnfvHlF8Y6
             | g...
        
       | sublinear wrote:
       | 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.
        
         | denisinvader wrote:
         | hash part of url only available in the browser, as far as I
         | know, server doesn't have access to # value
        
           | sublinear wrote:
           | Typos and URL mangles are common though, and I'd still have
           | no way to confirm if it got logged in that case. It's out of
           | scope for anything in the github source, and instead depends
           | on the server hosting the page. I know this isn't meant to be
           | super secure, but it's still worth a mention.
        
             | throwaway150 wrote:
             | Typos aren't making the hash part turn into something else.
             | Like your parent comment explained to you, the hash part is
             | not sent to the server. If you go out of your way to mangle
             | the URL then of course a mangled URL without hash will
             | likely get logged to the server. But I'm not sure how one
             | would manage to go so much out of the way that they mangle
             | the URL in a way that removes the hash.
        
               | sublinear wrote:
               | You don't have a choice pasting links into some apps.
               | They may strip out query and hash components, percent
               | encode, force URL shortener services, etc.
               | 
               | Percent encoding is particularly bad since it may also
               | bloat the length causing truncation and the decompress to
               | fail. There's endless footguns with URLs.
        
           | jamesdwilson wrote:
           | very easy for the server to intentionally (or by compromise)
           | add a one liner to send the hash text up.
        
       | billforsternz wrote:
       | This is very interesting, very refreshing, very simple and
       | clever, very well done, very everything good. Bravo and thank
       | you.
        
       | desireco42 wrote:
       | The only thing missing is markdown and few themes. I think this
       | is awesome idea for sharing. Love what you did with it.
        
       | jaysonelliot wrote:
       | 546,229 character-length URL for the Crime and Punishment
       | example.
       | 
       | Half a megabyte for a URL. That certainly is a thing.
        
       | ljlolel wrote:
       | 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.
        
       | nickweb wrote:
       | 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).
        
       | codazoda wrote:
       | Nice! I love this.
       | 
       | I built Ponder in the same vein. It, however, has 10 files. I did
       | not use the URL, did not have double the fun, and now I'm sad.
       | 
       | https://github.com/codazoda/ponder
        
       | pglevy wrote:
       | 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!
        
         | gisho wrote:
         | I created a similar app just 2 days ago targeting Whatsapp
         | (https://linqshare.com) . Context: In my locality, EA, we
         | normally have Whatsapp groups raising funds for whatever
         | reason; for every content edit, the admin has to copy-edit-
         | paste updated content(which contains name and amount) to the
         | group. This small app intends to provide a table that's easy to
         | convey this info. App stores content in the url but a preview
         | image (needed for Whatsapp share) is stored at R2. Let me know
         | if you want the source code running at Cloudflare.
         | 
         | --edit-- test link: https://linqshare.com/#eJxtkM9KxDAQxl-
         | lzLmHrv8Ova3IHlz04BY8F...
        
       | planb wrote:
       | 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
        
       | LordDragonfang wrote:
       | It would be neat if ctrl+s offered to download the textarea to a
       | .txt file.
        
       | roxolotl wrote:
       | Was just working on something similar this morning. As an fyi you
       | can avoid the string replacing in the base64 string by using
       | `.toBase64({ alphabet: "base64url" })` and `fromBase64({
       | alphabet: "base64url"})`.
       | 
       | https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
        
       | huhtenberg wrote:
       | In Firefox, https://textarea.my shows up as as a completely
       | static non-actionable white page. Just white, with default
       | cursor. No errors on the console.
        
       | levmiseri wrote:
       | I really like this from a privacy point of view. So much so that
       | I'm thinking about adding a purely URL-storage solution as an
       | option in my https://kraa.io editor.
        
         | WD-42 wrote:
         | From a privacy point of view how is it any better than just
         | using a local, native text editor?
        
           | levmiseri wrote:
           | From purely privacy point of view it's not. But if you also
           | want markdown features, custom typography and easy sharing,
           | this starts to make more sense.
        
         | omoikane wrote:
         | From a privacy point of view, you might not want to use
         | textarea.my since it includes some tracking bits at the end:
         | <script defer src="https://static.cloudflareinsights.com/beacon
         | .min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integri
         | ty="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPU
         | qr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version
         | ":"2024.11.0","token":"6a22b097a2b44fa4af0a95817ce96ab5","r":1,
         | "server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cf
         | ExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"
         | location_startswith":null}}' crossorigin="anonymous"></script>
        
           | brightbeige wrote:
           | The tracking isn't in the html, and as it's static, you can
           | host it any other way you like
           | 
           | https://htmlpreview.github.io/?https://raw.githubusercontent.
           | ..
        
       | gnyman wrote:
       | Funny how I made almost exactly the same but for maps.
       | 
       | I needed a way to share a link to a map, with drawings and the
       | ability for the receiver to see their own location on the map.
       | 
       | Annotated screenshots solves the first but not the second.
       | 
       | Vibe engineered this, with many of the same ideas as OP.
       | 
       | Took an evening. Just in time apps for one specific use case is a
       | thing.
       | 
       | And because it's so cheap to make and can be hosted cheaply with
       | no backend, it can be given away for free.
       | 
       | https://nyman.re/mapdraw/#l=60.172108%2C24.941458&z=16&d=LU8...
        
         | mathgeek wrote:
         | > Vibe engineered
         | 
         | While I'm all for vibe coding as appropriate, there's a lot of
         | humor to be found it calling it engineering. :D
        
           | block_dagger wrote:
           | Fair. Though it seems that half of engineering is just giving
           | a respectable name to whatever actually works.
        
             | mathgeek wrote:
             | For software, but that's a well trodden path at this point.
             | I've seen a few projects that are actually "vibe
             | engineering" outside of software on the 3d modeling side so
             | the terms are confusing.
        
           | InsideOutSanta wrote:
           | I just hope actual engineers don't start vibe engineering
           | bridges and buildings.
        
           | gnyman wrote:
           | this is not something I came up with, Simon wrote it and I
           | liked the differentiation between "vibe coding" where there
           | is less effort
           | 
           | for this case project I think I would actually go back and
           | say it's vibe coded, but I didn't want to just call it vibe
           | coding because I did spend time going back and forth and
           | directing the agent
           | 
           | https://simonwillison.net/2025/Oct/7/vibe-engineering/
        
             | mathgeek wrote:
             | Interesting distinction. I've previously heard vibe coding
             | described as "vibe prompting, but you actually do some
             | work." That aside though, I just call what you're
             | describing as coding with AI.
        
               | bdangubic wrote:
               | coding with AI is coding just as much as coding with
               | VSCode is coding. you decide which parts you get help
               | from a given tool and which you don't. end of the day, it
               | is all coding and "coding with AI" sounds as silly as
               | "coding with keyboard / microphone"
        
             | stogot wrote:
             | I suspected it needed to be directed with a specification
             | to call it vibe engineered
        
           | NuclearPM wrote:
           | What is funny about it?
        
         | RandomDistort wrote:
         | Is this open source?
        
           | gnyman wrote:
           | it's a static webpage, the source is available with right-
           | click view source, I added a BSD2 licence header to it to
           | make clear it's fine to take and do mostly whatever with
        
         | Gehinnn wrote:
         | This is very cool!
        
         | nextaccountic wrote:
         | This is pretty cool!
         | 
         | And if you are open to bug reports.. if I move around the
         | drawings move smoothly with the map, but if I zoom in/out the
         | drawings move only after the map zooming animation ends, rather
         | than smoothly
        
         | blntechie wrote:
         | This is so cool!! The responsiveness of the page is so much
         | better than any maps app I have used.
        
           | gnyman wrote:
           | yeah, isn't it impressive how fast modern computers can be if
           | you make a bit of effort, in this case I think I told it to
           | just use plain javascript and make sure it's fast :-)
        
         | antman wrote:
         | That is absolutely great! Using it now to plan a trip.
         | 
         | Could we also add text annotations? Also the delete button
         | could delete just the last shape or a selected shape so as not
         | to start over?
        
         | zenmac wrote:
         | Great tool! There is a little issue with the +/- zoom buttons
         | not working something cause it is over layed by other div
         | blocks. On mac firefox.
         | 
         | Is the code open source online somewhere?
        
           | gnyman wrote:
           | thanks for the info, I'll see if I can get a agent to fix it
           | 
           | it's a static webpage, the source is available with right-
           | click view source, I added a BSD2 licence header to it to
           | make clear it's fine to take and do mostly whatever with
        
             | zenmac wrote:
             | Yeah just would be good on a codeberg or gitlab or maybe
             | even github repo. So we can do PR.
             | 
             | Here is the fix:
             | 
             | .leaflet-top, .leaflet-left{ z-index: 100000; /* some high
             | number */ }
        
               | gnyman wrote:
               | hmm, I tried it on firefox and it works for me, and for
               | me .leaflet-top already has a high z-index: 1000;
               | 
               | although I run 140.6.0esr so maybe newer ones need a even
               | higher one?
               | 
               | the code is on GH now https://github.com/gnyman/mapdraw ,
               | codeberg is on my todo
        
               | Kailhus wrote:
               | Could try the hacky 2147483647 max z-index. No issue on
               | android firefox
        
         | gnyman wrote:
         | I put a copy of the source on GH in case in case someone wants
         | to improve things https://github.com/gnyman/mapdraw
        
         | getupyang wrote:
         | Really cool--this is the fastest-loading map I've ever used.
        
         | piffey wrote:
         | Love this. Can't tell you how many times I've screenshotted
         | maps then drawn on directions for family/friends. Great idea.
        
         | nolito wrote:
         | But not well tested. Try to create a map and copy the url to
         | another map. Now change the first map with more anotations or
         | move the map center and copy the generated url and paste it
         | into the other map on the other browser. That does not work (at
         | least for me on different browsers).
        
           | gnyman wrote:
           | I think I know what you mean, thanks for the report, if you
           | modify the # part on a webpage it's not the same as reloading
           | it, and I doubt I watch for that part changing
        
         | ninalanyon wrote:
         | Looks useful but doesn't work quite as expected for me.
         | 
         | In Vivaldi location tracking doesn't work. Version 7.7.3851.66
         | (Official Build) (64-bit) Chromium Version 142.0.7444.245
         | Extended Stable channel (may also include additional security
         | patches) Channel Official Build Platform / OS Linux - linuxmint
         | 21.3
         | 
         | And in Firefox 146.0.1 on the same machine the URL doesn't get
         | updated.
        
       | surrTurr wrote:
       | shameless plug: i built something very similar but nobody cared:
       | https://github.com/AlexW00/Buffertab
        
         | antman wrote:
         | Voice typing is a cool feature, have you considered whisper
         | wasm instead of OpenAI api?
        
         | zahlman wrote:
         | I've seen a few others on HN this year, I'm pretty sure.
        
       | WhyIsItAlwaysHN wrote:
       | My own plug, translate between SQL dialects, state stored in URL
       | so you can share it:
       | 
       | https://sqlscope.netlify.app/
        
       | reconnecting wrote:
       | Are _< head>, <body>, and </html>_ missing intentionally?
       | 
       | Safari 15.6.1: _Unhandled Promise Rejection: ReferenceError: Can
       | 't find variable: CompressionStream_
        
         | wdporter wrote:
         | I probably shouldn't presume to speak for the OP, but given
         | that they're optional, I would think so, yes.
        
       | rane wrote:
       | Now what if it didn't pollute browser history
        
       | mixedmath wrote:
       | I wrote a similar app when mathbin was shutting down. It allows
       | about 1500 characters of mathjax-displayed notes. [1]
       | 
       | [1]: https://davidlowryduda.com/mathshare/
        
       | sltkr wrote:
       | Something similar by Eric Wastl (of Advent of Code fame):
       | https://topaz.github.io/paste/
        
       | nemtsv wrote:
       | I think a couple of days ago I stumbled upon your editor in corp
       | Google intranets when I was looking for internal tool to pretty
       | print some json, small world :)
        
         | medv wrote:
         | The http://go/fmt-err? =) Yes, it is mine.
        
       | greggman65 wrote:
       | I have something tangentially similar here: https://jsgist.org
       | 
       | If you click save you get the option to use a URL.
       | 
       | The problem with a URL every edit is a new URL. So you send the
       | URL to a friend, then fix a typo, they need a new URL.
       | 
       | The other problem is of course the space limit.
        
       | theoa wrote:
       | This hack has completely disrupted my afternoon! Perhaps even
       | forever after.
        
       | zX41ZdbW wrote:
       | I've implemented the same idea a few years ago:
       | https://pastila.nl/
        
         | medv wrote:
         | It uses DB at the backend.
        
       | urbandw311er wrote:
       | Neat. But why would you auto-set the title from markdown heading
       | syntax when it doesn't support markdown? (Or any rich text in
       | fact)
        
         | medv wrote:
         | You can still write markdown. Nobody prevents you.
        
       | spacedoutman wrote:
       | Seems like we have all built something similar.
       | 
       | hopefully mine can stand out with all the extra features i have
       | managed to cram in
        
       | valgaze wrote:
       | Brings this to mind: https://hashify.me/IyBUaXRsZQ==
        
       | gabrielsroka wrote:
       | I did something similar with a spreadsheet years ago. It's
       | lkudgy, but it works. You have to tab away from the input box and
       | refresh the page, iirc.
       | 
       | https://gabrielsroka.github.io/webpages/calc.htm#a1:=Rate=3....
       | https://gabrielsroka.github.io/webpages/calc.htm#a1:=Rate=3.875;a
       | 2:=Years=30;a3:=NPer=Years*12;a4:=PV=644000;a5:=Pmt=Math.round(Ma
       | th.pmt(Rate/12/100,NPer,PV)*100+1)/100;rows:5;cols:1
       | 
       | More examples https://gabrielsroka.github.io/webpages/
       | 
       | It's about 130 js loc
        
       | frizlab wrote:
       | > Respects light/dark mode
       | 
       | Not really... using js to change the CSS on the go is not a good
       | practice. Why does it matter? Because of the "dark mode" browser
       | extensions. They often use the presence of @media query (or other
       | standard CSS means of setting dark mode colors), and if it's the
       | JS that changes the colors we often get partial Dark Mode, which
       | does not work at all.
        
         | medv wrote:
         | No js is used for colors.
        
           | frizlab wrote:
           | Oh. I retract my comment, I just read the code. My Dark Mode
           | extension just sucks.
        
       | rfl890 wrote:
       | You claim no tracking, and yet there's a Cloudflare Web Analytics
       | beacon placed at the bottom of the page (thankfully filtered out
       | by uBlock Origin)
        
         | gettingoverit wrote:
         | By the look on the issues there, it seems the rest of the post
         | is not that true either
         | 
         | Edit. Call me a hater, but... I know the guy! That's the guy
         | from Google whose code never works in the most hilarious ways!
         | See issues on the rest of his pinned repos.
        
       | cantalopes wrote:
       | I feel this is more of a fun toy project because if i used it
       | every day my browser history cache and browser performance would
       | get annihilated
        
       | thelastgallon wrote:
       | I wonder if this can be paired with a local URL shortener?
       | Chaining this with a local URL shortener can mean access to any
       | doc with a single letter (or very letters).
        
       | bdcravens wrote:
       | I keep this in the bookmark bar for the times I need a place to
       | paste a quick bit of text (but it doesn't persist):
       | 
       | data:text/html, <html contenteditable>
        
         | lifthrasiir wrote:
         | Use xem's version [1] if you need persistence:
         | <body id=b contentEditable
         | onload=b[i="innerHTML"]=[(l=localStorage).c] oninput=l.c=b[i]>
         | 
         | [1] https://xem.github.io/postit/
        
       | meander_water wrote:
       | Cool project, but loading "Crime and Punishment" crashed my
       | mobile browser.
       | 
       | I don't think urls were built for that kind of punishment.
        
         | ooxoo wrote:
         | I think it was the text-wrap-style value.
         | https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/P...
        
       | jerrygoyal wrote:
       | I too built a one (text is stored in localstorage)
       | 
       | https://gourav.io/devtools/notepad
        
       | Yash16 wrote:
       | I like this because most of the time I need random stuff--
       | numbers, quick searches, or ideas--and this helps instantly.
        
       | srexrg wrote:
       | this is indeed minimalistic :)
        
       | zkmon wrote:
       | Why store in the URL and make it bloated? Isn't storing in local
       | storage enough?
        
         | Departed7405 wrote:
         | The point is you can share it anywhere very easily.
        
       | ngc6677 wrote:
       | also here https://space-
       | element.pages.dev/#data=eyJ2YWx1ZSI6IvCTgoAg8J...
        
       | Sayyidalijufri wrote:
       | First I think it's still loading because it's only white
       | 
       | but when I hit the keyboard I can see my it's is already loaded
       | 
       | Good job!
        
       | dachris wrote:
       | The compression is nice, you can fit very long (low-entropy ;-)
       | messages in there - this one is 9k characters:
       | 
       | https://textarea.my/#7cGBAAAAAMMgzfmTHORVAQAAAAAAAADAuwE=
        
       | AltruisticGapHN wrote:
       | I love this. Great little html page to refresh on Javascript.
       | 
       | For fun I put it in chatgpt and asked if there are bugs.
       | 
       | It warned about fromBase64() and toBase64() not existing in main
       | browsers. It is supported but is indeed a new "baseline
       | 2025"feature. It suggested more compatible code using two small
       | functions to convert characters manually.
       | 
       | "deflate-raw is not consistently supported." It suggested using
       | 'deflate' instead.
        
       | okaleniuk wrote:
       | I exploit the similar idea for teaching: https://lnkd.in/gsySKda4
       | 
       | Students are lazy, in a good way, so they are more likely to run
       | things on their own and play with interactive bits if the whole
       | lecture is just one link.
        
       | nchmy wrote:
       | Crashes my mobile chromium browsers when I try to open crime and
       | punishment.
       | 
       | Firefox seems to work.
        
       | coder543 wrote:
       | I remember another one that was popular years ago:
       | https://news.ycombinator.com/item?id=17459204
        
       | 101008 wrote:
       | I am thinking from a piracy perspective. If I share a link that
       | contains a book, what can be done from DCMA or legal regulators?
       | They can't ask the server (textarea.my) to remove the link
       | because it doesn't exist.
       | 
       | They can't track every website with the link and ask to be
       | removed, either.
       | 
       | Could they ask textarea.my to not parse the link and thus, not
       | display the content? Could textarea.my refuse?
        
         | singiamtel wrote:
         | I would hope not. The copyrighted content seems to be the link
         | rather than anything in the app.
         | 
         | Your example sounds like stopping notepad from rendering
         | copyrighted content
        
           | wavemode wrote:
           | From a technical perspective, you're absolutely correct.
           | 
           | From a regulatory perspective, it seems unlikely that most
           | courts would appreciate the difference. In their mind - you
           | run a website, and that website contains copyrighted content.
           | Take it down.
           | 
           | You'd probably have to just blacklist the link in question to
           | avoid a legal headache.
        
         | fsmv wrote:
         | A book won't fit in the URL anyway even with compression
        
           | badsectoracula wrote:
           | Someone in another comment posted Crime and Punishment by
           | Fyodor Dostoevsky, so a book fits in the URL. It is just that
           | the URL is ~500000 characters :-P (the book itself is ~1.2M
           | characters)
        
         | tnecio wrote:
         | In this case I'd say the link _is_ the content. So it would be
         | the place where you share the link, rather than the  "rendering
         | page", which should be more worried
        
       | chuckadams wrote:
       | TypeScript playground does effectively the same thing for shared
       | links, though it doesn't live-update as you type.
        
       | mishrapravin441 wrote:
       | Very nice exploration of URL-as-state. The approach is elegant,
       | but the mobile crashes highlight how hostile real-world URL
       | handling still is once links leave the browser.
        
       | ooxoo wrote:
       | The performance issues may be due to using `text-wrap-style:
       | pretty`. Try switching the value to `stable`.
       | https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/P...
        
       | ciccionamente wrote:
       | I used the same principle to let people write their own emergency
       | notes in a secure way: https://weexpire.org
        
       | nake13 wrote:
       | I built a very similar experiment about 10 days ago and shared it
       | here (the post is in
       | Chinese):https://x.com/nake13/status/2000401664923324439
       | 
       | My focus was on finding a good text-URL-slug compression
       | strategy. I used ChatGPT-5.2-Pro mainly to explore and compare
       | different compression approaches and trade-offs.
        
       | qingcharles wrote:
       | Here's one I took from somewhere and optimized that is just a
       | bookmarklet, so there's nothing remote:
       | 
       | data:text/html,<title>Notepad</title><textarea autofocus
       | spellcheck=0 style="position:fixed;inset:0;padding:1em;border:0;f
       | ont:monospace">
       | 
       | Your text actually survives a reboot in Chrome.
       | 
       | Can anyone think of a way to store the textarea value in the URL?
       | I tried using JS to set a # but it's nonsensical in this context.
       | 
       | Edit: here's the best I could do:
       | 
       | data:text/html,<title>Notepad</title><textarea id=t autofocus
       | spellcheck=0 style=position:fixed;inset:0;padding:2em;border:0;fo
       | nt:monospace></textarea><a id=s
       | style=position:fixed;top:10px;right:10px>Right-click Open to
       | save...</a><script>[,P,S]=location.href.slice(15).match(/(. _<
       | textarea[^>]_>)[^] _?( <\/textarea>._)/),t.oninput=U=_=>s.href='d
       | ata:text/html,'+P+encodeURIComponent(t.value.replace(/&/g,'&amp;'
       | ).replace(/<\/textarea/g,'&lt;/textarea'))+S,U()</script>
        
       | khalby786 wrote:
       | let's not forget the og itty.bitty.site [0]
       | 
       | [0]: http://about.bitty.site/
        
       | danhite wrote:
       | caveat emptor re long hashtag techniques on (ipad) safari ...
       | 
       | you may think safari has no effective url limit (i.e. very high)
       | but if you ever treat a url within the url bar as editable you
       | are at risk to be silently truncated to 4096 bytes (eg select a
       | character in the url bar and replace it)
       | 
       | also re-testing potential ~buffer limits in various ways on
       | ipadOS 26.2 safari just now slowed my safari ui down to a crawl
       | 
       | eg after saving example.com with ~20k #hashtag to reading list --
       | each keystroke in this reply was taking several seconds, so I had
       | to force quit safari and retype to post this warning
        
       ___________________________________________________________________
       (page generated 2025-12-25 23:00 UTC)