
Show HN: Web pages stored entirely in the URL - jstrieb
https://github.com/jstrieb/urlpages
======
mmaunder
I think a few folks are missing the point.

How are web pages shared? By distributing links.

How are pages censored? By deplatforming. This usually happens by activists
targeting the host right in their cashflow.

If you remove the need to host, you remove a point of failure from publishing.
Now the link is the content.

It's an interesting concept whether or not you agree with this implementation.

~~~
wybiral
But somehow you need to share the link itself, right?

So instead of sharing the link couldn't you just... Share whatever the message
or content is?

Edit: what I'm saying is that "activists" (which is an interesting concern
btw) will pressure the platform that the link is being shared on because the
link IS the content.

~~~
atoav
Which also means rhat everybody with the link can change it’s content which
means you cannot trust this content more than the person who sent it to you.

Why not just copy and paste the content directly?

~~~
saintPirelli
For the same reason your not sending html-files via email when you want to
share a website I suppose.

------
jstrieb
Hello, creator here!

I originally conceived this as a simple, static CodePen clone, but I felt the
"publishing" of pages as URLs was an interesting idea. So I decided to present
that aspect of it front and center, even though it wasn't really the point of
the project at the beginning.

About a year ago, I had a proof of concept version that I ended up using
fairly frequently for sharing quick HTML/CSS/JavaScript experiments (never as
a means of seriously publishing and sharing censorship-proof content). I found
that if its use is limited to that case, it is actually very handy and robust!

Lots of interesting feedback in the comments, largely more positive than I
expected. I was expecting criticism of code quality since I have minimal web
development experience, but instead the (valid) criticism is coming from
people who are taking the project's applications and use cases seriously,
which I appreciate.

~~~
mmaunder
It's a very interesting concept in the current climate. The idea of sharing
content as atomic and self-sufficient units of data, much like you would share
the raw idea itself, but with the ability to have layout, rich content and
possibly even interactivity. A web of ideas rather than ideas on pages with
servers. The disintermediation of the web.

I suspect that's why this item is so popular.

~~~
jstrieb
That's why I let that part of the project be the focus!

I also hope the interest it has generated will inspire others with more
knowledge and experience to make better versions or variations that are more
practical.

~~~
mmaunder
A deeper implementation would be a browser designed for this.

Some hard problems. E.g. URLs provide a consistent place to go to find varying
content. If the URL is the content, then it cant vary. How does one solve
content discovery without resorting to hosting?

PS: The first person who says blockchain buys the beers.

~~~
icebraining
Blockchain would be silly, there's no need for a globally-consistent view just
to have search.

Distributed search has been around for some time, e.g. eMule uses Kad[1],
Tribler[2] has a solution based on Tor, but the most appropriate here is
probably YaCy[3]. Of course, all of those are technically "hosted", insofar as
p2p involves peers acting as servers. But I bet someone has made a f2f[4]
version, meaning you'd only serve to a few, hopefully trusted peers.

