46 comments

  • roxolotl 19 minutes ago

    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...

  • maxloh an hour ago

    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...

      berkes 8 minutes ago

      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.

      medv an hour ago

      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...

      dspillett an hour ago

      > 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 35 minutes ago

        Very good point indeed. In the worst case scenario, you would only have 1/5th of that capacity

  • growt an hour ago

    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

  • nickweb 36 minutes ago

    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).

  • ctenb an hour ago

    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

  • codazoda 31 minutes ago

    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

  • planb 26 minutes ago

    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

  • billforsternz an hour ago

    This is very interesting, very refreshing, very simple and clever, very well done, very everything good. Bravo and thank you.

  • ljlolel 36 minutes ago

    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.

  • pglevy 28 minutes ago

    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!

  • samcollins 2 hours ago

    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...

  • wwarren 2 hours ago

    Amazing. The crime and punishment example crashed my iPhone’s Google Chrome when I tap the URL haha

  • marcuskaz an hour ago

    I have a similar one using localStorage https://github.com/mkaz/browser-pad

  • medv an hour ago

    In case you missed it: it is possible to style textarea via CSS and share it.

    - https://textarea.my/#TYuxDcIwEEWpmeKUCiSIJQoKU0KFRBUWOGwnWDi...

  • jaysonelliot 37 minutes ago

    546,229 character-length URL for the Crime and Punishment example.

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

  • qbane 2 hours ago

    Just started making my own recently with CodeMirror 6 during holidays. No saving function for now: https://qbane.github.io/cgm

  • nvahalik 2 hours ago

    Love your other tools, btw!

      medv an hour ago

      Thanks!

  • xeonmc an hour ago

    Can you make it monospace by default, so that this can be used as a code snippet bin?

  • LordDragonfang 19 minutes ago

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

  • edgars_xx an hour ago

    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

  • ThrowawayTestr an hour ago
  • desireco42 an hour ago

    The only thing missing is markdown and few themes. I think this is awesome idea for sharing. Love what you did with it.

  • mzelling an hour ago

    Love it!

  • deafpolygon 2 hours ago

    Can you save anything?

  • sublinear an hour ago

    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 an hour ago

      hash part of url only available in the browser, as far as I know, server doesn’t have access to # value

        sublinear 36 minutes ago

        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 4 minutes ago

          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.