Funny how I made almost exactly the same but for maps.<p>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.<p>Annotated screenshots solves the first but not the second.<p>Vibe engineered this, with many of the same ideas as OP.<p>Took an evening. Just in time apps for one specific use case is a thing.<p>And because it's so cheap to make and can be hosted cheaply with no backend, it can be given away for free.<p><a href="https://nyman.re/mapdraw/#l=60.172108%2C24.941458&z=16&d=LU8xSyNhFJz57hLD3e13gctmi900d9uYFY5UXtJcdWSb5RqTJmW2sdxtRBsXQRRBCahVQhARQd0iNhb5A64iViKpBHHxB4iFFoJfVGbeq2bmvRHZjtjbPK5Gd6lx93kwkZ9dOzquxgepcUDLw3-0MIsVosvxniu3fc_13ErTbGrh91DrM5NwIiV2BCKBeyIhYiKEC0vDNDwEH_Ztyi5r2_wz15yvBeVgqmU15D84chK_FCZhQoNdK4flmHZCe0lYfSETURwJ2RHFaxZ85FF6k5XUvMOUTq4uG8WgEBQbsiGnc07WVOf7RI_qPcUfoe6bru5qli7fTToq5t9Tts5Y7_J3u-RktBnoX6PnQfX-KDWeqPXGLaw91rYoF9DET-RQ0fRvVy-D6v5uathDgSHxSCwJJALnAg_EiIg4bq6EKuvkJjVWeZHJxpw6pD3kuJlih9YGC2Heh9S_XKrEw9vUqI8-BTGXGXOdPS522I7o-Y6bsV4B" rel="nofollow">https://nyman.re/mapdraw/#l=60.172108%2C24.941458&z=16&d=LU8...</a>
> Vibe engineered<p>While I'm all for vibe coding as appropriate, there's a lot of humor to be found it calling it engineering. :D
this is not something I came up with, Simon wrote it and I liked the differentiation between "vibe coding" where there is less effort<p>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<p><a href="https://simonwillison.net/2025/Oct/7/vibe-engineering/" rel="nofollow">https://simonwillison.net/2025/Oct/7/vibe-engineering/</a>
I just hope actual engineers don't start vibe engineering bridges and buildings.
Fair. Though it seems that half of engineering is just giving a respectable name to whatever actually works.
I put a copy of the source on GH in case in case someone wants to improve things <a href="https://github.com/gnyman/mapdraw" rel="nofollow">https://github.com/gnyman/mapdraw</a>
That is absolutely great!
Using it now to plan a trip.<p>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?
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.<p>Is the code open source online somewhere?
thanks for the info, I'll see if I can get a agent to fix it<p>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
This is so cool!! The responsiveness of the page is so much better than any maps app I have used.
This is pretty cool!<p>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
Is this open source?
This is very cool!
Per the spec [0], a URL can hold at least 8,000 characters.<p>> 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.<p>Mainstream browsers support at least 64,000 characters [1], and Chrome supports up to 2MB [2].<p>[0]: <a href="https://www.rfc-editor.org/rfc/rfc9110#section-4.1-5" rel="nofollow">https://www.rfc-editor.org/rfc/rfc9110#section-4.1-5</a><p>[1]: <a href="https://stackoverflow.com/a/417184/" rel="nofollow">https://stackoverflow.com/a/417184/</a><p>[2]: <a href="https://chromium.googlesource.com/chromium/src/+/HEAD/docs/security/url_display_guidelines/url_display_guidelines.md#url-length" rel="nofollow">https://chromium.googlesource.com/chromium/src/+/HEAD/docs/s...</a>
Chrome limit is 2MB, Firefox is 1MB, WebKit is no limit.<p>Here is the Crime and Punishment by Fyodor Dostoevsky:<p>- <a href="https://medv.io/goto/crime-and-punishment-by-fyodor-dostoevsky.html" rel="nofollow">https://medv.io/goto/crime-and-punishment-by-fyodor-dostoevs...</a>
For what it's worth, there might be a 2GB limit on the iOS side.<p><a href="https://github.com/swiftlang/swift-corelibs-foundation/blob/swift-DEVELOPMENT-SNAPSHOT-2025-12-19-a/Sources/CoreFoundation/CFURLComponents_URIParser.c#L719" rel="nofollow">https://github.com/swiftlang/swift-corelibs-foundation/blob/...</a>
Incredible.<p>My absolute favorite thing about modernity is how enabled we are to riff on a riff of a riff.<p>In 1346, if a blacksmith came up with something cool, its quite possible that it died with them.
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
Interesting, in Firefox mobile (actually fennec) if I tap the address bar, I get an empty text box.<p>EDIT: actually I can edit the URL, but it takes a while to load.
hmmm makes me wonder if you could train llms on gzipped text. would save a lot of tokens that way.
LOL Tapping the address bar crashed my Chrome on mobile.
Works fine on Win11 Edge
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.<p>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.
<i>> Per the spec [0], a URL can hold at least 8,000 characters.</i><p><i>> It is RECOMMENDED that all senders and recipients support, at a minimum, URIs with lengths of 8000 octets in protocol elements.</i><p>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.
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.<p>They can't track every website with the link and ask to be removed, either.<p>Could they ask textarea.my to not parse the link and thus, not display the content? Could textarea.my refuse?
A book won't fit in the URL anyway even with compression
I would hope not. The copyrighted content seems to be the link rather than anything in the app.<p>Your example sounds like stopping notepad from rendering copyrighted content
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"})`.<p><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/fromBase64#alphabet" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...</a>
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.<p><a href="https://gabrielsroka.github.io/webpages/calc.htm#a1:=Rate=3.875;a2:=Years=30;a3:=NPer=Years*12;a4:=PV=644000;a5:=Pmt=Math.round(Math.pmt(Rate/12/100,NPer,PV)*100+1)/100;rows:5;cols:1" rel="nofollow">https://gabrielsroka.github.io/webpages/calc.htm#a1:=Rate=3....</a><p><pre><code> https://gabrielsroka.github.io/webpages/calc.htm#a1:=Rate=3.875;a2:=Years=30;a3:=NPer=Years*12;a4:=PV=644000;a5:=Pmt=Math.round(Math.pmt(Rate/12/100,NPer,PV)*100+1)/100;rows:5;cols:1
</code></pre>
More examples
<a href="https://gabrielsroka.github.io/webpages/" rel="nofollow">https://gabrielsroka.github.io/webpages/</a><p>It's about 130 js loc
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.
TypeScript playground does effectively the same thing for shared links, though it doesn't live-update as you type.
I recently build a small framework to create JavaScript apps that use this kind of URL sharing and therefore don’t require a backend: <a href="https://github.com/grothkopp/lost.js" rel="nofollow">https://github.com/grothkopp/lost.js</a>
I remember another one that was popular years ago: <a href="https://news.ycombinator.com/item?id=17459204">https://news.ycombinator.com/item?id=17459204</a>
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 <a href="https://kraa.io" rel="nofollow">https://kraa.io</a> editor.
From a privacy point of view, you might not want to use textarea.my since it includes some tracking bits at the end:<p><pre><code> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"6a22b097a2b44fa4af0a95817ce96ab5","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script></code></pre>
The tracking isn’t in the html, and as it’s static, you can host it any other way you like<p><a href="https://htmlpreview.github.io/?https://raw.githubusercontent.com/antonmedv/textarea/refs/heads/master/index.html#88tXcM7JL01Jy0ksSgUA" rel="nofollow">https://htmlpreview.github.io/?https://raw.githubusercontent...</a>
From a privacy point of view how is it any better than just using a local, native text editor?
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)
I exploit the similar idea for teaching: <a href="https://lnkd.in/gsySKda4">https://lnkd.in/gsySKda4</a><p>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.
Think you've inadvertently found a way to provide extra tests for mobile devices.<p>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).
I made something similar once, specifically targetted for guitar tablature <a href="https://tabviewer.app/" rel="nofollow">https://tabviewer.app/</a>
To make links shorter for sharing with others, I use a shortlink service. Pasting URLs of thousands of characters long can be problematic
shameless plug: i built something very similar but nobody cared: <a href="https://github.com/AlexW00/Buffertab" rel="nofollow">https://github.com/AlexW00/Buffertab</a>
I've seen a few others on HN this year, I'm pretty sure.
Voice typing is a cool feature, have you considered whisper wasm instead of OpenAI api?
I love this. Great little html page to refresh on Javascript.<p>For fun I put it in chatgpt and asked if there are bugs.<p>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.<p>"deflate-raw is not consistently supported." It suggested using 'deflate' instead.
Cool project, but loading "Crime and Punishment" crashed my mobile browser.<p>I don't think urls were built for that kind of punishment.
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<p><a href="https://gist.github.com/smcllns/8b727361ce4cf55cbc017faaefbbf951" rel="nofollow">https://gist.github.com/smcllns/8b727361ce4cf55cbc017faaefbb...</a>
Crashes my mobile chromium browsers when I try to open crime and punishment.<p>Firefox seems to work.
I have something tangentially similar here: <a href="https://jsgist.org" rel="nofollow">https://jsgist.org</a><p>If you click save you get the option to use a URL.<p>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.<p>The other problem is of course the space limit.
In case you missed it: it is possible to style textarea via CSS and share it.<p>- <a href="https://textarea.my/#TYuxDcIwEEWpmeKUCiSIJQoKU0KFRBUWOGwnWDi-yHcJhClYhKWYBAua_O49_XfsWYA6F-HghjNRYMBoAa0FljE4QJEEQoBJvMkMn_drNoe8C5pbk6iPVkOfwkKp1tmh9KSQ2QkrFkxcNr5e7n5BTVHWNbY-jBqKPbXeQIWR4VQVq6nIZPrEfnCTkP3Tadhsu8dfGgqUNNyvXvLtCw==" rel="nofollow">https://textarea.my/#TYuxDcIwEEWpmeKUCiSIJQoKU0KFRBUWOGwnWDi...</a>
First I think it's still loading because it's only white<p>but when I hit the keyboard I can see my it's is already loaded<p>Good job!
Nice! I love this.<p>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.<p><a href="https://github.com/codazoda/ponder" rel="nofollow">https://github.com/codazoda/ponder</a>
Amazing. The crime and punishment example crashed my iPhone’s Google Chrome when I tap the URL haha
> Respects light/dark mode<p>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.
I've implemented the same idea a few years ago: <a href="https://pastila.nl/" rel="nofollow">https://pastila.nl/</a>
Brings this to mind: <a href="https://hashify.me/IyBUaXRsZQ==" rel="nofollow">https://hashify.me/IyBUaXRsZQ==</a>
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)
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.<p>The sharing works just like here, by encoding the tab itself in the url.<p><a href="https://github.com/planbnet/guitartabs" rel="nofollow">https://github.com/planbnet/guitartabs</a>
I have a similar one using localStorage
<a href="https://github.com/mkaz/browser-pad" rel="nofollow">https://github.com/mkaz/browser-pad</a>
I too built a one (text is stored in localstorage)<p><a href="https://gourav.io/devtools/notepad" rel="nofollow">https://gourav.io/devtools/notepad</a>
also here <a href="https://space-element.pages.dev/#data=eyJ2YWx1ZSI6IvCTgoAg8JOHmiDwk4%2BfIPCTj54ifQ%3D%3D" rel="nofollow">https://space-element.pages.dev/#data=eyJ2YWx1ZSI6IvCTgoAg8J...</a>
Seems like we have all built something similar.<p>hopefully mine can stand out with all the extra features i have managed to cram in
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):<p>data:text/html, <html contenteditable>
I love this.<p>Now if you bootstrap the app code into the url too then you can have a minimal kernel to run any machine in url.<p>Then you can also make a Quine somehow.
This is very interesting, very refreshing, very simple and clever, very well done, very everything good. Bravo and thank you.
I like this because most of the time I need random stuff—numbers, quick searches, or ideas—and this helps instantly.
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).
Why store in the URL and make it bloated? Isn't storing in local storage enough?
I wrote a similar app when mathbin was shutting down. It allows about 1500 characters of mathjax-displayed notes. [1]<p>[1]: <a href="https://davidlowryduda.com/mathshare/" rel="nofollow">https://davidlowryduda.com/mathshare/</a>
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!
I created a similar app just 2 days ago targeting Whatsapp (<a href="https://linqshare.com" rel="nofollow">https://linqshare.com</a>) . 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.<p>--edit--
test link: <a href="https://linqshare.com/#eJxtkM9KxDAQxl-lzLmHrv8Ova3IHlz04BY8FA9jO9hoki7J1GVd9ujNgwoiguDFJ_MJfITNtHXZghBC8vu-mW-SFVSEJTkPaQ7naAhiGJu6sRwOM0ZuPFzF4OqFOHKYOLSF8lFQR0kS9p_Px2DIYdxocgoD2RvwSyzICT4S-vv19tzZtSok6zAZ4FO0QkdxkiRxL72-t9KU9L2y2_7bkjO8I9vndsLLU9_LkG_nbOn3R0uPw5DSZX93yInih5swpi7lYQeDB2TK1Fwto7ZmkHyCVpHuKnb5lBRX__gvlmgFy2pTMfj-7uGTDTFCugJWrAlSyMhzlOG1li8pyRdOzVnVNkgzNHNNEYuDxREtJJNMfas8rNcbV4CUAg" rel="nofollow">https://linqshare.com/#eJxtkM9KxDAQxl-lzLmHrv8Ova3IHlz04BY8F...</a>
In Firefox, <a href="https://textarea.my" rel="nofollow">https://textarea.my</a> shows up as as a completely static non-actionable white page. Just white, with default cursor. No errors on the console.
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
Something similar by Eric Wastl (of Advent of Code fame): <a href="https://topaz.github.io/paste/" rel="nofollow">https://topaz.github.io/paste/</a>
My own plug, translate between SQL dialects, state stored in URL so you can share it:<p><a href="https://sqlscope.netlify.app/" rel="nofollow">https://sqlscope.netlify.app/</a>
Just started making my own recently with CodeMirror 6 during holidays. No saving function for now: <a href="https://qbane.github.io/cgm" rel="nofollow">https://qbane.github.io/cgm</a>
Are <i><head>, <body>, and </html></i> missing intentionally?<p>Safari 15.6.1: <i>Unhandled Promise Rejection: ReferenceError: Can't find variable: CompressionStream</i>
I probably shouldn’t presume to speak for the OP, but given that they’re optional, I would think so, yes.
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 :)
Love your other tools, btw!
The compression is nice, you can fit very long (low-entropy ;-) messages in there - this one is 9k characters:<p><a href="https://textarea.my/#7cGBAAAAAMMgzfmTHORVAQAAAAAAAADAuwE=" rel="nofollow">https://textarea.my/#7cGBAAAAAMMgzfmTHORVAQAAAAAAAADAuwE=</a>
546,229 character-length URL for the Crime and Punishment example.<p>Half a megabyte for a URL. That certainly is a thing.
This hack has completely disrupted my afternoon! Perhaps even forever after.
Can you make it monospace by default, so that this can be used as a code snippet bin?
This is a code editor with the same url idea:<p><a href="https://flems.io/" rel="nofollow">https://flems.io/</a>
Sure! textarea.my support custom style attr: <a href="https://textarea.my/#Ky4tSlVUyCotLlEoLUhJLElVKC6pzElVSCwpKWJIy88r0U1LzM3MqbRSyM3Pyy8uSExOtQYA" rel="nofollow">https://textarea.my/#Ky4tSlVUyCotLlEoLUhJLElVKC6pzElVSCwpKWJ...</a>
Try <a href="https://a10z.co/note" rel="nofollow">https://a10z.co/note</a>
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
this is indeed minimalistic :)
It would be neat if ctrl+s offered to download the textarea to a .txt file.
The only thing missing is markdown and few themes. I think this is awesome idea for sharing. Love what you did with it.
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.<p>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.
<a href="https://textarea.my/#Cy4tsAcA" rel="nofollow">https://textarea.my/#Cy4tsAcA</a>
Love it!
Can you save anything?
<a href="https://textarea.my/#i0wtBgA=" rel="nofollow">https://textarea.my/#i0wtBgA=</a>
Not OP: sure, just bookmark it
Now what if it didn't pollute browser history
[dead]