[1]
[https://en.wikipedia.org/wiki/Kademlia](https://en.wikipedia.org/wiki/Kademlia)

[2] [https://www.tribler.org/](https://www.tribler.org/)

[3] [https://yacy.net/](https://yacy.net/)

[4] [https://en.wikipedia.org/wiki/Friend-to-
friend](https://en.wikipedia.org/wiki/Friend-to-friend)

------
geekamongus
I fail to see how this isn't ripe for abuse. I can execute javascript in a
person's browser using _your_ domain.

[http://tinyurl.com/y5m7o4j8](http://tinyurl.com/y5m7o4j8)

~~~
the_pwner224
How is this bad? If the domain is only used to host the decoder, what bad
stuff can a bad guy do by executing JS? I get how this would be a
vulnerability on Facebook, but why is it bad here?

~~~
geekamongus
Have someone who controls the domain and is logged in to their website admin
area in another tab click a link you've crafted to steal and send you their
delicious cookies.

Or, any time this sort of thing comes up in a thread on a news website like
this one, an opportunistic attacker could post a malicious payload in a link
and watch as all the excited people blindly click away.

------
gruez
>cannot be taken down

But all you did is shift the burden of hosting it to wherever you post the
link, which can still take down your link.

~~~
mabbo
Worse, it's very easy now to repost the link with modified data.

~~~
drusepth
Why is that a bad thing and not a feature?

~~~
easytiger
How do you know what the original message was supposed to be?

------
the_pwner224
One idea I've thought about in this same area is 'compressing' the URLs via
Unicode. Suppose you limit the page contents to just [a-zA-Z0-9] and about 15
special characters, and space/newline. Documents would be rendered without any
formatting aside from what you can do with a monospace font (all caps, white
space, tables, etc.).

This allows about 80 unique characters - about 6.5 bits per character. There
are dozens of thousands of visible Unicode characters, at least 8 bits each.
Using modern compression techniques you can probably get around 4 or maybe
even 5 characters of the real text into one visible Unicode character. This
would compress the messages so that you can share them over SMS/Twitter (split
into a few parts perhaps) or Facebook without posting giant pages of text.

The data could start with a 'normal' not-rare-Unicode character indicating the
language, and the same character at the end of the stream to make it easy to
copy paste:

    
    
        a<unintelligible Unicode garbage>a
    

Multiple translation tables could exist for different languages. Japanese and
Indic languages have ~50 alphabet characters but no capitals, so I think you
would be able to get similar compression regardless of input language.

Users would go to a website that does decompression with JS and just paste in
the compressed text to view the plaintext. And vice versa. If the compression
format is open then anyone can make and host a [de]compressor.

Version codes may be useful to add, so that more efficient compression
techniques don't break backwards compatibility. The first release of the
English compression algorithm would start and end with 'aa', a better
algorithm released a few years later would use 'ab', etc. Similarly the
version code could be used to indicate a more restricted set of characters to
allow for better compression - [a-z0-9] and . , space newline is 30 characters
which is only 5 bits per character before any further compression.

~~~
deathanatos
One of my toy projects:
[https://github.com/thanatos/baseunicode](https://github.com/thanatos/baseunicode)
; there's probably a lot that could be done better, and the alphabet it uses
needs to be greatly expanded.

There are few other implementations of the same idea out there, too. Here's
another one:
[https://github.com/qntm/base65536](https://github.com/qntm/base65536) ; since
it uses a power-of-two sized alphabet, it avoids some of the work mine has to
do around partial output bytes. That link also links to some other ideas &
implementations

The exact metric I cared about at the time was compressing for screen-space,
not for actual byte-for-byte space. I wrote it after spending some time in a
situation where doing a proper scp was just a PITA, unfortunately, but
copy/pasting into a terminal is almost always a thing that works. But I was
also dealing with screen/tmux, which makes scrolling difficult, so I wanted
the output to fit in a screen. From that, you can implement a very poor man's
scp with tar -cz FILES | base64 ; the base-unicode bit replaces the base64.

Mine doesn't use Huffman coding as it wants to stream data / it leans on gzip
for doing that.

------
MattyRad
Shameless self promotion, but if you're interested in this sort of thing and
know a little about DNS, you can similarly host a website purely through DNS
records; no hosting, no cost, etc.
[https://serv.from.zone](https://serv.from.zone)

------
SigmundA
what about data urls? No need for hosting page:

data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E

~~~
air7
That's what I thought he would aim for. This is _actually_ safe from being
taken down whereas op's solution needs op's website to decode the url.

~~~
jstrieb
While I agree that this is technically correct, I feel it ignores the spirit
of the project.

Since I released it open-source, my expectation is that anyone who cares about
safety from takedowns will clone and host one or more of their own. Or, for
that matter, use the files offline with shared base-64 encoded URLs

~~~
air7
If your site goes down, all the links go broken. To use a clone I'd need to
manually copy a part of a dead link and append it on the clone url. The links
are actually just data stores in need of a renderer. Why not use an html file
instead?

------
gitgud
Cool! I like projects like this, which contain their state in the URL so you
can share it.

Another such tool is [1] This gradient generator, which encodes the gradient
parameters into the url so you can come back and use the tool to edit it!

Anyway good job on creating this!

[1] [https://www.colorzilla.com/gradient-
editor/](https://www.colorzilla.com/gradient-editor/)

------
MJSplot_author
Similar to this [0] from a few years ago. That one also had some basic
encryption included. Some previous discussions[1,2] of that tool highlights
that this can easily be abused for xss or distribution of illegal materials
which you may not want to find yourself the focus of.

[0]
[https://davidpartson024.github.io/no_host/encryptedPageMaker...](https://davidpartson024.github.io/no_host/encryptedPageMaker.html)

[1]
[https://www.reddit.com/r/programming/comments/47gjbv/experim...](https://www.reddit.com/r/programming/comments/47gjbv/experimental_url_abuse/)

[2]
[https://www.reddit.com/r/InternetIsBeautiful/comments/4o76gn...](https://www.reddit.com/r/InternetIsBeautiful/comments/4o76gn/make_your_own_encrypted_web_pages_without_needing/)

~~~
lol768
Unsure I really understand the XSS risk that's discussed in the links you
provided. Nobody cares about that origin because it has nothing of value
hosted on it and it's not like you'd be able to access cookies from a
different origin.

The worst you could do is exploit a browser zero-day, but you can do that on
any static hosting site already!

~~~
prsecurity
You are abusing trust - now it's going to be the jstrieb.github.io who is
serving malware, and since his system serves whatever JS I provide by design
it becomes a very effective XSS host.

~~~
Thorrez
It's not really jstrieb.github.io that's serving it, because since the content
is in the url fragment, it is never sent to or from the server, it's handled
entirely clientside.

>a very effective XSS host.

It can only do XSS against jstrieb.github.io which has nothing valuable. So
it's not useful for anything. It can't be used in a <script> tag to obfuscate
XSS attacks against other websites either, because the response isn't
formatted as javascript. I guess it could be used in <iframes> on other
websites in order to add obfuscation, but I think the use to attackers would
be quite low.

~~~
prsecurity
You still need something to serve you the initial document.write js, unless
you are going to convince people to open your links with locally saved
"index.html". I called it "XSS" because you can execute arbitrary javascript,
and I was trying to avoid bluntly calling it "malware".

Though I probably should have. Here is an example of a HackerNews login page
served with jstrieb.github.com
[https://tinyurl.com/yypvh3by](https://tinyurl.com/yypvh3by), you can login to
news.ycombinator.com with it, but it easily could have been a phishing site.

My point is, this is a very good idea for offensive operations.

~~~
Thorrez
But someone could register the github account newsycombinator and then serve
an identical phishing page at newsycombinator.github.io .

I guess you're right that it's useful for takedown resistance in phishing
attacks. It's useless for small, sophisticated, targeted phishing attacks, but
for large blunt untargeted phishing attacks it could be useful to have a site
that would be difficult to take down and censor.

But I do consider phishing different than XSS.

------
mjtlittle
This reminds me of
[https://itty.bitty.site/edit](https://itty.bitty.site/edit), which does the
exact same thing but with a size limit, no in browser editor, and if I'm not
mistaken, a compression algorithm.

~~~
djsumdog
So with both of these cases, the site itself (github pages or bitty.site) need
to be up in order to decode the content? It's not like the way images can be
stored in a data URL, right?

------
nabla9

      data:text/html,%3Ch1%3EReinventing%20the%20Wheel%3C%2Fh1%3E%0A%3Cp%3EThis%20page%20is%20in%20the%20url.%3Cp%3E%0A%3Cp%3EHow%20strange.%3C%2Fp%3E

~~~
hagreet
Is there a way to make this clickable? At least in FF Android it isn't.

~~~
SigmundA
Also you can use a iframe in page with link.

------
lisper
I don't see any effective difference between putting the data in a URL and
putting the data in a local HTML file and opening the file in a browser. (And
if you're going to put the data in a URL, you should probably be using a data:
URL.)

~~~
posix_me_less
One difference is that when you visit/bookmark some normal webpage, you save
on your computer only its title and address. With this, you are saving the
page content as well, just by visiting the page.

~~~
lisper
With the data in a file you are also saving the page content (in a file). I
don't see what difference it makes whether you're saving that content in a
file or in a bookmark. (At the risk of stating the obvious, bookmarks are
stored in a file.)

~~~
Misdicorl
Its different because sharing a link is much easier than sharing a file

~~~
lisper
Not if the link and the file are the same size.

~~~
cantcomplain
Take discord for example: you can only post a file of certain size, but you
can post unlimited text

~~~
dansman805
Discord messages aren't actually unlimited; they are limited to 2,000
characters, unless this restriction was recently removed. I have personally
encountered this, mainly when using code blocks.

------
fouc
Makes me think of [https://privatebin.info](https://privatebin.info) and
[https://flems.io](https://flems.io) which also entirely store the content of
the webpage in the URL. (Flems is like a codepen)

------
madmonk
I see some potential for using this for content distribution via QR codes.
Create a page, make a QR code sticker and you're now hosting a website on a
wall.

~~~
futhey
Couple notes: I tested doing this on a fork, QR codes have a 3k upper limit
(which is fine for some pages), and when using large amounts of data like this
they switch to a large-payload format, which seems to be blocked by the iPhone
camera.

Either they're blocking large-payload qr codes or by url length.

------
snek
Wait until they find out about browser URL length limits :)

~~~
RyanShook
I was wondering the same thing. Most browsers limit URLs to 2083 characters.

Edit: IE is 2083, Chrome is 1032

~~~
jsjohnst
Name one modern browser (let alone “most”) that does that. I’ll wait.

PS: IE6-9 don’t count as modern browsers, and haven’t for a long time. To my
knowledge, they were the _only_ browsers to limit to exactly 2083 characters.

~~~
bigato
if you wait long enough, someone will submit patches to firefox and chrome to
fix this ridiculous 100k bytes url limit to something smaller

~~~
jsjohnst
Patches have been proposed before, but not accepted. That said, great point.
;)

------
bigato
Saying that this "cannot be taken down" is quite stupid. It's all fine and
dandy if you live in a place without strong censorship, but in a situation
where information that cannot be taken down would be really necessary, how
long do you think it will take for the interested parties to find out that the
content is in the message?

~~~
unityByFreedom
The content can be hidden in a short url, so it is potentially a new thing
that censors would have to deal with, unless they want to block all short URL
services.

~~~
rando444
You still need a URL though.

Might as well just use DNS txt fields.

------
xg15
I wondered about this use-case in the context if data URIs.

In theory, an alternative way to serve page content (instead via HTTP 200)
should be to return a 3xx redirect and set the location header to a data URI.

This would indeed allow you to use URL shorteners or any kind of open redirect
as a de-facto web host.

("In theory", in the sense that HTTP allow redirects to point to any kind of
URL, so there is nothing saying it couldn't be a data uri)

I imagine this kind of situation is something that browser developers
explicitly want to avoid, because the security implications would be a
nightmare. So practically browsers _do not_ follow redirects to data uris.

------
lettergram
Example:
[https://jstrieb.github.io/urlpages/editor/#eyJjc3MiOiJib2R5I...](https://jstrieb.github.io/urlpages/editor/#eyJjc3MiOiJib2R5IHtcbiAgYmFja2dyb3VuZDogYmxhY2s7XG4gIGNvbG9yOiBsaW1lZ3JlZW47XG4gIHBhZGRpbmc6IDI1cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG5zZWN0aW9uIHtcbiAgcGFkZGluZzogMzVweDtcbiAgbWF4LXdpZHRoOiAxMDIwcHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG4gIG1hcmdpbi10b3A6IDI1cHg7XG4gIG1hcmdpbi1ib3R0b206IDI1cHg7XG4gIGJvcmRlcjogM3B4IHNvbGlkIGxpbWVncmVlbjtcbn1cblxuLmZpcnN0IHtcbiAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTM1cHgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi5hc2NpaS1hcnQge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICBmb250LXNpemU6IGNhbGMoMS4xdncpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB3aWR0aDogNzBjaDtcbn1cblxuLmNlbnRlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IGF1dG87XG59XG5cbi5kZXNjIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubWlkZGxlIHtcbiAgbWFyZ2luLXRvcDogY2FsYygxNXZoKTtcbn1cblxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGxpbWVncmVlbjtcbn0iLCJqcyI6IiIsImh0bWwiOiI8c2VjdGlvbiBjbGFzcz1cImZpcnN0XCI+XG48ZGl2IGNsYXNzPVwibWlkZGxlXCI+XG48ZGl2IGNsYXNzPVwiYXNjaWktYXJ0IGNlbnRlclwiPlxuPCEtLSBZZXMsIEkgZGlkIGhhbmQtY29kZSB0aGlzIEFTQ0lJIGFydC4gSSBtYWRlIGl0IG9uIGEgcGxhbmUgcmlkZSBmcm9tIE5ldyBZb3JrIHRvIFBpdHRzYnVyZ2ggd2hlbiBJIHByb2JhYmx5IHNob3VsZCBoYXZlIGJlZW4gZG9pbmcgYWN0dWFsIGhvbWV3b3JrLiAtLT5cbjxwPlxuICBfX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fICAgXG4gL19fICAgXy8gICAgICAgICAgICAgICAgIF8gICAgICAvICBfX19fXy8gICBfICAgICAgICAgXyAgICAgICAgX1xuICAgIHwgfCAgICAgICAgICAgICAgICAgIC8gfCAgICAgXFwgIFxcX19fXyAgX3wgfF8gIF8gICAoXykgX19fXyAvIHxcbiAgICB8IHxfX19fXyBfX19fXyAgX19fX198IHxfX18gICBcXF9fX18gIHwvXyAgIF8vfCBcXF9fIF8gLyBfXyBcXHwgfF9fX1xuICAgIHwgfCAgXyAgfCAgX19fXFx8ICBfICB8ICBfICBcXCAgICAgICB8IHwgIHwgfCAgfCAgX198IHwgIF9fXy98ICBfICBcXFxuX19fX3wgfCB8X3wgfCB8X19fX3wgfF98IHwgfF98IHwgIF9fX19ffCB8ICB8IHwgIHwgfCAgfCB8IHxfX18gfCB8X3wgfFxuXFxfX19fX3xfX18gIHxfX19fXy98X19fX198X19fX198IC9fX19fX19fLyAgfF98ICB8X3wgIHxffFxcX19fXy98X19fX198XG4gICAgICAgICAgXFxffFxuPC9wPlxuPC9kaXY+XG48cCBjbGFzcz1cImRlc2NcIj5cblByb2dyYW1tZXIgJm5ic3A7JmJ1bGw7Jm5ic3A7IEhhY2tlciAmbmJzcDsmYnVsbDsmbmJzcDsgU3R1ZGVudCAmbmJzcDsmYnVsbDsmbmJzcDsgUmVzZWFyY2hlclxuPC9wPlxuPC9kaXY+XG48L3NlY3Rpb24+In0=)

------
thesmok
This principle of storing content in a URL is also used at Falstad CircuitJS,
where you can draw an electronic circuit diagram and export a link. Links get
quite big for complex circuits, but it's very easy to store them. My project
notes are full of links to the simulated circuits, example:
[http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.0000...](http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.000005+10.20027730826997+54+5+50%0AR+48+160+0+160+0+1+40+5+0+0+0.5%0Aa+192+144+272+144+0+15+-15+1000000+-0.00004986625727894353+0%0Aa+192+272+272+272+0+15+-15+1000000+-4.986675593652975+-4.986725460408912%0Ag+192+160+192+192+0%0Ar+192+128+128+128+0+47000%0Ar+208+80+272+80+0+47000%0Aw+272+80+272+144+0%0Aw+208+80+192+80+0%0Aw+192+80+192+128+0%0Aw+128+128+48+128+0%0Aw+48+128+48+160+0%0Aw+192+256+176+256+0%0Aw+176+256+176+224+0%0Aw+176+224+272+224+0%0Aw+272+224+272+272+0%0Aw+192+288+48+288+0%0Aw+48+288+48+160+0%0A174+336+160+336+224+0+1000+0.2525+Resistance%0Aw+336+224+272+224+0%0Aw+336+160+336+144+0%0Aw+336+144+272+144+0%0Aw+352+192+416+192+0%0Aw+576+208+624+208+0%0A174+416+192+416+256+0+1000+0.005+Resistance%0Ag+416+256+416+272+0%0Aa+496+208+576+208+0+15+-15+1000000+2.066047243970914+2.066067904443354%0Aw+496+224+432+224+0%0Aw+496+192+496+160+0%0Aw+496+160+576+160+0%0Aw+576+160+576+208+0%0Ao+0+64+0+4098+5+0.00078125+0+2+0+3%0Ao+22+64+0+4099+5+0.00009765625+0+2+22+3%0A)

------
hagreet
so instead of adressing the content you are sending the content directly.
brilliant. who could come up with such an amazing idea...

seriously, though: this has some marginal advantages compared to just sending
the sites such as being supported as clickable in almost every program and
being allowed in size restricted posts which allow arbitrarily long links

------
givinguflac
This is really interesting. It strikes me as a modern encrypted communications
method, except as designed currently everyone already has the key. I wonder
how much could be shared this way, and whether it could be sufficiently
secured to become a “private” means of distribution.

~~~
_underfl0w_
It seems like the main content bottleneck is the fact that they store it all
in straight-up base64. Trying to, say, share binaries across the net would
become very unwieldy very quickly.

Now, if they were to implement some compression before URL encoding, it might
then be feasible to break up large files into a series of links or
something...

------
breck
I use this technique for sharing new tree programming language grammars.

As you modify or create a language, I generate a deep link that contains all
the grammar code and sample code for your language in the url:

[http://treenotation.org/sandbox/build/#standard%20stump](http://treenotation.org/sandbox/build/#standard%20stump)

------
awirth
Shameless self plug - I cleaned up my take on a very similar idea a bit today
after seeing this post:
[https://github.com/allanlw/hgscn2](https://github.com/allanlw/hgscn2)

Basically, it uses a data URI and Webtorrent for a similar concept.

~~~
futhey
Really neat, thanks for sharing!

------
bepvte
[https://itty.bitty.sites](https://itty.bitty.sites) ??

------
lonelappde
This is the webdev version of "if x==true then return true else return false"

------
GorillaMoe
Interesting! It's like as if we'd had the same intent. Great minds think alike
;) I created writer.gorilla.moe and editor.gorilla.moe a while ago, exactly
with the same intent :)

------
tambourine_man
>See the "published" version here

Doesn't work in Safari (Mojave)

~~~
jstrieb
Will try and find a way to test this. Feel free to open an issue on GitHub

~~~
jstrieb
I have opened an issue on GitHub.

[https://github.com/jstrieb/urlpages/issues/9](https://github.com/jstrieb/urlpages/issues/9)

------
brod
This is neat but lacking the obvious data-uri format which similar services
implement:

    
    
        data:text/html;base64,...

------
ubersoldat2k7
Makes me wonder how caching and other stuff are handled by browsers, or the
impact of it on load times. Anyway, cool concept.

------
HocusLocus
All content included in "pen register data" (headers). Thumbs up from the
LE/intelligence community! /s

------
ravenstine
Wouldn't it be a better idea to have the URL-stored webpage use WebTorrent to
host the actual content through P2P?

------
chiefalchemist
Perhaps I'm misreading / misunderstanding some of the comments but long to
short this is effectively a .url file format (so to speak). Yes, it looks like
a URL but it's not uniform'ing, it's not resource'ing, and it's not
locator'ing - in the traditional sense of those three letters.

------
knolax
You could just use data URLs. For example:

    
    
      data:text/html,<p>Hello%20World</p>

~~~
zzo38computer
Yes, that is what I thought, too.

And furthermore, no internet connection is needed to access data: URIs.

------
keb_
Reminds me of [https://flems.io/](https://flems.io/)

------
RedNifre
It's a bit weird that all the example websites are "hosted" on tinyurl.

------
elcomet
Very cool project. It would be nice to provide an example of such a link on
the page.

~~~
starbugs
Isn't there an example to his personal page in the GitHub README?

[https://github.com/jstrieb/urlpages#examples](https://github.com/jstrieb/urlpages#examples)

~~~
elcomet
You're right, I expected to see a huge link so I didn't notice it.

Here is how the link looks like :

[https://jstrieb.github.io/urlpages/#JTBBJTNDIURPQ1RZUEUlMjBo...](https://jstrieb.github.io/urlpages/#JTBBJTNDIURPQ1RZUEUlMjBodG1sJTNFJTBBJTNDaGVhZCUzRSUwQSUzQ3N0eWxlJTNFJTBBYm9keSUyMCU3QiUwQSUyMCUyMGJhY2tncm91bmQlM0ElMjBibGFjayUzQiUwQSUyMCUyMGNvbG9yJTNBJTIwbGltZWdyZWVuJTNCJTBBJTIwJTIwcGFkZGluZyUzQSUyMDI1cHglM0IlMEElMjAlMjBmb250LWZhbWlseSUzQSUyMHNhbnMtc2VyaWYlM0IlMEElN0QlMEElMEFzZWN0aW9uJTIwJTdCJTBBJTIwJTIwcGFkZGluZyUzQSUyMDM1cHglM0IlMEElMjAlMjBtYXgtd2lkdGglM0ElMjAxMDIwcHglM0IlMEElMjAlMjBkaXNwbGF5JTNBJTIwYmxvY2slM0IlMEElMjAlMjBtYXJnaW4lM0ElMjBhdXRvJTNCJTBBJTIwJTIwbWFyZ2luLXRvcCUzQSUyMDI1cHglM0IlMEElMjAlMjBtYXJnaW4tYm90dG9tJTNBJTIwMjVweCUzQiUwQSUyMCUyMGJvcmRlciUzQSUyMDNweCUyMHNvbGlkJTIwbGltZWdyZWVuJTNCJTBBJTdEJTBBJTBBLmZpcnN0JTIwJTdCJTBBJTIwJTIwaGVpZ2h0JTNBJTIwY2FsYygxMDB2aCUyMC0lMjAxMzVweCklM0IlMEElMjAlMjBkaXNwbGF5JTNBJTIwZmxleCUzQiUwQSUyMCUyMGZsZXgtZGlyZWN0aW9uJTNBJTIwY29sdW1uJTNCJTBBJTIwJTIwYWxpZ24taXRlbXMlM0ElMjBjZW50ZXIlM0IlMEElMjAlMjBib3JkZXIlM0ElMjBub25lJTNCJTBBJTdEJTBBJTBBLmFzY2lpLWFydCUyMCU3QiUwQSUyMCUyMGZvbnQtZmFtaWx5JTNBJTIwbW9ub3NwYWNlJTNCJTBBJTIwJTIwZm9udC1zaXplJTNBJTIwY2FsYygxLjF2dyklM0IlMEElMjAlMjBmb250LXdlaWdodCUzQSUyMGJvbGQlM0IlMEElMjAlMjB3aGl0ZS1zcGFjZSUzQSUyMHByZS13cmFwJTNCJTBBJTIwJTIwd2lkdGglM0ElMjA3MGNoJTNCJTBBJTdEJTBBJTBBLmNlbnRlciUyMCU3QiUwQSUyMCUyMGRpc3BsYXklM0ElMjBibG9jayUzQiUwQSUyMCUyMG1hcmdpbiUzQSUyMGF1dG8lM0IlMEElN0QlMEElMEEuZGVzYyUyMCU3QiUwQSUyMCUyMHRleHQtYWxpZ24lM0ElMjBjZW50ZXIlM0IlMEElN0QlMEElMEEubWlkZGxlJTIwJTdCJTBBJTIwJTIwbWFyZ2luLXRvcCUzQSUyMGNhbGMoMTV2aCklM0IlMEElN0QlMEElMEFhJTIwJTdCJTBBJTIwJTIwdGV4dC1kZWNvcmF0aW9uJTNBJTIwbm9uZSUzQiUwQSUyMCUyMGNvbG9yJTNBJTIwbGltZWdyZWVuJTNCJTBBJTdEJTBBJTNDJTJGc3R5bGUlM0UlMEElM0NzY3JpcHQlMjB0eXBlJTNEJTIydGV4dCUyRmphdmFzY3JpcHQlMjIlM0UlMEElMEElM0MlMkZzY3JpcHQlM0UlMEElM0MlMkZoZWFkJTNFJTBBJTNDYm9keSUzRSUwQSUzQ3NlY3Rpb24lMjBjbGFzcyUzRCUyMmZpcnN0JTIyJTNFJTBBJTNDZGl2JTIwY2xhc3MlM0QlMjJtaWRkbGUlMjIlM0UlMEElM0NkaXYlMjBjbGFzcyUzRCUyMmFzY2lpLWFydCUyMGNlbnRlciUyMiUzRSUwQSUzQyEtLSUyMFllcyUyQyUyMEklMjBkaWQlMjBoYW5kLWNvZGUlMjB0aGlzJTIwQVNDSUklMjBhcnQuJTIwSSUyMG1hZGUlMjBpdCUyMG9uJTIwYSUyMHBsYW5lJTIwcmlkZSUyMGZyb20lMjBOZXclMjBZb3JrJTIwdG8lMjBQaXR0c2J1cmdoJTIwd2hlbiUyMEklMjBwcm9iYWJseSUyMHNob3VsZCUyMGhhdmUlMjBiZWVuJTIwZG9pbmclMjBhY3R1YWwlMjBob21ld29yay4lMjAtLSUzRSUwQSUzQ3AlM0UlMEElMjAlMjBfX19fX19fJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwX19fX19fX18lMjAlMjAlMjAlMEElMjAlMkZfXyUyMCUyMCUyMF8lMkYlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBfJTIwJTIwJTIwJTIwJTIwJTIwJTJGJTIwJTIwX19fX18lMkYlMjAlMjAlMjBfJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwXyUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMF8lMEElMjAlMjAlMjAlMjAlN0MlMjAlN0MlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMkYlMjAlN0MlMjAlMjAlMjAlMjAlMjAlNUMlMjAlMjAlNUNfX19fJTIwJTIwXyU3QyUyMCU3Q18lMjAlMjBfJTIwJTIwJTIwKF8pJTIwX19fXyUyMCUyRiUyMCU3QyUwQSUyMCUyMCUyMCUyMCU3QyUyMCU3Q19fX19fJTIwX19fX18lMjAlMjBfX19fXyU3QyUyMCU3Q19fXyUyMCUyMCUyMCU1Q19fX18lMjAlMjAlN0MlMkZfJTIwJTIwJTIwXyUyRiU3QyUyMCU1Q19fJTIwXyUyMCUyRiUyMF9fJTIwJTVDJTdDJTIwJTdDX19fJTBBJTIwJTIwJTIwJTIwJTdDJTIwJTdDJTIwJTIwXyUyMCUyMCU3QyUyMCUyMF9fXyU1QyU3QyUyMCUyMF8lMjAlMjAlN0MlMjAlMjBfJTIwJTIwJTVDJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdDJTIwJTdDJTIwJTIwJTdDJTIwJTdDJTIwJTIwJTdDJTIwJTIwX18lN0MlMjAlN0MlMjAlMjBfX18lMkYlN0MlMjAlMjBfJTIwJTIwJTVDJTBBX19fXyU3QyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMjAlN0NfX19fJTdDJTIwJTdDXyU3QyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMjAlMjBfX19fXyU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCUyMCU3QyUyMCU3QyUyMCU3Q19fXyUyMCU3QyUyMCU3Q18lN0MlMjAlN0MlMEElNUNfX19fXyU3Q19fXyUyMCUyMCU3Q19fX19fJTJGJTdDX19fX18lN0NfX19fXyU3QyUyMCUyRl9fX19fX18lMkYlMjAlMjAlN0NfJTdDJTIwJTIwJTdDXyU3QyUyMCUyMCU3Q18lN0MlNUNfX19fJTJGJTdDX19fX18lN0MlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUNfJTdDJTBBJTNDJTJGcCUzRSUwQSUzQyUyRmRpdiUzRSUwQSUzQ3AlMjBjbGFzcyUzRCUyMmRlc2MlMjIlM0UlMEFQcm9ncmFtbWVyJTIwJTI2bmJzcCUzQiUyNmJ1bGwlM0IlMjZuYnNwJTNCJTIwSGFja2VyJTIwJTI2bmJzcCUzQiUyNmJ1bGwlM0IlMjZuYnNwJTNCJTIwU3R1ZGVudCUyMCUyNm5ic3AlM0IlMjZidWxsJTNCJTI2bmJzcCUzQiUyMFJlc2VhcmNoZXIlMEElM0MlMkZwJTNFJTBBJTNDJTJGZGl2JTNFJTBBJTNDJTJGc2VjdGlvbiUzRSUwQSUzQyUyRmJvZHklM0UlMEE=)

------
davidcollantes
I don’t get anything other than a page with three text areas on iOS’s Safari.

------
peter303
There is also a hack to put mini-games in the URL line using emojis.

------
arunvelsriram
Awesome. It could be used in email signature I guess.

------
mmmeff
Ayyyy, finally a use for my ultrawide monitor!

------
amelius
How do you add recursive links?

~~~
uryga
indirection! you could make the website text

    
    
      link to self:
      http://url.shortener/some-vanity-url
    

and then get the vanity url and point it at your site's link.

~~~
amelius
But if you use an url shortener, then the website is not stored entirely in
the url anymore.

~~~
uryga
it doesn't have to be an url shortener, but i believe that you need some
external link to get self-reference here. as a rough handwavy analogy, linked
lists use a pointer to the tail, not a value of the tail (here the value being
the site-stored-in-a-url, and the pointer being the shortened url)

------
evncr
When you use "Short link to publish" in the editor, you are basically hosting
it in tinyurl???

------
ziffusion
Sorry don't get this. The basic premise of REST is to access information
stored on the network elsewhere. You are asking people to store information in
their bookmarks.

~~~
sp332
Who said anything about REST?

